LED RGB com PWM no PIC - Parte 1

Destinado á  discussões de temas livres etc...
Você precisa estar Logado para acessar os demais Fóruns, SEJA BEM VINDO - ao mundo da Tecnologia.
Responder
Avatar do usuário
Marcio_Ortolan
Comunidade Técnica VIP
Comunidade Técnica VIP
Mensagens: 102
Registrado em: Qua Out 29, 2008 9:23 am
Localização: Arujá - SP
Contato:

LED RGB com PWM no PIC - Parte 1

Mensagem por Marcio_Ortolan » Qui Out 08, 2009 11:24 am

...foi o tempo que era só copiar da revista e sair usando, leiam até o fim da materia e saberam do que disse acima.

LED RGB com PWM para PIC 16F628A

Vamos explicar neste artigo como programar um microcontrolador utilizando a linguagem C para executar as funções de PWM, mesmo se este não tiver internamente o hardware necessário. Nosso circuito demonstrará como controlar um LED RGB de quatro terminais para gerar até 1.331 cores diferentes!

Eduardo Souza Ramos

O PWM

PWM, que significa Pulse Width Modulation, ou Modulação por Largura de Pulso, nada mais é que do que alimentar uma carga com uma sequaªncia rápida de pulsos para obter uma potaªncia intermediária. Com isso podemos obter uma tensao analógica a partir de um sinal digital. Em termos mais técnicos, o PWM é uma onda com frequaªncia constante (período fixo) e com a largura do pulso variável. Esta largura de pulso é também chamada de Ciclo Ativo, ou Duty Cicle, em inglaªs. Na figura 1 temos a representação de algumas formas de onda mostrando larguras de pulso diferentes.

Imagem

Como podemos observar, na verdade, a saída continua sendo digital, somente podendo assumir os valores 0 (para Vss) e 1 (para Vdd). No caso do microcontrolador PIC16F628A, estes valores estao ente 0 V e 5 V. A relação entre o tempo em que temos o pulso e a duração de um ciclo completo nos define o Ciclo Ativo (Duty Cicle). A forma de se calcular o Ciclo Ativo dá-se pela fórmula abaixo:

Imagem

Mas o que significa o Ciclo Ativo do PWM? Significa justamente a percentagem da potaªncia total aplicada a  carga.

Variando-se a largura do pulso, e inclusive o intervalo entre dois pulsos consecutivos, de modo a termos Ciclos Ativos diferentes, podemos controlar a potaªncia média aplicada a uma carga. Assim, quando a largura do pulso varia de zero até o máximo (valor do período do pulso), a potaªncia (e consequentemente a tensao) também varia na mesma proporção. Se quisermos, portanto, aplicar a  carga uma potaªncia equivalente a 50% da potaªncia total, basta gerar um pulso onde o tempo em que este permaneça no nível lógico 1 seja exatamente a metade do período total do pulso. A potaªncia média e, portanto, a própria tensao média aplicada a  carga é neste caso 50%.


Vantagens do PWM

Existem diversas vantagens que devem ser observadas pelo projetista, a fim de tira o máximo proveito delas.

Na condição onde o pulso estiver no ní vel lógico 0 (0 V), nenhuma corrente circula pelo dispositivo e, portanto, a sua dissipação é nula. Na condição onde o pulso estiver no nível lógico 1 (5 V) não existirá nenhuma queda de tensao e, consequentemente, a dissipação também será nula.

Ou seja, na teoria, os controles PWM não dissipam potaªncia alguma, logo, con sistem em soluções ideais para este tipo de aplicação.


O PIC 16F628A

Em nossa montagem utilizaremos um microcontrolador da família Microchip extremamente popular: o PIC 16F628A.

Entre outras características, este microcontrolador apresenta:

• Opera em uma frequaªncia de 37 kHz a 4 MHz (utilizando oscilador interno) e até 20 MHz com a utilização de cristais ou ressonadores cerâmicos;
• Possui diversas interrupções;
• A memória de programa pode armazenar até 2048 “words”;
• Possui EEPROM interna de 128 bytes;
• É dotado de 16 pinos de I/O;
• Permite fornecer até 25 mA por pino;
• Possui canal de PWM interno (por hardware) de 10 bits;
• USART;
• 2 comparadores analógicos;
• Dois timers de 8 bits;
• Um timer de 16 bits;
• Permite operar com uma alimentação de 2.0 V a 5.0 V.

É importante salientar que este componente precisa ser programado (gravado) para poder desempenhar as funções que desejarmos.

não faz parte deste artigo as etapas indispensáveis para a programação do microcontrolador por entendermos que o leitor já possui as habilidades necessárias para desempenhar a gravação do mesmo.


O Circuito

Na figura 2 o leitor pode ver o circuito elétrico do Controlador PWM para LEDs RGB. CI1 é o microcontrolador PIC 16F328A. Ele realiza todo o controle e sua operação depende de um programa interno que será abordado mais adiante, neste artigo.

Imagem

CI2 é um regulador de tensao de 5 VDC para o CI1. Esta é a alimentação padrao para o PIC 16F628A. Os capacitores C1, C2, C3 e C4 fazem parte do filtro da alimentação.

As chaves CH1, CH2, CH3, CH4, CH5 e CH6 sao chaves que serao adicionadas externamente a  placa, e devem ser do tipo “push button” NA (Normalmente Aberto), podendo ser de qualquer tipo e tamanho, uma vez que a inserção das mesmas se dará por barra de pinos que serao soldadas na placa de circuito impresso.

Todos os resistores sao de ¼ de watt (0,25 W) com tolerância de 5%. O oscilador utilizado é um ressonador cerâmico de 8 MHz. O diodo D1 é um diodo de uso geral, o nosso velho conhecido 1N4148.

O conector X2 é um conector padrao de alimentação para inserção em placas de circuito impresso.


O LED RGB

O LED utilizado é um LED RGB de 4 terminais, sendo um o catodo comum e outros traªs terminais para controle independente para o vermelho, verde e azul, conforme ilustrado na figura 3.

Imagem

Nessa figura, podemos reparar que o LED RGB possui quatro terminais assimétricos (tamanhos diferentes). Se colocarmos em ordem decrescente (do maior para o menor), teremos que o terminal mais comprido é o que deve ser ligado no terra do circuito (0 V). Em seguida, teremos o terminal para o anodo do verde (em inglaªs “green”), sendo seguido pelo terminal responsável pelo anodo do azul (do inglaªs “blue”) e o aºltimo, que é o mais curto e aquele do lado do chanfro do LED, teremos o terminal do anodo do vermelho (“red” em inglaªs).

As principais características deste LED podem ser verificadas na Tabela 1.

Imagem


A Montagem

Na figura demonstramos o layout sugerido para a confecção da placa de circuito impresso.

Imagem

É recomendável o uso de um soquete para o microcontrolador, uma vez que poderemos desejar retirá-lo do circuito para efetuar alterações no software embarcado no mesmo.

Comece soldando pelos componentes menores para facilitar. É sempre mais complicado tentar posicionar e soldar um resistor se já tivermos colocado o soquete do microcontrolador, ou mesmo o regulador de voltagem.

Tome cautela, porque alguns componentes possuem polaridade, o que é o caso dos capacitores eletrolíticos, o regulador de voltagem, o diodo, o LED e o próprio microcontrolador. A não observação do correto posicionamento dos mesmos pode fazer com que o circuito não funcione a até mesmo danificar os componentes de uma forma irreversível.

Entao, inicie soldando o diodo, tomando cuidado para não ficar muito tempo com o ferro de solda encostado no terminal, pois, assim como qualquer semicondutor, este componente é sensível ao calor.

Em seguida, passe para os resistores, o regulador de voltagem, os capacitores cerâmicos, os capacitores eletrolíticos, o soquete para o microcontrolador e, por aºltimo os terminais para os botaµes “push-button”.

Sempre que possível, acondicione os seus circuitos em um gabinete plástico para prevenir riscos de curto-circuito e garantir uma maior resistaªncia mecânica.


O Programa

O nosso programa parte de um processo extremamente simples, que poderá ser utilizado como base em outras montagens, por isso, encorajamos ao leitor que experimente diversas alternativas baseadas no código que explicaremos.

Como visto anteriormente, para termos um sinal em PWM, precisamos de dois elementos fundamentais: pulsos de frequaªncia determinada (período fixo) e um Duty Cicle, ou seja, necessitamos em primeiro lugar determinar uma frequaªncia fixa.

Para entender melhor, veja a figura 5.

Imagem

Nesta figura vemos que o período é dado por T2 e o Duty Cicle é dado por T1. Mas, o que acontece nos pontos A e B? Vamos iniciar uma pequena análise de nosso sinal.

Assim que o sinal começa a ser gerado, vemos, pelo ponto A que ele está em nível lógico “1” (5 V). O sinal permanecerá neste estado até atingir o ponto B, ou seja, durante o tempo de T1, que é o período de nosso Duty Cicle. Assim que o ponto B é alcançado, o nível lógico passa a ser “0” (0 V).

E quando o sinal volta para o nível lógico “1” (5 V)? Repare que o sinal volta a ter o nível lógico “1” ao término de T2 e todo o ciclo se repete indefinidamente.

Ora, uma vez que T2 é o período do pulso e T1 é o Duty Cicle, podemos definir o seguinte: “Sempre ao iniciarmos um ciclo de onda, o sinal é mantido em nível lógico “1” até que o período do Duty Cicle finalize. Após este instante, o nível lógico passa a ser “0” até o início no próximo ciclo”.

Deste modo, se ajustarmos um timer do PIC (digamos o TIMER2) para que seja gerada uma interrupção a cada 10 ms, já teremos uma excelente base de um PWM com frequaªncia de 100 Hz. No caso de um LED, esta frequaªncia é mais que suficiente para manter o efeito de persistaªncia da visao e não veremos o LED piscar, mas sim aceso constantemente.

Outras frequaªncias podem (e devem) ser experimentadas. Mas lembre-se que, quanto maior a frequaªncia, menor o período entre um pulso e outro e, consequentemente, menos tempo teremos para executar outros códigos durante o intervalo entre uma piscada e outra.

O que precisamos fazer é que, a cada interrupção do TIMER2, devemos colocar os pinos que controlam o LED RGB em nível alto.

O próximo passo é ajustar outro timer, por exemplo, o TIMER1 para gerar uma interrupção a cada 1 ms. Desta forma, podemos utilizar esta base como referaªncia de quanto tempo o LED ficará aceso. Sao 11 opções, indo do 0 (0 ms) ao 10 (10 ms). Neste caso, basta criar um contador de 0 a 10 que será incrementado a cada interrupção de TIMER1 e, sempre que este contador se igualar a um valor pré-estabelecido, o pino que controla o LED será colocado no nível lógico “0”.

Se ainda não ficou claro, basta dar uma olhada no código que está no final desta matéria, que, com certeza, ficará claro a simplicidade de implementar um PWM via software!

O nosso programa foi desenvolvido utilizando o compilador C da CCS, que pode ser encontrado em http://www.ccsinfo.com. Este é um compilador extremamente popular e possui diversos recursos.

Vamos começar verificando o fluxograma geral do programa na figura 6.

Imagem

Os primeiros passos envolvem a definição do microcontrolador, fuses, e clock de operação. Estas definições sao fundamentais para que o compilador saiba exatamente quais sao os recursos de memória e periféricos que ele precisa alocar.

Continua....

Responder