DC-motorer är de mest använda motorerna. Dessa motorer finns nästan överallt, från små projekt till avancerad robotik. Vi har tidigare kopplat DC Motor med många andra mikrokontroller som Arduino, Raspberry pi och använt den i många robotprojekt. Idag lär vi oss att styra likströmsmotor med AVR Microcontroller Atmega16. Men innan vi går vidare, låt oss veta mer om likströmsmotor.
Vad är en likströmsmotor?
DC-motor är en anordning som omvandlar elektrisk energi till mekanisk energi. Specifikt använder en likströmsmotor likström för att omvandla elektrisk energi till mekanisk energi. Motorns grundprincip är samspelet mellan magnetfältet och strömmen för att producera en kraft i motorn som hjälper motorn att rotera. Så när den elektriska strömmen passerar genom en spole i ett magnetfält genereras en magnetisk kraft som producerar ett vridmoment som resulterar i motorns rörelse. Motorns riktning styrs genom att växla strömmen. Dess hastighet kan också varieras genom att variera den tillförda spänningen. Eftersom mikrokontroller har PWM-stift, så kan den användas för att kontrollera motorns hastighet.
I denna handledning kommer likströmsmotorns funktion att demonstreras med Atmega16. L293D-motorförare kommer att användas för att vända strömriktningen och därmed rörelseriktningen. L293D-motorföraren använder H-Bridge-kretskonfiguration som matar ut erforderlig ström till motorn. Två tryckknappar används för att välja motorriktning. En av tryckknappen används för att välja klockrotation och den andra används för att välja antiklockdrift för likströmsmotor.
Komponenter krävs
- DC-motor (5V)
- L293D Motor Driver
- Atmega16 Microcontroller IC
- 16Mhz kristalloscillator
- Två 100nF kondensatorer
- Två 22pF kondensatorer
- Tryckknapp
- Bygeltrådar
- Bakbord
- USBASP v2.0
- Led (valfri färg)
Kretsschema
Programmering Atmega16 för DC-motorstyrning
Här programmeras Atmega16 med USBASP och Atmel Studio7.0. Om du inte vet hur du programmerar Atmega16 med USBASP besöker du länken. Komplett program ges i slutet av projektet, ladda bara upp programmet i Atmega16 och använd de två tryckknapparna för att rotera DC-motorn medurs och moturs.DC-motorn är gränssnitt med hjälp av L293D-motorförare. Likströmsmotorn roterar i två riktningar när respektive tryckknapp trycks in. Den ena tryckknappen används för att rotera likströmsmotorn i klockvis riktning och den andra tryckknappen kommer att användas för att rotera likströmsmotorn i motsatt riktning. Först definierar CPU-frekvens av mikrokontroller och inkluderar alla nödvändiga bibliotek.
#define F_CPU 16000000UL #include #include
Använd sedan en variabel för att hålla reda på tryckknappens status. Denna variabel kommer att användas för att definiera motorns riktning.
int i;
Välj in- / utgångsläge för GPIO med hjälp av datariktningsregistret. Inledningsvis gör utgången från motorstiftet så lågt för att undvika att starta motorn utan att trycka på tryckknappen.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Kontrollera om den 1: a tryckknappen trycks in ansluten till PORTA4 på Atmega16 och lagra tryckknappens status i variabel.
om (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _fördröja_ms (1000); }
Kontrollera på liknande sätt om den andra tryckknappen trycks in ansluten till PORTA5 i Atmega16 och lagra tryckknappens status i variabel.
annars om (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _fördröjning_ms (1000); }
Om status för en st knappen är sant då rotera DC-motor i medurs riktning, och om status för den andra tryckknappen är sant då rotera DC-motor i anti medurs.
om (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } annat om (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Du kan ansluta motorns stift till vilken GPIO-stift som helst beroende på vilken GPIO som används. Det är också viktigt att använda Motor Driver IC för att minska belastningen på mikrokontrollern eftersom mikrokontroller inte kan tillhandahålla erforderlig ström för att köra likströmsmotorer. För mer information och andra projekt baserade på likströmsmotorer, vänligen besök länken.
Komplett kod och demonstrationsvideo ges nedan.