- Modulacija širine impulza:
- Potreben material
- Shema vezja
- Koda in razlaga
- Nadzor hitrosti enosmernega motorja z uporabo Arduina
Enosmerni motor je najpogosteje uporabljen motor na področju robotike in elektronike. Za nadzor hitrosti enosmernega motorja imamo na voljo različne metode, na primer hitrost je mogoče samodejno nadzorovati glede na temperaturo, v tem projektu pa bo za nadzor hitrosti enosmernega motorja uporabljena metoda PWM. V tem projektu nadzora hitrosti motorja Arduino lahko hitrost nadzirate z vrtenjem gumba potenciometra.
Modulacija širine impulza:
Kaj je PWM? PWM je tehnika, s katero lahko nadzorujemo napetost ali moč. Če ga razumemo bolj preprosto, če za pogon motorja uporabljate 5 voltov, se bo motor gibal z določeno hitrostjo, zdaj, če zmanjšamo uporabljeno napetost za 2, na motor uporabimo 3 volte, potem se zmanjša tudi hitrost motorja. Ta koncept se v projektu uporablja za nadzor napetosti s pomočjo PWM. V tem članku smo podrobno razložili PWM. Preverite tudi to vezje, kjer se PWM uporablja za nadzor svetlosti LED: 1 W LED zatemnilnik.
% Delovni cikel = (TON / (TON + TOFF)) * 100 Kje, T ON = VISOK čas kvadratnega vala T OFF = NIZKI čas kvadratnega vala
Če je stikalo na sliki v določenem časovnem obdobju neprekinjeno zaprto, bo motor v tem času neprekinjeno vklopljen. Če je stikalo zaprto za 8 ms in odprto za 2 ms v ciklu 10 ms, potem bo motor vklopljen le v času 8 ms. Zdaj je povprečni terminal čez 10 ms = čas vklopa / (čas vklopa + čas izklopa), to se imenuje delovni cikel in je 80% (8 / (8 + 2)), tako da je povprečje izhodna napetost bo 80% napetosti akumulatorja. Zdaj človeško oko ne vidi, da je motor vklopljen 8ms in izklopljen 2ms, zato bo videti, kot da se enosmerni motor vrti z 80% hitrostjo.
V drugem primeru je stikalo zaprto za 5 ms in odprto za 5 ms v obdobju 10 ms, tako da bo povprečna napetost na izhodu 50% napetosti akumulatorja. Recimo, če je napetost akumulatorja 5V in je delovni cikel 50%, tako da bo povprečna napetost terminala 2,5V.
V tretjem primeru je delovni cikel 20%, povprečna napetost sponke pa 20% napetosti akumulatorja.
V mnogih naših projektih smo uporabili PWM z Arduinom:
- LED zatemnilnik na osnovi Arduina z uporabo PWM
- Temperaturno nadzorovan ventilator z uporabo Arduina
- Upravljanje enosmernega motorja z uporabo Arduina
- Nadzor hitrosti ventilatorja z izmeničnim tokom z uporabo Arduino in TRIAC
Več o PWM lahko izveste z ogledom različnih projektov, ki temeljijo na PWM.
Potreben material
- Arduino UNO
- Enosmerni motor
- Tranzistor 2N2222
- Potenciometer 100k ohm
- Kondenzator 0,1uF
- Breadboard
- Žice za skakanje
Shema vezja
Shema vezja za nadzor hitrosti motorja Arduino DC z uporabo PWM je prikazana spodaj:
Koda in razlaga
Na koncu je podana celotna koda za Arduino DC Motor Control z uporabo potenciometra.
V nadaljevanju kodo, smo inicializiran variabilni C1 in C2 in namenskih analogni pin A0 za izhod potenciometra in 12 th Pin za "PWM".
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Zdaj v spodnji kodi nastavite pin A0 kot vhod in 12 (ki je PWM pin) kot izhod.
void setup () { pinMode (pwmPin, OUTPUT); // razglasi pin 12 kot izhodni pinMode (pot, INPUT); // razglasi pin A0 kot vhod }
Zdaj v void loop () beremo analogno vrednost (iz A0) s pomočjo analogRead (pot) in jo shranjujemo v spremenljivko c2. Nato odštejte vrednost c2 od 1024 in rezultat shranite v c1. Potem bi PWM pin 12 th za Arduino HIGH in nato z zamikom vrednosti Rc1 da to pin nizka. Po zamiku vrednosti c2 se zanka nadaljuje.
Razlog za odštevanje analogne vrednosti od 1024 je, da je Arduino Uno ADC 10-bitne ločljivosti (torej so celoštevilske vrednosti od 0 - 2 ^ 10 = 1024 vrednosti). To pomeni, da bo preslikal vhodne napetosti med 0 in 5 voltov v celoštevilčne vrednosti med 0 in 1024. Če torej vhodno vrednost anlogValue pomnožimo s (5/1024), potem dobimo digitalno vrednost vhodne napetosti. Tukaj preberite, kako uporabljati vhod ADC v Arduinu.
void loop () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // nastavi pin 12 HIGH delayMicroseconds (c1); // čaka na c1 uS (high time) digitalWrite (pwmPin, LOW); // nastavi pin 12 LOW delayMicroseconds (c2); // čaka na c2 uS (malo časa) }
Nadzor hitrosti enosmernega motorja z uporabo Arduina
V tem vezju za nadzor hitrosti enosmernega motorja s potenciometrom 100K ohm spremenimo delovni cikel signala PWM. 100K ohm potenciometer priključen na analogni vhodni pin A0 na Arduino ZN in Enosmerni motor je priključen na 12 th sornik Arduino (ki je PWM pin). Delovanje programa Arduino je zelo preprosto, saj odčitava napetost z analognega zatiča A0. Napetost na analognem zatiču se spreminja z uporabo potenciometra. Po opravljenem potrebnem izračunu se delovni cikel prilagodi temu.
Če na primer na analogni vhod dovajamo 256 vrednosti, bo HIGH čas 768ms (1024-256) in LOW čas 256ms. Zato preprosto pomeni, da je delovni cikel 75%. Naše oči ne vidijo tako visokofrekvenčnega nihanja in zdi se, da je motor neprekinjeno vklopljen s 75% hitrosti. Tako lahko tako izvajamo nadzor hitrosti motorja z uporabo Arduina.