Krmilno vezje močnega motorja z uporabo Arduina

Preizkusite Naš Instrument Za Odpravo Težav





V tem projektu razpravljamo o tem, kako nadzor hitrosti motorja z uporabo Arduino PWM vezja in kako uporabiti vzvratno krmiljenje naprej ali smeri v enosmernem motorju z uporabo Arduina s pomočjo nekaj stikal na gumb. S to nastavitvijo lahko nadzorujete kateri koli visokotokovni motor do 30 amp

AvtorAnkit Negi



Motor je zelo pomemben sestavni del električne in elektronike, saj se na mnogih področjih uporabljajo kot pogoni.

Potrebujemo motorje za majhne aplikacije, kot je robotika, pa tudi za področja, kjer se uporabljajo težki motorji (industrija itd.).



Zdaj je mogoče motorje, ki se uporabljajo za majhne namene, enostavno nadzorovati, saj ne potrebujejo veliko toka (manj kot 2amp).

Te motorje je mogoče enostavno nadzorovati z uporabo mikrokrmilnika, kot je arduino s motornih vozil, kot sta L298 ali L293D .

Toda motorjev, ki se uporabljajo za težke namene (več kot 10amp), ni mogoče upravljati z uporabo teh ic saj lahko napajajo omejen tok (največ 2amp). Torej, kako so ti motorji krmiljeni?

Odgovor je preprost: z uporabo relejev , ki deluje kot stikala, torej preklaplja velik tok z majhnim tokom. Na ta način lahko dosežemo dve stvari:

1. Zagon našega motorja z visokim tokom.

2. Izolirajte vezje in tako preprečite morebitne šoke.

Zdaj lahko za preklop teh relejev uporabite kateri koli mikrokrmilnik. Tu bomo uporabljali arduino UNO.

KOMPONENTE, POTREBNE ZA TA PROJEKT:

1. ARDUINO UNO: dati vhodne logike primarni strani releja.

2. SPDT RELE -2: dva releja sta potrebna za vrtenje v obe smeri. Stiki morajo biti ocenjeni tako, da ustrezajo trenutnim specifikacijam motorja

Relejna slika modre barve rele prikazuje N / O N / C in podrobnosti o polu3. Močnostni Mosfet: uporabite IRF1010 MOSFET mikrostikalo s tipko

4. BATERIJA (12v): za napajanje motorja.

5. DVE GUMBI: za vnos v arduino (t.j., ko je pritisnjen in kadar ni pritisnjen)

10k 1/4 vatni upor

6. DVA 10K UPORA: za odklop (razloženo spodaj)

Krmilno vezje močnega motorja z uporabo Arduina

7. POVEZOVALNE ŽICE: za povezovanje.

SHEMATIKA:

Krmilno vezje motorja PWM Arduino

Vzpostavite povezave, kot je prikazano na sliki.

1. Običajno odprt terminal obeh relejev povežite s pozitivnim priključkom akumulatorja in normalno zaprti terminal z negativnim priključkom akumulatorja.

2. Motor priključite med preostali priključek (od treh) vsakega releja.

3. En terminal primarne strani relejev priključite na izhodne zatiče arduina, kot je določeno v kodi, in drugi terminal na maso.

4. En terminal obeh tipk priključite na 5v pin arduino, drugi terminal pa na vhodne nožice, kot je določeno v kodi.

4. ** Ne pozabite priključiti uporov, saj so zelo pomembni za pravilno delovanje tega vezja, kot je razloženo spodaj:

Zakaj so upori povezani?

Morda boste ugotovili, da na vhodne nožice Arduina sploh ni nič povezanega, vendar to ne pomeni, da so ti izpusti lahko logična ničla, ko je navedeno stikalo odprto

Namesto tega pomeni, da lahko arduino, ko je stikalo odprto, zavzame poljubno vrednost med logiko 0 in logiko 1, kar sploh ni dobro (to se imenuje odbijanje).

Torej, kar želimo tukaj, je, da ko nič ni priključeno na vhodni zatič, tj.tisk je odprt, arduino sprejme 0 vhodov iz zatiča.

Da bi to dosegli, je zatič pred uporom neposredno priključen na tla pred tipko. Če je neposredno povezan z ozemljitvijo brez upora, obstaja velika verjetnost, da bo pregorel, saj bo zatič kratko spojen na maso in bo stekla velika količina toka. Da bi to preprečili, je vmes priključen upor.

Ta upor se imenuje pulldown upor, saj vleče logiko na pin na 0. In ta postopek se imenuje debouncing.

KODA:

Zapiši to kodo v svoj arduino.

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)
}
}

Delo (razumevanje kode):

• NADZOR SMERI:

A. Če obe tipki nista pritisnjeni:

V tem stanju arduino z obeh nožic sprejme 0 vhodov. Kot je določeno v kodi v tem stanju, imata oba izhodna zatiča 0 logiko (LOW):

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

digitalWrite (9, LOW)}

Ker je vhodna napetost na primarnem delu obeh relejev nič, sekundarni terminal obeh ostane v normalno zaprtem položaju. Tako na obeh sponkah motorja ni nič voltov, kar ne povzroči vrtenja.

B. Ko pritisnete tipko X, vendar Y ne pritisnete:

V tem stanju arduino zavzame 0 vhodov s pin 4, vhode1 pa s pin3. Kot je določeno v kodi v tem stanju, mora biti zatič 6 v logiki 1 (HIGH), medtem ko je zatič 9 v logiki 0 (LOW):

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

digitalWrite (9, LOW)}

Ker je vhodna napetost na rele # 1 visoka, se stikalo tega releja preklopi v normalno odprto stanje, medtem ko je vhodna napetost na rele 2 nizka, stikalo tega releja ostane v normalno zaprtem stanju, kar povzroči 12v oziroma 0v na terminalih motorja, kar povzroči vrtenje motorja v eno smer.

C. Ko pritisnete tipko Y, X pa ne:

V tem stanju arduino zavzame 1 vhod s pin 4, vhod pa 0 s pin3. Kot je določeno v kodi v tem stanju, mora biti nož 6 na logiki 0 (LOW), medtem ko je pin 9 na logiki 1 (HIGH):

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

digitalWrite (9, VISOKO)}

Ker je vhodna napetost releja 2 tokrat visoka, se stikalo tega releja preklopi v normalno odprto stanje, medtem ko je vhodna napetost releja 1 nizka, stikalo tega releja ostane v normalno zaprtem stanju, kar povzroči 12v oziroma 0v čez motor terminalov, kar povzroči vrtenje motorja v drugo smer.

D. Ko pritisnete obe tipki:

V tem stanju arduino sprejme 1 vhod iz obeh nožic. Kot je določeno v kodi v tem stanju, imata oba izhodna zatiča 0 logiko (LOW):

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

digitalWrite (9, LOW)}

Ker je vhodna napetost na primarnem delu obeh relejev nič, sekundarni terminal obeh ostane v normalno zaprtem položaju. Tako na obeh sponkah motorja ni nič volta, kar ne povzroči vrtenja.

• NADZOR HITROSTI:

Recimo, da je potenciometer v takem položaju, ko daje 0 voltov kot vhod na A0 zatič arduina. Zaradi tega arduino preslika to vrednost kot 0 in tako da 0 kot izhodni PWM na pin # 10, tj.

analogWrite (10,0) // preslikano vrednost zapišemo v 10. pin kot izhod

Zato vrata mosfet-a dobijo 0 toka, zaradi česar ostanejo izklopljeni in je motor v izklopljenem položaju.

Ker se lonec vrti in vrednost lonca spreminja, se tudi napetost na zatiču A0 spreminja in ta vrednost se preslika na zatič # 10 s sorazmerno povečano širino PWM, zaradi česar več toka teče skozi motor in MOSFET odtok, kar motorju omogoča sorazmerno večjo hitrost, enako pa se dogaja tudi obratno.

Tako lahko iz zgornje razprave vidimo, kako lahko Arduino uporabljamo za nadzor hitrosti in smeri (vzvratno naprej) močnega enosmernega motorja preprosto s prilagoditvijo določenega lonca in z nekaj potisnimi gumbi.

Nadgradnja : Za visokotokovni motor za uporabo teh visokozmogljivih relejev uporabite 12V / 30 amp releje in pogonske stopnje BJT, kot je prikazano v naslednjem spremenjenem diagramu:




Prejšnji: Krog vzvratnega parkirnega senzorja z alarmom Naprej: vezje generatorja signala PWM Arduino