- Čo je to signál PWM?
- Ako previesť signál PWM na analógové napätie?
- Schéma zapojenia:
- Programovanie MSP pre signál PWM:
- Ovládanie jasu LED pomocou PWM:
Tento tutoriál je súčasťou série tutoriálov MSP430G2 LaunchPad, v ktorých sa učíme používať MSP430G2 LaunchPad od spoločnosti Texas Instruments. Doteraz sme sa naučili základy dosky a pokryli sme, ako čítať analógové napätie, rozhranie LCD s MSP430G2 atď. Teraz pokračujeme ďalším stupňom učenia sa o PWM v MSP430G2. Urobíme to riadením jasu LED zmenou potenciometra. Potenciometer bude teda pripojený k analógovému kolíku MSP430 na čítanie jeho analógového napätia, a preto sa odporúča, aby ste predtým, ako pokračujete, prešli návodom ADC.
Čo je to signál PWM?
Pulzná šírková modulácia (PWM) je digitálny signál, ktorý sa najčastejšie používa v riadiacich obvodoch. Tento signál je nastavený na vysokú (3,3 V) a nízku (0 V) v preddefinovanom čase a rýchlosti. Čas, počas ktorého signál zostáva vysoký, sa nazýva „čas zapnutia“ a čas, počas ktorého signál zostáva nízky, sa nazýva „čas vypnutia“. Ďalej sú uvedené dva dôležité parametre pre PWM:
Pracovný cyklus PWM:
Percento času, v ktorom signál PWM zostáva VYSOKÝ (v čase), sa nazýva pracovný cyklus. Ak je signál stále ZAPNUTÝ, je v 100% pracovnom cykle a ak je vždy vypnutý, je to 0% pracovný cyklus.
Pracovný cyklus = čas zapnutia / (čas zapnutia + čas vypnutia)
Frekvencia PWM:
Frekvencia signálu PWM určuje, ako rýchlo PWM dokončí jednu periódu. Jedna perióda je úplná ZAPNUTIE a VYPNUTIE signálu PWM, ako je znázornené na obrázku vyššie. V našom návode je frekvencia 500 Hz, čo je predvolená hodnota nastavená v IDE pre Energia.
Existuje veľa aplikácií pre signály PWM v reálnom čase, ale pre predstavu je možné signál PWM použiť na ovládanie servomotorov a možno ho tiež previesť na analógové napätie, ktoré dokáže regulovať jas jasu LED. Dozvieme sa niečo o tom, ako by sa to dalo urobiť.
Tu je niekoľko príkladov PWM s iným mikrokontrolérom:
- Generovanie PWM pomocou PIC mikrokontroléra s MPLAB a XC8
- Ovládanie servomotora s Raspberry Pi
- Arduino LED stmievač využívajúci PWM
Skontrolujte všetky projekty súvisiace s PWM tu.
Ako previesť signál PWM na analógové napätie?
Na signály PWM na analógové napätie môžeme použiť obvod s názvom RC filter. Jedná sa o jednoduchý a na tento účel najčastejšie používaný obvod. Obvod obsahuje iba rezistor a kondenzátor zapojený do série, ako je to znázornené v nasledujúcom obvode.
To, čo sa tu v podstate deje, je to, že keď je signál PWM vysoký, kondenzátor sa nabije cez odpor a keď signál PWM klesne, kondenzátor sa vybije cez uložený náboj. Takto budeme mať na výstupe vždy konštantné napätie, ktoré bude úmerné pracovnému cyklu PWM.
V grafe zobrazenom vyššie je žltá farbou signál PWM a modrou farbou výstupné analógové napätie. Ako vidíte, výstupná vlna nebude čistá jednosmerná vlna, ale pre našu aplikáciu by mala veľmi dobre fungovať. Ak potrebujete čistú jednosmernú vlnu pre iný typ aplikácie, mali by ste navrhnúť spínací obvod.
Schéma zapojenia:
Schéma zapojenia je dosť jednoduchá; má len potenciometer, rezistor a kondenzátor na vytvorenie RC obvodu a samotnej LED. Potenciometer slúži na zabezpečenie analógového napätia, na základe ktorého je možné riadiť pracovný cyklus signálu PWM. Výstup z hrnca je pripojený na pin P1.0, ktorý dokáže čítať analógové napätie. Potom musíme vyrobiť signál PWM, ktorý je možné vykonať pomocou kolíka P1.2, tento signál PWM sa potom pošle do obvodu RC filtra na konverziu signálu PWM na analógové napätie, ktoré sa potom odovzdá LED.
Je veľmi dôležité pochopiť, že nie všetky piny na doske MSP dokážu čítať analógové napätie alebo môžu generovať piny PWM. Konkrétne kolíky, ktoré dokážu vykonávať konkrétne úlohy, sú zobrazené na obrázku nižšie. Toto vždy používajte ako pomôcku pri výbere svojich pinov na programovanie.
Zostavte kompletný obvod, ako je to znázornené vyššie, môžete použiť nepájivú dosku a niekoľko prepojovacích vodičov a ľahko vytvoriť pripojenia. Akonáhle sú pripojenia hotové, moja doska vyzerala ako na obrázku nižšie.
Programovanie MSP pre signál PWM:
Keď je hardvér pripravený, môžeme začať s programovaním. Prvá vec v programe je deklarovať piny, ktoré budeme používať. Tu použijeme ako výstupný pin číslo 4 (P1.2), pretože má schopnosť generovať PWM. Vytvoríme teda premennú a priradíme názov špendlíka, aby bolo ľahké na ňu neskôr v programe odkazovať. Celý program je uvedený na konci.
int PWMpin = 4; // Používame 4. pin na module MSP ako PWM pin
Ďalej prichádzame k funkcii nastavenia . Bez ohľadu na kód je tu napísané bude vykonaný iba raz, tu vyhlasujeme, že sme pomocou tohto 4. ročník pin ako výstupné pin od PWM je výstup funkcie. Všimnite si, že sme tu použili premennú PWMpin namiesto čísla 4, aby kód vyzeral zmysluplnejšie
void setup () { pinMode (PWMpin, OUTPUT); // PEMpin je nastavený ako Outptut }
Nakoniec sme sa dostali do slučky funkcie. Čokoľvek tu napíšeme, bude vykonané znova a znova. V tomto programe musíme načítať analógové napätie a podľa toho generovať signál PWM, čo sa musí diať znova a znova. Najprv teda začnime čítaním analógového napätia z kolíka A0, pretože sme sa k nemu pripojili potenciometrom.
Tu čítame hodnotu pomocou funkcie AanalogRead , táto funkcia vráti hodnotu od 0 do 1024 na základe hodnoty napätia privedeného na pin. Túto hodnotu potom uložíme do premennej s názvom „val“, ako je uvedené nižšie
int val = analogRead (A0); // načíta hodnotu ADC z kolíka A0
Musíme previesť hodnoty 0 až 1024 z ADC na hodnoty 0 až 255, aby sme ich dostali do funkcie PWM. Prečo by sme to mali prevádzať? Poviem to krátko, ale zatiaľ si pamätajte, že musíme konvertovať. Na prevod jednej sady hodnôt na inú sadu hodnôt má Energia funkciu mapy podobnú ako Arduino. Takže prevedieme hodnoty 0 - 1204 na 0 - 255 a uložíme ich späť do premennej „val“.
val = mapa (val , 0, 1023, 0, 255); // ADC dá hodnotu 0-1023, prevedie ju na 0-255
Teraz máme premennú hodnotu 0-255 na základe polohy potenciometra. Všetko, čo musíme urobiť, je použiť túto hodnotu na pin PWM, čo sa dá urobiť pomocou nasledujúceho riadku.
analogWrite (PWMpin, val); // Túto hodnotu zapíšeme na pin PWM.
Vráťme sa k otázke, prečo je na pin PWM zapísaných 0-255. Táto hodnota 0-255 rozhoduje o pracovnom cykle signálu PWM. Napríklad ak je hodnota signálu 0, znamená to, že pracovný cyklus je 0% pre 127 to je 50% a pre 255 je to 100% rovnako ako to, čo je zobrazené a vysvetlené v hornej časti tohto článku.
Ovládanie jasu LED pomocou PWM:
Keď pochopíte hardvér a kód, je na čase si trochu užiť prácu s obvodom. Vložte kód na dosku MSP430G2 a otočte gombík potenciometra. Keď otočíte gombíkom, bude sa meniť napätie na kolíku 2, ktoré bude čítať mikrokontrolér, a podľa napätia sa budú generovať signály PWM na kolíku 4. Čím väčšie napätie, tým väčší bude pracovný cyklus a naopak.
Tento signál PWM sa potom prevedie na analógové napätie, aby svietil LED. Jasu LED je priamo úmerná pracovný cyklus PWM signálu. Okrem LED na nepájivej doske si môžete tiež všimnúť, že smd LED (červená farba) mení svoju jasnosť podobne ako LED dióda na nepájivom poli. To je LED je tiež pripojený k rovnakému kolíku, ale nemá RC sieť, takže v skutočnosti bliká veľmi rýchlo. Doskou môžete potriasť v tmavej miestnosti, aby ste skontrolovali jej blikajúcu povahu. Kompletné fungovanie je možné vidieť aj na videu nižšie.
To je zatiaľ všetko, naučili sme sa, ako používať signály PWM na doske MSP430G2, v našom ďalšom návode sa dozvieme, aké ľahké je ovládať servomotor pomocou rovnakých signálov PWM. Ak máte pochybnosti, uverejnite ich v sekcii komentárov nižšie alebo na fórach technickej podpory.