Decodificacion Del Protocolo RC5 Usando Un PIC
Decodificacion Del Protocolo RC5 Usando Un PIC
Decodificacion Del Protocolo RC5 Usando Un PIC
Transmisión
Los mandos a distancia funcionan transmitiendo al receptor un código binario. La
longitud en bits del código depende del formato, pero en ese código ciertos bits
indican el aparato y otros la función. El aparato (o identificador) indica a qué
electrodoméstico va destinada la orden (TV, TDT, DVD...), mientras que la función
indica cuál es la orden. El identificador no es único, en el sentido de que es el
mismo para todos los aparados de una misma marca y modelo. Por regla general el
aparato es siempre el mismo para todos los botones del mando, y cada botón está
identificado por un código que es el número de la función.
Puede ocurrir que una marca use el mismo formato que otra, y además dé a
casualidad de que ambas marcas han elegido los mismo códigos de identificación y
de función que otra, en ese caso podemos usar el mando de una con la otra. Pero
habitualmente la concordancia no es total:
Si sólo coinciden las funciones da lo mismo, porque el receptor no va a hacer
ningún caso códigos que no vayan destinados a él.
En cambio, si sólo coincide el código de identificación pero las funciones son
distintas. El receptor obedecerá una orden que no iba para él, llevándole a ejecutar
a saber qué función, y por eso cuando subimos el volumen de la tele, se apaga el
DVD.
Para transmitir el código y que el receptor pueda distinguirlo del ruido de ambiente
se usa una portadora que está entre 36 y 40kHz. Un módulo especial se encarga de
detectar y demodular tal frecuencia, así transforma la señal recibida en niveles
lógicos que pueden interpretarse luego mediante un micro.
Modulación RC5
La modulación que emplea el formato RC5 es una codificación Manchester, que se
emplea también en algunos tipos de redes. En el enlace dela Wikipedia que os doy
lo explican mucho mejor de lo que yo sabría hacerlo.
Vamos a la práctica
Hay varias formas. La más utilizada y más sencilla es tomar el tiempo de cada bit,
que en teoría son 1778ms y dividirlo en dos. Ahora comprobar el nivel del puerto en
una de esas mitades, supongamos que en la segunda mitad. Si la segunda mitad es
un nivel alto se trata de un 1, de lo contrario es un 0. Si cogiésemos la mitad
primera sería al revés: un nivel alto nos indicaría que se está transmitiendo un cero.
Este proceso tiene varios inconvenientes, por ejemplo:
Frecuencia de reloj inexacta. Si el transmisor o el receptor sufre una deriva
temporal, es posible que empecemos bien pero erremos los bit finales.
Inversión de los bits. Por lo general los módulos decodificadores TSOP
invierten los bits, es decir, su salida está a nivel alto continuamente salvo cuando
reciben una portadora de 36kHz (la frecuencia depende del modelo) que ponen su
salida a 0. Esto puede dar lugar a confusión.
Exige una interrupción periódica. A veces no podemos permitirnos usar un
temporizador de micro sólo para esto y el desarrollo se complica.
Forma de decodificación alternativa
Espera
Tiempo Marca de Accion
conf.
Anotamos el mismo valor anterior y pasamos a
t No Continuación
esperar marca de confirmación.
No hacemos nada. Tan sólo dejamos de esperar la
t Si Confirmación
confirmación.
2t No Cambio Anotamos el valor opuesto al último recibido.
ERROR de transmisión. La marca de confirmación
2t Si ERROR
siempre llega en un tiempo t.
Esta entrada me está quedando demasiado larga. Voy a parar aquí y dejo la
programación para más adelante.