- Ano ang isang PWM Signal?
- Paano i-convert ang signal ng PWM sa boltahe ng Analog?
- Diagram ng Circuit:
- Pagprograma ng MSP para sa signal ng PWM:
- Pagkontrol ng Liwanag ng LED na may PWM:
Ang tutorial na ito ay isang bahagi ng serye ng mga tutorial ng MSP430G2 LaunchPad kung saan natututunan naming gamitin ang MSP430G2 LaunchPad mula sa Texas Instruments. Sa ngayon natutunan namin ang mga pangunahing kaalaman sa board at natakpan kung paano basahin ang analog boltahe, interface LCD na may MSP430G2 atbp Ngayon ay nagpapatuloy kami sa susunod na hakbang ng pag- alam tungkol sa PWM sa MSP430G2. Gagawin namin iyon sa pamamagitan ng pagkontrol sa liwanag ng isang LED sa pamamagitan ng pag-iiba ng potensyomiter. Kaya't ang potensyomiter ay ikakabit sa isang analog pin ng MSP430 upang mabasa ang analog voltage nito, samakatuwid inirerekumenda na malaman na dumaan sa tutorial ng ADC bago magpatuloy.
Ano ang isang PWM Signal?
Ang Pulse Width Modulation (PWM) ay isang digital signal na karaniwang ginagamit sa control circuitry. Ang signal na ito ay nakatakda nang mataas (3.3v) at mababa (0v) sa isang paunang natukoy na oras at bilis. Ang oras kung saan mananatiling mataas ang signal ay tinatawag na "on time" at ang oras kung saan mananatiling mababa ang signal ay tinatawag na "off time". Mayroong dalawang mahalagang mga parameter para sa isang PWM tulad ng tinalakay sa ibaba:
Pag-ikot ng tungkulin ng PWM:
Ang porsyento ng oras kung saan ang signal ng PWM ay mananatiling TAAS (sa oras) ay tinawag bilang duty cycle. Kung ang signal ay laging ON ito ay nasa 100% na cycle ng tungkulin at kung palaging naka-off ito ay 0% na cycle ng tungkulin.
Duty Cycle = I-ON ang oras / (I-ON ang oras + I-OFF ang oras)
Dalas ng isang PWM:
Tinutukoy ng dalas ng isang signal ng PWM kung gaano kabilis ang isang PWM na nakumpleto sa isang panahon. Ang Isang Panahon ay kumpleto sa ON at OFF ng isang PWM signal tulad ng ipinakita sa itaas na pigura. Sa aming tutorial ang dalas ay 500Hz dahil ito ang default na halaga na itinakda ng Energia IDE.
Mayroong kalabisan ng mga aplikasyon para sa mga signal ng PWM sa real time, ngunit upang bigyan ka ng isang ideya ang PWM signal ay maaaring magamit upang makontrol ang servo Motors at maaari ding mai-convert sa Analog boltahe na maaaring makontrol ang ningning ng ningning ng isang LED. Alamin natin nang kaunti tungkol sa kung paano ito magagawa.
Narito ang ilang mga halimbawa ng PWM sa iba pang Microcontroller:
- Bumubuo ng PWM gamit ang PIC Microcontroller na may MPLAB at XC8
- Servo Motor Control na may Raspberry Pi
- Batay sa Arduino LED Dimmer gamit ang PWM
Suriin ang lahat ng mga proyekto na nauugnay sa PWM dito.
Paano i-convert ang signal ng PWM sa boltahe ng Analog?
Sa mga signal ng PWM sa boltahe ng Analog maaari kaming gumamit ng isang circuit na tinatawag na RC filter. Ito ay isang simple at pinaka-karaniwang ginagamit na circuit para sa hangaring ito. Ang circuit ay nagsasama lamang ng isang Resistor at isang kapasitor sa serye tulad ng ipinakita sa ibaba circuit.
Kaya kung ano ang karaniwang nangyayari dito ay kapag ang kapag ang signal ng PWM ay mataas ang capacitor ay naniningil kahit na ang risistor at kapag ang signal ng PWM ay bumaba ang capacitor ay naglalabas sa pamamagitan ng nakaimbak na singil. Sa ganitong paraan palagi kaming magkakaroon ng isang pare-pareho na boltahe sa output na magiging proporsyonal sa siklo ng tungkulin ng PWM.
Sa grap na ipinakita sa itaas, ang Dilaw na may kulay na isa ay ang PWM signal at ang asul na kulay ay ang output analog boltahe. Tulad ng nakikita mo ang output wave ay hindi magiging isang dalisay na alon ng DC ngunit dapat itong gumana nang maayos para sa aming aplikasyon. Kung kailangan mo ng purong DC alon para sa iba pang uri ng aplikasyon dapat mong disenyo ang isang switching circuit.
Diagram ng Circuit:
Ang circuit diagram ay medyo simple; mayroon lamang itong potensyomiter at isang Resistor at capacitor upang bumuo ng isang RC circuit at ang Led mismo. Ang potentiometer ay ginagamit upang magbigay ng isang analog boltahe batay sa kung saan ang PWM signal duty cycle ay maaaring makontrol. Ang output ng palayok ay konektado sa Pin P1.0 na maaaring basahin ang mga analog voltages. Pagkatapos ay kailangan nating gumawa ng isang senyas ng PWM, na maaaring magawa sa pamamagitan ng paggamit ng pin P1.2, ang signal na PWM na ito ay ipinadala sa RC filter circuit upang i-convert ang signal ng PWM sa Analog Voltage na pagkatapos ay ibigay sa LED.
Napakahalagang maunawaan na hindi lahat ng pin sa board ng MSP ay maaaring basahin ang analog boltahe o maaaring makabuo ng mga PWM na pin. Ang mga tukoy na pin na maaaring gawin ang mga tiyak na gawain ay ipinapakita sa figure sa ibaba. Palaging gamitin ito bilang isang patnubay upang piliin ang iyong mga pin para sa pagprograma.
Ipunin ang kumpletong circuit tulad ng ipinakita sa itaas, maaari kang gumamit ng isang breadboard at ilang mga wire ng jumper at madaling gawin ang mga koneksyon. Kapag natapos na ang mga koneksyon ang aking board ay mukhang tulad ng ipinakita sa ibaba.
Pagprograma ng MSP para sa signal ng PWM:
Kapag handa na ang hardware maaari na tayong magsimula sa aming programa. Ang unang bagay sa isang programa ay upang ideklara ang mga pin na gagamitin namin. Dito ay gagamitin namin ang pin number 4 (P1.2) bilang aming output pin dahil may kakayahan itong makabuo ng PWM. Kaya lumikha kami ng isang variable at itatalaga ang pangalan ng pin upang madali itong mag-refer dito sa paglaon ng programa. Ang kumpletong programa ay ibinibigay sa katapusan.
int PWMpin = 4; // Gumagamit kami ng ika-4 na pin sa module ng MSP bilang PWM pin
Susunod na dumating kami sa pag - andar ng pag- setup . Anumang code na nakasulat dito ay naisasagawa nang isang beses lamang, dito namin ipinapahayag na ginagamit namin ang ika- 4 na pin na ito bilang isang output pin dahil ang PWM ay ang pagpapaandar ng output. Tandaan na ginamit namin ang variable na PWMpin dito sa halip na ang bilang 4 upang ang code ay mukhang mas makabuluhan
void setup () { pinMode (PWMpin, OUTPUT); // Ang PEMpin ay itinakda bilang Outptut }
Sa wakas nakapunta kami sa pagpapaandar ng loop . Anuman ang isulat namin dito ay paulit-ulit na naisakatuparan. Sa program na ito kailangan nating basahin ang boltahe ng analog at makabuo ng isang signal na PWM nang naaayon at kailangan itong mangyari nang paulit-ulit. Kaya't magsimula muna tayo sa pamamagitan ng pagbabasa ng boltahe ng analog mula sa pin A0 dahil nakakonekta tayo sa potentiometer dito.
Nababasa namin ang halaga gamit ang AanalogRead function, ang pagpapaandar na ito ay magbabalik ng isang halaga mula 0-1024 batay sa halaga ng boltahe na inilapat sa pin. Pagkatapos ay iniimbak namin ang halagang ito sa isang variable na tinatawag na "val" tulad ng ipinakita sa ibaba
int val = analogRead (A0); // basahin ang halaga ng ADC mula sa pin A0
Kailangan nating baguhin ang mga halagang 0 hanggang 1024 mula sa ADC sa mga halagang 0 hanggang 255 upang ibigay ito sa pagpapaandar ng PWM. Bakit natin ito dapat i-convert? Sasabihin ko iyon sa ilang sandali, ngunit sa ngayon tandaan lamang na kailangan nating mag-convert. Upang mai-convert ang isang hanay ng mga halaga sa isa pang hanay ng mga halaga Ang Energia ay may pagpapaandar sa mapa na katulad ng Arduino. Kaya nai- convert namin ang mga halaga ng 0-1204 sa 0-255 at i-save ito pabalik sa variable na "val".
val = mapa (val , 0, 1023, 0, 255); // Ang ADC ay magbibigay ng halagang 0-1023 i-convert ito sa 0-255
Ngayon mayroon kaming isang variable na halaga ng 0-255 batay sa posisyon ng potensyomiter. Ang kailangan lang nating gawin ay, gamitin ang halagang ito sa PWM pin na magagawa ito gamit ang sumusunod na linya.
analogWrite (PWMpin, val); // Isulat ang halagang iyon sa PWM pin.
Bumalik tayo sa tanong kung bakit ang 0-255 ay nakasulat sa PWM pin. Ang halagang 0-255 na ito ang nagpapasya sa ikot ng tungkulin ng PWM signal. Halimbawa kung ang halaga ng signal ay 0 pagkatapos nangangahulugan ito na ang cycle ng tungkulin ay 0% para sa 127 ito ay 50% at para sa 255 ito ay 100% tulad ng ipinakita at ipinaliwanag sa tuktok ng artikulong ito.
Pagkontrol ng Liwanag ng LED na may PWM:
Kapag naintindihan mo na ang hardware at code, oras na upang magsaya sa pagtatrabaho ng circuit. I-upload ang code sa board ng MSP430G2 at i-on ang potentiometer knob. Tulad ng pag-on mo ng knob ang boltahe sa pin 2 ay magkakaiba na babasahin ng microcontroller at ayon sa boltahe ang mga signal ng PWM ay malilikha sa pin 4. Kung mas malaki ang boltahe, mas malaki ang magiging cycle ng tungkulin at vice versa.
Ang signal na PWM na ito ay nai-convert sa analog boltahe upang mag-glow ng isang LED. Ang ningning ng LED ay direktang proporsyonal sa PWM signal duty cycle. Bukod sa LED sa breadboard maaari mo ring mapansin ang smd LED (pulang kulay) na nag-iiba ang ningning na katulad sa ledboard ng tinapay. Ang LED na ito ay konektado din sa parehong pin, ngunit wala itong isang RC network kaya't napapabilis talaga nito. Maaari mong kalugin ang board sa isang madilim na silid upang suriin ang kumikislap na likas na katangian. Ang kumpletong pagtatrabaho ay makikita rin sa video sa ibaba.
Iyon lang ang lahat sa ngayon, natutunan natin kung paano gamitin ang mga signal ng PWM sa board ng MSP430G2, sa aming susunod na tutorial matututunan natin kung gaano kadali makontrol ang isang servo motor gamit ang parehong mga signal ng PWM. Kung mayroon kang anumang pagdududa i-post ang mga ito sa seksyon ng komento sa ibaba o sa mga forum para sa tulong na panteknikal.