Vysokoprúdový riadiaci obvod motora pomocou Arduina

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





V tomto projekte diskutujeme o tom, ako na to regulovať otáčky motora pomocou obvodu Arduino PWM a ako implementovať riadenie spätného chodu vpred alebo smere v jednosmernom motore pomocou Arduina pomocou niekoľkých tlačidlových spínačov. Týmto nastavením je možné ovládať akýkoľvek silnoprúdový motor až do 30 ampérov

Autor:Ankit Negi



Motor je veľmi dôležitou súčasťou v elektrotechnike a elektronike, pretože sa používa ako pohon v mnohých oblastiach.

Potrebujeme motory pre malé aplikácie, ako je robotika, ako aj v oblastiach, kde sa používajú ťažké motory (priemysel atď.).



Teraz sa dajú motory, ktoré sa používajú pre malé aplikácie, ľahko ovládať, pretože nevyberajú veľa prúdu (menej ako 2amp).

A tieto motory je možné ľahko ovládať pomocou mikrokontroléra ako arduino s ic ovládače motorov ako L298 alebo L293D .

Ale motory, ktoré sa používajú na ťažké účely (viac ako 10amp), nemožno ovládať pomocou týchto ic pretože môžu dodávať obmedzený prúd (max. 2amp). Ako sú teda tieto motory riadené?

Odpoveď je jednoduchá: pomocou relé , ktorý funguje ako prepínače, tj. prepína veľký prúd pomocou malého prúdu. Týmto spôsobom je možné dosiahnuť dve veci:

1. Spustenie samotného vysokoprúdového motora.

2. Odpojte obvod a zabráňte tak nárazom.

Teraz je možné na spínanie týchto relé použiť akýkoľvek mikrokontrolér. Budeme tu používať Arduino UNO.

KOMPONENTY POŽADOVANÉ NA TENTO PROJEKT:

1. ARDUINO UNO: dať vstupnú logiku na primárnu stranu relé.

2. SPDT RELÉ -2: pre rotáciu v oboch smeroch sú potrebné dve relé. Kontakty musia byť dimenzované tak, aby vyhovovali špecifikáciám motora s vysokým prúdom

Sprostredkovať obraz modrej farby relé zobrazujúce N / O N / C a podrobnosti pólu3. Napájací Mosfet: Môžete použiť IRF1010 mosfet tlačidlový mikrospínač

4. BATÉRIA (12 V): na napájanie motora.

5. DVE TLAČIDLÁ: dávajú vstupy do arduina (t.j. keď sú stlačené a keď nie sú stlačené)

10k 1/4 wattový rezistor

6. DVA 10K ODPORY: na odblokovanie (vysvetlené nižšie)

Vysokoprúdový riadiaci obvod motora pomocou Arduina

7. SPOJOVACIE DRÔTY: na pripojenie.

SCHEMATICKÉ:

Ovládací obvod motora PWM Arduino

Pripojte káble podľa obrázku.

1. Pripojte normálne otvorenú svorku oboch relé k kladnej svorke batérie a normálne zatvorenú svorku k zápornej svorke batérie.

2. Pripojte motor medzi zostávajúcu svorku (z troch) každého relé.

3. Pripojte jeden terminál primárnej strany relé k výstupným pinom arduina, ako je uvedené v kóde, a druhý terminál k zemi.

4. Pripojte jeden terminál oboch tlačidiel k 5v pinu arduina a druhý terminál k vstupným pinom, ako je uvedené v kóde.

4. ** Nezabudnite pripojiť rezistory, pretože sú veľmi dôležité pre správnu funkciu tohto obvodu, ako je vysvetlené nižšie:

PREČO SÚ SPOJENÉ ODPORY?

Možno zistíte, že na vstupných pinoch Arduina nie je vôbec nič pripojené, ale to neznamená, že tieto pinouty môžu byť logickou nulou, keď je uvedený spínač otvorený

Skôr to znamená, že keď je prepínač otvorený, arduino môže mať ľubovoľnú náhodnú hodnotu medzi logikou 0 a logikou 1, čo nie je vôbec dobré (hovorí sa to skákacie).

To, čo tu chceme, je, že keď nie je nič pripojené k vstupnému kolíku, tj. Tlačidlo je otvorené, arduino vezme 0 vstupu z kolíka.

Aby sa to dosiahlo, je pin priamo spojený so zemou pred tlačidlom cez rezistor. Ak je priamo pripojený k zemi bez odporu, je veľká šanca, že zhorí, pretože kolík bude skratovaný k zemi a bude tiecť veľké množstvo prúdu. Aby sa tomu zabránilo, je medzi nimi zapojený odpor.

Tento rezistor sa nazýva pulldown rezistor, pretože ťahá logiku na pin na 0. A tento proces sa nazýva debouncing.

KÓD:

Napálte tento kód do svojho arduina.

int x// initialise variables
int y
int z
int w
void setup() {
pinMode(6,OUTPUT)//initialise pin 6 as output to RL1
pinMode(9,OUTPUT)//initialise pin 9 as output to RL2
pinMode(3,INPUT)//initialise pin 3 as input
pinMode(4,INPUT)//initialise pin 4 as input
pinMode(10,OUTPUT)//initialise PWM pin 8 as output to gate of mosfet
pinMode(A0,INPUT)//initialise pin A0 as input from pot.
Serial.begin(9600)
}
void loop() {
z=analogRead(A0)// read values from potentiometer in terms of voltage
w= map(z,0,1023,0,255)// map those values from 0 to 255
analogWrite(10,w)// write the mapped value to 10thpin as output
delay(1)//on time period of mosfet
analogWrite(10,w)
delay(1)//off time period of ,mosfet
Serial.println(z)//print value from pot to serial monitor
Serial.println(w)//print mapped value to serial monitor
x= digitalRead(3)
y= digitalRead(4)
if(x==0 && y==0){digitalWrite(6,LOW)//hault motor
digitalWrite(9,LOW)}
if(x==1 && y==0){digitalWrite(6,HIGH)// clockwise rotation of motor
digitalWrite(9,LOW)}
if(x==0 && y==1){digitalWrite(6,LOW)// anticlockwise rotation of motor
digitalWrite(9,HIGH)}
if(x==1 && y==1){digitalWrite(6,LOW)//hault motor
digitalWrite(9,LOW)
}
}

Pracovné (porozumenie kódu):

• KONTROLA SMERU:

A. Ak nie sú stlačené obidve tlačidlá:

V tomto stave arduino vezme 0 vstupov z oboch pinov. Ako je uvedené v kóde v tejto podmienke, oba výstupné piny dávajú 0 logiku (LOW):

if (x == 0 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, LOW)}

Pretože vstupné napätie pre primárne obidve relé je nulové, sekundárna svorka oboch zostáva v normálne zatvorenej polohe. Preto na obidvoch svorkách motora nie je žiadny volt, čo spôsobuje rotáciu.

B. Keď je stlačené tlačidlo X, ale nie je stlačené Y:

V tomto stave, arduino berie 0 vstupov z pinu 4, ale vstup 1 z pinu3. Ako je uvedené v kóde v tejto podmienke, pin 6 by mal byť na logike 1 (HIGH), zatiaľ čo pin 9 na logike 0 (LOW):

if (x == 1 && y == 0) {digitalWrite (6, HIGH)

digitalWrite (9, LOW)}

Pretože vstupné napätie pre relé # 1 je vysoké, prepínač tohto relé je uvedený do normálne otvoreného stavu, zatiaľ čo vstupné napätie pre relé 2 je nízke, prepínač tohto relé zostáva v normálne zatvorenom stave a na svorkách motora spôsobuje napätie 12v a 0v, čo spôsobuje otáčanie motora v jednom smere.

C. Keď je stlačené tlačidlo Y, ale nie je stlačené X:

V tomto stave arduino vezme 1 vstup z pinu 4, ale vstup0 z pinu3. Ako je uvedené v kóde v tejto podmienke, pin 6 by mal byť na logike 0 (LOW), zatiaľ čo pin 9 na logike 1 (HIGH):

if (x == 1 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, HIGH)}

Pretože vstupné napätie pre relé # 2 je tentokrát vysoké, prepínač tohto relé je vrhnutý do normálne otvoreného stavu, zatiaľ čo vstupné napätie do relé # 1 je nízke, spínač tohto relé zostáva v normálne zatvorenom stave a spôsobuje naprieč motorom 12v a 0v svorky, čo spôsobuje otáčanie motora v inom smere.

D. Keď sú stlačené obe tlačidlá:

V tomto stave arduino vezme 1 vstup z oboch pinov. Ako je uvedené v kóde v tejto podmienke, oba výstupné piny dávajú 0 logiku (LOW):

if (x == 0 && y == 0) {digitalWrite (6, LOW)

digitalWrite (9, LOW)}

Pretože vstupné napätie pre primárne obidve relé je nulové, sekundárna svorka oboch zostáva v normálne zatvorenej polohe. Preto na obidvoch svorkách motora nie je nulové napätie, ktoré nespôsobuje žiadne otáčanie.

• KONTROLA RÝCHLOSTI:

Povedzme, že potenciometer je v takej polohe, keď dáva 0 voltov ako vstup do kolíka A0 arduina. Z tohto dôvodu arduino mapuje túto hodnotu ako 0 a tým dáva 0 ako výstupný PWM na pinu # 10, tj.

analogWrite (10,0) // zapíše namapovanú hodnotu na 10. pin ako výstup

Preto brána mosfetu dostane 0 prúd, vďaka čomu zostane vypnutá a motor je v polohe vypnuté.

Keď sa však hrniec otáča a jeho hodnota sa mení, mení sa aj napätie na kolíku A0 a táto hodnota sa mapuje na kolíku # 10 s proporcionálne sa zväčšujúcou šírkou PWM, čo spôsobuje, že motorom a mosfetom preteká väčší prúd. odtok, ktorý následne umožňuje motoru proporcionálne získať vyššiu rýchlosť, a to isté sa stáva naopak.

Z vyššie uvedenej diskusie teda vidíme, ako je možné Arduino použiť na riadenie rýchlosti a smeru (spätného chodu) vysokoprúdového jednosmerného motora jednoduchým nastavením zadanej banky a pomocou niekoľkých tlačidiel.

Aktualizácia : Pre vysokoprúdový motor používajte na prevádzku týchto vysokovýkonných relé relé 12V / 30 A a stupne budiča BJT, ako je uvedené v nasledujúcej upravenej schéme:




Dvojica: Obvod parkovacieho senzora spiatočky s alarmom Ďalej: Obvod generátora signálu Arduino PWM