DC-motorer er de mest brukte motorene. Disse motorene finnes nesten overalt, fra små prosjekter til avansert robotikk. Vi har tidligere koblet DC Motor til mange andre mikrokontrollere som Arduino, Raspberry pi og brukt den i mange robotprosjekter. I dag lærer vi å kontrollere DC-motor med AVR Microcontroller Atmega16. Men før vi går videre, la oss vite mer om DC-motor.
Hva er en DC-motor?
DC-motor er en enhet som forvandler elektrisk energi til mekanisk energi. Spesielt bruker en DC-motor likestrøm for å konvertere elektrisk energi til mekanisk energi. Motorens grunnleggende prinsipp er samspillet mellom magnetfeltet og strømmen for å produsere en kraft i motoren som hjelper motoren til å rotere. Så når den elektriske strømmen føres gjennom en spole i et magnetfelt, genereres en magnetisk kraft som produserer et dreiemoment som resulterer i bevegelse av motoren. Motorens retning styres ved å reversere strømmen. Også hastigheten kan varieres ved å variere den tilførte spenningen. Siden mikrokontrollere har PWM-pinner, kan den brukes til å kontrollere motorens hastighet.
I denne opplæringen vil likestrømsmotorens drift demonstreres med Atmega16. L293D-motordriver vil bli brukt til å reversere strømretningen og dermed bevegelsesretningen. L293D-motordriveren bruker H-Bridge-kretskonfigurasjon som sender ut nødvendig strøm til motoren. To trykknapper brukes til å velge motorretning. Den ene trykknappen brukes til å velge rotasjon med klokken, og den andre brukes til å velge antiklokkeoperasjon av DC-motor.
Komponenter kreves
- DC-motor (5V)
- L293D Motordriver
- Atmega16 Microcontroller IC
- 16Mhz krystalloscillator
- To kondensatorer på 100nF
- To 22pF kondensatorer
- Trykknapp
- Jumper Wires
- Brettbrett
- USBASP v2.0
- Led (hvilken som helst farge)
Kretsdiagram
Programmering Atmega16 for DC-motorstyring
Her er Atmega16 programmert ved hjelp av USBASP og Atmel Studio7.0. Hvis du ikke vet hvordan du programmerer Atmega16 ved hjelp av USBASP, kan du gå til lenken. Fullstendig program er gitt på slutten av prosjektet, bare last opp programmet i Atmega16 og bruk de to trykknappene for å rotere DC-motoren med og mot klokken.DC-motoren har grensesnitt ved hjelp av L293D-motordriver. DC-motor vil rotere i to retninger når den respektive trykknappen trykkes. Den ene trykknappen vil brukes til å rotere DC-motoren i Clock Wise-retning, og den andre trykknappen vil bli brukt til å rotere DC-motoren i motsatt retning. Først definerer du CPU-frekvensen til mikrokontrolleren og inkluderer alle nødvendige biblioteker.
#define F_CPU 16000000UL #include #include
Bruk deretter en variabel for å holde oversikt over trykk på trykk på status. Denne variabelen vil bli brukt til å definere motorens retning.
int i;
Velg inngangs- / utgangsmodus for GPIO ved hjelp av dataretningsregister. Til å begynne med må du lage utgangen fra motorstiften så lav for å unngå å starte motoren uten å trykke på trykknappen.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Sjekk om en st knappen trykkes koblet til PORTA4 av ATmega16 og lagre status for trykknapp i variabel.
hvis (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _forsink_ms (1000); }
Kontroller på samme måte om andre trykknapp er koblet til PORTA5 på Atmega16, og lagre trykknappens status i variabel.
annet hvis (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _forsink_ms (1000); }
Hvis status for en st -knappen er sann da rotere DC-motor i Klokke messig retning og hvis statusen til den andre trykknapp er sann da rotere DC-motor i anti-urviseren.
hvis (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } annet hvis (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Du kan koble motorstifter til hvilken som helst GPIO-stift, avhengig av GPIO som brukes. Det er også viktig å bruke Motor Driver IC for å redusere belastningen på mikrokontrolleren, da mikrokontrollere ikke er i stand til å levere den nødvendige strømmen til å kjøre likestrømsmotorer. For mer detaljer og andre prosjekter basert på DC-motorer, vennligst besøk gitt lenke.
Fullstendig kode og demonstrasjonsvideo er gitt nedenfor.