Jump to content

Controlar LED RGB


Recommended Posts

Boas Pessoal.

Preciso controlar um led RGB com um PIC16F877.  :wallbash:

Tenho aqui um arquivo que peguei na internet que faz isso (não sei se funciona), mas com o PIC16F628A.

Como preciso controlar isso pelo PC, preciso um pic que tenha uma conexão RS232.

Posso usar o PIC16F877A, que tenho o arquivo ASM com comunicação via RS232

Como vou usar uma entrada analógica e 2 ou 3 digitais, o arquivo ASM que tenho tem 8 saídas digitais, 1 entrada analógica e 21 entradas digitais.

Alguma santa alma saberia adaptar essas rotinas PWM do PIC16F628A para esse PIC16F877?  😁

Obs: Essas entradas digitais, analógica, e saídas, controlo todas pelo Delphi

Gostaria de controlar esse PWM pelo Delphi tb

Aproveitando o gancho, faço uma pergunta......

Saída PWM controla a voltagem como uma saída analógica ou liga e desliga a saída em uma certa frequência??

Caso sim, que frequência seria essa pois preciso ter esse controle pelo Delphi.

Grato e abraços

Malereis

Link to comment
Share on other sites

PWM = Pulse Width Modulation. Ou seja, é um sinal digital (liga e desliga), que tem uma frequência fixa (a frequência não influencia o valor médio dum sinal) e cujo duty cycle é que é variado.

Podes ver aqui http://en.wikipedia.org/wiki/Pulse-width_modulation mas se calhar está completo demais para ti.

Ou então, http://arduino.cc/it/Tutorial/PWM Muito mais directo ao assunto.

A PIC pode ter um PWM de 8 ou 16 bits (não sei sem ler o datasheet), logo os valores irão de 0-255 ou 0-32768.

Quanto a adaptar as rotinas, pega no manual e vê se os registos dos timers e configurações estão na mesma posição de memória. A probabilidade é que como são da mesma família (PIC16), os registos estão no mesmo sítio e corre o código que tens.

include <ai se te avio>

Mãe () {

}

Link to comment
Share on other sites

Viva;

Existe aqui umas questões a esclarecer. O PIC16F628A só tem 1 saída de PWM, já o PIC16F877A tem 2, contudo não é suficiente porque sendo um LED RGB precisas de 3 saídas PWM, isto caso queiras utilizar PWM por Hardware.

A forma mais fácil de implementares isso, é por PWM por software. Desta forma podes utilizar PWM em qualquer pino do PIC.

O PIC 16F877A tal como o 16F628A tem periférico RS232, e a forma como se configura é igual, pois como o bubulindo disse, os registos são iguais.

O PWM por hardware de ambos é de 10bits no máximo ( 0 a 1024 ), e aqui os registos também são iguais para a saída 1. Para a saída 2 do PIC16F877A, tem uns registos adicionais que não existem no 16F628A, por este ter só uma saída.

A frequência a utilizar pode ser 5Khz, e não tem nenhuma interferência com o Delphi ou outro pragrama qualquer que utilizes para comunicar com o PIC.

@Bubulindo, sei que foi um erro de distração teu, porque sei que sabes isso, mas 16bits não é de 0 a 32768, mas sim de 0 a 65535.

Abraço Gadelhas

Link to comment
Share on other sites

A melhor referência é esta Application Note da Microchip : http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en524189.

É para um PIC da série 12 mas não será difícil alterar para a série 16.

Curiosamente para lhe aceder é preciso aceitar uma licença (1ª que vi na Microchip), que dá a entender que existem patentes sobre o controlo de LEDs RGB por uC e PWM.

Link to comment
Share on other sites

Boas pessoal.

Grato pelas respostas.

Tenho ainda certa dificuldade em programar esse tipo de eventos (PWM).

Montei aqui em um 16F877A, entradas analógicas, digitais e saídas e com comunicação RS232.

Se mandar o código fonte, vcs ajudariam a alterar o código para que eu mudasse 3 entradas nele, como saídas para PWM?

Aí gostaria de colocar 2 botões para cada cor (1 de decremento e outro de incremento)

Assim posso pegar o espectro todo de cores.

Ainda fica uma vantagem..... Se quizer, posso controlar esses botões (entradas que viraram saídas) via Delphi.

Aí ficaria muito bom.

Realmente estou hpa mais de 9 meses nisso e não estou conseguindo fazer com que funcione direito.

Vcs podem ajudar?

Se puderem, vai pelo fórum e o arquivo posso enviar pelo e-mail.    O meu é mecpobox@gmail.com

Grande abraço e grato pelas respostas.

Alexandre

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.