Malereis Posted March 22, 2012 at 12:16 AM Report #445055 Posted March 22, 2012 at 12:16 AM 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
bubulindo Posted March 22, 2012 at 08:52 AM Report #445077 Posted March 22, 2012 at 08:52 AM 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 () { }
gadelhas Posted March 22, 2012 at 03:00 PM Report #445158 Posted March 22, 2012 at 03:00 PM 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
bsccara Posted March 22, 2012 at 03:40 PM Report #445169 Posted March 22, 2012 at 03:40 PM 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.
bubulindo Posted March 22, 2012 at 04:01 PM Report #445173 Posted March 22, 2012 at 04:01 PM @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 () { }
gadelhas Posted March 22, 2012 at 06:08 PM Report #445198 Posted March 22, 2012 at 06:08 PM A minha calculadora avariou. LOL Obrigado pela correcção. 😉🙂😕 Abraço Gadelhas
Malereis Posted April 28, 2012 at 10:40 PM Author Report #451983 Posted April 28, 2012 at 10:40 PM 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
djthyrax Posted June 5, 2012 at 09:56 AM Report #460483 Posted June 5, 2012 at 09:56 AM 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!
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