¿Cómo determinar el protocolo de infrarrojos usando PIC16?

-1

Estoy tratando de determinar el protocolo IR utilizado en un Gree acondicionador de aire de la habitación remote control . Conecté la salida del receptor IR original al pin RA5 de un PIC16F73 y utilicé el siguiente código para medir los periodos de tiempo de los pulsos altos y bajos.

while(1)
{
    while(PORTAbits.RA5 == 1) //Wait for a low edge.
    {
        ;
    }
    T1CONbits.TMR1ON = 0; //Turn off Timer 1.
    duration[durationCounter] = TMR1; //Record duration of pulse in array 'duration'.
    TMR1 = 0; //Reset Timer 1.
    durationCounter++;
    T1CONbits.TMR1ON = 1;
    lowEdges++;
    while(PORTAbits.RA5 == 0) //Wait for next high edge.
    {
        ;
    }
    T1CONbits.TMR1ON = 0; //Similarly for low edge.
    duration[durationCounter] = TMR1;
    TMR1 = 0;
    durationCounter++;
    T1CONbits.TMR1ON = 1;
    highEdges++;
}

Ingresé los datos en este archivo excel . Pero los anchos de pulso parecen variar aleatoriamente y no tienen sentido para mí. He comprobado artículos sobre los protocolos NEC, RC-5, etc. pero ninguno parece coincidir con estos datos. ¿Es el programa inadecuado para capturar los datos?

    
pregunta Sohail

1 respuesta

1

Tiene dos preguntas, cómo interpretar el protocolo IR y cómo hacer un analizador lógico para capturar muestras del protocolo.

Para adivinar el protocolo, mira alrededor en la red. Usted puede encontrar donde alguien ya lo ha descubierto. Estas cosas generalmente no se confunden deliberadamente, pero inferir el protocolo solo a partir de un montón de muestras puede ser complicado. Lo más probable es que cada paquete comience con una ráfaga de alternancia alta / baja, denominada preámbulo . Esto tiene la intención de permitir que la rebanadora de datos en el receptor se asiente. Luego habrá algo con diferente tiempo para marcar el inicio del paquete. Esto es necesario porque se supone que no se recibe parte del preámbulo.

Después de eso hay muchas opciones. Algunos usan la codificación de Manchester, y otros usan longitudes de pulso de 1/3 y 2/3 para significar 1 y 0. He visto algunos que usan trozos de 4 bits para transmitir dígitos decimales o hexadecimales, generalmente seguidos por un dígito de suma de comprobación.

Capture algunos paquetes representativos con un analizador lógico o incluso un alcance. Con un alcance, probablemente tendrás que capturar un paquete completo en pedazos y pegarlos de nuevo manualmente.

En cuanto a hacer su propio analizador lógico, es una distracción que debe evitarse si es posible. Si realmente tuviera que hacer esto con un PIC, al menos usaría el módulo CCP en modo de captura, luego informaría el tiempo transcurrido entre los bordes de UART o algo así, y luego guardaré los datos en un archivo CSV para que pueda usarlos. Las herramientas del estante para verlo en detalle más adelante. Incluso puede probar los algoritmos de recepción en su computadora haciendo que procesen el archivo CSV.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas