- Kas yra nuolatinės srovės variklis?
- Būtini komponentai
- Grandinės schema
- Nuolatinės srovės variklio valdymo „Atmega16“ programavimas
Nuolatinės srovės varikliai yra plačiausiai naudojami varikliai. Šiuos variklius galima rasti beveik visur, nuo mažų projektų iki pažangios robotikos. Anksčiau mes sujungėme nuolatinės srovės variklį su daugeliu kitų mikrovaldiklių, tokių kaip „Arduino“, „Raspberry pi“, ir naudojome jį daugelyje robotų projektų. Šiandien mes išmokstame valdyti nuolatinės srovės variklį naudodami AVR mikrovaldiklį „Atmega16“. Bet prieš tęsdami, sužinokime daugiau apie nuolatinės srovės variklį.
Kas yra nuolatinės srovės variklis?
Nuolatinės srovės variklis yra įtaisas, kuris elektros energiją paverčia mechanine. Tiksliau, nuolatinės srovės variklis naudoja nuolatinę srovę, kad paverstų elektros energiją mechanine. Pagrindinis variklio principas yra sąveika tarp magnetinio lauko ir srovės, kad variklyje atsirastų jėga, padedanti varikliui suktis. Taigi, kai elektros srovė praeina per ritę magnetiniame lauke, susidaro magnetinė jėga, kuri sukuria sukimo momentą, dėl kurio variklis juda. Variklio kryptis kontroliuojama pasukant srovę. Taip pat jo greitį galima keisti keičiant tiekiamą įtampą. Kadangi mikrovaldikliai turi PWM kaiščius, todėl jais galima valdyti variklio greitį.
Šioje pamokoje nuolatinės srovės variklio veikimas bus parodytas naudojant „ Atmega16“. L293D variklio tvarkyklė bus naudojama srovės krypčiai ir judėjimo krypčiai pakeisti. L293D variklio tvarkyklė naudoja „H-Bridge“ grandinės konfigūraciją, kuri varikliui išleidžia reikalingą srovę. Variklio krypčiai pasirinkti naudojami du mygtukai. Vienas iš mygtuko naudojamas pasirinkti laikrodžio pasukimą, o kitas naudojamas nuolatinės srovės variklio veikimui prieš laikrodį.
Būtini komponentai
- DC variklis (5V)
- L293D variklio tvarkyklė
- „Atmega16“ mikrovaldiklio IC
- 16Mhz kristalinis osciliatorius
- Du 100nF kondensatoriai
- Du 22pF kondensatoriai
- Paspauskite mygtuką
- Šuolių laidai
- Bandomoji Lenta
- „USBASP v2.0“
- Led (bet kokios spalvos)
Grandinės schema
Nuolatinės srovės variklio valdymo „Atmega16“ programavimas
Čia „Atmega16“ užprogramuojamas naudojant USBASP ir „Atmel Studio7.0“. Jei nežinote, kaip programuoti „Atmega16“ naudojant USBASP, apsilankykite nuorodoje. Užbaigta programa pateikiama projekto pabaigoje, tiesiog įkelkite programą į „Atmega16“ ir dviem mygtukais pasukite nuolatinės srovės variklį pagal laikrodžio rodyklę ir prieš laikrodžio rodyklę.Nuolatinės srovės variklis yra sujungtas naudojant L293D variklio tvarkyklę. Nuolatinės srovės variklis sukasi dviem kryptimis, kai paspaudžiamas atitinkamas mygtukas. Vienas mygtukas bus naudojamas nuolatinės srovės varikliui pasukti laikrodžio kryptimi, o kitas mygtukas bus naudojamas nuolatinės srovės varikliui pasukti skaitiklio laikrodžio kryptimi. Pirmiausia nustatykite mikrovaldiklio procesoriaus dažnį ir įtraukite visas reikalingas bibliotekas.
# define F_CPU 16000000UL #include #include
Tada naudokite vieną kintamąjį, kad galėtumėte stebėti paspaudimo mygtuką būseną. Šis kintamasis bus naudojamas variklio krypčiai apibrėžti.
int i;
Pasirinkite GPIO įvesties / išvesties režimą naudodami duomenų krypčių registrą. Iš pradžių padarykite kuo mažesnį variklio kaiščio išėjimą, kad išvengtumėte variklio paleidimo nespausdami mygtuko.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Patikrinkite, ar 1 g nuspaustas mygtukas prijungtas prie PORTA4 iš ATmega16 ir saugoti push mygtuką būklės kintamasis.
jei (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
Panašiai patikrinti, ar 2 -asis nuspaustas mygtukas prijungtas prie PORTA5 iš ATmega16 ir saugoti push mygtuką būklės kintamasis.
else if (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Jei 1 - ojo mygtuko būsena yra teisinga, pasukite nuolatinės srovės variklį laikrodžio kryptimi, o jei antrojo mygtuko būsena teisinga, pasukite nuolatinės srovės variklį prieš laikrodžio rodyklę.
jei (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } else if (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Variklio kaiščius galite prijungti prie bet kurio GPIO kaiščio, priklausomai nuo naudojamo GPIO. Taip pat svarbu naudoti „Motor Driver IC“, kad sumažintumėte mikrovaldiklio apkrovą, nes mikrovaldikliai negali užtikrinti reikiamos srovės, kad veiktų nuolatinės srovės varikliai. Norėdami gauti daugiau informacijos ir kitus projektus, pagrįstus nuolatinės srovės varikliais, apsilankykite pateiktoje nuorodoje.
Pilnas kodas ir demonstracinis vaizdo įrašas pateikiami žemiau.