- Kas ir līdzstrāvas motors?
- Nepieciešamās sastāvdaļas
- Ķēdes shēma
- Atmega16 programmēšana līdzstrāvas motora vadībai
Līdzstrāvas motori ir visplašāk izmantotie motori. Šos motorus var atrast gandrīz visur, sākot no maziem projektiem līdz modernai robotikai. Mēs iepriekš saskarnes DC motoru ar daudziem citiem mikrokontrolleriem, piemēram, Arduino, Raspberry pi, izmantojām un izmantojām daudzos robotu projektos. Šodien mēs iemācāmies vadīt līdzstrāvas motoru ar AVR mikrokontrolleru Atmega16. Bet pirms turpināsim uzzināt vairāk par līdzstrāvas motoru.
Kas ir līdzstrāvas motors?
Līdzstrāvas motors ir ierīce, kas pārveido elektrisko enerģiju mehāniskajā enerģijā. Konkrēti, līdzstrāvas motors izmanto līdzstrāvu, lai pārveidotu elektrisko enerģiju mehāniskajā enerģijā. Motora pamatprincips ir mijiedarbība starp magnētisko lauku un strāvu, lai radītu motorā spēku, kas palīdz motoram griezties. Tātad, kad elektriskā strāva tiek izvadīta caur spoli magnētiskajā laukā, rodas magnētiskais spēks, kas rada griezes momentu, kā rezultātā notiek motora kustība. Motora virzienu kontrolē, mainot strāvu. Arī tā ātrumu var mainīt, mainot piegādāto spriegumu. Tā kā mikrokontrolleriem ir PWM tapas, tāpēc to var izmantot, lai kontrolētu motora ātrumu.
Šajā apmācībā līdzstrāvas motora darbība tiks demonstrēta ar Atmega16. L293D motora vadītājs tiks izmantots, lai mainītu strāvas virzienu, tātad kustības virzienu. L293D motora draiveris izmanto H-Bridge ķēdes konfigurāciju, kas izvada motoram nepieciešamo strāvu. Motora virziena izvēlei tiek izmantotas divas spiedpogas. Vienu no spiedpogas izmanto, lai izvēlētos pulksteņa virzienu, bet otru - līdzstrāvas motora pretpulksteņa darbības izvēlei.
Nepieciešamās sastāvdaļas
- Līdzstrāvas motors (5V)
- L293D motora draiveris
- Atmega16 mikrokontrolleru IC
- 16Mhz kristāla oscilators
- Divi 100nF kondensatori
- Divi 22pF kondensatori
- Uzspied pogu
- Džemperu vadi
- Maizes dēlis
- USBASP v2.0
- Led (jebkura krāsa)
Ķēdes shēma
Atmega16 programmēšana līdzstrāvas motora vadībai
Šeit Atmega16 tiek ieprogrammēts, izmantojot USBASP un Atmel Studio7.0. Ja nezināt, kā programmēt Atmega16, izmantojot USBASP, apmeklējiet saiti. Pilnīga programma ir dota projekta beigās, vienkārši augšupielādējiet programmu programmā Atmega16 un izmantojiet abas spiedpogas, lai pagrieztu līdzstrāvas motoru pulksteņrādītāja virzienā un pretēji pulksteņrādītāja kustības virzienam.Līdzstrāvas motors ir saskarnē, izmantojot L293D motora draiveri. Līdzstrāvas motors griezīsies divos virzienos, kad tiek nospiesta attiecīgā spiedpoga. Vienu spiedpogu izmantos līdzstrāvas motora pagriešanai pulksteņa virzienā, bet otru spiedpogu - līdzstrāvas motora pagriešanai pretpulksteņa virzienā. Pirmkārt, definējiet mikrokontrollera CPU frekvenci un iekļaujiet visas nepieciešamās bibliotēkas.
#define F_CPU 16000000UL #include #include
Pēc tam izmantojiet vienu mainīgo, lai sekotu spiedpogas nospiešanas statusam. Šis mainīgais tiks izmantots motora virziena noteikšanai.
int i;
Izmantojot datu virzienu reģistru, izvēlieties GPIO ievades / izvades režīmu. Sākotnēji iestatiet Motora tapas izeju tik zemu, lai izvairītos no motora iedarbināšanas, nenospiežot pogu.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Pārbaudiet, vai 1 st push poga ir nospiesta saistīts ar PORTA4 ar Atmega16 un uzglabāt statusu push pogas mainīgo.
ja (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
Tāpat pārbaudiet, vai ir nospiesta otrā spiedpoga, kas savienota ar Atmega16 PORTA5, un saglabājiet spiedpogas statusu mainīgajā.
else if (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Ja statuss 1 st poga ir taisnība, tad rotēt līdzstrāvas motors ar pulksteņrādītāja kustības virzienā, un, ja statuss otrās pogas ir taisnība, tad rotēt līdzstrāvas motors anti-pulksteni gudrs.
ja (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } else if (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Motora tapas var savienot ar jebkuru GPIO tapu atkarībā no izmantotā GPIO. Ir arī svarīgi izmantot motora draivera IC, lai samazinātu mikrokontrollera slodzi, jo mikrokontrolleri nespēj nodrošināt nepieciešamo strāvu, lai darbinātu līdzstrāvas motorus. Lai iegūtu sīkāku informāciju un citus projektus, kuru pamatā ir līdzstrāvas motori, lūdzu, apmeklējiet norādīto saiti.
Pilns kods un demonstrācijas video ir norādīts zemāk.