- Impulso pločio moduliacija:
- Reikalinga medžiaga
- Grandinės schema
- Kodas ir paaiškinimas
- Nuolatinės srovės variklio greičio valdymas naudojant „Arduino“
Nuolatinės srovės variklis yra dažniausiai naudojamas variklis robotikos ir elektronikos projektuose. Reguliuojant nuolatinės srovės variklio greitį, mes turime įvairius metodus, pavyzdžiui, greitį galima automatiškai valdyti pagal temperatūrą, tačiau šiame projekte nuolatinės srovės variklio greičiui valdyti bus naudojamas PWM metodas. Šiame „ Arduino Motor Speed Control“ projekte greitį galima valdyti sukant potenciometro rankenėlę.
Impulso pločio moduliacija:
Kas yra PWM? PWM yra technika, kuria mes galime valdyti įtampą ar galią. Norėdami paprasčiau suprasti, jei varikliui vairuoti naudojate 5 voltus, variklis judės tam tikru greičiu, o dabar, jei sumažinsime taikomą įtampą 2 priemonėmis, varikliui pritaikysime 3 voltus, tada variklio greitis taip pat sumažės. Ši koncepcija naudojama projekte įtampai valdyti naudojant PWM. Šiame straipsnyje mes išsamiai paaiškinome PWM. Taip pat patikrinkite šią grandinę, kur PWM naudojamas šviesos diodų ryškumui valdyti: 1 vatų šviesos diodas.
% Darbo ciklas = (TON / (TON + TOFF)) * 100 Kur, T ON = AUKŠTAS kvadratinės bangos laikas T OFF = LOW kvadratinės bangos laikas
Jei paveiksle esantis jungiklis tam tikrą laiką yra nuolat uždarytas, variklis per tą laiką nuolat įsijungs. Jei jungiklis bus uždarytas 8ms ir atidarytas 2ms per 10ms ciklą, tada variklis bus įjungtas tik po 8ms laiko. Dabar vidutinis terminalas per 10 ms = įjungimo laikas / (įjungimo laikas + išjungimo laikas), tai vadinama darbo ciklu ir yra 80% (8 / (8 + 2)), taigi vidurkis išėjimo įtampa bus 80% akumuliatoriaus įtampos. Dabar žmogaus akis nemato, kad variklis įjungtas 8 ms, o išjungtas - 2 ms, todėl atrodys, kad nuolatinės srovės variklis sukasi 80% greičiu.
Antruoju atveju jungiklis uždaromas 5 ms ir atidaromas 5 ms per 10 ms, taigi vidutinė gnybto įtampa išėjime bus 50% akumuliatoriaus įtampos. Tarkime, jei akumuliatoriaus įtampa yra 5 V, o darbo ciklas yra 50%, taigi vidutinė gnybto įtampa bus 2,5 V.
Trečiuoju atveju darbo ciklas yra 20%, o vidutinė gnybto įtampa yra 20% akumuliatoriaus įtampos.
Mes naudojome PWM su „Arduino “ daugelyje savo projektų:
- „Arduino“ pagrindu veikiantis LED reguliatorius naudojant PWM
- Temperatūros valdomas ventiliatorius naudojant „Arduino“
- Nuolatinės srovės variklio valdymas naudojant „Arduino“
- Kintamosios srovės ventiliatoriaus greičio valdymas naudojant „Arduino“ ir „TRIAC“
Galite sužinoti daugiau apie PWM vykdydami įvairius projektus, pagrįstus PWM.
Reikalinga medžiaga
- „Arduino UNO“
- Nuolatinės srovės variklis
- Tranzistorius 2N2222
- Potenciometras 100k omų
- Kondensatorius 0.1uF
- Bandomoji Lenta
- Šokantys laidai
Grandinės schema
„ Arduino DC“ variklio greičio valdymo naudojant PWM schema yra žemiau:
Kodas ir paaiškinimas
Pabaigoje pateikiamas visas „ Arduino DC“ variklio valdymo naudojant potenciometrą kodas.
Žemiau pateiktame kode mes inicijavome kintamuosius c1 ir c2 ir priskyrėme analoginį kaištį A0 potenciometro išėjimui ir 12 -tą kaištį „pwm“.
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Dabar, žemiau esančiame kode, nustatykite kaištį A0 kaip įvestį ir 12 (tai yra PWM kaištis) kaip išvestį.
negaliojanti sąranka () { pinMode (pwmPin, OUTPUT); // deklaruoja kaištį 12 kaip išvesties pinMode (pot, INPUT); // deklaruoja kaištį A0 kaip įvestį }
Dabar „ void loop“ () mes nuskaitome analoginę vertę (nuo A0) naudodami „ analogRead“ („pot“) ir išsaugome ją kintamajame c2. Tada atimkite c2 vertę iš 1024 ir išsaugokite rezultatą c1. Tada padarykite PWM kaištį 12 -ąja „Arduino HIGH“ ir vėluodami c1 vertę, padarykite tą kaištį LOW. Vėlgi, vėlavus c2 vertei, ciklas tęsiasi.
Priežastis atimti analoginę vertę iš 1024 yra ta, kad „ Arduino Uno ADC“ yra 10 bitų skiriamoji geba (taigi sveikųjų skaičių reikšmės nuo 0 iki 2 ^ 10 = 1024 vertės). Tai reiškia, kad jis įvesties įtampas nuo 0 iki 5 voltų suskirstys į sveiko skaičiaus reikšmes nuo 0 iki 1024. Taigi, jei įvesties „ anlogValue“ padauginsime iš (5/1024), gausime skaitmeninę įėjimo įtampos vertę. Sužinokite, kaip naudoti ADC įvestį „Arduino“.
void loop () { c2 = analogRead (puodas); c1 = 1024-c2; „digitalWrite“ (pwmPin, HIGH); // nustato 12 kaištį HIGH delayMikrosekundės (c1); // laukia c1 uS (high time) digitalWrite (pwmPin, LOW); // nustato 12 kaištį LOW delayMikrosekundės (c2); // laukia c2 uS (mažai laiko) }
Nuolatinės srovės variklio greičio valdymas naudojant „Arduino“
Šioje grandinėje, norėdami reguliuoti nuolatinės srovės variklio greitį, mes naudojame 100K omo potenciometrą, kad pakeistume PWM signalo darbo ciklą. 100K omų potenciometras yra prijungtas prie „Arduino UNO“ analoginio įvesties kaiščio A0, o nuolatinės srovės variklis - prie 12 -ojo „Arduino“ kaiščio (tai yra PWM kaištis). „Arduino“ programa veikia labai paprastai, nes ji nuskaito įtampą iš analoginio kaiščio A0. Įtampa analoginiame kaište keičiama naudojant potenciometrą. Atlikus reikiamą skaičiavimą, darbo ciklas koreguojamas pagal jį.
Pvz., Jei tiekiame 256 vertę į analoginę įvestį, HIGH laikas bus 768ms (1024-256), o LOW laikas - 256ms. Todėl tai tiesiog reiškia, kad darbo ciklas yra 75%. Mūsų akys nemato tokio aukšto dažnio virpesių ir atrodo, kad variklis nuolat įjungtas 75% greičio. Taigi taip galime atlikti variklio greičio valdymą naudodami „Arduino“.