- Mi az a PWM jel?
- Hogyan lehet átalakítani a PWM jelet analóg feszültséggé?
- Kördiagramm:
- Az MSP programozása PWM jelre:
- A LED fényerejének szabályozása PWM-mel:
Ez az oktatóanyag az MSP430G2 LaunchPad oktatóanyagok sorozatának része, amelyekben megtanuljuk használni a Texas Instruments MSP430G2 LaunchPad programját. Eddig megtanultuk a tábla alapjait, és kitértünk az analóg feszültség, az LCD interfész MSP430G2-vel stb. Olvasására. Most folytatjuk a PWM megismerésének következő lépését az MSP430G2-ben. Ezt úgy fogjuk megtenni, hogy a potenciométer változtatásával szabályozzuk a LED fényerejét. Tehát a potenciométert az MSP430 analóg tűjéhez rögzítik, hogy leolvashassa annak analóg feszültségét, ezért a folytatás előtt ajánlott tudni, hogy át kell-e mennie az ADC oktatóanyagán.
Mi az a PWM jel?
Az impulzusszélesség-moduláció (PWM) egy digitális jel, amelyet leggyakrabban a vezérlő áramkörökben használnak. Ezt a jelet magasra (3,3 V) és alacsonyra (0 V) állítják be egy előre meghatározott idő és sebesség mellett. Azt az időtartamot, amely alatt a jel magas marad, „bekapcsolási időnek” nevezzük, és azt az időt, amely alatt a jel alacsony marad, „kikapcsolási időnek”. A PWM-nek két fontos paramétere van, az alábbiak szerint:
A PWM munkaciklusa:
Az az idő százalékos aránya, amelyben a PWM jel HIGH marad (időben), ciklusnak számít. Ha a jel mindig BE van kapcsolva, akkor 100% -os működési ciklusban van, és ha mindig ki van kapcsolva, akkor 0% -os működési ciklus.
Üzemeltetési ciklus = bekapcsolási idő / (bekapcsolási idő + kikapcsolási idő)
PWM gyakorisága:
A PWM jel frekvenciája határozza meg, hogy egy PWM milyen gyorsan fejezi be az egyik periódust. Egy periódus befejezte a PWM jel be- és kikapcsolását a fenti ábrán látható módon. Oktatóanyagunkban a frekvencia legyen 500Hz, mivel ez az Energia IDE által alapértelmezetten beállított érték.
Rengeteg alkalmazás kínál valós idejű PWM jeleket, de hogy ötletet adjon neked, a PWM jel felhasználható a szervomotorok vezérlésére, és átalakítható analóg feszültséggé is, amely szabályozni tudja a LED fényerejének fényerejét. Tanuljunk meg egy kicsit arról, hogyan lehet ezt megtenni.
Íme néhány PWM példa más mikrovezérlőkkel:
- PWM előállítása PIC mikrokontrollerrel MPLAB és XC8 segítségével
- Szervomotor vezérlés Raspberry Pi-vel
- Arduino alapú LED dimmer PWM használatával
Itt tekintheti meg az összes PWM-mel kapcsolatos projektet.
Hogyan lehet átalakítani a PWM jelet analóg feszültséggé?
Az analóg feszültségű jelek PWM-jéhez az RC szűrő nevű áramkört használhatjuk. Ez egy egyszerű és leggyakrabban használt áramkör erre a célra. Az áramkör csak soros ellenállást és kondenzátort tartalmaz, amint az az alábbi áramkörben látható.
Tehát itt alapvetően az történik, hogy amikor a PWM jel magas, a kondenzátor az ellenálláson keresztül feltöltődik, és amikor a PWM jel lemerül, a kondenzátor a tárolt töltésen keresztül kisül. Így mindig állandó feszültségünk lesz a kimeneten, amely arányos lesz a PWM munkaciklusával.
A fenti grafikonon a sárga színű a PWM jel, a kék pedig a kimeneti analóg feszültség. Mint látható, a kimeneti hullám nem lesz tiszta DC hullám, de nagyon jól kell működnie az alkalmazásunk számára. Ha más típusú alkalmazásokhoz tiszta DC hullámra van szüksége, akkor meg kell terveznie egy kapcsolási áramkört.
Kördiagramm:
A kapcsolási rajz meglehetősen egyszerű; csak egy potenciométerrel, egy ellenállással és kondenzátorral rendelkezik, hogy kialakítson egy RC áramkört és magát a Led-et. A potenciométert analóg feszültség biztosítására használják, amely alapján a PWM jel működési ciklusa vezérelhető. A pot kimenete a P1.0 csaphoz van csatlakoztatva, amely leolvassa az analóg feszültségeket. Ezután elő kell állítanunk egy PWM jelet, amelyet a P1.2 csap segítségével lehet megtenni. Ezt a PWM jelet ezután elküldjük az RC szűrő áramkörbe, hogy a PWM jelet analóg feszültséggé alakítsuk, amelyet ezután a LED-nek adunk.
Nagyon fontos megérteni, hogy az MSP-alaplapon lévő összes tű nem képes analóg feszültséget olvasni, vagy PWM-érintkezőket generálni. A konkrét feladatokat elvégző csapok az alábbi ábrán láthatók. Mindig ezt használja útmutatásként a csapok kiválasztásához a programozáshoz.
Szerelje össze a teljes áramkört a fent látható módon. Használhat kenyérlapot és néhány jumper vezetéket, és könnyedén létrehozhatja a csatlakozásokat. Miután a csatlakozások elkészültek, a táblám az alábbiak szerint nézett ki.
Az MSP programozása PWM jelre:
Miután a hardver készen áll, kezdhetjük a programozással. A programban az első dolog, hogy deklaráljuk azokat a csapokat, amelyeket használni fogunk. Itt a 4-es tűt (P1.2) fogjuk használni kimeneti tűként, mivel képes PWM előállítására. Tehát létrehozunk egy változót, és hozzárendeljük a pin nevet, hogy később könnyen lehessen rá hivatkozni a programban. A teljes program a végén található.
int PWMpin = 4; // Az MSP modul 4. tűjét használjuk PWM tűként
Ezután a beállítási funkcióba lépünk. Bármi kód van írva itt is csak egyszer kell végrehajtani, itt kijelentjük, hogy használja ezt a 4 th pin mint kimeneti pin mivel PWM kimenet funkciót. Vegye figyelembe, hogy itt a PWMpin változót használtuk a 4-es szám helyett, hogy a kód értelmesebbnek tűnjön
void setup () { pinMode (PWMpin, OUTPUT); // A PEMpin beállítása Outptut }
Végül bekerülünk a hurok funkcióba. Bármit is írunk ide, újra és újra végrehajtják. Ebben a programban le kell olvasnunk az analóg feszültséget, és ennek megfelelően PWM jelet kell generálnunk, és ennek újra és újra meg kell történnie. Tehát először azzal kezdjük, hogy leolvassuk az analóg feszültséget az A0 tűről, mivel csatlakoztunk hozzá a potenciométerhez.
Itt az értéket az AanalogRead függvény segítségével olvassuk le , ez a függvény 0-1024 értéket ad vissza a csapra alkalmazott feszültség értéke alapján. Ezután ezt az értéket egy „val” nevű változóba tároljuk, az alábbiak szerint
int val = analógRead (A0); // leolvassa az ADC értéket az A0 tűről
Át kell alakítanunk a 0 és 1024 közötti értékeket az ADC-ből 0 és 255 közötti értékekre, hogy a PWM függvényhez adjuk. Miért kellene ezt átalakítanunk? Rövidesen elmondom, de most ne feledje, hogy meg kell térnünk. Átalakítani egy értékrend másik értékrendet Energia egy térkép funkció hasonló Arduino. Tehát a 0-1204 értékeket 0-255 értékekké konvertáljuk, és visszatároljuk a "val" változóba.
val = térkép (val , 0, 1023, 0, 255); // Az ADC 0-1023 értéket ad, konvertálja 0-255-re
Most 0-255 változó értéket kapunk a potenciométer helyzete alapján. Csak annyit kell tennünk, hogy ezt az értéket használja a PWM csapon, ezt a következő sor segítségével teheti meg.
analogWrite (PWMpin, val); // Írja be ezt az értéket a PWM pin-be.
Térjünk vissza arra a kérdésre, hogy miért írják a 0-255-et a PWM pin-re. Ez a 0-255 érték határozza meg a PWM jel munkaciklusát. Például, ha a jel értéke 0, akkor ez azt jelenti, hogy a munkaciklus 0%, 127 esetében ez 50%, 255 esetében pedig 100%, csakúgy, mint amit a cikk tetején bemutattunk és elmagyaráztunk.
A LED fényerejének szabályozása PWM-mel:
Miután megértette a hardvert és a kódot, itt az ideje, hogy szórakozzon az áramkör működésével. Töltse fel a kódot az MSP430G2 táblára, és forgassa el a potenciométer gombját. A gomb forgatásakor a 2. érintkező feszültsége változni fog, amelyet a mikrovezérlő le fog olvasni, és a feszültségnek megfelelően a PWM jelek keletkeznek a 4. tűn. Minél nagyobb a feszültség, annál nagyobb lesz az üzemi ciklus és fordítva.
Ez a PWM jel ekkor átalakul analóg feszültséggé, hogy egy LED világítson. A LED fényereje egyenesen arányos a PWM jel működési ciklusával. A kenyérlapon található LED mellett észreveheti az smd LED (piros szín) fényerejét is, amely hasonló a kenyérlap LED-hez. Ez a LED szintén ugyanarra a tűre van csatlakoztatva, de nincs RC hálózata, így valójában nagyon gyorsan villog. A táblát egy sötét szobában megrázhatja, hogy ellenőrizze a villódzó jellegét. A teljes munka az alábbi videóban is látható.
Mostanra ennyi az egész, megtanultuk, hogyan kell használni a PWM jeleket az MSP430G2 táblán, a következő bemutatónkban megtudhatjuk, milyen egyszerű vezérelni a szervomotort ugyanazokkal a PWM jelekkel. Ha kétségei vannak, tegye közzé az alábbi megjegyzés részben vagy a technikai segítséget nyújtó fórumokon.