- Pulse Width Modulation:
- Kinakailangan na Materyal
- Diagram ng Circuit
- Code at Paliwanag
- Speed Control ng DC Motor gamit ang Arduino
Ang DC motor ang pinaka ginagamit na motor sa mga proyekto sa Robotics at electronics. Para sa pagkontrol ng bilis ng DC motor mayroon kaming iba't ibang mga pamamaraan, tulad ng bilis na maaaring awtomatikong kontrolado batay sa temperatura ngunit sa proyektong ito ang PWM na pamamaraan ay gagamitin upang makontrol ang bilis ng DC motor. Dito sa proyekto ng Arduino Motor Speed Control na ito, ang bilis ay maaaring makontrol sa pamamagitan ng pag-ikot ng knob ng potentiometer.
Pulse Width Modulation:
Ano ang PWM? Ang PWM ay isang pamamaraan sa pamamagitan ng paggamit na makokontrol natin ang boltahe o lakas. Upang maunawaan ito nang mas simple, kung nag-a-apply ka ng 5 volt para sa pagmamaneho ng motor pagkatapos ay lumilipat ang motor na may ilang bilis, ngayon kung binawasan natin ang inilapat na boltahe ng 2 nangangahulugan na naglalapat kami ng 3 volt sa motor pagkatapos ay bumabawas din ang bilis ng motor Ang konseptong ito ay ginagamit sa proyekto upang makontrol ang boltahe gamit ang PWM. Ipinaliwanag namin nang detalyado ang PWM sa artikulong ito. Suriin din ang circuit na ito kung saan ginagamit ang PWM upang makontrol ang liwanag ng LED: 1 Watt LED Dimmer.
% Duty cycle = (TON / (TON + TOFF)) * 100 Kung saan, T ON = MATAAS na oras ng square wave T OFF = LOW time ng square wave
Ngayon kung ang switch sa figure ay sarado nang tuloy-tuloy sa loob ng isang tagal ng panahon pagkatapos ay ang motor ay patuloy na ON sa oras na iyon. Kung ang switch ay sarado para sa 8ms at binuksan para sa 2ms sa loob ng isang cycle ng 10ms, pagkatapos ang Motor ay ON lamang sa oras na 8ms. Ngayon ang average na terminal sa kabuuan ng higit sa isang panahon ng 10ms = ON ON / / (ON ON time + OFF OFF time), ito ay tinatawag na duty cycle at 80% (8 / (8 + 2)), kaya ang average ang output voltage ay magiging 80% ng boltahe ng baterya. Ngayon hindi nakikita ng mata ng tao na ang motor ay nasa 8ms at off para sa 2ms, kaya magmumukhang umiikot ang DC Motor na may 80% na bilis.
Sa pangalawang kaso, ang switch ay sarado para sa 5ms at binuksan para sa 5ms sa loob ng isang panahon ng 10ms, kaya ang average na boltahe ng terminal sa output ay 50% ng boltahe ng baterya. Sabihin kung ang boltahe ng baterya ay 5V at ang cycle ng tungkulin ay 50% at sa gayon ang average na boltahe ng terminal ay 2.5V.
Sa pangatlong kaso ang cycle ng tungkulin ay 20% at ang average na boltahe ng terminal ay 20% ng boltahe ng baterya.
Gumamit kami ng PWM kasama ng Arduino sa marami sa aming Mga Proyekto:
- Batay sa Arduino LED Dimmer gamit ang PWM
- Temperatura na Kinokontrol ng Tagahanga gamit ang Arduino
- DC Motor Control gamit ang Arduino
- AC Fan Speed Control gamit ang Arduino at TRIAC
Maaari kang matuto nang higit pa tungkol sa PWM sa pamamagitan ng pagdaan sa iba't ibang mga proyekto batay sa PWM.
Kinakailangan na Materyal
- Arduino UNO
- DC motor
- Transistor 2N2222
- Potensyomiter 100k ohm
- Capacitor 0.1uF
- Breadboard
- Jumping Wires
Diagram ng Circuit
Ang diagram ng circuit para sa Arduino DC Motor Speed Control gamit ang PWM ay geven sa ibaba:
Code at Paliwanag
Ang kumpletong code para sa Arduino DC Motor Control na gumagamit ng potentiometer ay ibinibigay sa huli.
Sa code sa ibaba, nasimulan namin ang variable na c1 at c2 at nakatalaga sa analog pin A0 para sa potensyomiter output at 12 th Pin para sa 'pwm'.
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Ngayon, sa code sa ibaba, ang setting ng pin na A0 bilang input at 12 (na kung saan ay PWM pin) bilang output.
void setup () { pinMode (pwmPin, OUTPUT); // idineklara ang pin 12 bilang output pinMode (palayok, INPUT); // idineklara ang pin A0 bilang input }
Ngayon, sa void loop (), binabasa namin ang halagang analog (mula sa A0) gamit ang analogRead (pot), at ini-save ito sa variable c2. Pagkatapos, ibawas ang halagang c2 mula 1024 at i-save ang resulta sa c1. Pagkatapos gawin ang PWM pin 12 th ng Arduino HIGH at pagkatapos pagkatapos ng isang pagkaantala ng halaga c1 gawin itong PIN na mababa. Muli, pagkatapos ng pagkaantala ng halagang c2 nagpatuloy ang loop.
Ang dahilan para sa pagbawas ng halaga ng Analog mula 1024 ay, ang Arduino Uno ADC ay may 10-bit na resolusyon (kaya ang mga halaga ng integer mula 0 - 2 ^ 10 = 1024 na mga halaga). Nangangahulugan ito na mai - map ang mga voltages ng pag-input sa pagitan ng 0 at 5 volts sa mga integer na halaga sa pagitan ng 0 at 1024. Kaya kung magpaparami kami ng input ng anlogValue sa (5/1024), makukuha natin ang digital na halaga ng input voltage. Alamin dito kung paano gamitin ang input ng ADC sa Arduino.
void loop () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // nagtatakda ng pin 12 MATAAS na pagkaantalaMicroseconds (c1); // naghihintay para sa c1 uS (high time) digitalWrite (pwmPin, LOW); // nagtatakda ng pin 12 LOW delayMicroseconds (c2); // naghihintay para sa c2 uS (mababang oras) }
Speed Control ng DC Motor gamit ang Arduino
Sa circuit na ito, para sa pagkontrol ng bilis ng DC motor, gumagamit kami ng isang 100K ohm potentiometer upang mabago ang cycle ng tungkulin ng signal ng PWM. Ang 100K ohm potentiometer ay konektado sa analog input pin A0 ng Arduino UNO at ang DC motor ay konektado sa 12 th pin ng Arduino (na kung saan ay ang PWM pin). Ang pagtatrabaho ng programa ng Arduino ay napaka-simple, dahil binabasa nito ang boltahe mula sa analog pin A0. Ang boltahe sa analog pin ay iba-iba sa pamamagitan ng paggamit ng potensyomiter. Matapos gawin ang ilang kinakailangang pagkalkula ang ikot ng tungkulin ay nababagay ayon dito.
Halimbawa, kung magpapakain tayo ng 256 na halaga sa analog input, kung gayon ang TAAS na oras ay 768ms (1024-256) at ang LOW time ay magiging 256ms. Samakatuwid, nangangahulugan lamang ito na ang cycle ng tungkulin ay 75%. Hindi makita ng aming mga mata ang tulad ng oscillation ng mataas na dalas at mukhang ang motor ay patuloy na ON na may 75% ng bilis. Kaya't paano natin maisasagawa ang Motor Speed Control gamit ang Arduino.