¿Cómo puedo compensar el parpadeo del control remoto IR en Arduino? [cerrado]

1

Estoy trabajando en Arduino en un mini pro. Tengo un viejo control remoto de MP3 que transmite infrarrojos a aproximadamente 38 kHz. Tengo un programa escrito que cuando mi sensor de infrarrojos está captando una señal del control remoto, le dice a un pin de relé que esté bajo y que el pin de relé esté alto si no detecta una señal del control remoto. El bucle se ejecuta constantemente y se comprueba de modo que "si (recibiendo) pin - > bajo" y "si (no recibiendo) pin - > alto". Mi problema es que el control remoto de MP3 no envía una señal constante. Se enciende y se apaga constantemente, lo que hace que el relé se encienda y apague cuando debería permanecer apagado.

Estoy tratando de averiguar cuánto tiempo se debe establecer una demora para compensar perfectamente el parpadeo de la señal del control remoto. Si no puedo compensar el parpadeo, ¿existen otras soluciones para usar el IR en la misma longitud de onda sin parpadeo?

¡Toda la ayuda es muy bienvenida y estoy abierto a ideas y sugerencias!

Este es el código que ya tengo, pero me ha costado un tiempo y no tengo mucha confianza con el código de Arduino.

#include <boarddefs.h>
#include <ir_Lego_PF_BitStreamEncoder.h>
#include <IRremote.h>
#include <IRremoteInt.h>

int RECV_PIN = 11;
int OUTPUT_PIN = 4;

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
 pinMode(OUTPUT_PIN, OUTPUT);
 pinMode(13, OUTPUT);
 irrecv.enableIRIn(); // Start the receiver
}

int on = 0;
unsigned long last = millis();

void loop() {
  if (digitalRead(RECV_PIN) == LOW) {
   digitalWrite(OUTPUT_PIN, LOW);
 }
 else if (digitalRead(RECV_PIN) == HIGH){
  digitalWrite(OUTPUT_PIN, HIGH);
 }
irrecv.resume(); // Receive the next value
} 
    
pregunta Sam Vincent

1 respuesta

0

Realmente deberías usar el microcontrolador para decodificar las transmisiones desde el control remoto IR. Si lo haces, podrías ver cuando se presiona un botón en particular y tomar medidas específicamente sobre eso. Por ejemplo:

  1. Descodifique dos botones diferentes, uno que enciende el relé y otro que lo apaga.
  2. Observe las transmisiones repetidas desde el control remoto mientras se presione el mismo botón para mantener el relé activado.

Si aún desea que funcione solo en la detección de modulación del receptor de IR, use un osciloscopio para ver con qué frecuencia el control remoto envía las transmisiones. (Estas cosas a menudo se envían a una tasa de repetición de diez veces por segundo).

Un mejor esquema sería detectar el inicio de la detección de la transmisión y luego activar el relé basándose en eso. Luego, apague el relé si no ha habido un inicio de detección dentro de, por ejemplo, 15 segundos. La razón por la que esto podría ser mejor es que algunos controles remotos de infrarrojos enviarán un paquete largo cuando se presiona un botón por primera vez y luego enviarán un paquete muy corto en la indicación de repetición cuando se mantiene presionado el botón.

El problema con cualquier detección de envoltura simple como lo está haciendo ahora y en estos esquemas descritos anteriormente es que son muy susceptibles a la interferencia IR. Si observa la salida de un módulo receptor de IR típico con un osciloscopio, no es raro ver que se detectan todo tipo de detecciones aleatorias incluso cuando el transmisor del control remoto por infrarrojos no está activo. Es por eso que inicialmente recomiendo que decodifique el protocolo de transmisión para asegurarse de que está viendo transmisiones legítimas.

    
respondido por el Michael Karas

Lea otras preguntas en las etiquetas