LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: nadabro em 22 de Fevereiro de 2011, 01:53

Título: Definir tempo bit em RF
Enviado por: nadabro em 22 de Fevereiro de 2011, 01:53
Boas..

Estou a tentar converter dados vindos de RF codificados (define os bits pela duração dos mesmos)..já tenho o protocolo de comunicação, por isso estou a modificar alguns códigos fonte para converter os bits em dados.

A minha dúvida encontra-se na altura de definir o tempo para 1, 0, intervalo..um exemplo:
Código: [Seleccione]
// 0.5 ms high is a one
#define MIN_ONE 135 // minimum length of '1'
#define MAX_ONE 155 // maximum length of '1'
// 1.3 ms high is a zero
#define MIN_ZERO 335 // minimum length of '0'
#define MAX_ZERO 370 // maximum length of '0'
// 1 ms between bits
#define MIN_WAIT 225 // minimum interval since end of last bit
#define MAX_WAIT 275 // maximum interval since end of last bit


No meu caso:
4ms 1
2ms 0
0.5ms intervalo entre bits

Se 1s corresponde 1000ms, 0.5ms não deveria ter um intervalo de 435 / 555 (+-)?

Obrigado..

Título: Re: Definir tempo bit em RF
Enviado por: senso em 22 de Fevereiro de 2011, 17:49
É para arduino?
Ou para outro micro-controlador, se for para arduino, provavelmente esses tempos foram medidos com osciloscópio porque o acesso dos pinos digitais do micro-controlador do arduino usando as funções digitalWrite é muito muito lento.
Título: Re: Definir tempo bit em RF
Enviado por: nadabro em 22 de Fevereiro de 2011, 22:53
É para Arduino e o código que dei exemplo é tb para o Arduino.. os tempos foram medidos por um osciloscópio, podes ver como mediram o tempo dos bits daquele exemplo aqui (http://www.f6fbb.org/domo/sensors/tx_signals.php).

Neste exemplo consigo definir bem o tempo, e os intervalos para 1,0, etc
Código: [Seleccione]
// pulse widths. short pulses ~500us, long pulses ~1000us. 50us tolerance
#define SHORT_PULSE_MIN_WIDTH 450/TIMER_PERIOD_US
#define SHORT_PULSE_MAX_WIDTH 550/TIMER_PERIOD_US
#define LONG_PULSE_MIN_WIDTH 950/TIMER_PERIOD_US
#define LONG_PULSE_MAX_WIDTH 1050/TIMER_PERIOD_US

500uS->0.5ms
1000uS->1ms

Mas para o 1º código em cima, não consigo perceber como ele define aquele intervalo..só se mais à frente aquele adiciona alguma função para chegar aquele valor, mas como não percebo muito disto, estou a mandar bitaites eheh
Título: Re: Definir tempo bit em RF
Enviado por: senso em 22 de Fevereiro de 2011, 23:00
Eu disse é que o autor disso foi alterando os valores experimentalmente com um osciloscópio ate ter os tempos desejados, porque o arduino tem muita over-head face ao tempo real devido a todo a tralha de codigo que aquilo adiciona.
Portanto, teras de fazer o mesmo, ou entao, regra de 3 simples, e convertes o tempo real para esse tempo relativo, provavelmente basta isso para funcionar.
Título: Re: Definir tempo bit em RF
Enviado por: nadabro em 23 de Fevereiro de 2011, 02:12
Agradeço a resposta,

Já tinha pensado em usar a regra de três simples, mas o código ter que ser muito trabalhado para ser compatível com o protocolo que quero capturar. Ainda estou à espera que chegue o módulo receptor 433.92mhz, entretanto tou usando o módulo do próprio aparelho..mas algo me diz que não estou a receber os dados em condições, conheces algum código (simples :) ) que permita visualizar os dados em binário no "serial monitor" usando este tipo de protocolo RF (1,0,etc é determinado pela duração do bit)?