- Što je istosmjerni motor?
- Komponente potrebne
- Kružni dijagram
- Programiranje Atmega16 za upravljanje istosmjernim motorom
Istosmjerni motori su najčešće korišteni motori. Te motore možete pronaći gotovo svugdje, od malih projekata do napredne robotike. Prethodno smo povezali istosmjerni motor s mnogim drugim mikrokontrolerima poput Arduina, Raspberry pi i koristili smo ga u mnogim robotskim projektima. Danas učimo upravljati istosmjernim motorom pomoću AVR mikrokontrolera Atmega16. Ali prije nego što krenemo, znajmo više o istosmjernom motoru.
Što je istosmjerni motor?
Istosmjerni motor je uređaj koji pretvara električnu energiju u mehaničku. Konkretno, istosmjerni motor koristi istosmjernu struju za pretvaranje električne energije u mehaničku. Osnovni princip motora je interakcija između magnetskog polja i struje kako bi se stvorila sila unutar motora koja pomaže motoru da se okreće. Dakle, kada se električna struja prolazi kroz zavojnicu u magnetskom polju, stvara se magnetska sila koja stvara moment koji rezultira kretanjem motora. Smjer motora kontrolira se preokretanjem struje. Također se njegova brzina može mijenjati variranjem napajanog napona. Budući da mikrokontroleri imaju PWM pinove, on se može koristiti za upravljanje brzinom motora.
U ovom vodiču prikazat će se rad istosmjernog motora s Atmega16. L293D pokretač motora koristit će se za okretanje smjera struje, a time i smjera kretanja. Pogonski sklop motora L293D koristi konfiguraciju kruga H-Bridge koji na motor daje potrebnu struju. Dvije tipke koriste se za odabir smjera motora. Jedna tipka služi za odabir rotacije u smjeru kazaljke na satu, a druga za odabir protutakatnog rada istosmjernog motora.

Komponente potrebne
- Istosmjerni motor (5V)
- L293D vozač motora
- Atmega16 mikrokontroler IC
- Kristalni oscilator od 16 MHz
- Dva kondenzatora od 100 nF
- Dva kondenzatora od 22pF
- Pritisnite tipku
- Jumper žice
- Breadboard
- USBASP v2.0
- Led (bilo koja boja)
Kružni dijagram

Programiranje Atmega16 za upravljanje istosmjernim motorom
Ovdje je Atmega16 programiran pomoću USBASP-a i Atmel Studio7.0. Ako ne znate kako programirati Atmega16 pomoću USBASP-a, posjetite vezu. Kompletni program dan je na kraju projekta, samo prenesite program u Atmega16 i upotrijebite dvije tipke za okretanje istosmjernog motora u smjeru kazaljke na satu i u smjeru suprotnom od kazaljke na satu.Istosmjerni motor povezan je pomoću pokretačkog programa motora L293D. Istosmjerni motor okretat će se u dva smjera kad se pritisne odgovarajuća tipka. Jedna tipka služit će za okretanje istosmjernog motora u smjeru mudrosti sata, a druga tipka za okretanje istosmjernog motora u smjeru brojača sata. Prvo definirajte CPU frekvenciju mikrokontrolera i uključite sve potrebne knjižnice.
#define F_CPU 16000000UL #include #include
Zatim upotrijebite jednu varijablu za praćenje stanja pritisnutog gumba. Ova će se varijabla koristiti za definiranje smjera motora.
int i;
Odaberite način ulaza / izlaza GPIO pomoću registra smjera podataka. U početku smanjite izlaz motora na zatiču kako biste izbjegli pokretanje motora bez pritiskanja tipke.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Provjerite je li 1 -og se pritisne taster povezan s PORTA4 od Atmega16 i pohraniti status taster za varijablom.
if (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _zakašnjenje_ms (1000); }
Slično provjerite je li pritisnut drugi gumb povezan s PORTA5 od Atmega16 i spremite status gumba u varijablu.
inače if (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _zakašnjenje_ms (1000); }
Ako status 1. st gumb je istina onda okretati DC motor u sat mudar smjeru i ako status drugog tipkala je istina onda okretati DC motor u anti-sat mudar.
ako je (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } inače if (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Možete spojiti motorne igle na bilo koji GPIO pin, ovisno o korištenom GPIO. Također je važno koristiti IC upravljačkog programa motora kako bi se smanjilo opterećenje mikrokontrolera jer mikrokontroleri nisu sposobni pružiti potrebnu struju za pokretanje istosmjernih motora. Za više detalja i ostale projekte koji se temelje na istosmjernim motorima, posjetite dati link.

Kompletni kod i demonstracijski video prikazan je u nastavku.
