Recepcao RF

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Recepcao RF

Mensagempor Alesandro F Zagui » 21 Jul 2009 09:46

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?
Alesandro Freire Zagui
Alesandro F Zagui
Byte
 
Mensagens: 154
Registrado em: 12 Mai 2009 11:03
Localização: Campo Mourao, Pr

Mensagempor Djalma Toledo Rodrigues » 21 Jul 2009 12:07

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 ?
.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor Alesandro F Zagui » 21 Jul 2009 13:14

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?
Alesandro Freire Zagui
Alesandro F Zagui
Byte
 
Mensagens: 154
Registrado em: 12 Mai 2009 11:03
Localização: Campo Mourao, Pr

Mensagempor fabim » 21 Jul 2009 15:12

Â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
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Ander_sil » 21 Jul 2009 16:11

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.
Anderson Chrispim da Silva
chrispimdasilva@gmail.com
Ander_sil
Byte
 
Mensagens: 368
Registrado em: 30 Out 2006 09:58
Localização: Campinas - SP

Mensagempor Alesandro F Zagui » 21 Jul 2009 17:04

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.
Alesandro Freire Zagui
Alesandro F Zagui
Byte
 
Mensagens: 154
Registrado em: 12 Mai 2009 11:03
Localização: Campo Mourao, Pr

Mensagempor MOR_AL » 21 Jul 2009 17:34

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
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor Alesandro F Zagui » 21 Jul 2009 18:26

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
Alesandro Freire Zagui
Alesandro F Zagui
Byte
 
Mensagens: 154
Registrado em: 12 Mai 2009 11:03
Localização: Campo Mourao, Pr

Mensagempor egipts » 21 Jul 2009 20:55

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.
egipts
Byte
 
Mensagens: 318
Registrado em: 22 Out 2006 01:43
Localização: Mairiporã - SP

Mensagempor egipts » 21 Jul 2009 20:58

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.
egipts
Byte
 
Mensagens: 318
Registrado em: 22 Out 2006 01:43
Localização: Mairiporã - SP

Mensagempor Alesandro F Zagui » 10 Ago 2009 10:36

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.
Alesandro Freire Zagui
Alesandro F Zagui
Byte
 
Mensagens: 154
Registrado em: 12 Mai 2009 11:03
Localização: Campo Mourao, Pr


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x