Você está na página 1de 10

3.

2 PWM (Pulse Width Modulation) O mdulo de gerao de Modulao por Largura de Pulso (PWM) um recurso muito utilizado para o controle de motores e conversores CC-CC em geral. A partir dele possvel gerar um sinal analgico, apesar de sua sada ser um sinal digital que assume apenas os nveis lgicos alto (um) e baixo (zero). A sada gerada uma onda quadrada, com freqncia constante e largura de pulso varivel. Estes conceitos esto diretamente relacionados com o perodo fixo e o ciclo ativo (duty cycle) respectivamente. A freqncia de uma onda pode ser definida como a quantidade de vezes que ela se repete no tempo. E o perodo cada pedao dessa onda que ir se repetir. O duty cycle define o tempo de sinal ativo (nvel lgico alto) em um perodo fixo. Assim, quando temos um duty cycle de 100%, temos nvel lgico alto por todo o perodo. Um duty cycle de 50% define a metade do perodo em nvel lgico alto e a outra metade em nvel lgico baixo. Se uma sada TTL for utilizada, a tenso mdia de sada em um duty cycle de 50% ser 2,5V. Estes conceitos so demonstrados na figura abaixo. Devemos lembrar que o PWM nem sempre possui estado inicial positivo, podendo iniciar o perodo com nvel lgico baixo.

Figura Sinais modulados por Largura de Pulso

21

A base de tempo dos mdulos PWM normalmente implementada de duas formas. Uma destas formas utilizando o prprio mdulo temporizador como base de tempo no PWM, ou seja, se o temporizador est configurado para um perodo de 1ms, a freqncia do PWM ser de 1 KHz. A outra forma utilizando um temporizador especfico para o PWM, que deve ser configurado para a freqncia desejada. Ainda, um temporizador pode ser utilizado como base de tempo de vrias sadas PWM, ou seja, vrios PWM com a mesma freqncia, mas larguras de pulso diferentes. A figura a seguir ir exemplificar o funcionamento de um PWM em um microcontrolador onde o registrador PTPER possui o valor referente ao perodo do PWM e os registradores PWM1H e PWM2H representam dois canais de sada PWM.

Figura Sinais PWM com mesmo perodo e largura de pulso diferentes.

Para exemplificar a configurao de um mdulo PWM ser utilizado novamente o microcontrolador MC68HC908QY4. Este microcontrolador utiliza o temporizador como base de tempo para o perodo do PWM. Desta forma, para configurar a freqncia do PWM deve-se utilizar a mesma metodologia adotada para o temporizador. Neste exemplo ser configurado um PWM de 10 KHz com largura de pulso inicial do ciclo ativo de 40%, onde o relgio utilizado ser de 3,2 MHz.

22

Perodo da base de tempo do relgio:

Perodo=

1 =312,5109 6 3,210 100106 =320 312,5109

Valor de mdulo de tempo para 100s:

Mdulo =

Estando o mdulo da base de tempo do PWM configurado, deve-se partir para a configurao da largura do pulso e do nvel do ciclo inicial do PWM. Atravs do mdulo PWM deste microcontrolador possvel obter duas sadas PWM para cada temporizador. Como o microcontrolador utilizado possui somente um temporizador, possvel obter duas sadas PWM, conhecidas como canal 0 e canal 1. Os registradores de configurao do mdulo PWM so: TSC0, TSC1, TCH0 e TCH1. Pode-se notar que os valores 0 e 1 so relativos ao canal a que se destina a configurao. Este microcontrolador apresenta duas maneiras de se utilizar estes canais. As sadas PWM podem ser configuradas no modo com buffer ou sem buffer. No modo com buffer ambos os canais so aproveitados para gerar uma sada PWM. O modo com buffer opera da seguinte maneira: Ambos os canais so configurados para operar com buffer. A configurao da largura de pulso inicial realizada no canal zero. Quando se desejar alterar a largura de pulso da sada PWM, altera-se o valor da largura de pulso no canal um. Ou seja, toda vez que se desejar alterar o valor da largura de pulso realizado um intercalamento entre os dois canais. A sada PWM ficar agregada ao pino de sada do canal zero. J no modo sem buffer, cada canal de tempo pode gerar uma sada PWM. O cuidado que deve ser tomado neste caso que alteraes de largura de pulso devem ser realizadas em locais bem especficos. A alterao da largura de pulso para um valor superior deve ser realizada na interrupo de estouro de tempo (temporizador). A alterao da largura de pulso para um valor inferior deve ser realizada na interrupo de comparao do devido canal. Na figura a seguir apresentado os locais referentes as interrupes supracitadas.

23

Figura Largura de pulso e perodo de um PWM

Abaixo temos a configurao de bits relativa aos registradores TSC0 e TSC1.

Figura Timer Channel Status And Control Registers

A seguir sero descritos as funes de cada um dos bits deste registrador: CHxF (Channel x Flag Bit): Quando o canal x est configurado para comparao de sada (modo que permite a implementao de um PWM), esta flag torna-se 1 quando o valor do registrador contador de tempo (TCNT) atinge a valor contido no registrador do canal x (TCHx). Para limpar esta flag deve-se ler o registrador TSCx e escrever um zero lgico para este bit. 24

1 = Comparao de sada no canal x 0 = Sem comparao de sada no canal x ChxIE (Channel x Interrupt Enable Bit): Este bit de escrita/leitura permite habilitar a interrupo de comparao de sada para o canal x. 1 = Interrupo do canal x habilitada 0 = Interrupo do canal x desabilitada TOVx (Toggle On Overflow Bit): Quando o canal x est configurado para comparao de sada, este bit de escrita/leitura controla o comportamento da sada do canal x quando ocorre um estouro de tempo no temporizador. 1 = Valor lgico no pino relativo ao canal x se altera no estouro de tempo 0 = Valor lgico no pino relativo ao canal x no se altera no estouro de tempo ChxMAX (Channel x Maximum Duty Cycle Enable Bit): Quando o bit TOVx est em nvel lgico 1, ao setar o bit ChxMAX ir forar o Duty Cycle do canal para 100%. Como a figura a seguir demonstra, o efeito relativo a este bit s notado 1 ciclo aps que este bit alterado. O Duty Cycle permanece 100% at que este bit volte ao estado lgico zero.

Figura Latncia do bit CHxMAX

Os outros bits relativos a estes registradores so configurados a partir da tabela abaixo:

25

Tabela Seleo de modo, nvel e borda

O registrador onde realizada a configurao da largura de pulso o TCHx, sendo TCHxH o registrador de maior significado e TCHxL o de menor significado na palavra de 16 bits que ir representar a largura do pulso. Abaixo estes registradores so apresentados.

26

Figura Registradores TCH0H, TCH0L, TCH1H e TCH1L.

Voltando ao exemplo onde deseja-se configurar um PWM de 10KHz com largura de pulso inicial igual a 40% e ciclo inicial ativo, utilizando um relgio de 3,2MHz. O mdulo referente ao perodo do PWM j foi definido, sendo igual a 320. Para configurarmos a largura inicial para 40% deve-se utilizar 40% do valor do mdulo do perodo encontrado, ou seja, TCH0 = 320 x 40% = 128. A seguir ser apresentado a configurao do PWM do exemplo acima, utilizando modo sem buffer com sada no canal zero, tanto para Assembly quanto para c.

27

Assembly: ; Configurao do mdulo de tempo LHDX #!320 ; Valor relativo ao perodo de 100us STHX TMD ; Move para o registrador de mdulo do temporizador LDHX #!128 ; Valor de 40% de largura de pulso (40% de 320) STHX TCH0 ; Move para o registrador do canal 0 CLRH ; Limpa a parte alta do registrador de ndice, utilizado anteriormente ; Sada PWM no canal 0, com alterao para nvel lgico baixo na comparao ; CH0F CH0IE MS0B MS0A ELS0B ELS0A TOV0 CH0MAX ; 0 1 0 1 1 0 1 0 MOV #$5A,TSC0 ; Perodo do PWM igual a 100us ; TOF TOIE TSTOP TRST Reservado PS2 PS1 PS0 ; 0 1 0 0 0 0 0 0 MOV #$40,TSC c: TMOD = 320; TCH0 = 128; /* Perdo do PWM*/ /* 40% de PWM */

/*Sada PWM no canal 0, com alterao para nvel lgico baixo na comparao CH0F CH0IE MS0B MS0A ELS0B ELS0A TOV0 CH0MAX 0 1 0 1 1 0 1 0 */ TSC0 = 0x5A; /*Perodo do PWM igual a 100us TOF TOIE TSTOP TRST Reservado PS2 PS1 PS0 0 1 0 0 0 0 0 0 */ TSC = 0x40; /* No divide o clock */ Apesar de termos definido as inicializaes, se o modo sem buffer est sendo utilizado, precisamos implementar tambm no cdigo as interrupes de estouro de tempo e comparao de sada para ser possvel alterar o valor da largura de pulso desta sada. Assembly: ; Interrupo do temporizador. TOVER: BCLR 7,TSC ; Limpa a flag da interrupo do temporizador BRCLR condio,SAIR_OVER ; Verifica a necessidade de aumentar a largura ; Se a flag estiver com zero, no corrige BCLR AUM,FLAG ; Limpa a flag da necessidade de aumentar MOV Valor_corrigido,TCH0 ; aumenta a largura de pulso SAIR_OVER RTI ; Retorna da interrupo

28

; Interrupo da comparao COMP: LDA TSC0 BCLR 7,TSC0 ; Limpa a flag da interrupo da comparao BRCLR condio,SAIR_COMP ; Verifica a necessidade de diminuir a largura ; Se a flag estiver com zero, no corrige BCLR DIM,FLAG ; Limpa a flag da necessidade de diminuir MOV Valor_corrigido,TCH0 ; diminui a largura de pulso SAIR_COMP RTI ; Retorna da interrupo c: // Interrupo do temporizador interrupt void tover(void) { TSC_TOF = 0; if (condio){ flag_aum = 0; TCH0 = Valor_corrigido; } } // Interrupo da comparao interrupt void comparacao(void){ byte i; i = TSC0; TSC0_CH0F = 0; if (condio) { flag_dim = 0; TCH0 = Valor_corrigido; } }

// Limpa a flag da interrupo do temporizador /* Indicao para aumenta largura do PWM*/ // Limpa flag de condio // Corrige a largura do pulso // Retorna da interrupo

// L registrador de estado do PWM // Limpa a flag // Verifica se necessrio diminuir a largura // Limpa flag de condio // Corrige a largura do pulso

Em algumas aplicaes necessrio a insero de um tempo morto (dead time) devido ao tempo de comutao de certos tipos de componentes utilizados ou devido as topologias dos sistemas agregados a estas sadas PWM. Normalmente estes tempos mortos so inseridos em pares complementares de sadas PWM, ou seja, quando uma das sadas comuta para nvel lgico alto, a outra sada comuta para nvel lgico baixo. Abaixo apresentado um exemplo de utilizao de tempos mortos.

29

Figura Exemplo de utilizao de tempo morto

3.3 Conversores Analgico-Digital e Digital-Analgico De um modo geral, os sinais encontrados no mundo real so contnuos (ou analgicos, pois variam no tempo de forma contnua), como, por exemplo: a intensidade luminosa de um ambiente que se modifica com a distncia, a acelerao de um carro de corrida, etc. Os sinais manipulados por computadores e sistemas embarcados so digitais, como por exemplo, uma faixa de udio lida de um compact disk. A converso analgico-digital (A/D) o processo que possibilita a representao de sinais analgicos no mundo digital. Desta forma possvel utilizar os dados extrados do mundo real para clculos ou operar seus valores. Em geral, o conversor A/D est presente internamente nos processadores e controladores de sinais digitais e alguns microcontroladores, mas tambm existem circuitos integrados dedicados a este fim. Basicamente um bloco que apresenta portas de entrada e sada. A entrada recebe sinais eltricos de forma contnua e possui uma faixa de tenso de entrada mxima e mnima. Nos microcontroladores que possuem um conversor A/D e operam na faixa de 5V, geralmente a faixa de tenso aceita sinais eltricos entre -5V e +5V.

30

Você também pode gostar