Modulao por largura de pulso ou PWM (Pulse Width Modulation) uma das
tcnicas mais poderosas utilizados em sistemas de controle hoje em dia. usado em
ampla gama de aplicaes que inclui: controle de velocidade, controle de potncia,
medio e comunicao. Este tutorial ir lev-lo atravs de noes bsicas de
modulao de largura de pulso e sua implementao em microcontroladores.
T on e
T off .
Perodo
Como mostrado na figura,
T off
sinal. Perodo a soma dos dois tempos, calculada como se mostra na equao
abaixo:
T total =T on +T off
T on
mostrado abaixo:
D=
T on
T
= on
T on+T off T total
T on
V
T total
Como podemos ver na equao acima, pode-se variar a tenso de sada variando o
valor de
T on . Se
ou mxima.
Sub-rotina de interrupo
TIMER_0_INTERRUPT:
JB PWM_FLAG, HIGH_DONE ; Se PWM_FLAG est setado ento terminamos
LOW_DONE: ; pula para HIGH_DONE
SETB PWM_FLAG ; Faa PWM_FLAG=1 para indicar o inicio da seo alta
SETB PWMPIN ; Faa o pino de sada PWM alto
MOV TH0, R7 ; valor alto do byte do timer carregado com R7 (Controle do valor de
largura de pulso)
CLR TF0 ; Limpa o flag de interrupo do timer 0
RETI ; Retorne da interrupo para onde estava o programa
HIGH_DONE:
CLR PWM_FLAG ; Faa PWM_FLAG=0 para indicar o incio da seo baixa
CLR PWMPIN ; Faa o pino de sada PWM baixo
MOV A, #0FFH ; Move FFH (255) para A
CLR C ; Limpa C (o bit de carry) ento isso no afetar a subtrao
SUBB A, R7 ; Subtraia R7 de A. A = 255 - R7.
MOV TH0, A ; O valor carregado dentro de TH0 + R7 = 255
CLR TF0 ; Limpa o flag de interrupo do timer 0
RETI ; Retorna da interrupo para onde o programa esteja
Como tudo tratado em ISR, pode-se parar o PWM simplesmente desativando o timer.
1.
PWM_STOP:
2.
3.
RET
A fonte pr-escalar para Timer / contador 1 pode ser selecionada com a ajuda dos bits
de seleo do clock no registrador TCCR1B (mais informaes consulte folha de dados
na pgina 37).
Largura de pulso colocada na sada do temporizador comparar registros OCR1A
(OCR1AH & OCR1AL) e OCR1B (OCR1BH & OCR1BL). Timer / contador 1 atua como um
contador Alto / baixo, contando a partir de $0000 para o topo (ver tabela abaixo),
onde ele gira e faz a contagem regressiva novamente para zero antes do ciclo ser
repetido. Quando o valor do contador corresponde ao contedo de 10 bits menos
significativos de OCR1A ou OCR1B, os pinos de PD5 (OC1A) / OC1B so setados ou
limpos de acordo com as configuraes dos bits COM1A1 / COM1A0 ou COM1B1 /
COM1B0 no controle de registro do Timer / contador1 (TCCR1A), veja a tabela abaixo:
1.
2.
3.
4.
PWM_START:
5.
6.
7.
clr temp
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.