- Čo je to jednosmerný motor?
- Súčasti sú povinné
- Schéma zapojenia
- Programovanie Atmega16 pre riadenie jednosmerného motora
Najbežnejšie používané motory sú jednosmerné motory. Tieto motory nájdete takmer všade, od malých projektov až po pokročilú robotiku. Predtým sme prepojili jednosmerný motor s mnohými ďalšími mikrokontrolérmi ako Arduino, Raspberry pi a používali sme ho v mnohých robotických projektoch. Dnes sa učíme ovládať jednosmerný motor pomocou mikrokontroléra AVR Atmega16. Ale predtým, ako budeme pokračovať, sa dozvieme viac o jednosmernom motore.
Čo je to jednosmerný motor?
Jednosmerný motor je zariadenie, ktoré premieňa elektrickú energiu na mechanickú. Konkrétne jednosmerný motor využíva jednosmerný prúd na premenu elektrickej energie na mechanickú. Základným princípom motora je interakcia medzi magnetickým poľom a prúdom, ktorá vytvára v motore silu, ktorá pomáha motoru pri otáčaní. Takže keď elektrický prúd prechádza cievkou v magnetickom poli, vytvára sa magnetická sila, ktorá vytvára krútiaci moment vedúci k pohybu motora. Smer motora je riadený obrátením prúdu. Jeho rýchlosť sa tiež môže meniť zmenou dodávaného napätia. Pretože mikrokontroléry majú kolíky PWM, je možné ich použiť na riadenie rýchlosti motora.
V tomto výučbe bude prevádzka jednosmerného motora demonštrovaná na Atmega16. Budič motora L293D sa použije na obrátenie smeru prúdu, teda smeru pohybu. Budič motora L293D používa konfiguráciu obvodu H-Bridge, ktorá do motora privádza požadovaný prúd. Na výber smeru motora sa používajú dve tlačidlá. Jedno z tlačidiel sa používa na voľbu hodinového otáčania a druhé z nich sa používa na voľbu antihodinovej činnosti jednosmerného motora.
Súčasti sú povinné
- Jednosmerný motor (5 V)
- Ovládač motora L293D
- Integrovaný obvod mikrokontroléra Atmega16
- Krištáľový oscilátor 16 MHz
- Dva kondenzátory 100nF
- Dva kondenzátory 22pF
- Tlačidlo
- Prepojovacie drôty
- Nepál
- USBASP v2.0
- LED (ľubovoľná farba)
Schéma zapojenia
Programovanie Atmega16 pre riadenie jednosmerného motora
Tu je Atmega16 programovaný pomocou USBASP a Atmel Studio7.0. Ak neviete, ako programovať Atmega16 pomocou USBASP, kliknite na odkaz. Kompletný program je uvedený na konci projektu, stačí nahrať program do Atmega16 a pomocou dvoch tlačidiel otočiť jednosmerný motor v smere a proti smeru hodinových ručičiek.Jednosmerný motor je prepojený pomocou ovládača motora L293D. Po stlačení príslušného tlačidla sa jednosmerný motor bude otáčať v dvoch smeroch. Jedno tlačidlo sa bude používať na otáčanie jednosmerného motora v smere hodinových ručičiek a druhé tlačidlo sa bude používať na otáčanie jednosmerného motora v opačnom smere. Najskôr definujte frekvenciu procesora mikrokontroléra a zahrňte všetky potrebné knižnice.
#define F_CPU 16000000UL #include #include
Potom pomocou jednej premennej sledujte stav stlačeného tlačidla. Táto premenná sa použije na definovanie smeru motora.
int i;
Vyberte vstupný / výstupný režim GPIO pomocou registra smeru údajov. Spočiatku nastavte výstup kolíka motora na nízky, aby ste zabránili spusteniu motora bez stlačenia tlačidla.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Skontrolujte, či 1 st stlačené tlačidlo pripojené k PORTA4 z ATmega16 a uloženie stavu tlačidlom v premennej.
if (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
Podobne skontrolujte, či je stlačené druhé tlačidlo pripojené k PORTA5 na Atmega16 a uložte stav tlačidla do premennej.
else if (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Ak stav 1 st tlačidla je pravda, potom otočiť jednosmerný motor v smere hodinových ručičiek, a ak stav druhého tlačidla je pravda, potom otočiť jednosmerný motor v proti smere hodinových ručičiek.
if (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } else if (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Podľa typu použitého GPIO môžete pripnúť piny motora na akýkoľvek pin GPIO. Je tiež dôležité použiť IC vodiča motora na zníženie zaťaženia mikrokontroléra, pretože mikrokontroléry nie sú schopné poskytnúť požadovaný prúd na chod jednosmerných motorov. Viac podrobností a ďalšie projekty založené na jednosmerných motoroch nájdete na danom odkaze.
Kompletný kód a demonštračné video sú uvedené nižšie.