La transmisión Arduino 433MHz falla si el borde descendente es inferior a 122ms

Estoy tratando de controlar un LED usando un par de transmisores y receptores de alta potencia de 433 MHz, con el transmisor conectado a mi Arduino Nano.

Aquí está el transmisor (XLPCF20): http://www.colorapples.com/rf-wireless-transmitter-module-315-or-43392mhz-xlpcf20-p-38493.html

Aquí está el receptor (CDR 5 B): http://www.amazon.co.uk/433MHZ-115dbm-Wireless-Receiver-CDR-5-B/dp/B00COD96UG

Puedo enviar ALTO a un canal de datos en el transmisor (tiene 4 canales) y recibir la entrada ALTA en el mismo canal en el receptor, encendiendo con éxito un LED. Este es mi boceto de prueba actual:

void setup(){
  pinMode(8, OUTPUT);
}

void loop(){
  digitalWrite(8, HIGH);
  delay(122); //this is the important line
  digitalWrite(8, LOW);
  delay(100);
}

Esto funciona bien, sin embargo, si cambio el retraso de 122 ms en el flanco descendente a 121 ms (o cualquier valor por debajo de eso), no tengo salida en el receptor. El LED no se enciende en absoluto. Es lo mismo para todos los canales, hay un cambio brusco en ese mismo límite entre 121 ms y 122 ms (se encontró el valor exacto por prueba y error). En el transmisor/Arduino, la señal de salida es clara, por lo que es un error con el transmisor o el receptor. He usado otros pares de transmisores/receptores de 433MHz mucho más simples/más baratos en el pasado sin tal problema. En el flanco ascendente (segunda llamada de retraso, la que tiene 100 ms), hay otro problema cuando caigo por debajo de los 13 ms. Exactamente a los 12 ms, el LED es inestable, a veces parpadea como se esperaba, pero a veces simplemente se enciende. Cualquier cosa por debajo de 12 ms, el LED está constantemente alto, ni un solo parpadeo.

ACTUALIZACIÓN: si uso _delay_msen lugar de regular delay, obtengo 1msmás espacio para ambos bordes, pero debajo de eso, sigue siendo el mismo.

ACTUALIZACIÓN 2: He intentado cambiar a diferentes pines de salida en mi Nano, tanto PWM como no PWM. Nada cambia.

¿Cuál sería el problema?

¿Exhibe esto si lo usa _delay_ms()en su lugar?
@IgnacioVazquez-Abrams Obtengo alrededor de 1ms más de espacio. Como si fuera casi estable a 121 ms de caída y estable a 11 ms de caída. Vaya justo debajo de eso (120 ms subiendo o 10 ms bajando), el mismo problema persiste nuevamente.
Es un poco difícil saberlo con certeza sin las hojas de datos adecuadas, pero si el codificador está configurado para una tasa bastante baja, es posible que el tx/rx tarde tanto en bloquearse y en la secuencia completa de bits para que pueda decodificarse. Hay algo más en juego que un módulo tx/rx simple y muchos están diseñados para usarse como controles remotos donde ese tipo de retraso es aceptable.

Respuestas (1)

Necesita un par de transmisor y receptor desnudos con un canal. La foto es un receptor súper regenerativo. Puede usar el tipo superheterodino para una mejor antiinterferencia. En general, estos funcionan con una conmutación de unos pocos kHz, ponen Hi en tx y Hi salen en Rx.

ingrese la descripción de la imagen aquí

El que tienes tiene un codificador MCU adicional. Lee 4 líneas clave, espera 120 ms para que la tecla rebote, por lo que se ignoran las entradas más cortas. Luego envía un mensaje codificado al receptor donde otra MCU decodifica el mensaje y envía hi/lo en 4 canales.

Su módulo generalmente se usa dentro de estos controles remotos de 4 teclas (abridor de puertas de automóviles, etc.) Tenga en cuenta más pines, como out1 a out4. El desnudo es solo out1.

ingrese la descripción de la imagen aquí

sí, he usado los pares tx/rx más simples anteriores sin ningún problema, pero su rango es mucho más corto. Tengo este para rango alto (anunciado como rango de 3 km, sé que no será de 3 km, pero aún así es mucho más alto que un par normal). ¿Hay alguna forma de cancelar el comportamiento de espera de rebote del botón de 120 ms, ya que de todos modos no lo usaré con los botones?
Su unidad tiene una porción MCU y la porción tx/rx desnuda en una PCBA. Si puede rastrear la placa de circuito impreso y el circuito, puede pasar la parte de MCU y enviar la señal directamente al tx/rx desnudo en el circuito. O bien, puede comprar una nueva versión de alta potencia de bare tx y superhet rx. Verifique la restricción legal local sobre el uso de unidades de alta potencia (más de 100 a 200 metros probablemente estén restringidos de alguna manera, lugares y países)
gracias, intentaré pasar por alto la MCU y si no puedo, buscaré un nuevo par.
Para referencia futura: lo conseguí trabajando con un poco de soldadura. He soldado un diodo al pin 17 del PT2262 del transmisor (segundo pin a la derecha) y un diodo del pin 14 del PT2272 (quinto pin a la derecha) a mi receptor (el diodo actúa como el pin de datos del receptor) y ¡funcionó perfectamente! He transmitido/recibido continuamente durante casi media hora sin que la batería se agote o se caliente significativamente, en caso de que alguien se lo pregunte.
Bien, lo hiciste funcionar. Solo recuerde amablemente si ha conectado un cable de 173 mm como antena para tx y rx. Con una antena de 173 mm, incluso el módulo simple, que informó que no tiene suficiente alcance, debe recorrer unos cientos de metros, en un buen entorno, terreno abierto y plano y línea de visión directa. Use baja potencia, el rango bajo ayuda a reducir la interferencia con otros usuarios que pueden usar el mismo dispositivo.
Gracias, también voy a soldar un cable de 17,3 cm y también probaré el sencillo.
El simple, con antena de 173 mm, cable sólido vertical de pie, debe dar de 50 a 200 metros dentro de un edificio típico en el mismo piso a través de paredes típicas.