¿Puedes obtener la modulación de señal de un control remoto infrarrojo con un Arduino?

Permítanme prologar que soy un novato en electrónica. Soy decente con la programación.

Tengo un HDTV RCA L40FHD41 que compré en 2010. He intentado usar muchos controles remotos universales con este televisor, pero después de probar cientos de códigos, nada funciona. Compré un control remoto de reemplazo barato (control remoto de TV RCA 276045) pero es impredecible cuando decide que realmente funciona. Esperaba poder usar un Arduino con un receptor IR para obtener todos los códigos IR para el control remoto cuando se está comportando, luego intentar hacer un transmisor IR Arduino para controlar el televisor.

Tenía un fragmento de código que básicamente tomaba una entrada IR sin procesar y la emitía a través de un LED IR. Para probar, apunté el LED IR al receptor remoto de medios de mi PC y presioné algunos botones en el control remoto de medios de la PC. Eso funciono. Pero cuando apunté el LED IR al televisor y presioné los botones del control remoto del televisor, no sucedió nada. Creo que la TV usa una modulación de diferencia. He leído que la mayoría de los IR estándar usan 38Khz. Quiero saber qué modulación usa el control remoto del televisor. ¿Hay alguna forma de obtener esa información usando un Arduino y un receptor IR?

Editar: alguien dijo que podría ser un problema de decodificación. Ese no puede ser el caso, porque usé otra pieza de código de ejemplo para obtener los tiempos y los códigos HEX para todos los botones, y cuando presioné el mismo botón varias veces, obtuve los mismos resultados, de manera consistente. Aquí hay un ejemplo de la salida de ese código de muestra: BOTÓN DE ENCENDIDO

Código: 6A68351E (32 bits)

Tiempo[51]:

 +4050, -3400     + 800, -1650     + 800, -1600     + 850, -1600
 + 800, -1600     + 800, - 650     + 800, - 650     + 850, -1600
 + 800, - 650     + 800, -1650     + 750, - 700     + 750, -1650
 + 750, - 750     + 700, - 750     + 750, - 700     + 750, - 700
 + 750, - 750     + 700, -1700     + 700, -1700     + 700, - 750
 + 700, -1750     + 650, - 800     + 600, -1850     + 600, - 850
 + 600, -1800     + 600

sin firmar int rawData[51] = {4050,3400, 800,1650, 800,1600, 850,1600, 800,1600, 800,650, 800,650, 850,1600, 800,650, 800,1650, 750,700, 7050,705,16 700,750, 750,700, 750,700, 750,750, 700,1700, 700,1700, 700,750, 700,1750, 650,800, 600,1850, 600,850, 600,1800, 600};

EDITAR: Tengo un código que funciona para encender/apagar el televisor. No estoy seguro de qué es diferente entre el código que simplemente tomó una entrada sin procesar y la transmitió.

Cuando transmitió eso al televisor, ¿usó los tiempos o el "Código"? Este último podría no funcionar. Noté que sus tiempos terminan con un período de "encendido", ¿está seguro de que el LED se apaga nuevamente? Tal vez agregue un período arbitrario de "apagado" al final.
Si es impredecible cuando funciona, es posible que tenga otras interferencias, al igual que con los controles remotos universales. Es un producto comercial, no va a ser tan sensible que apenas funcione. Mirar la frecuencia modulada no va a ayudar. Usar un receptor demodulado para extraer la señal de menor velocidad es lo suficientemente bueno, luego, si puede recrearlo (tal vez / tal vez no con un arduino), puede probar las diversas frecuencias comunes con varios LED IR de frecuencia ...
Mueva el televisor a una habitación sin otros dispositivos IR o electrónicos en general, si es posible, intente allí o arroje una manta sobre usted y el televisor para que esté aislado de cualquier otra interferencia. He tenido cajas que reenvían IR por alguna razón, que cuando están encendidas en la misma habitación, otros dispositivos IR no funcionan. Podría haber otras razones por las que el ir no funciona, pero si tiene un control remoto que a veces funciona y no es la batería, entonces el problema no es IR IMO.
no podrá "ver" el IR modulado con un arduino, no creo que pueda sondear/recibir lo suficientemente rápido. Sin embargo, puede hacer un experimento, hacer un ciclo cerrado que haga una muestra de un pin, guardarlo en RAM, repetirlo, ejecutar ese ciclo un millón de veces y cronometrarlo, ¿puede llegar a 80 Khz o más rápido? tal vez intente con una frambuesa pi o algo así... eso podría no funcionar tampoco...
tenga en cuenta que es muy, muy difícil generar una señal modulada adecuada desde un microcontrolador, ligeramente apagada o no una onda cuadrada perfecta que ingresa al LED, y será peor que su control remoto de reemplazo. y eso es solo el reloj modulado, el tiempo de la señal subyacente que se modula también afectará qué tan lejos / cerca debe estar del televisor para que funcione, habrá un punto óptimo y el resto de las distancias no funcionará . el uso de un receptor IR demodulado común para decodificar puede dejarlo con la sincronización incorrecta (vaya con la sincronización estándar, no con lo que ve).
www.sbprojects.com/knowledge/ir/index.php si todos fueran de 38Khz, ¿por qué tal rango (de frecuencia) de receptores de infrarrojos y LED de transmisión? Esperaría que un proveedor use la misma frecuencia si está usando los mismos códigos, tal vez siempre use la misma frecuencia y el mismo esquema de codificación (aunque tengo / tuve un RCA que fue prácticamente el primer televisor IR en el mercado, y no cumplir con cualquiera de los protocolos estándar modernos/conocidos, pero eso no es sorprendente ya que todavía no había un mercado para IR).
Mira el video de EEVBlog donde Dave hace exactamente esto: captura el paquete IR y lo reproduce en Arduino youtube.com/watch?v=BUvFGTxZBG8
@old_timer Cuando digo que el control remoto es impredecible, quiero decir que es súper barato, por lo que hay momentos en que el control remoto se asusta y el LED que indica que se está enviando una señal está encendido el 100% del tiempo, y yo Hay que quitarle las pilas para que se detenga. No sé qué lo causa. Pensé que tal vez la caja en sí estaba causando un cortocircuito, así que la abrí y cubrí la PCB por dentro con cinta aisladora, pero esto no solucionó el problema. El éxito y el error no tienen nada que ver con el televisor en sí. Cuando el control remoto se está comportando, cada botón presionado en el control remoto funciona el 100% del tiempo.
está bien, eso lo hace más simple, al menos debería poder decodificarlo usando un módulo ir, pero crear nuevas señales es otra historia, para ese viejo televisor que tenía, en realidad hice una placa con un mcu (primero de los cortex-m3s de luminary micro) que recibió como un código de sony y luego envió este extraño código de televisión antiguo y lo usó para traducir, de modo que pudiera usar un control remoto moderno en lugar de tener que usar otro. Estoy desconcertado de que un televisor de 2010 no sea compatible con uno de los múltiples dispositivos remotos (preprogramados).
si puede generar un reloj de 38 o 40 o lo que sea, entonces un simple y una puerta y puede controlar la señal para modularla (o a la inversa, según sea el caso). y crea tu propio control remoto. Sé que ST tiene un mcu (o quizás varios) que tiene esto incorporado para IR, generas el reloj portador con divisores internos y generas la señal tal vez con el temporizador, lo une y luego puedes conducir un LED IR. Compré los leds, nunca jugué con ellos.

Respuestas (1)

No puede hacerlo con un receptor IR común como TSOP4840 o CHQ0038 porque ya tienen un demodulador incorporado (consulte el diagrama de bloques en la hoja de datos).

Necesita un sensor acoplado a CA como el TSMP58000.

La biblioteca de infrarrojos IRLib2 Arduino tiene un boceto de ejemplo que determina la frecuencia de modulación. El procedimiento se describe con más detalle en el manual .


Por cierto, en mi opinión, es más probable que tengas algún problema de sincronización, decodificación o rango que que el televisor use algo que no sea 38 kHz. ¿Tiene un osciloscopio/analizador lógico y un segundo receptor de infrarrojos?

No, no tengo osciloscopio, soy un novato. Sé que no era el rango. Sostenía el LED IR como a 1 pie del receptor IR del televisor. Sé que no fue un problema de decodificación, porque usé otro código de ejemplo para obtener todos los códigos IR. Cuando presioné el mismo botón repetidamente en el control remoto del televisor, obtuve una decodificación de señal constante cada vez. En cuanto al tiempo, no puedo decir.
¿Tiene el hardware necesario para registrar lo que envía su LED IR, de modo que pueda compararlo con lo que envía el control remoto del televisor?
@YoItsTrev: usted dijo: "Sé que no fue un problema de decodificación [...] Presioné el mismo botón repetidamente en el control remoto del televisor, obtuve una decodificación de señal constante cada vez". Puedo ver por qué cree que ha eliminado la decodificación incorrecta, pero para su información, no es necesariamente cierto. La decodificación por Arduino está limitada por lo que se recibe del receptor IR. Puede obtener una decodificación consistente que es incorrecta, por ejemplo, si el s/w en el Arduino está siendo "engañado" por su entrada. Esto es parte de lo que dice old_timer en sus comentarios sobre su pregunta. Por lo tanto, le sugiero que aún considere esa posibilidad.