- Što je PWM signal?
- Kako pretvoriti PWM signal u analogni napon?
- Kružni dijagram:
- Programiranje MSP-a za PWM signal:
- Upravljanje svjetlinom LED-a pomoću PWM-a:
Ovaj je vodič dio serije MSP430G2 LaunchPad tutorijala u kojima učimo koristiti MSP430G2 LaunchPad tvrtke Texas Instruments. Do sada smo naučili osnove ploče i obradili kako čitati analogni napon, povezati LCD s MSP430G2 itd. Sada nastavljamo sa sljedećim korakom učenja o PWM-u u MSP430G2. To ćemo učiniti kontrolirajući svjetlinu LED-a mijenjajući potenciometar. Dakle, potenciometar će biti pričvršćen na analogni pin MSP430 kako bi očitao njegov analogni napon, stoga se preporučuje da prije nastavka prođete kroz ADC tutorial.
Što je PWM signal?
Modulacija širine impulsa (PWM) digitalni je signal koji se najčešće koristi u upravljačkim krugovima. Ovaj je signal postavljen na visoku (3,3 v) i nisku (0 v) u unaprijed definiranom vremenu i brzini. Vrijeme tijekom kojeg signal ostaje visok naziva se "on time", a vrijeme tijekom kojeg signal ostaje nizak "vrijeme isključenja". Postoje dva važna parametra za PWM o kojima se govori u nastavku:
Radni ciklus PWM:
Postotak vremena u kojem PWM signal ostaje VISOK (na vrijeme) naziva se radnim ciklusom. Ako je signal uvijek UKLJUČEN, on je u 100% radnom ciklusu, a ako je uvijek isključen, to je 0% radnog ciklusa.
Radni ciklus = Vrijeme UKLJUČIVANJA / (Vrijeme UKLJUČIVANJA + Vrijeme isključivanja)

Učestalost PWM-a:
Učestalost PWM signala određuje koliko brzo PWM završava jedno razdoblje. Jedno razdoblje je potpuno UKLJUČENO i ISKLJUČENO za PWM signal, kao što je prikazano na gornjoj slici. U našem vodiču frekvencija će biti 500Hz jer je to zadana vrijednost koju je postavila Energia IDE.
Postoji mnoštvo aplikacija za PWM signale u stvarnom vremenu, ali da biste dobili ideju, PWM signal može se koristiti za upravljanje servo motorima, a može se pretvoriti u analogni napon koji može kontrolirati svjetlinu svjetline LED diode. Naučimo malo o tome kako se to može učiniti.
Evo nekoliko primjera PWM-a s drugim mikrokontrolerom:
- Generiranje PWM-a pomoću PIC mikrokontrolera s MPLAB-om i XC8
- Upravljanje servo motorom s Raspberry Pi
- LED zatamnjivač zasnovan na Arduinu koji koristi PWM
Ovdje provjerite sve projekte povezane s PWM-om.
Kako pretvoriti PWM signal u analogni napon?
Za PWM signale na analogni napon možemo koristiti sklop koji se naziva RC filtar. Ovo je jednostavan i najčešće korišten sklop u tu svrhu. Krug samo uključuje otpornik i kondenzator u seriji kao što je prikazano u donjem krugu.

Dakle, ono što se u osnovi ovdje događa jest da se, kad je PWM signal visok, kondenzator napuni preko otpora i kada PWM signal padne, kondenzator se prazni kroz pohranjeni naboj. Tako ćemo na izlazu uvijek imati konstantan napon koji će biti proporcionalan radnom ciklusu PWM.
Na grafikonu prikazanom gore, onaj u žutoj boji je PWM signal, a plavi u boji je izlazni analogni napon. Kao što vidite, izlazni val neće biti čisti istosmjerni val, ali bi trebao vrlo dobro raditi za našu aplikaciju. Ako vam je potreban čisti istosmjerni val za drugu vrstu primjene, trebali biste dizajnirati sklopni krug.
Kružni dijagram:

Shema sklopa prilično je jednostavna; samo ima potenciometar i otpornik i kondenzator koji tvore RC krug i sam Led. Potenciometar se koristi za pružanje analognog napona na temelju kojeg se može kontrolirati radni ciklus PWM signala. Izlaz lonca spojen je na pin P1.0 koji može očitavati analogne napone. Tada moramo proizvesti PWM signal, što se može učiniti pomoću pina P1.2, taj PWM signal se zatim šalje u krug RC filtra za pretvorbu PWM signala u analogni napon koji se zatim daje LED-u.
Vrlo je važno shvatiti da ne mogu svi pinovi na MSP ploči čitati analogni napon ili generirati PWM pinove. Određene pribadače koje mogu obavljati određene zadatke prikazane su na donjoj slici. Uvijek koristite ovo kao smjernicu za odabir pinova za programiranje.

Sastavite kompletni krug kao što je gore prikazano, možete koristiti ploču za ploče i nekoliko kratkospojnih žica i jednostavno uspostaviti veze. Nakon što su veze završene, moja ploča je izgledala kao što je prikazano dolje.

Programiranje MSP-a za PWM signal:
Jednom kad je hardver spreman, možemo početi s našim programiranjem. Prva stvar u programu je prijaviti pribadače koje ćemo koristiti. Ovdje ćemo koristiti pin broj 4 (P1.2) kao naš izlazni pin, jer ima sposobnost generiranja PWM-a. Dakle, kreiramo varijablu i dodjeljujemo ime pin-a tako da je lako pozvati se na nju kasnije u programu. Kompletni program dan je na kraju.
int PWMpin = 4; // Koristimo 4. pin na MSP modulu kao PWM pin
Dalje dolazimo u funkciju postavljanja . Bez obzira kod je napisan ovdje će se izvršiti samo jednom, ovdje izjavljujemo da mi koristimo ovu 4 -tu pin kao izlazni pin jer PWM izlaza funkcionalnost. Imajte na umu da smo ovdje upotrijebili varijablu PWMpin umjesto broja 4, tako da kod izgleda smislenije
void setup () { pinMode (PWMpin, IZLAZ); // PEMpin je postavljen kao Outptut }
Napokon ulazimo u funkciju petlje . Sve što ovdje napišemo, iznova se izvodi. U ovom programu moramo očitati analogni napon i u skladu s tim generirati PWM signal, a to se mora događati iznova i iznova. Dakle, krenimo prvo s čitanjem analognog napona s pina A0 jer smo na njega spojili potenciometar.
Ovdje čitamo vrijednost pomoću funkcije AanalogRead , ova funkcija će vratiti vrijednost od 0-1024 na temelju vrijednosti napona primijenjenog na pin. Zatim ovu vrijednost pohranjujemo u varijablu koja se naziva "val", kao što je prikazano dolje
int val = analogRead (A0); // očitavanje vrijednosti ADC s pina A0
Moramo pretvoriti vrijednosti od 0 do 1024 iz ADC-a u vrijednosti od 0 do 255 da bismo ga dobili u funkciju PWM. Zašto bismo ovo pretvorili? To ću reći ukratko, ali za sada samo zapamtite da se moramo obratiti. Za pretvaranje jednog skupa vrijednosti u drugi skup vrijednosti Energia ima funkciju karte sličnu Arduinu. Tako pretvaramo vrijednosti 0-1204 u 0-255 i vraćamo ih u varijablu "val".
val = karta (val , 0, 1023, 0, 255); // ADC će dati vrijednost 0-1023 pretvoriti u 0-255
Sada imamo promjenljivu vrijednost 0-255 na temelju položaja potenciometra. Sve što moramo učiniti je da ovu vrijednost upotrijebimo na PWM pinu, što se može učiniti pomoću sljedećeg retka.
analogWrite (PWMpin, val); // Zapiši tu vrijednost u PWM pin.
Vratimo se pitanju zašto je 0-255 zapisano u PWM pin. Ova vrijednost 0-255 određuje radni ciklus PWM signala. Na primjer, ako je vrijednost signala 0, to znači da je radni ciklus 0%, za 127 to je 50%, a za 255 to je 100%, baš kao što je prikazano i objašnjeno na vrhu ovog članka.
Upravljanje svjetlinom LED-a pomoću PWM-a:
Nakon što shvatite hardver i kôd, vrijeme je da se malo zabavite radom kruga. Prenesite kôd na ploču MSP430G2 i okrenite dugme potenciometra. Kako okrećete tipku, napon na zavoju 2 varirat će, što će očitavati mikrokontroler, a prema naponu će se PWM signali generirati na zavoju 4. Što je veći napon, to će biti veći radni ciklus i obrnuto.

Taj se PWM signal pretvara u analogni napon da bi zasvijetlio LED. Svjetlina LED je izravno proporcionalna radni ciklus PWM signala. Osim LED-a na pločici, možete primijetiti i smd-LED (crvena boja) koji mijenja svoju svjetlinu slično LED-u. Ovo je LED dioda također je spojena na isti pin, ali nema RC mrežu pa zapravo treperi vrlo brzo. Dasku možete protresti u mračnoj sobi kako biste provjerili njezinu treperavost. Kompletni rad također se može vidjeti na video ispod.
To je za sada sve, naučili smo kako koristiti PWM signale na ploči MSP430G2, u sljedećem uputstvu naučit ćemo kako je lako upravljati servo motorom koristeći iste PWM signale. Ako sumnjate, objavite ih u odjeljku za komentare u nastavku ili na forumima radi tehničke pomoći.
