O uso adequado dos recursos (periféricos) de um microcontrolador pode ajudar a desenvolver inúmeros projetos e a solucionar um número muito grande de problemas, seja em automação residencial ou em automação industrial. Neste artigo descreveremos como utilizar o periférico "CCP" (Capture, Compare, PWM) do microcontrolador PIC16F628A no modo PWM.

 

Nota: O artigo é de uma Eletrônica Total de 2004

 

CONTROLE PWM X CONTROLE LINEAR

Sempre que desejamos controlar a potência total entregue a uma carga DC do tipo resistiva ou mesmo de outro tipo, podemos fazê-lo de forma linear. Isso pode ser feito através de um potenciômetro, por exemplo. Veja a figura 1.

 


 

 

 

O leitor perceberá que neste exemplo, existe um consumo grande de corrente. Note que quando Vm = Vcc/2 teremos o controle linear dissipando a mesma potência do motor:

 


 

 

 

Pode-se afirmar então que este tipo de controle não é muito eficiente, principalmente na faixa de 0 a Vcc/2.

Porém, este mesmo controle poderia ser feito variando-se o tempo em que a carga fica com a potência total e com potência zero. Ou seja, controlaríamos a potência entregue através de uma "chave". Quando fechada, a carga receberia potência total, quando aberta nenhuma potência seria entregue. Observe a figura 2.

 


 

 

 

Obs.: A afirmação anterior é válida considerando-se apenas uma chave no controle. Ao usarmos um transistor bipolar como chave, por exemplo, teremos uma dissipação no mesmo devido à queda de tensão VCE (queda de tensão entre o coletor e o emissor). Porém, para efeito didático, consideraremos uma chave no controle e, portanto, que esta queda de tensão não existe, recebendo a carga toda a alimentação Vcc (Vm=Vcc).

 

Note que agora não temos mais o controle linear. É "tudo ou nada", e a carga fica com toda a tensão Vcc ou não. Sendo assim, não existe qualquer dissipação no controle (chave).

De acordo com a velocidade em que a chave é aberta e fechada, entregaríamos mais ou menos tensão a carga (tensão média).

Um controle PWM (Pulse Width Modulation, ou em bom português "Modulação por Largura de Pulso) permite fazer exatamente isso. Variamos o "tempo" em que a carga recebe potência máxima em relação ao tempo em que a carga não recebe potência alguma. Isso é feito através de pulsos com tempo controlado.

O "tempo" destes pulsos determinará a quantidade de tensão entregue. Quanto maior for a duração de "T1" e menor a duração de "T2", maior será a potência entregue. Quanto menor a duração de "T1" e maior a duração de "T2", menor será a potência. Vale salientar que os pulsos têm sempre o valor máximo da tensão aplicada, portanto estamos sempre entregando a tensão máxima suportada pelo elemento controlado. No caso de um motor, por exemplo, podemos garantir o máximo torque para uma faixa bem maior de velocidade (rotação). Atente para a figura 3.

 


 

 

 

Um outro dado importante diz respeito ao período total (frequência). Ele será sempre fixo, ou seja, a soma dos períodos de "T1" e `T2" será sempre a mesma, tanto para a situação de "Maior Velocidade" quanto para "Menor velocidade" no gráfico.

Vemos que este método de controle é o ideal para aplicações de motores CC, controle de brilho de LEDs, "back light" de LCDs, etc.

 

Obs.: Muitos engenheiros e técnicos costumam chamar o período "T1" de "Duty Cicie". Concordamos que nosso leitor deva se acostumar a esse termo e o utilizaremos a partir deste ponto.

 

 

PWM com PIC16F628A

O PIC16F628A possui internamente um periférico para controle de PWM completo com 10 bits de resolução com saída no pino "9" (RB3/CCP). Este periférico opera de forma independente do programa, sendo necessário apenas "setar" alguns registradores para utilizar o canal CCP. Estes registradores estão descritos na tabela 1.

 


 

 

 

Há dois importantes pontos a serem observados pelo leitor sobre o uso do canal PWM do PIC16F628A (CCP). Ele compartilha o pino de 1/O RB3 (pino 9) e quando o CCP estiver em uso, este pino de 1/0 será desabilitado como 1/0 digital do PIC, enquanto o CCP estiver sendo utilizado. Lembre-se de quando usar o CCP como PWM, configurar o pino RB3 como saída através do comando TRISB.

O outro ponto é que a base de tempo para o PWM é feita através do "Timer2" (TMR2) do PIC e sendo assim, o programa do usuário não deverá fazer uso deste, deixando-o livre para o PWM (CCP). O tempo contado por TMR2 pode ser dividido por um "prescale", aumentando o tempo a ser contado. Na tabela 2 temos os valores possíveis para TMR2.

 


 

 

 

Para configurar um PWM, precisamos primeiramente definir qual o seu período de trabalho. Para calcular este período no PIC, utilize a fórmula dada a seguir: (F1)

A frequência do PWM pode ser calculada com a fórmula:

 

F= 1 / TPWM

 

Para calcular o "duty cicle" o leitor deverá dividir o período que o pulso fica em nível alto (T1) pelo período total do PWM. Para calcular o tempo que o pulso fica em nível alto devemos usar: (F2)

Então: (F3)

Observando atentamente a fórmula passada, o leitor poderá notar que o valor do "duty cicie" para o PIC depende do valor inserido em CCPR1L, em PR2 e nos bits 4 e 5 de CCP1CON (CCP1X e CCP1Y), não dependendo do valor do cristal inserido no PIC.

Anteriormente, dissemos que a resolução do PWM no PIC é de 10 bits. Sendo assim, devemos compreender que o nosso pulso pode variar de 0 % a 100 % com resolução máxima de 1024 pontos.

 


| Clique na imagem para ampliar |

 

A fórmula para se calcular a quantidade máxima de bits que definirá a quantidade máxima de pontos do PWM (resolução) é dada por:

 


 

 

Talvez este "volume" de fórmulas possa parecer um tanto confuso ao leitor e- neste caso, nada melhor que um exemplo para sanar todas as dúvidas possíveis. Vamos calcular os valores a serem inseridos nos registradores do PIC para um PWM operando a uma frequência de 3,906 kHz, com oscilador interno ou externo a 4 MHz:

Primeiro convertemos nossa frequência em período:

 


 

 

 

Agora calcularemos o valor a ser inserido em PR2, considerando o "preescale" como "1" (frequência do próprio TOSC): (F4)

Vamos agora calcular a resolução. (F5)

 


| Clique na imagem para ampliar |

 

 

Acreditamos que agora o leitor tenha informações suficientes para calcular seu próprio valor de PWM para o PIC. Veja que antes de tudo é necessário definir a frequência de trabalho desejada, levando em consideração a frequência de funcionamento do PIC e a resolução desejada.

 

 

UM EXEMPLO PRÁTICO

Na figura 4 o leitor tem um circuito elétrico utilizando uni PIC16F628A no controle do brilho de um LED, através do canal CCP (PWM). Note que o circuito é bem simples. Temos apenas o microcontrolador (CL1), um capacitor cerâmico de 100 nF de desacoplamento (C1) e duas chaves (S1 e S2) tipo "push-button" NA (normalmente aberto) que permitem aumentar ou diminuir o brilho do LED (D1). Os resistores R2 e R3 são resistores de "pull-down" para auxiliar na leitura das chaves (as mesmas são lidas no nível lógico "1").

 


| Clique na imagem para ampliar |

 

 

O PIC16F628A possui um oscilador interno de 4 MHz com precisão de 1 %, mais que suficiente para nossa proposta. Sendo assim, o cristal e os dois capacitores cerâmicos utilizados em outros tipos de PICs não são necessários.

A alimentação do circuito deve ser feita através de uma fonte com 5 VDC regulados com 300 mA de corrente mínima. Atenção ao quesito da fonte!

Como nosso leitor já deve saber, todo microcontrolador precisa de um programa para funcionar. Estaremos considerando que o leitor interessado em testar o circuito aqui apresentado tem experiência com microcontroladores PIC Microchip®, principalmente no quesito compilação e gravação do programa no microcontrolador (uso do MPASM ou MPLAB e de um gravador qualquer) e por isso não apresentaremos nada a respeito neste artigo.

Para os leitores sem experiência com microcontroladores PIC Microchip®, aconselhamos a leitura do artigo "Microcontroladores PIC - Dicas para montagens com sucesso", do autor Márcio José Soares (este que vos escreve!), publicado na edição n° 98. Neste artigo são detalhados itens importantes sobre "Hardware e Software" dos microcontroladores, o uso de compiladores e também dicas de como adquirir um bom gravador.

 


| Clique na imagem para ampliar |

 

 

No programa "PIC_PWM_F628. ASM", que pode ser obtido gratuitamente no site da revista http://www.eletronicatotal.com.br na seção "downloads", demonstramos como a implementação de todos os registradores descritos foi feita. O estudo do programa ajudará na compreensão do funcionamento dor circuito e no uso do CCP do PIC (todo o programa foi comentado para facilitar sua compreensão).

 

 

SUGESTÕES DE USO

O leitor poderá utilizar o CCP do PIC, no modo PWM, para controlar motores DC, resistências utilizadas em aquecimento e muitas outras cargas (resistivas ou não). O controle do "back ligth" de um LCD também é totalmente possível (na edição n° 101 demonstramos o controle de um display de cristal líquido com o mesmo PIC). Um exemplo de aplicação é o controle da intensidade deste, via "software".

Porém, o leitor deve estar atento para a corrente máxima fornecida por pino de I/O do PIC que é da ordem de 20 mA máximos. Neste caso, o uso de "drives" é recomendado. Além de viabilizar um dreno maior de corrente pela carga a partir do drive, o novo circuito ainda poderá trabalhar com outras tensões, de acordo com a carga a ser implementada. Na figura 6 temos alguns exemplos.

 

 

 

Onde obter mais informações

O leitor interessado em obter mais informações sobre os microcontroladores PIC poderá fazer uma pesquisa na Internet. Aconselhamos começar pelo site do fabricante. Nele é possível encontrar "Data books", "Application Notes" e muitas outras informações. O endereço é http:// www.microchip.com.

Para aqueles que não dominam a língua inglesa, a leitura de artigos em revistas como este e muitos outros já publicados na Eletrônica Total e em outras e também a leitura de alguns livros poderá ajudar muito. A loja virtual Saber Marketing também oferece excelentes livros para a linha de microcontroladores PIC (figura 7). Consulte-a!

 


 

 

Conclusão

O uso dos periféricos de um microcontrolador poderá ajudar o leitor a desenvolver projetos complexos com o mínimo esforço no quesito "software". Assim, ganha-se tempo e aumenta-se a "precisão" final envolvida em um determinado projeto. Esperamos que estas informações ajudem nosso leitor e que as mesmas passem a fazer parte de sua biblioteca de consulta sobre "microcontroladores". Bons testes e até a próxima!

 


| Clique na imagem para ampliar |