Malereis Posted March 22, 2012 Report Share Posted March 22, 2012 Boas Pessoal. Preciso controlar um led RGB com um PIC16F877. 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 More sharing options...
bubulindo Posted March 22, 2012 Report Share Posted March 22, 2012 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 More sharing options...
gadelhas Posted March 22, 2012 Report Share Posted March 22, 2012 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 More sharing options...
bsccara Posted March 22, 2012 Report Share Posted March 22, 2012 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 More sharing options...
bubulindo Posted March 22, 2012 Report Share Posted March 22, 2012 @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. A minha calculadora avariou. LOL Obrigado pela correcção. include <ai se te avio> Mãe () { } Link to comment Share on other sites More sharing options...
gadelhas Posted March 22, 2012 Report Share Posted March 22, 2012 A minha calculadora avariou. LOL Obrigado pela correcção. 😉🙂😕 Abraço Gadelhas Link to comment Share on other sites More sharing options...
Malereis Posted April 28, 2012 Author Report Share Posted April 28, 2012 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 More sharing options...
djthyrax Posted June 5, 2012 Report Share Posted June 5, 2012 https://www.portugal-a-programar.pt/topic/51499-controlar-tensao-saida-no-pic/?do=findComment?comment=444663 Tens as instruções de como o fazer no tópico acima. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now