Pulzno-širinska modulacija

Download Report

Transcript Pulzno-širinska modulacija

Pulzno-širinska modulacija
PŠM
Ang.: Pulse Width Modulation
(PWM)
Izvedbe PŠM z mikrokrmilnikom
1. Z IRQ ob uporabi časovnika
Za: 8 bitna resolucija do nekaj kHz
Proti: omejitev na 1 kanal, izkrmiljenje od 4 do 96%
2. Uporaba namenskega modula za PŠM
PŠM z uporabo IRQ in časovnika
Kako deluje…
Perioda
Del. razm.
Perioda
Del. razm.
org
0x004
; Lokacija prekinitvenega vektorja
IntVector
movwf
btfsc
goto
TEMPW
PWM
PWMLow
; Zacasno shrani W
; Ali je bila na izhodu logicna 0?
; Ne ...
swapf
bsf
nop
movwf
bcf
swapf
swapf
OUTHIGH,W
PWM
; Da... Nalozi cas Ton, ne da bi vplival na stanje registra STATUS
PWMHigh
TMR0
INTCON,T0IF
TEMPW,F
TEMPW,W
; zakasnitev
; Nalozi naslednjo vrednost casovnika za izv. prekinitve
; Brisanje zastavice T0IF
; Zamenjava nibbla v W
; Restavriranje W
IntEndHi
retfie
; Povratek iz prekinitvenega podprograma
PWMLow
bcf
swapf
movwf
bcf
swapf
swapf
PWM
OUTLOW,W
TMR0
INTCON,T0IF
TEMPW,F
TEMPW,W
; Nalozi cas nizkega stanja
;
; Brisanje zastavice T0IF
; Zamenjava nibbla v W
; Restavriranje W
IntEndLo
retfie
; Povratek iz prekinitvenega podprograma
Uporaba namenskega PWM
modula
CAPTURE/COMPARE/PWM MODUL
(CCP)
• 16-BITNI REGISTER ZA NASTAVLJANJE DELOVNEGA
RAZMERJA
• Za izvedbo PŠM uporabimo časovnik TMR2
• Resolucija je do 10 bitov
• Izhod za signal PŠM je PORTC,2
Blokovni diagram PŠM
Blokovni diagram PŠM
Perioda PŠM
Perioda PŠM = (PR2 + 1) · 4 · TOSC · TMR2delilnik
fPŠM = (Perioda PŠM)-1
Ko je vrednost TMR2 enaka vrdnosti PR2 se v
naslednjem časovnem inkrementu:
1. TMR2 = 0
2. Na izhodu (RC2) se postavi logična 1
3. Delovno razmerje se prenese CCPR1L v
CCPR1H
Delovno razmerje PŠM
Delovno razmerje je določeno z vpisom vrednosti v registra
8
CCPR1L in
2
CCP1CON <5:4>
CCPR1L
CCP1CON
Čas trajanja visokega stanja PŠM je:
(Duty cycle) = TON = (CCPR1L:CCP1CON<5:4>) · TOSC · TMR2delilnik
Delovno razmerje PŠM (1)
Vpis vrednosti v register CCPR1L in CCP1CON <5:4> se lahko opravi
kadarkoli, vpis v CCPR1H se izvede ob izenačenju vrednosti PR2 in TMR2
(ob koncu periode)
Čas trajanja visokega stanja PŠM je:
(Duty cycle) = TON = (CCPR1L:CCP1CON<5:4>) · TOSC · TMR2delilnik
Delovno razmerje PŠM (2)
Ko vrednost v registru CCPR1H in CCP1CON <5:4> (v zapahu) sovpada z
vrednostjo TMR2 (z upoštevanjem delilnika frekvence - prescaler), se izhod
RC2 (CCP1) postavi na nič.
Največjo ločljivost (resolucija) PŠM pri izbrani frekvenci izračunamo s
pomočjo enačbe:
log(FOSC/FPŠM)
Ločljivost PŠM (maks.) = ----------------------------- (bitov)
log(2)
Vrstni red nastavitev PŠM
1. Določimo periodo PŠM z vpisom vrednosti v register PR2.
2. Določimo delovno razmerje z vpisom v register CCPR1L in CCP1CON
<5:4>.
3. Priključek CCP1 (RC3) naj bo izhod (brišemo bit TRISC<2>).
4. Določimo delilnik časovnika TMR2. Vklopimo časovnik TMR2 z vpisom
v register T2CON.
5. CCP1 naj ima funkcijo PŠM.
Primeri resolucije nekaterih frekvenc PŠM pri frekvenci oscilatorja 40 MHz
Časovnik TMR2
Blokovna shema TMR2
Časovnik TMR2 - registri
Časovnik TMR2 – register T2CON
Primer uporabe PŠM modula (1)
; Definicija spremenljivk
;*******************************************************************************
duty_Lo
equ 0x03
; Definiranje spremenljivke z imenom duty_Lo na
; spominski lokaciji 0x03 - spodnji byte nastavitve
; casa prevajanja tranzistorjev
duty_Hi
equ 0x04
; Definiranje spremenljivke z imenom duty_Hi na
; spominski lokaciji 0x04 - zgornji byte nastavitve
; casa prevajanja tranzistorjev
flags
equ 0x05
; Definiranje spremenljivke z imenom flags na
; spominski lokaciji 0x05 - pomožna spremenljivka,
; ki shranjuje pritisk vklopne (flags = 1)
; in izklopne tipke (flags = 0)
Primer uporabe PŠM modula (2)
; Reset vektor
;*******************************************************************************
org
0x00
goto
Start
Primer uporabe PŠM modula (3)
; Inicializacija
;*******************************************************************************
org
0x20
Start
clrf
duty_Hi
; Postavitev spremenljivke na začetno vrednost (0)
clrf
duty_Lo
; Postavitev spremenljivke na začetno vrednost (0)
clrf
flags
; Postavitev spremenljivke na začetno vrednost (0)
bcf
LATC,2
; Postavitev PWM izhoda na vrednost nič
bcf
TRISC,2
; Določitev PWM nožice kot izhod
movlw b'00001100'
; Nastavitev delovanja PWM modula
movwf CCP1CON
; bit <5> in bit <4> sta LSB bita nastavitve časa
;prevajanja tranzstorjev
; - biti <3:0> izbirajo PWM režima(11xx)
movlw
movwf
b'00000001'
T2CON
; Nastavitev delovanja èasovnika T2, ki služi kot
; časovna baza pulzno-širinske modulacije
; - biti <6:3> predstavljajo izbiro postscaler-ja
; (0000) = 1x postscaler
; - bit <2>, imenovan TMR2ON starta
; časovnik
; - bita <1:0> določata vrednost prescaler-ja
; (01) = 4x prescaler
Primer uporabe PŠM modula (4)
movlw
.255
; Nastavitev periode PWM
; Tpwm = (PR2 + 1) * 4 * Tosc * TMR2_prescaler
movwf
clrf
bsf
bsf
bcf
PR2
TMR2
TRISB,0
TRISA,4
LATB,1
; izbrana je frekvenca Fpwm = 9,765 kHz
bcf
TRISB,1
; Določitev digitalnega izhoda LED indikatorja
bsf
TRISA,0
; Določitev funkcije nožice AN0 kot vhod
; Postavitev števca časovnika na nič
; Določitev digitalnega vhoda start tipke
; Določitev digitalnega vhoda stop tipke
; Doloèitev vrednosti digitalnega izhoda - LED
; indikator delovanja PWM modula
; - potenciometer
movlw
movwf
b'10000000'
ADCON0
; Nastavitev delovanja A/D pretvorbe
; - bita <7:6> predstavljata izbiro frekvence A/D
; pretvornika - (10) = Fosc/64
; - biti <5:3> predstavljajo izbiro kanala pretvorbe
; (000) izbran je kanal AN0 - potenciometer
; - bit <2>, imenovan GO, start A/D pretorbe (1) in
; indikacija konca A/D pretvorbe, ko le-ta zavzame
; vrednost 0
; - bit <0>, imenovan ADON, vklop modula A/D
; pretvorbe
Primer uporabe PŠM modula (5)
movlw
movwf
b'01001110'
ADCON1
; Nastavitev delovanja A/D pretvorbe
bsf
bsf
ADCON0,ADON
ADCON0,GO
; Vklop A/D modula
; - bit <7> določa 10-bitno poravnavo
; rezultata A/D pretvorbe znotraj dveh 8-bitnih
; spremenljivk ADRESH in ADRESL - (0) = leva
; poravnava
; - bit <6> izbira frekvenco A/D
; pretvornika - (1) = Fosc/64
; biti <3:0> določajo vhode, na katerih
; so analogne vrednosti ter
; referenčne napetosti A/D pretvorbe
; (1110) = analogni vhod je samo AN0
; (potenciometer)
; in napetostna referenca je napajalna napetost
; Start A/D pretvorbe
;******************Sledi skok v glavni program*************************************
bra
Main
; Konec inicializacije in skok v glavni program z
; neskončno zanko
Primer uporabe PŠM modula (6)
;*******************************************************************************
; Glavni program
;*******************************************************************************
Main
call
PSM_1
; Klic podprograma PSM_1
goto
Main
; Izvedba neskončne zanke glavnega programa
;*******************************************************************************
Primer uporabe PŠM modula (7)
PSM_1
btfsc
bra
movff
movff
bsf
bsf
ADCON0,GO
; Preverjanje končanja tekoče A/D pretvorbe (GO = 0)
ni_AD
; in skok na oznako, če le-ta ni končana
ADRESH,duty_Hi ; V primeru končanja A/D pretvorbe, se pretvorjena
ADRESL,duty_Lo ; vrednost prepiše v spremenljivki duty_Hi in duty_Lo
flags,1
; Postavitev zastavice o osveženi vrednosti A/D pretvorbe
ADCON0,GO
; Ponovni start A/D pretvorbe
btfsc
bra
bsf
clrf
bsf
PORTB,0
; Pregled pritiska start tipke PŠM
ni_start
; in skok na oznako, če le-ta ni bila pritisnjena
flags,0
; Postavitev zastavice v primeru pritiska tipke start
TMR2
; Postavitev časovnika T2 na začetno vrednost
T2CON,TMR2ON ; Vklop časovnika T2, ki predstavlja
ni_AD
; časovno periodo PŠM in posledično zagon PŠM
bsf
LATB,1
; Indikacija delovanja PŠM
Primer uporabe PŠM modula (8)
ni_start
btfsc
bra
bcf
bcf
PORTA,4
; Pregled pritiska stop tipke PŠM
ni_stop
; in skok na oznako, če le-ta ni bila pritisnjena
flags,0
; Brisanje zastavice v primeru pritiska stop
T2CON,TMR2ON ; tipke in ustavitev časovnika T2 in posledično
; izklop PŠM
bcf
LATB,1
; Brisanje indikacije delovanja PWM
btfss
return
btfss
return
flags,0
; Preverjanje zastavice vklopa/izklopa PŠM
ni_stop
; Vrnitev v ciklični glavni program, v kolikor PWM ni vklopljen
flags,1
; Preverjanje zastavice o osveženem podatku A/D pretvorbe
; Vrnitev v ciklični glavni program, v kolikor ni
; osveženega podatka A/D pretvorbe
Primer uporabe PŠM modula (9)
movff
btfss
bcf
btfsc
bsf
btfss
bcf
btfsc
bsf
return
end
duty_Hi,CCPR1L
duty_Lo,7
CCP1CON,5
duty_Lo,7
CCP1CON,5
duty_Lo,6
CCP1CON,4
duty_Lo,6
CCP1CON,4
; V primeru delovanja PWM se osveženi podatek iz
; A/D pretvorbe prepiše v registre, ki vsebujejo
; podatek o času vklopa tranzistorjev
; Zgornjih 8-bitov 10-bitne časovne nastavitve je
; zapisanih v register CCPR1L, spodnja 2-bita pa sta
; zapisana v register CCP1CON <5:4>
; Vrnitev v ciklični glavni program