- Co je to stejnosměrný motor?
- Požadované komponenty
- Kruhový diagram
- Programování Atmega16 pro řízení stejnosměrného motoru
DC motory jsou nejpoužívanější motory. Tyto motory najdete téměř všude, od malých projektů až po pokročilou robotiku. Dříve jsme propojili stejnosměrný motor s mnoha dalšími mikrokontroléry, jako je Arduino, Raspberry pi, a používali jsme ho v mnoha robotických projektech. Dnes se učíme ovládat stejnosměrný motor pomocí AVR Microcontroller Atmega16. Než však budeme pokračovat, dáme vědět víc o stejnosměrném motoru.
Co je to stejnosměrný motor?
DC Motor je zařízení, které transformuje elektrickou energii na energii mechanickou. Konkrétně stejnosměrný motor používá stejnosměrný proud k přeměně elektrické energie na mechanickou energii. Základním principem motoru je interakce mezi magnetickým polem a proudem za účelem vytvoření síly v motoru, která pomáhá motoru otáčet se. Takže když elektrický proud prochází cívkou v magnetickém poli, je generována magnetická síla, která vytváří kroutící moment vedoucí k pohybu motoru. Směr motoru je řízen obrácením proudu. Také jeho rychlost se může měnit změnou napájeného napětí. Protože mikrokontroléry mají PWM piny, lze jej použít k řízení rychlosti motoru.
V tomto tutoriálu bude provoz Atmega16 předveden na stejnosměrném motoru. Ovladač motoru L293D bude použit k obrácení směru proudu, tedy směru pohybu. Ovladač motoru L293D používá konfiguraci obvodu H-Bridge, která vydává požadovaný proud do motoru. Směr otáčení motoru se volí pomocí dvou tlačítek. Jedno z tlačítek slouží k volbě hodinového otáčení a druhé k volbě antihodinového provozu stejnosměrného motoru.
Požadované komponenty
- Stejnosměrný motor (5 V)
- Ovladač motoru L293D
- IC mikrokontroléru Atmega16
- 16MHz krystalový oscilátor
- Dva 100nF kondenzátory
- Dva kondenzátory 22pF
- Stiskněte tlačítko
- Propojovací dráty
- Nepájivá deska
- USBASP v2.0
- LED (libovolná barva)
Kruhový diagram
Programování Atmega16 pro řízení stejnosměrného motoru
Zde je Atmega16 programován pomocí USBASP a Atmel Studio7.0. Pokud nevíte, jak programovat Atmega16 pomocí USBASP, navštivte odkaz. Kompletní program je uveden na konci projektu, stačí nahrát program do Atmega16 a pomocí dvou tlačítek otočit stejnosměrný motor ve směru hodinových ručiček a proti směru hodinových ručiček.Stejnosměrný motor je propojen pomocí ovladače motoru L293D. Po stisknutí příslušného tlačítka se stejnosměrný motor bude otáčet ve dvou směrech. Jedno tlačítko bude použito k otáčení stejnosměrného motoru ve směru hodinových ručiček a druhé tlačítko bude použito k otáčení stejnosměrného motoru ve směru proti směru hodinových ručiček. Nejprve definujte frekvenci procesoru mikrokontroléru a zahrňte všechny potřebné knihovny.
#define F_CPU 16000000UL #include #include
Poté použijte jednu proměnnou ke sledování stavu stisknutí tlačítka. Tato proměnná bude použita k určení směru motoru.
int i;
Vyberte režim vstupu / výstupu GPIO pomocí registru směru dat. Zpočátku snižte výkon motoru na nízký, abyste zabránili spuštění motoru bez stisknutí tlačítka.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Zkontrolujte, zda je stisknuto první tlačítko připojené k PORTA4 Atmega16 a uložte stav tlačítka do proměnné.
if (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
Podobně zkontrolujte, zda 2 nd je stisknuto tlačítko připojeno k PORTA5 z ATMEGA16 a uložení stavu tlačítkem v proměnné.
else if (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Pokud stav 1 st tlačítka je pravda, pak otočit stejnosměrný motor ve směru hodinových ručiček, a pokud stav druhého tlačítka je pravda, pak otočit stejnosměrný motor ve proti směru hodinových ručiček.
if (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } else if (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Podle použitého GPIO můžete piny motoru připojit k jakémukoli pinu GPIO. Je také důležité použít IC ovladače motoru ke snížení zátěže mikrokontroléru, protože mikrokontroléry nejsou schopny poskytnout požadovaný proud pro provoz stejnosměrných motorů. Další podrobnosti a další projekty založené na stejnosměrných motorech naleznete na daném odkazu.
Kompletní kód a ukázkové video jsou uvedeny níže.