Vissza a főoldalra    Vissza a PIC főoldalra

<< 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:

PWM jelek
16.4-1. Ábra

Vissza a lap tetejére

      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.

Vissza a lap tetejére

      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:

A PWM üzemmód 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).)

Vissza a lap tetejére

      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:

16.4-1. Táblázat
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:

Vissza a lap tetejére

      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.)

Vissza a lap tetejére

      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:

Vissza a lap tetejére

      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.

16.4-2. Táblázat
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:

Vissza a lap tetejére

      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.

16.4-3. 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.)

Vissza a lap tetejére

      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.)

16.4-4. Táblázat
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:

Vissza a lap tetejére

      A következő példa az adott órajel és PWM frekvencia mellett elérhető felbontás meghatározását mutatja be.

16.4-5. Táblázat
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:

Vissza a lap tetejére

      A következő példa az adott órajel és felbontás mellett elérhető PWM frekvencia meghatározását mutatja be.

16.4-6. Táblázat
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:

Vissza a lap tetejére

      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 >>

Vissza a főoldalra    Vissza a PIC főoldalra