- Hvad er en jævnstrømsmotor?
- Komponenter, der kræves
- Kredsløbsdiagram
- Programmering Atmega16 til DC-motorstyring
DC-motorer er de mest anvendte motorer. Disse motorer findes næsten overalt fra små projekter til avanceret robotik. Vi har tidligere interfacet DC Motor med mange andre mikrocontrollere som Arduino, Raspberry pi og brugt det i mange robotprojekter. I dag lærer vi at styre jævnstrømsmotor med AVR Microcontroller Atmega16. Men inden vi går videre, lad os vide mere om jævnstrømsmotor.
Hvad er en jævnstrømsmotor?
DC-motor er en enhed, der omdanner elektrisk energi til mekanisk energi. Specifikt bruger en jævnstrømsmotor jævnstrøm til at konvertere elektrisk energi til mekanisk energi. Motorens grundlæggende princip er samspillet mellem magnetfeltet og strømmen for at producere en kraft inden i motoren, som hjælper motoren til at rotere. Så når den elektriske strøm føres gennem en spole i et magnetfelt, genereres en magnetisk kraft, der producerer et drejningsmoment, der resulterer i motorens bevægelse. Motorens retning styres ved at vende strømmen. Også dens hastighed kan varieres ved at variere den leverede spænding. Da mikrokontrollere har PWM-ben, kan den bruges til at kontrollere motorens hastighed.
I denne vejledning demonstreres DC-motordrift med Atmega16. L293D-motordriver bruges til at vende strømens retning og dermed bevægelsesretningen. L293D-motordriveren bruger H-Bridge-kredsløbskonfiguration, som udsender den krævede strøm til motoren. To trykknapper bruges til at vælge motorretningen. En af trykknappen bruges til at vælge den roterende uret, og den anden bruges til at vælge anti-ur-drift af jævnstrømsmotor.
Komponenter, der kræves
- Jævnstrømsmotor (5V)
- L293D motordriver
- Atmega16 Microcontroller IC
- 16Mhz krystaloscillator
- To 100nF kondensatorer
- To 22pF kondensatorer
- Trykknap
- Jumper Wires
- Brødbræt
- USBASP v2.0
- Led (enhver farve)
Kredsløbsdiagram
Programmering Atmega16 til DC-motorstyring
Her er Atmega16 programmeret ved hjælp af USBASP og Atmel Studio7.0. Hvis du ikke ved, hvordan du programmerer Atmega16 ved hjælp af USBASP, skal du besøge linket. Komplet program gives i slutningen af projektet, bare upload programmet i Atmega16 og brug de to trykknapper til at dreje DC-motoren med uret og mod uret.DC-motoren er grænseflade ved hjælp af L293D-motordriver. DC-motor roterer i to retninger, når der trykkes på den respektive trykknap. Den ene trykknap vil blive brugt til at rotere jævnstrømsmotor i Clock Wise retning, og den anden trykknap vil blive brugt til at rotere jævnstrømsmotor i mod urets retning. For det første definerer CPU-frekvens af microcontroller og omfatter alle nødvendige biblioteker.
#define F_CPU 16000000UL #include #include
Brug derefter en variabel til at holde styr på trykknappen, der trykkes på status. Denne variabel vil blive brugt til at definere motorens retning.
int i;
Vælg input / output-tilstand af GPIO ved hjælp af dataretningsregister. Oprindeligt skal output af motorstiften være så lavt for at undgå opstart af motoren uden at trykke på trykknappen.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Kontroller, om en st trykkes trykknap tilsluttet PORTA4 af atmega16 og gemme status for trykknap i variabel.
hvis (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _forsink_ms (1000); }
Kontroller ligeledes , om 2. trykknap er trykket tilsluttet PORTA5 på Atmega16, og gem status for trykknap i variabel.
ellers hvis (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _forsink_ms (1000); }
Hvis status for en st knap er sandt, så rotere DC-motor i uret retning, og hvis status af den anden trykknap er sandt, så rotere DC-motor i anti-uret.
hvis (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } ellers hvis (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Du kan forbinde motorstifter til en hvilken som helst GPIO-stift afhængigt af den anvendte GPIO. Det er også vigtigt at bruge Motor Driver IC til at mindske belastningen på mikrokontrolleren, da mikrokontroller ikke er i stand til at levere den krævede strøm til at køre jævnstrømsmotorer. For flere detaljer og andre projekter baseret på jævnstrømsmotorer, se venligst det givne link.
Komplet kode og demonstrationsvideo er angivet nedenfor.