Página 1 de 1
Recepcao RF

Enviado:
21 Jul 2009 09:46
por Alesandro F Zagui
Ola a todos
Estou desenvolvendo um equipamento com controle RGB. Criei um PWM para cada led com o TMR0. Até ai funciona.
O problema é que a cor apresentada vai ser definida pelo usuario atravez de um controle remoto via RF.
Entao tenho que ficar parando o PWM para fazer a leitura do controle RF.
Isso faz com que os leds RGB fiquem piscando.
Estou utilizando dois 16f628, um no controle e outro no receptor.
Pensei em fazer a comunicacao entre os dois pela Usart. Alguem ja fez?

Enviado:
21 Jul 2009 12:07
por Djalma Toledo Rodrigues
Como a comunicação é entre dois uC , apenas em um sentido e estão bem próximos nem é necessário USART, I²C etc.
Mas, se você usar Interrupção não da para usar apenas um PIC ?
.

Enviado:
21 Jul 2009 13:14
por Alesandro F Zagui
Quando digo que estou usando 2 uC, um é o do controle que o usuario selecionara a cor, e o outro é o quem controla o RGB.
Gostaria de saber se alguem ja usou usart pra fazer comunicao entre dois uC por RF? Entendeu?

Enviado:
21 Jul 2009 15:12
por fabim
ÂLESÂNDRO.
Seguinte.
Mesmo que seja por RF, o pic que esta controlando o rgb por pwm, vai ter que ficar parando para tratar os bytes recebidos e ver se estão conforme o esperado. pois estes módulos tem um ruido enorme.
O ideal é você colocar um coprocessador, tipo um 12F629 pra ficar olhando o receptor e tratando os dados, e quando chegar coisa certa ele da um toque para o processador que esta cuidando do RGB e manda os dados bem rapidão pela serial emulada, ja no processador rgb os bytes vão chegar certinho, basta pegar e tratar conforme o nocessário.
fabim

Enviado:
21 Jul 2009 16:11
por Ander_sil
Alesandro o ideal é voce usar PWM por hardware, ai não da pau.
Pega um PIC com 3 canal de PWM ou dois canal e o terceiro led usa a saida do timer.
Ou então usar um CI Drive tipo o PCA9633 4 canal PWM ou PCA9634 8 canal.
http://www.standardics.nxp.com/products ... ca9633.pdf
Fazer o PWM por software vai dar esse problema a não ser que seja bem otimizado o software pra ficar imperceptivel o piscar do led ou seguir o conselho do fabim.
at.

Enviado:
21 Jul 2009 17:04
por Alesandro F Zagui
Ander, gostei desse PCA9633, vou ver se encontro aqui na minha cidade pra comprar.
Fabim, caso não de certo o PCA9633, vou acabar usando dois 12F629, um pra receber o sinal e o outro pra controlar o RGB.
Obrigado pela ajuda de voces!!!!
Posto depois o resultado.

Enviado:
21 Jul 2009 17:34
por MOR_AL
Olá¡ Alesandro F Zagui.
Tem uma outra opção.
1) Usa três bytes, um para cada cor. Cada byte conterá um valor compreendido entre 0 e 32, por exemplo. Faz T = 32 e Ton variando de 0 a 32.
Para Ton = 0, corresponde a Ton / T = 0 / 32 = 0.
Para Ton = 32 corresponde a Ton / T = 32 / 32 = 1.
Com isso você terá até 33 valores de intensidade para as cores. Considero uma boa quantidade. Acho que mal dá para perceber a alteração de um valor para o seu vizinho.
2) Crie um timer com interrupção (TIMER0, por exemplo), com cerca de 30ms, e um contador de ciclos. A cada interrupção do TIMER0, um ciclo é incrementado no contador. E a cada interrupção do TIMER0, você atualiza as cores. Como? Se o contador estiver em 15, por exemplo, e o valor do R for menor, ou igual a 15, então você desliga o led R. Caso contrário, você mantém o led aceso. Faça o mesmo para as outras cores. Quando o contador de ciclos alcançar o valor 33, ele deverá ser zerado, para um novo ciclo de 0 a 32.
3) Faça a informação do seu receptor (RF, Infravermelho, etc.) acionar uma interrupção. Esta possuirá maior prioridade que a do Timer0. Ela tem que tratar a decodificação da tecla em tempo real, para não perder alguma informação da tecla.
Esta interrupção irá atualizar os bytes de cor (um dos mencionados no item 1).
MOR_AL

Enviado:
21 Jul 2009 18:26
por Alesandro F Zagui
MOR_AL
Eu tinha feito o contrario disso, os clicos de RGB geram a interrupção TMR0, e main fica monitorando a entrada de sinal, cada vez que existe uma possibilidade de ser o sinal, ele pausa as interrupcoes do RGB.
Vou tentar inverter entao, da forma que voce disse, vou colocar o sinal de RF na interrupcao externa e vou deixar o main controlar o RGB, usando o flag T0IF para base de tempo. Seria isso mesmo, né?
Meu PWM esta do mesmo jeito que voce descreveu no passo 1.
Obrigado

Enviado:
21 Jul 2009 20:55
por egipts
Uma opção simples e acredito que mais barata que o PCA seria usar um par encoder/decoder para fazer a comunicação sem fio, pode ser via RF ou IR. Dá uma olhada no site da Holtek.com.tw e da Princeton.com.tw.
Ou googleia HT12D e HT12F ou PT2260/PT2270.
Abraço,
Osiris Torres.

Enviado:
21 Jul 2009 20:58
por egipts
Particularmente, eu utilizaria um encoder no transmissor (HT12D, 6026 ou 6P20) e um uC com 3 PWM por hardware e rotina de decodificação ativada pelo pino do timer.
Abraço, egipts.

Enviado:
10 Ago 2009 10:36
por Alesandro F Zagui
Postando um retorno.
Consegui um tempinho esse final de semana para concluir esse projeto.
O funcionamento ficou da seguinte forma.
Crie o protocolo de comunicação RF usando como base de tempo o TMR2.
Coloquei a entrada de RF para gerar uma Interrupção Externa.
E usei o TMR0 como base de tempo para o RGB, mas sem gerar interrupcao, apenas monitorando o flag T0IF no MAIN.
Dessa forma o RGB nao ficou variando e consigui confiabilidade na comunicação RF.
Obrigado a todos pela ajuda.
Abraço.