Jste zde

Efektivně na PWM s x51

PWM - pulsně šířková modulace je oblíbená pro opticlý přenos informací, analogové řízení atd. Tento

příspěvek řeší PWM pomocí HW obvodu CDP68HC68W1.

Úvod aneb princip PWM.
Pulse Width Modulation / (modulace délkou nebo šířkou impulsu) V digitální komunikaci se jedná o označení pro metodu kódování binární informace do nosného analogového signálu pomocí růz-né délky trvání impulsů. Pro upřesnění lze dodat, že pro signál, který má jen stavy „L“ a „H“ je možné další informaci kódovat právě do časového trvání patřičné napěťové úrovně. 

Programovatelný periferní obvod pro generování PWM signálu
Firma HARRIS vyrábí programovatelný periferní obvod, který umí velmi pružně generovat signál PWM na úrovni TTL (Datasheet CDP68HC68W1). Blokové schéma tohoto obvodu je na obrázku. Základem je modulační logika, která generuje signál PWM ze vstupního hodinového signálu přivedeného na vstup CLK. 
 



 

Blokové schéma obvodu CDP68HC68W1

Celkem tři 8-mi bitové registry definují všechny programovatelné vlastnosti PWM signálu. Jsou jimi :

  • Řídící registr  (Control Register),
  • Registr frekvence (Frequency Register),
  • Registr šířky impulsu (Pulse-Width Register),
Přístup k buňkám těchto registrů zajišťuje standardní sériové rozhraní SPI (Serial Peripheral Interface), které postupně naplní jednotlivé bity registrů. 
 
Control Register
Frequency Register
Pulse-Width Register
7
6
5
4
3
2
1
0
7
6
5
4
3
2
1
0
7
6
5
4
3
2
1
0
X
X
X
X
X
X
PC
CD
f
f
f
f
f
f
f
f
N
N
N
N
N
N
N
N

Obsazení registrů je variabilní, podle potřeby je možné vyslat do obvodu 8, 16, nebo 24 bitů. Tak nastavujeme jen šířku impulsu, frekvenci nebo řídící registr. Je samozřejmé, že po zapnutí napájení je nutné alespoň jedenkrát nastavit obvod do počátečního stavu zapsáním plné 24. bitové informace. Pro mikropočítače, které jsou vybaveny SPI rozhraním je nutné nastavit v kontrolním registru bity CPOL, CPHA do „L“, což znamená, že platnost dat na datovém vodiči (DATA) je při nástupní hraně hodinového signálu (SCK). Počet vyslaných bitů (po osmi) je řízen také signálem výběru obvodu (CS).

Označení bitů, výpočet opakovací frekvence a šířky PWM:

  • PC - (Power Control) - řízení spotřeby - pro „L“ je chip aktivní, pro „H“ jsou vnitřní hodiny, komparátor a referenční napětí blokováno. V tomto případě je čip v tzv. nízkopří-konovém modu (power down), z něho se dostane jen plným naprogramováním 24-bitové informace.
  • CD - (Clock Divider) - klopný obvod děliče - pro „L“ se vstupní kmitočet CLK nebude dělit, pro „H“ je vstupní kmitočet CLK podělen dvěma.
  • f - 8-mi bitová informace o opakovací frekvenci PWM dle vzorce :
  • N - 8-mi bitová informace o délce aktivní části PWM (úroveň „H“) dle vzorce:
Velmi zvláštní funkci má vstup obvodu VT - (Voltage Threshold) - Napěťový práh - vstup do komparátoru, který při analogovém napětí větším jak 0,75V automaticky nastaví výstup PWM do „L“. Tento stav potrvá do doby než se napětí sníží na hodnotu 0,4V. Tento vstup je možné použít pro nezávislé (mimo program) blokování PWM výstupu.

Připojení PWM obvodu k mikroprocesorovému systému.
K mikroprocesoru řady ’51, který nemá integrováno SPI rozhraní, lze programovatelný obvod PWM připojit poměrně jednoduše a ještě je možné použít přímo krystal mikroprocesoru. Na obrázku je uveden příklad připojení. PWM obvod se k mikroprocesoru připojí třemi vodiči (DATA, SCK, CS). Zdroj hodinového kmitočtu pro vstup pin CLK použijeme z hodin mikropro-cesoru na výstupu X2. Je tu však problém maximálního možného kmitočtu na vstupu CLK tj. 8MHz. Pokud máme krystal s vyšším kmitočtem, použijeme binární děličky HCF4024 a vybereme vhodný nižší kmitočet na některém z jeho výstupu. Z praktických zkoušek doporučuji zakoupit doopravdy obvod „F“ i když s jeho koupí můžete mít problém. Tato varianta děličky totiž spolehlivě funguje i při kmitočtu krystalu 22,1184MHz. 
 

Elektrické schéma zapojení

I matematika se hodí 
Nebudeme to přehánět, ale jeden příklad výpočtu opakovací frekvence PWM si uveďme. Předpokládejme kmitočet krystalu (X2) 11,0592 MHz, na zvoleném výstupu binární děličky (Q1) dle obrázku je kmitočet poloviční, tedy 5,5296 MHz.  Pokud nepoužijeme vnitřní děličku je CD=0. Využitím možnosti plného rozlišení 8-mi bitové informace (N=255) získáme výstupní kmitočet PWM dosazením do (1) 21,6 kHz. Při tomto kmitočtu můžeme řídit šířku impulsu PWM dle (2) v rozsahu binárních čísel 1 a 255, tedy s rozlišením přibližně 0,4%.

Programová obsluha PWM obvodu
V přiloženém výpise jsou uvedeny dva podprogramy (PWM_NIT, PWM_OUT).  První z nich slouží k inicializaci připojeného obvodu PWM, přičemž se nepředpokládá vyu-žití vnitřní děličky kmitočtu. Vstupním parametrem je pouze jediné číslo, v registru Acc před vo-láním procedury, která udává výsledný opakovací kmitočet PWM a nastavuje šířku impulsu PWM na poměr 1:1. 
Druhá procedura nastavuje konkrétní šířku impulsu PWM údajem z registru Acc.

Závěr
Oblast použití PWM je velmi široká od klasického přenosu informace, přes D/A převodníky  až po výkonové řízení stejnosměrných motorů. Právě použití u výkonových obvodů je použití PWM velmi energeticky výhodné, neboť výkonové spínací prvky pracují pouze ve dvou stavech - zapnuto, vypnuto a ztráty (především tepelné) jsou u nich minimalizovány. 
 

Vysílací strana


; definice pinu

CE_W       BIT P1.5    ;
DOUT       BIT P1.6    ;INIT, nastaveni konstant
SCLK       BIT P1.7    ;

;#################################################################
;       P W M  -  obvod CDP68HC68W1 -  Inicializace
;#################################################################
;
;  Popis  : inicializuje cely obvod PWM,
;
;  vstup  : v ACC je N - opakovaci perioda sirky impulsu
;           nastavi PWM na impuls 1:1 =  N/2
;  zmeni  : Acc,B
 

PWM_INIT:
        CLR  CE_W               ;enable
        CLR  DOUT
        MOV  B,#6               ;6 x CLK 0 bitu data
PWM_IN1:
;    ---------------------------;Control Word
        CLR  SCLK
        NOP
        SETB SCLK               ;_|~   6x
        DJNZ B,PWM_IN1
        CLR  DOUT               ;POWER UP   "L"
        CLR  SCLK
        NOP
        SETB SCLK               ;_|~   7
        NOP
        CLR  SCLK
;       SETB DOUT               ;CLOCK deleni 2 "H"
        NOP
        SETB SCLK               ;_|~   8
;    ---------------------------;Frequency Word
        PUSH Acc                ;ulozime pro PWM
        MOV  B,#8
PWM_IN2:
        CLR  SCLK
        RLC  A                  ;nejvyssi do CY
        MOV  DOUT,C             ;vyslani
        SETB SCLK               ;zapis bitu
        DJNZ B,PWM_IN2
        POP  Acc                ;vyzvedneme pro PWM
        ANL  A,#11111110B       ;dolni bit pryc
        RR   A                  ;delime 2
;     --------------------------;PWM Word
        MOV  B,#8
PWM_IN3:
        CLR  SCLK
        RLC  A                  ;nejvyssi do CY
        MOV  DOUT,C             ;vyslani
        SETB SCLK               ;zapis bitu
        DJNZ B,PWM_IN3
        CLR  SCLK
        SETB CE_W               ;disable
        RET

Přijímací  strana


;;#################################################################
;       P W M  -  obvod CDP68HC68W1 -  Zmena sirky
;#################################################################
;
;  Popis  : meni sirku impulsu PWM podle dat v Acc
;
;  vstup  : v ACC je pozadovana sirka impulsu  01H - FEH
;  zmeni  : Acc,B

PWM_OUT:
        MOV  B,#8
        SETB SCLK
        CLR  CE_W               ;enable
PWM_OP:
        CLR  SCLK
        RLC  A                  ;nejvyssi do CY
        MOV  DOUT,C             ;vyslani
        SETB SCLK
        DJNZ B,PWM_OP
        NOP
        SETB CE_W               ;disable
        CLR  SCLK
        RET
;#################################################################
 

 DOWNLOAD



Dovnload rutin - 68hc68w1.asm (2.5 kb) 
Hodnocení článku: