- Kaj je enosmerni motor?
- Potrebne komponente
- Shema vezja
- Programiranje Atmega16 za krmiljenje enosmernega motorja
Enosmerni motorji so najpogosteje uporabljeni motorji. Te motorje lahko najdemo skoraj povsod, od majhnih projektov do napredne robotike. Pred tem smo DC Motor povezovali s številnimi drugimi mikrokrmilniki, kot so Arduino, Raspberry pi, in ga uporabljali pri številnih robotskih projektih. Danes se učimo krmiljenja enosmernega motorja z mikrokrmilnikom AVR Atmega16. Toda preden nadaljujemo, vemo več o enosmernem motorju.
Kaj je enosmerni motor?
DC motor je naprava, ki električno energijo pretvori v mehansko. Natančneje, enosmerni motor uporablja enosmerni tok za pretvorbo električne energije v mehansko. Osnovno načelo motorja je interakcija med magnetnim poljem in tokom, da se v motorju ustvari sila, ki pomaga motorju, da se vrti. Ko električni tok prehaja skozi tuljavo v magnetnem polju, nastane magnetna sila, ki povzroči navor, ki povzroči gibanje motorja. Smer motorja se nadzoruje z obračanjem toka. Hitrost lahko spreminjate tudi s spreminjanjem dovedene napetosti. Ker imajo mikrokrmilniki PWM zatiče, ga lahko uporabljamo za nadzor hitrosti motorja.
V tej vadnici bo prikazano delovanje motorja z enosmernim tokom z Atmega16. Gonilnik motorja L293D bo uporabljen za obračanje smeri toka, s tem pa tudi smer gibanja. Gonilnik motorja L293D uporablja konfiguracijo vezja H-Bridge, ki na motor oddaja potreben tok. Za izbiro smeri motorja se uporabljata dva gumba. Ena tipka se uporablja za izbiro vrtenja v smeri urnega kazalca, druga pa za izbiro protitelesnega delovanja enosmernega motorja.
Potrebne komponente
- Enosmerni motor (5V)
- L293D Motor voznik
- IC mikrokrmilnik Atmega16
- Kristalni oscilator 16 MHz
- Dva kondenzatorja 100nF
- Dva kondenzatorja 22pF
- Pritisni gumb
- Jumper žice
- Breadboard
- USBASP v2.0
- Led (poljubne barve)
Shema vezja
Programiranje Atmega16 za krmiljenje enosmernega motorja
Tu je Atmega16 programiran z uporabo USBASP in Atmel Studio7.0. Če ne veste, kako Atmega16 programirati s pomočjo USBASP, obiščite povezavo. Celoten program je podan na koncu projekta, samo naložite program v Atmega16 in z dvema gumboma vrtite enosmerni motor v smeri urnega kazalca in v nasprotni smeri urnega kazalca.Enosmerni motor je povezan z gonilnikom motorja L293D. DC motor se bo ob pritisku ustreznega gumba vrtel v dve smeri. En gumb se bo uporabljal za vrtenje enosmernega motorja v smeri Clock Wise, drugi gumb pa za vrtenje enosmernega motorja v smeri nasprotne ure. Najprej določite frekvenco CPU mikrokrmilnika in vključite vse potrebne knjižnice.
#define F_CPU 16000000UL #include #include
Nato z eno spremenljivko sledite stanju pritiska na gumb. Ta spremenljivka bo uporabljena za določanje smeri motorja.
int i;
Izberite način vnosa / izhoda GPIO z uporabo podatkovnega registra smeri. Najprej zmanjšajte izhod motornega zatiča, da se izognete zagonu motorja, ne da bi pritisnili gumb.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Preverite, ali 1 st je potisni gumb pritisnjen povezan z PORTA4 z Atmega16 in shranjevanje status pritiskom na gumb v spremenljivko.
if (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
Podobno preverite, ali je pritisnjen 2. gumb, povezan s PORTA5 Atmega16, in shranite stanje gumba v spremenljivko.
sicer če (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Če se stanje v 1. st je gumb res, potem vrti motor na enosmerni tok v smeri urinega smeri in če je stanje drugega tipki res, potem vrti DC motor v anti-uro pametno.
če (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } sicer če (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Zatiče motorja lahko priključite na kateri koli GPIO zatič, odvisno od uporabljenega GPIO. Pomembno je tudi, da za zmanjšanje obremenitve mikrokrmilnika uporabimo IC Driver Motor Driver, ker mikrokrmilniki ne morejo zagotoviti potrebnega toka za delovanje enosmernih motorjev. Za več podrobnosti in druge projekte, ki temeljijo na enosmernih motorjih, obiščite navedeno povezavo.
Popolna koda in predstavitveni video sta podana spodaj.