<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
16.4. PWM üzemmód
A PWM jelek bemutatása
A CCP modul PWM üzemmódja
Periódusidő beállítása
Kitöltési tényező beállítása
Felbontás megválasztása
Kimenet késleltetés
A szükséges órajel meghatározása (1. példa)
Az elérhető felbontás meghatározása (2. példa)
Az elérhető frekvencia meghatározása (3. példa)
Programozás
A vezérlési és szabályozási folyamatok analóg feszültségjelei (teljesítményjelei) helyettesíthetők digitális impulzussorozat-jelekkel, amelyek hosszabb időtartamra vonatkoztatott átlagfeszültsége egyenértékű az analóg feszültségjellel.
A digitális impulzussorozat frekvenciáját úgy kell (elegendően nagyra) megválasztani, hogy az, a vezérelt vagy szabályozott eszköz megfelelő működését biztosítsa. (Például egy fényforrás folyamatos működésűnek látsszon, vagy egy egyenáramú motor ne lökésszerűen változó szögsebességgel forogjon.)
Az ilyen digitális jelek egyik jól használható változatai a PWM (Pulse Width Modulation - Impulzus-szélesség modulált) jelek, amelyek olyan állandó periódusidejű (és frekvenciájú) jelek, ahol az átlagfeszültség beállítása a jel kitöltési tényezőjének változtatásával történik.
Néhány különböző kitöltési tényezőjű PWM jelet mutat be a következő ábra:
16.4-1. Ábra
A PWM jelek digitális elemekkel történő megvalósításához szükség van egy állandó órajellel léptetett számlálóregiszterre, amelynek teljes átfutása adja a PWM jel TPWM periódusidejét. A számlálóregiszter minden túlcsordulásakor új periódus kezdődik, a PWM kimenet szintje logikai "1"-re vált. Egy, a számlálóregiszterrel megegyező hosszúságú "kitöltési ciklus" regiszterbe kell elhelyezni a kitöltési tényezőnek megfelelő értéket, amely folyamatos összehasonlításra kerül a számlálóregiszterrel. Amikor a számlálóregiszter értéke eléri a "kitöltési tényező" regiszter értékét, a PWM kimenet szintje "0"-ra vált.
A PWM jelek pontosságát a kitöltési tényező beállíthatóságának pontossága, vagyis a számlálóregiszter hossza határozza meg.
A PWM jelek két alapjellemzője:
ˇ
a felbontás, amelyet a számlálóregiszter hossza, azaz bitszáma határoz meg (például "8-bites PWM jel");
ˇ
és a frekvencia, amely a számlálóregiszter hosszától és léptetőjelének frekvenciájától függ.
A PWM jelek frekvenciája számítható:
ahol:
ˇ
fLÉPTETŐ - a számlálóregisztert léptető jel frekvenciája [Hz];
ˇ
N - a számlálóregiszter bitszáma.
Természetesen:
PWM jel szoftveresen is előállítható a mikrovezérlő valamelyik általános I/O kivezetésén, a mikrovezérlő egyik hardveres számlálójának felhasználásával, vagy anélkül is. Természetesen a szoftveresen előállított PWM jelforrás működtetése bizonyos mértékben (esetenként nagymértékben) leköti a mikrovezérlő erőforrásait.
A CCP modult tartalmazó mikrovezérlők alkalmasak PWM jelek hardveres előállítására. A CCP modul alkalmazása általában minimális szoftvererőforrást igényel, csupán beállítási és indítási parancsokkal folyamatos PWM jel hozható létre. Számottevő szoftverigénye csak a kitöltési tényező folyamatos változtatását követelő alkalmazásoknak van.
A közepes teljesítményű PIC mikrovezérlőkbe két fajta CCP modul lehet beépítve:
ˇ
alap CCP modul egy PWM kimenettel (amelyet ez a fejezet mutat be);
ˇ
továbbfejlesztett ECCP modul négy (nem független) PWM kimenettel és további különleges funkciókkal.
Az alap CCP modul PWM üzemmódjának egyszerűsített blokkvázlata:
16.4-2. Ábra
Az ábrán megfigyelhető a 10-bitesre kibővített TMR2 számlálóregiszter, amely a PWM jel generátor állandó órajellel léptetett számlálóregisztere. (A TMR2 előtti két, az ábrán sárga színnel jelölt számlálóbit előosztás nélküli léptetés esetén egy külön 2-bites számlálóval van megvalósítva, amelyet közvetlenül a mikrovezérlő órajele léptet. Előosztásos (1:4, 1:16) léptetés esetén a sárga színnel jelölt számlálóbitek az előosztó számlálójának utolsó bitjei. Az előosztás egyes eseteinek részletes bemutatása megtalálható a PWM üzemmód felfedezése című cikkben.)
A TMR2 számlálóregiszter felső nyolc bitjének állapota állandó összehasonlításra kerül a PR2 regiszter szoftverből beállított értékével. Egyezés esetén, bizonyos késleltetéssel a következők történnek meg:
ˇ
a 10-bitesre kibővített TMR2 számlálóregiszter nullázódik;
ˇ
a CCPx kivezetés logikai "1" értékűre vált;
ˇ
a CCPRxL "kitöltési tényező" regiszter szoftverből beállított értéke átíródik a CCPRxH tárolóregiszterbe.
A 10-bitesre kibővített TMR2 számlálóregiszter állapota állandó összehasonlításra kerül a CCPRxH regiszter és a CCPxCON regiszter két kijelölt bitjének értékével. Egyezés esetén a CCPx kivezetés logikai "0" értékűre vált.
A mikrovezérlő készenléti üzemmódjának aktiválásakor a Timer 2 léptetése leáll, a CCPx kivezetés az újraindításig megőrzi értékét. Az újraindítás után a PWM működés folyatatódik.
Bármely Reset-esemény hatására a CCP modul kikapcsolt helyzetbe áll be.
(A Timer 2 számláló modul programozható utóosztója PWM üzemmódban is működik és megszakításkérő kimenő jele egyéb feladatokra felhasználható. Az utóosztó kimenő jelének periódusideje a PWM periódusidő egész számú többszöröse (1-től 16-ig).)
A Timer 2 számláló modul 10-bitesre kibővített TMR2 számlálóregiszterének átfutása adja a PWM jel periódusidejét (frekvenciáját). A TMR2 átfutási ideje, vagyis a PWM jel frekvenciája függ:
ˇ
a PR2 periódusregiszter értékétől (mivel a TMR2 nullázódik (újraindul) a PR2 és a TMR2 felső nyolc bitjének egyezésekor);
ˇ
és a 10-bitesre bővített TMR2 léptetőjelének frekvenciájától.
A számlálóregiszter léptetőjele és az elérhető PWM frekvenciák a Timer 2 számláló előosztó beállításának függvényében:
Timer 2 előosztás |
10-bitesre bővített TMR2 léptetőjel frekvenciája |
Mikrovezérlő órajele | |||||
---|---|---|---|---|---|---|---|
20 MHz | 10 MHz | 4 MHz | 1 MHz | 200 kHz | 80 kHz | ||
Frekvencia Léptetés / 10-bites PWM-jel / 8-bites PWM jel |
|||||||
1:1 | fOSC | 20 MHz 19,5 kHz 78,1 kHz |
10 MHz 9,76 kHz 39 kHz |
4 MHz 3,9 kHz 15,6 kHz |
1 MHz 0,97 kHz 3,9 kHz |
200 kHz 195 Hz 780 Hz |
80 kHz 78 Hz 312 Hz |
1:4 | fOSC/4 = fUTASÍTÁS | 5 MHz 4,9 kHz 19,5 kHz |
2,5 MHz 2,44 kHz 9,76 kHz |
1 MHz 0,97 kHz 3,9 kHz |
250 kHz 244 Hz 976 kHz |
50 kHz 49 Hz 195 Hz |
20 kHz 19,5 Hz 78 Hz |
1:16 | fOSC/16 | 1,25 MHz 1,22 kHz 4,9 kHz |
625 kHz 0,61 kHz 2,44 kHz |
250 kHz 244 Hz 976 Hz |
62,5 kHz 61 Hz 244 Hz |
12,5 kHz 12 Hz 49 Hz |
5 kHz 4,9 Hz 19,5 Hz |
A táblázat kék színnel kiemelt értékei jelentik a maximálisan elérhető frekvenciákat 8- és 10-bites felbontású PWM jelek esetén.
A PWM jel periódusidejét megadó összefüggés:
TPWM = (PR2 + 1) · 4 · K · TOSC [s],
illetve:
ahol:
ˇ
PR2 - a PR2 regiszter értéke;
ˇ
TOSC - a mikrovezérlő órajelének periódusideje [s];
ˇ
fOSC - a mikrovezérlő órajelének frekvenciája [Hz];
ˇ
K - a Timer 2 előosztó áramkör osztási arányának osztója (1, 4 vagy 16).
A szükséges PR2 érték adott periódusidő és órajelfrekvencia mellett:
A PWM jel kitöltési tényezőjét a CCPRxL regiszter és a CCPxCON regiszterben elhelyezett DCxB1 és DCxB0 bitek értéke határozza meg, amelyek szoftverből bármikor megváltoztathatók. A PWM ciklus elején a szoftveresen megadott érték átkerül a 10-bitesre bővített CCPRxH regiszterbe, amely az összehasonlítás alapját képezi. (Ez a mechanizmus biztosítja, hogy a kitöltési tényező változtatásakor ne keletkezzen szabálytalan kimenő jel.)
A PWM jel logikai "1" szintjének időtartamát megadó összefüggés:
TH = (CCPRxL, DCxB1, DCxB0) · K · TOSC [s],
illetve:
ahol:
ˇ
(CCPRxL, DCxB1, DCxB0) - a kitöltési tényező 10-bites értéke (a felső 8 bit a CCPRxL regiszter, az alsó két bit a CCPxCON regiszter DCxB1 és DCxB0 bitje);
ˇ
TOSC - a mikrovezérlő órajelének periódusideje [s];
ˇ
fOSC - a mikrovezérlő órajelének frekvenciája [Hz];
ˇ
K - a Timer 2 előosztó áramkör osztási arányának osztója (1, 4 vagy 16).
A beállítandó érték adott időtartam és órajelfrekvencia mellett:
A kitöltési tényezőt (a logikai "1" szint százalékos arányát) megadó összefüggés:
amelybe behelyettesítve és egyszerűsítve:
A beállítandó érték adott kitöltési tényező megvalósításához:
(A CCPRxL regiszter értékének PR2 értékénél nagyobbra állítása 100 %-os kitöltési tényezőt eredményez.)
A PWM jel felbontását a 10-bitesre bővített TMR2 számlálóregiszter lépéseinek száma, vagyis a PR2 regiszter értéke határozza meg. (A PR2 értéke határozza meg a számlálóregiszter teljes átfutásának idejét is, vagyis a PWM jel periódusidejét. Tehát a periódusidő és a felbontás összefügg, a léptető jel frekvenciájának megtartása mellett csak együtt változtatható.)
A TMR2 és a PR2 viszonyából (2-bites eltolás) a TMR2 lépéseinek száma:
Z = 4 · (PR2 + 1).
Mivel természetesen igaz a lépésszám és a bitek számával (N) kifejezett felbontás összefüggése:
Z = 2N,
megadható a bitek számával kifejezett felbontás függése a PR2 értékétől:
2N = 4 · (PR2 + 1),
amit átrendezve adódik az adott felbontáshoz szükséges PR2 érték meghatározásának módja:
A következő táblázat a PR2 kívánt értékét adja meg néhány egész bitszámú felbontáshoz az elérhető PWM frekvencia szerepeltetésével.
N felbontás |
Z lépésszám |
PR2 értéke | Elérhető fPWM PWM frekvencia (fOSC = 20 MHz) |
10 bit | 1024 | 255d = FFh | 19,5 kHz |
9 bit | 512 | 127d = 7Fh | 39 kHz |
8 bit | 256 | 63d = 3Fh | 78,1 kHz |
7 bit | 128 | 31d = 1Fh | 156 kHz |
6 bit | 64 | 15d = 0Fh | 312 kHz |
5 bit | 32 | 7d = 07h | 625 kHz |
4 bit | 16 | 3d = 03h | 1250 kHz |
A megvalósítható maximális NMAX felbontást, illetve ZMAX lépésszámot az órajelfrekvencia (fOSC) és a PWM frekvencia (fPWM) aránya adja meg:
amiből kifejezhető a bitek számával (N) megadott elérhető maximális felbontás:
és az elérhető maximális PWM frekvencia:
A PWM üzemmód, illetve a Timer 2 számláló indítása után a kimenő jel csak bizonyos késleltetés után jelenik meg, amely késleltetés a PWM generátor felépítésének sajátosságaiból adódik. A késleltetés értékére a gyártó nem ad felvilágosítást. (A késleltetés kísérleti úton megállapítható. Lásd a PWM üzemmód felfedezése című cikkben.)
A kimenő jel megjelenés késleltetésének összefüggéseit mutatja be a következő táblázat.
Előosztás nélkül K = 1 |
Előosztással K = 4 vagy K = 16 |
|
---|---|---|
PR2 = 0 | a PWM üzemmód indításától számítva 1 [órajelciklus] vagy 1 · TOSC [s] |
a Timer 2 indításától számítva K [órajelciklus] vagy K · TOSC [s] |
PR2 ≠ 0 | a Timer 2 indításától számítva [(PR2 + 1) · 4 · K] + K [órajelciklus] vagy TPWM + K · TOSC [s] |
Látható, hogy a kísérleti úton meghatározott összefüggések az előosztó beállításaitól és a PR2 értékétől függően különbözőek, illetve a PR2 = 0 és K = 1 beállítás alkalmazása esetén a PWM generátor eltérő viselkedést mutat: a PWM jel még a Timer 2 engedélyezése előtt megjelenik.
A különös viselkedés oka az, hogy a Timer 2 előosztó nélküli működtetése esetén (K=1) a külön 2-bites osztóra a Timer 2 engedélyező jele nincs hatással, vagyis az előosztó a PWM üzemmód kiválasztásakor már működik. (Valójában a PR2 = 0 és K = 1 beállítások mellett a PWM generátor a Timer 2 bekapcsolása nélkül is szabályszerűen üzemel. Persze ez a beállítás csak 2-bites felbontású jelek létrehozását jelenti, csupán 0%, 25%, 50%, 75% és 100%-os kitöltési tényezőket valósíthat meg.)
A következő példa az adott PWM frekvenciához és felbontáshoz szükséges órajel meghatározását mutatja be. (A választott órajel a lehető legkisebb, de a mikrovezérlő egyéb feladatainak ellátásához még elegendő legyen.)
1. PÉLDA | LED fényerő vezérlés | |
---|---|---|
Kiinduló adatok | Kívánt minimális PWM frekvencia: fPWM = 100 Hz. Kívánt felbontás: N = 6 bit. |
|
Lépésszám | Z = 2N = 26 = 64. | |
Minimális órajel |
Előosztás K = 1 |
(Léptető jel frekvenciája: fOSC/K = fOSC.) fOSC = fPWM · Z · K = 100 Hz · 64 · 1 = 6,4 kHz. |
Előosztás K = 4 |
(Léptető jel frekvenciája: fOSC/K = fOSC/4.) fOSC = fPWM · Z · K = 100 Hz · 64 · 4 = 25,6 kHz. |
|
Előosztás K = 16 |
(Léptető jel frekvenciája: fOSC/K = fOSC/16.) fOSC = fPWM · Z · K = 100 Hz · 64 · 16 = 102,4 kHz. |
|
Választott órajel |
K = 16. fOSC = 130 kHz. Az RC oszcillátoros órajelgenerátor 20%-os pontossága mellett: fOSCmin = 104 kHz; fOSCmax = 156 kHz. |
|
Megvalósított PWM frekvencia |
fPWM = fOSC / (Z · K) = 130000 Hz / (64 · 16) = 127 Hz ±20 %. fPWMmin = 101 Hz; fPWMmax = 152 Hz. |
|
PWM periódusidő | TPWM = 1 / fPWM = 1 / 127 Hz = 0,007874 s. | |
PR2 értéke | PR2 = [(0,007874 s · 130000 Hz) / (4 · 16)] - 1 = 15. |
|
A kitöltési tényező határértékei |
A 100 %-os kitöltési tényezőhöz tartozó érték: (CCPRxL, DCxB1, DCxB0) = [100 · (15 + 1)] / 25 = 64. A minimális érték: A maximális érték: |
A következő példa az adott órajel és PWM frekvencia mellett elérhető felbontás meghatározását mutatja be.
2. PÉLDA | Analóg kimenet megvalósítása | |
---|---|---|
Kiinduló adatok | Kívánt PWM frekvencia: fPWM = 100 kHz. A mikrovezérlő órajele: fOSC = 10 MHz. |
|
Az elérhető lépésszám | ZMAX = fOSC / fPWM = 10000000 / 100000 = 100. | |
Az elérhető felbontás | NMAX = log2 ZMAX = log2 100 = 6,6438 bit. | |
PR2 értéke | Kihasználva a maximális felbontást: PR2 = (26,6438 / 4) - 1 = 24. |
|
A kitöltési tényező határértékei |
A 100 %-os kitöltési tényezőhöz tartozó érték: (CCPRxL, DCxB1, DCxB0) = [100 · (24 + 1)] / 25 = 100. A minimális érték: A maximális érték: |
A következő példa az adott órajel és felbontás mellett elérhető PWM frekvencia meghatározását mutatja be.
3. PÉLDA | Analóg kimenet megvalósítása | |
---|---|---|
Kiinduló adatok | Kívánt felbontás: N = 8 bit. A mikrovezérlő órajele: fOSC = 4 MHz. |
|
Kívánt lépésszám | Z = 2N = 28 = 256. | |
Az elérhető PWM frekvencia |
fPWMmax = fOSC / Z = 4000000 / 256 = 15,625 kHz. | |
PR2 értéke | PR2 = (28 / 4) - 1 = 63. |
|
A kitöltési tényező határértékei |
A 100 %-os kitöltési tényezőhöz tartozó érték: (CCPRxL, DCxB1, DCxB0) = [100 · (63 + 1)] / 25 = 256. A minimális érték: A maximális érték: |
A CCP modul PWM üzemmódjának működtetéséhez végre kell hajtani a következő programozási lépéseket:
ˇ
a CCPx kivezetés iránybeállítását (kimenetnek);
ˇ
a Timer 2 számláló előosztójának beállítását a T2CON vezérlő regiszter T2CKPS0 és T2CKPS1 bitjeinek értékadásával;
ˇ
a Timer 2 számláló modul TMR2 számlálóregiszterének nullázását;
ˇ
a PR2 regiszter értékadását (a PWM jel periódusidejének megfelelően);
ˇ
a CCPRxL regiszter értékadását (a PWM jel kitöltési tényezőjének megfelelően);
ˇ
a CCPxCON regiszter DCxB0 és DCxB1 bitjének értékadását (a PWM jel kitöltési tényezőjének megfelelően);
ˇ
a PWM üzemmód indítását a CCPxCON regiszter CCPxM3..CCPxM0 bitjeinek értékadásával (1100);
ˇ
a Timer 2 számláló indítását a T2CON vezérlő regiszter TMR2ON bitjének "1"-re állításával.
A PWM üzemmód beállításait és indítását mutatja be a következő programrészlet.
... ... ... ... ... bsf STATUS,5 ;az 1. adatmemória lap kiválasztása bcf TRISB,3 ;a CCP1 kivezetés kimenetként való beállítása movlw H'3F' ;W = 3Fh movwf PR2 ;a periódusidő értékének bevitele ... ... ... ... bcf STATUS,5 ;a 0. adatmemória lap kiválasztása clrf TMR2 ;a Timer 2 számlálóregiszter nullázása bsf T2CON,0 ;a Timer 2 előosztás beállítása K=4-re movlw H'1F' ;W = 1Fh movwf CCPR1L ;a kitöltési tényező értékének bevitele movlw H'0F' ;W = 0Fh movwf CCP1CON ;DC1B1 és DC1B0 érték bevitele, PWM indítása bsf T2CON,2 ;a Timer 2 indítása ... ...
Tudomány és Technika (test@t-es-t.hu)
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>