Capítulo 7 Telemando por infrarrojos Debido a la popularidad de este tipo de mandos, raro va a ser no encontrarlos en cualquier hogar u oficina. Algunos de los aparatos más comunes que cuentan con ellos son los televisores, vídeos, cadenas de música, aparatos de aire acondicionado, etc. Esto nos permite decodificar las órdenes del mando de cada uno de estos aparatos y con un único transmisor poderlos controlar sin necesidad de ninguna instalación adicional. Existen además otras aplicaciones, como pueden ser la regulación de la iluminación de una sala, el control de subida o bajada de persianas o toldos, para las que su uso puede ser muy apropiado. Con anterioridad a la aparición de esta tecnología, se utilizaban la radiofrecuencia y los ultrasonidos. La primera tiene las desventajas de provocar interferencias electromagnéticas, necesitar autorización administrativa y que su alcance no está limitado, por lo que podría interferir en el funcionamiento de otros equipos existentes en otras salas o viviendas. Los segundos presentan problemas de interferencias por multitrayecto y son susceptibles a los ultrasonidos generados por una multitud de objetos y sucesos cotidianos como pueden ser la caída de una moneda, el sonido de una campanilla, un timbre, un reloj, sonidos generados por aparatos eléctricos como los televisores, etc. En aquellas aplicaciones en las que sólo se requiere un alcance de unos pocos metros y que la transmisión quede confinada en una sala, la transmisión por infrarrojos es la solución ideal. De ahí el éxito que han tenido este tipo de mandos en los últimos años. 7.1 Introducción En el mercado existen una multitud de soluciones para este tipo de dispositivos. Existen diferentes circuitos integrados que implementan todas las funciones de comunicación y decodificación de las señales y que permiten realizar sin apenas esfuerzo todas las funciones del telemando. 1 Nuestro objetivo es más ambicioso desde un punto de vista didáctico, por lo que se van a desarrollar tanto el transmisor como el receptor con componentes de propósito general. En cualquier caso, no se deben olvidar los codificadores y decodificadores comerciales en tanto en cuanto los incorporan muchos equipos y aparatos de consumo. La transmisión por luz infrarroja no está exenta de problemas, como el ruido y las interferencias. Las dos principales fuentes que suelen aparecer son: La luz solar, que incorpora una importante componente de luz infrarroja, lo que genera bastante ruido en el fotodiodo y puede saturar el receptor, disminuyendo la sensibilidad. Los tubos fluorescentes o las lámparas de bajo consumo presentan también una componente de luz infrarroja oscilante a la frecuencia de 100 Hz. Los motivos anteriormente expuestos desaconsejan la transmisión en banda base. La mayoría de los sistemas comerciales utilizan una modulación ASK con una frecuencia de portadora que oscila entre los 36 y los 40 Khz. aunque hay algunos que utilizan una modulación FSK con una frecuencia de la portadora de hasta 50 Khz. 7.1.1 Estándares de codificación de comandos Para la codificación de los comandos existen dos estándares internacionales que son RC-5 y RECS 80; pero éstos no son los únicos, ya que hay muchos fabricantes que tienen sus propias codificaciones, como NEC, DENON, SIRCS, MOTOROLA, etc. De todas ellas la más popular es la RC-5. 7.1.1.1 Codificación RC-5 Para la codificación de bits utiliza un código bifase, de modo que un “0” se codifica por una transición de nivel alto a nivel bajo y un “1” como una de nivel bajo a nivel alto. La trama es de 14 bits con la siguiente estructura: S1 S2 T D4 D3 D2 D1 D0 C5 C4 C3 C2 C1 C0 Tabla 1 – Trama de comando del estándar RC-5. Cada bloque de bits tiene la siguiente función: S1-S2 – Son los bits de arranque y sirven para el ajuste del CAG y la sincronización del receptor. 2 T – Es el bit de toggle, que va alternándose entre una trama y otra cuando se repite varias veces la transmisión del mismo comando. D0-D4 – Contienen el número de dispositivo a controlar. C0-C5 – Contienen el comando a ejecutar. 7.1.1.2 Codificación RECS 80 La codificación de bits empleada es una modulación del ancho de pulso de modo que cada bit se transmite como un pulso a nivel alto de duración T seguido por otro a nivel bajo de duración 2T si se transmite un “0” y de duración 3T si se transmite “1”. En cuanto a la longitud de la trama, depende de cada implementación y del número de comandos que es capaz de transmitir. En general, la estructura consiste en una secuencia de referencia de duración 3T, un bit de toggle para indicar si se trata de una repetición del comando o de uno nuevo y, por último, la secuencia de bits de información que puede contener un código de identificación de dispositivo y otro de comando, seguido de un tiempo de inactividad antes de repetir o iniciar una nueva secuencia. 7.1.2 Codificación de los comandos Para no complicar en exceso el diseño del telemando, se va a utilizar un formato de trama muy sencillo. Va a consistir en una secuencia formada por un bit de activación, seguido de un bit de arranque, ocho bits de información (comenzando por el menos significativo) y uno de parada. Esta elección no es casual, sino que coincide con la estructura de trama del módulo de comunicación serie SCI del microcontrolador y, por tanto, se podrá utilizar este módulo para la recepción. Activación 1 Arranque 0 Bit 0 X Bit 1 X Bit 2 X Bit 3 X Bit 4 X Bit 5 X Bit 6 X Bit 7 X Parada 1 Tabla 2 – Estructura de la trama de comando. Los ocho bits de información pueden dividirse en una parte para la identificación de dispositivo y otra para la señalización de comando. De este modo, se pueden estructurar de ocho formas diferentes. La elección de una u otra dependerá en cada caso de la aplicación, esta decisión se deja abierta al ser irrelevante de cara al diseño. Estructura de la información 0 Id. Disp. y 8 Comando 1 Id. Disp. y 7 Comando 2 Id. Disp. y 6 Comando 3 Id. Disp. y 5 Comando 4 Id. Disp. y 4 Comando Nº de dispositivos 1 2 4 8 16 Nº de comandos 256 128 64 32 16 3 5 Id. Disp. y 3 Comando 6 Id. Disp. y 2 Comando 7 Id. Disp. y 1 Comando 32 64 128 8 4 2 Tabla 3 – Estructuras posibles de codificación de la información. Para la transmisión de bits se va a utilizar un código NRZ unipolar con una frecuencia de 100 Hz que va a determinar la velocidad de transmisión de la trama. 7.1.3 Tipo de modulación Se va a utilizar una modulación ASK con una frecuencia de 38 Khz. La razón que motiva esta decisión es la existencia de un buen número de dispositivos comerciales que utilizan esta modulación y el hecho de estar lo suficientemente alejada de la interferencia de 100 Hz. provocada por los tubos fluorescentes y de la velocidad de transmisión. 7.2 Transmisor de infrarrojos Disponiendo de un microcontrolador, el diseño de un transmisor de infrarrojos podría limitarse al modulador y al driver que gobierna al diodo fototransmisor, que suele demandar bastante corriente, ya que todo el conformado y transmisión de la trama se puede hacer por software a través de un puerto. También se puede realizar una transmisión serie convencional utilizando el módulo de comunicación serie SCI del MC68331, lo que simplifica enormemente las tareas para algunas aplicaciones concretas como podrían ser las de comunicación con un PC o con otro microcontrolador. El objetivo que en esta sección se pretende es el diseño de un mando de control remoto totalmente independiente, que pueda alimentarse con pilas, sin perjuicio de la utilidad que se le pueda dar a algunos de los bloques para otras aplicaciones de telemando. 7.2.1 Diagrama de bloques del transmisor El conjunto del transmisor se ha descompuesto en seis módulos que pueden ser diseñados con independencia según se detalla en la figura 1. 4 Figura 1 – Diagrama de bloques del transmisor. 7.2.2 Generador de reloj Como la velocidad de transmisión se ha determinado que sea de 100 baudios, será necesario generar una señal de reloj de esa frecuencia para marcar el ritmo de la transmisión. Para ello se usará un temporizador 555 en configuración aestable y con un ciclo de trabajo próximo al 50 %. Figura 2 – Esquema de conexión del 555. La frecuencia de la señal generada viene dada por la fórmula: f R2 1.44 , y el ciclo de trabajo por: Duty R1 2 R2 C R1 2 R2 La elección del condensador más adecuado puede realizarse a partir de las curvas proporcionadas por el fabricante. 5 Figura 3 – Frecuencia de oscilación libre (Gráfica obtenida del catálogo del fabricante National). A partir de la frecuencia de diseño de 100 Hz, podemos observar que el par formado por la recta de carga y el valor del condensador que adopta los valores más razonables son la de 100 K y un condensador de 100 nF. Para el valor del condensador de 100 nF se obtiene: R1 2 R2 1.44 144 K 100 100 10 9 Por otro lado se quiere un ciclo de trabajo próximo al 50 %, para ello es necesario que R1 R2 . Si se toma un valor de R1 0.1 R2 y eligiendo aquellos valores comerciales más próximos se obtiene R2 68 K y R1 8.2 K. Debido a las tolerancias de los componentes la frecuencia resultante no se ajustará al valor de diseño. Para resolverlo se colocará en lugar de la resistencia de 68 K la combinación serie de una resistencia de 56 K y un potenciómetro multivuelta de 20 K para permitir el ajuste de la frecuencia exacta. Con los valores calculados se obtendrá un ciclo de trabajo de aproximadamente el 47 %. Una vez conectado a la alimentación, será necesario ajustar con el potenciómetro la frecuencia de trabajo que se medirá con el osciloscopio. 7.2.3 Generador del intervalo de trama Cada trama consiste en la transmisión de un conjunto de once bits. Para ello se cargará la palabra que compone la trama en dos registros de desplazamiento en cascada y se sacarán en serie. La función que va a realizar el generador del intervalo de trama es la de mantener activo al registro de desplazamiento sólo mientras se transmite ésta y al finalizar inhibe el funcionamiento. 6 Para realizar esta función se va a utilizar un contador para implementar un autómata que al recibir la señal de arranque mediante un pulsador mantiene activa la señal LOAD durante ocho ciclos de reloj. El esquema se muestra en la figura 4. Figura 4 – Generador del intervalo de trama. La descripción del funcionamiento es bastante sencilla: El pulsador, dotado de un circuito antirebotes, genera un pulso a nivel bajo en el terminal LOAD del contador. El contador que se encontraba inhibido por la señal RCO (fin de cuenta) aplicada a través de un inversor a la entrada ENP carga el valor 4 (0100) existente en los terminales D, C, B y A. La señal RCO cambia a nivel bajo y desinhibe el contador que prosigue la cuenta hasta el valor 15 (1111). Cuando alcanza este valor, la señal RCO pasa a nivel alto e inhibe de nuevo el contador. La misma señal RCO negada utilizada para activar e inhibir el contador es la que activa e inhibe el registro de desplazamiento. Como se puede observar, la señal se mantiene a nivel alto durante los once ciclos de reloj que tarda el contador en finalizar la cuenta y luego retorna a nivel bajo que es su estado normal. 7 A continuación se representa el diagrama de estados que gobierna el autómata: Figura 5 – Diagrama de estados del autómata generador del intervalo de trama. 7.2.4 Registro de desplazamiento Se trata del alma del control remoto. El registro de desplazamiento recibe la trama a través de sus entradas en paralelo y la saca en serie al ritmo que le marca el reloj. El valor de los bits de activación, arranque y parada vienen van cableados de forma permanente y los ocho bits de selección de dispositivo y comando se configuran a través de ocho microinterruptores. El registro permanece con el código de la trama precargado y en estado de inhibición. Cuando el generador de intervalo de trama activa el registro comienza la transmisión hasta el último bit de la trama, tras el cual pasa de nuevo a estado de inhibición. 8 Figura 6 – Registro de desplazamiento. Para evitar que se produzca una transmisión espúrea durante la conexión inicial del circuito, se ha introducido una red de inicialización, conectada al terminal de inhibición, que garantiza un tiempo de 400 ms. Suficiente para que se estabilice el autómata. Una peculiaridad importante es que en la salida serie aparece el valor precargado en el último biestable H y que será, por tanto, el valor de reposo del terminal serie. Cuando se produce la activación del circuito, el primer impulso de reloj llevará a la salida serie el valor contenido en la entrada G y, por tanto, sólo se dispone de siete bits. Afortunadamente el circuito cuenta con una entrada de datos serie que ataca al biestable A y que pondremos a 1 para que haga la función de bit de parada. Como se puede observar, con la conexión realizada la línea permanece en reposo o nivel lógico cero hasta que el generador de intervalo saca al circuito de su estado de inhibición. A partir de ese instante se transmite un 1 para la sincronización de trama, el bit de arranque, los cinco bits de información y por último el de parada. 7.2.5 Modulador ASK Como ya se ha comentado se va a utilizar una modulación digital ASK con una frecuencia de 38 Khz. de modo que se transmitirá la señal modulada para denotar un “1” lógico y no se emitirá para denotar el “0” lógico. Para ello se va a utilizar un 555 en modo aestable al igual que se hizo con el circuito de reloj y se utilizará el terminal de reset para gobernar la transmisión. 9 Sin entrar en detalles justificativos, diremos que la utilización de una onda cuadrada para modular la señal infrarroja presenta una serie de ventajas desde el punto de vista de la potencia transmitida, por lo que no será necesario filtrar la salida del 555. A la salida del temporizador se conectarán dos inversores Schmitt Trigger en serie para regenerar la señal sin negar la lógica. Figura 7 – Modulador ASK Para el cálculo de los componentes de ajuste se consulta la gráfica de la figura 3 y se observa que para la recta de carga de 100 K se precisa un valor de condensador de entre 100pF y 1nF, por lo que si elegimos un valor comercial de 220 pF, se obtiene: Para el valor del condensador de 100 nF se obtiene: R1 2 R2 1.44 172 K 38000 220 10 12 Por otro lado se quiere un ciclo de trabajo próximo al 50 % para ello es necesario que R1 R2 . Si se toma un valor pequeño de R1 2 K el ciclo de trabajo será de 49.4 % y el valor de R2 85 K. Para resolver la desviación de frecuencia debida a la tolerancia de los componentes se colocará en lugar de la resistencia de 85 K la combinación serie de una resistencia de 75 K y un potenciómetro multivuelta de 20 K para permitir el ajuste de la frecuencia exacta. Una vez conectado a la alimentación será necesario ajustar con el potenciómetro la frecuencia de trabajo que se medirá con el osciloscopio. 7.2.6 Emisor de luz infrarroja La señal procedente del modulador debe ser aplicada al fotodiodo de luz infrarroja que se encarga de la emisión. 10 Se ha utilizado el diodo CQY89 que habitualmente se encuentra disponible en las tiendas de electrónica. Tiene una longitud de onda de emisión es de 930 nm. con un ángulo de emisión de 40º. Admite una intensidad media de corriente de 100 mA con la que alcanza una potencia de emisión de 15 mW. Para la excitación del LED IR se ha utilizado el circuito de la figura 8. Podemos observar que para la polarización de la base se han utilizado dos diodos 1N4148. Con ello se consigue la tensión adecuada en la base del transistor y se evitan los efectos de carga que introduciría un divisor resistivo. Figura 8 – Transmisor de luz infrarroja. Como el modulador proporciona una onda cuadrada, para que la corriente media por el LED sea de 100 mA, se deberá hacer pasar una corriente de 200 mA durante el ciclo activo. Como en el LED cae una tensión de 1.7 V. y la tensión mínima colector-emisor, fuera de la saturación, es VCE 0.2 V., la resistencia de emisor necesaria para limitar la corriente del diodo a 200 mA es: R 5 1.7 0.2 15.5 0.2 El valor comercial más próximo disponible es 18 . La tensión en la base del transistor ha de ser menor que: VB VE 0.7 5 1.7 0.2 0.7 3.8 V. Utilizando los dos diodos en serie, la tensión en la base es: VB 5 1.4 3.6 3.8 V. La tensión en el emisor del transistor será: VE 5 1.4 0.7 2.9 V. y la potencia disipada en la resistencia de 233 mW, por lo que es recomendable utilizar una 11 resistencia de ½ W. La corriente de pico en el LED será de 161 mA y la corriente media de 80.5 mA. 7.2.7 Alimentación El módulo transmisor ha de ser un elemento móvil para que realice la función de telemando para la que fue diseñado. Para ello se alimentará con una pila de 9 V. Será necesario el empleo de un regulador de tensión LM7805, conectado a la pila para proporcionar a la salida los 5 V. que requiere todo el sistema. Dado lo popular de este regulador se omite el esquema de conexión del mismo. Una cuestión que debe tenerse en cuenta es la demanda de corriente del circuito. Durante la transmisión la corriente media que va a consumir el circuito es de unos 100 mA durante los 80 ms que dura la transmisión, con una corriente de pico de 200 mA. Como no se conocen datos sobre el comportamiento de la pila, debemos observar que debe ser capaz de mantener una tensión superior a 7.5 V. para que el regulador funcione correctamente. Si la pila no es capaz de soportar esa demanda de corriente, se deberá desacoplar la misma mediante un condensador de gran capacidad en paralelo que sea capaz de aportar el exceso de corriente que no es capaz de dar la pila. 7.3 Receptor de infrarrojos El receptor de infrarrojos debe ser capaz de demodular la señal ASK de 38 Khz. y entregar los pulsos de la trama. Para la recepción existen dispositivos comerciales que integran todos los circuitos necesarios para la correcta demodulación de la señal. Estos dispositivos de pequeño tamaño integran en el mismo encapsulado, el receptor de luz infrarroja, una lente y toda la lógica necesaria para distinguir señales moduladas a una determinada frecuencia. Algunos de estos dispositivos son: el IS1U60 y el IS1U621 de Sharp, el PNA4602 y el PNA4612 de Panasonic, el LTM-97DS-38 de LiteOn o el SFH5110 de Siemens. 12 Para el transmisor del título anterior se adapta perfectamente el IS1U60, cuyo diagrama de bloques se muestra en la figura 9. Figura 9 – Diagrama de bloques del receptor integrado IS1U60 (extraído del catálogo de Sharp). Continuando con los objetivos didácticos de esta práctica, se va a desarrollar un receptor mediante elementos discretos, sin perjuicio de la utilidad y comodidad de usar cualquiera de los componentes antes enumerados. 7.3.1 Diagrama de bloques del receptor El receptor se puede descomponer en cuatro bloques que pueden ser diseñados independientemente. Figura 10 – Diagrama de bloques del receptor. 7.3.2 Foto-receptor La función de recepción la va a realizar el fotodiodo BPW41. Este dispositivo presenta su máxima sensibilidad con señales cuya longitud de onda es de 950 nm. y tiene un ángulo de recepción de 65º respecto de la normal. 13 Este dispositivo se polariza en inversa, de modo que la corriente que pasa por él se comporta linealmente con respecto a la potencia de luz incidente. Figura 11 – Corriente inversa en función de la irradiancia. De este modo se puede asimilar el fotodiodo a un generador de corriente dependiente linealmente de la luz incidente en el mismo. Las distintas formas en que puede implementarse el circuito foto-receptor dependen del tipo de carga que presenten ante dicho generador de corriente. Carga resistiva: La carga es una simple resistencia. Se trata de una solución muy sencilla con un comportamiento plano con la frecuencia. Como no elimina las bajas frecuencias puede suceder que el receptor se sature con la iluminación ambiente. Carga reactiva (LC o RLC): Es la que promete un mejor comportamiento, ya que sólo presenta una alta impedancia en el margen de frecuencias deseado. El problema reside en la dificultad de obtener las bobinas y en la forma de ajustar la sintonía por las altas tolerancias de los componentes L y C. Carga activa: Por medio de transistores con carga RC se puede implementar una carga activa que presente una baja impedancia frente a la corriente continua y que permita evitar la saturación de los transistores por efecto de la iluminación ambiente. En principio se va a utilizar el circuito de la figura 12 por su sencillez. El efecto de la luz ambiente va a provocar una merma en la sensibilidad que, por lo general, podrá resolverse con un posterior filtrado y amplificación. 14 Figura 12 – Circuito foto-receptor con carga resistiva. Para el caso en que las condiciones de iluminación de una aplicación concreta provoquen problemas de saturación y mal funcionamiento, se propone un circuito con carga activa alternativo con una inmunidad al ruido mayor. Figura 13 - Circuito foto-receptor con carga activa. 7.3.2.1 Red de desacoplo Antes de entregar la señal al filtro paso banda es interesante desacoplar las bajas frecuencias. Para ello se utilizará un filtro RC paso alto con una frecuencia de corte situada, al menos, una década por encima de la interferencia de 100 Hz que provocan los tubos fluorescentes y, al menos, una década por debajo de la señal modulada de 38Khz., es decir 1Khz < fc < 3.8 Khz. Con el fin de eliminar los efectos de carga entre etapas se utilizará un seguidor de tensión, según se puede observar en el esquema general de la figura 14. Figura 14 – Esquema completo de la etapa de foto-recepción. La red RC formada por un condensador de 220 pF y una resistencia de 560 K presenta una frecuencia de corte de 1290 Hz. y una impedancia de carga de alta. Por último, el 15 amplificador operacional utilizado para el seguidor de tensión tiene que ser capaz de seguir la señal de 38 Khz. y, por tanto, deberá tener un Slew-Rate de: SR 2 f osc Amax 2 38000 5 1.2 V/s. Se ha escogido el TL082 que tiene un SR de 13 V/s y un producto GxBW de 4 Mhz., suficiente para la solución adoptada. 7.3.3 Filtro paso banda Para reducir el ruido antes de la demodulación se debe realizar un filtrado paso banda que sólo permita pasar la señal de interés cuya frecuencia es de 38 Khz. El espectro de la señal tiene el aspecto de una sinc por el efecto de la modulación que consiste en enventanar el tono de 38 Khz, por lo que es conveniente que la banda de paso tenga un ancho finito, ya que si no eliminaríamos una parte importante del espectro de la señal. Esto es una ventaja ya que no va a ser necesario utilizar filtros con un orden elevado. El filtro paso banda se va a realizar mediante la conexión en cascada de dos filtros de Sallen-Key, uno paso bajo y el otro paso alto. El resultado corresponde con el cuadrado de la función de transferencia de un filtro paso banda. 2 As A As H BP s s s s2 1 s2 1 s2 1 Q Q Q El módulo de la función de transferencia vale: H BP 2 A 2 1 2 2 Q 2 La frecuencia central vendrá amplificada por el factor (AQ)2. El problema principal que presentan este tipo de montajes es que los componentes discretos, como son los condensadores y resistencia, presentan una tolerancia bastante grande para la precisión del filtro. Por ello, nos iremos a resistencias con una tolerancia del 1% y condensadores del 5% si es posible. El caso peor se presenta cuando las frecuencias de normalización fp de ambos filtros son coincidentes y están bastante 16 alejadas de la frecuencia objetivo, ya que ésta queda en banda atenuada y encima se está amplificando otra frecuencia próxima diferente. Figura 15 – Filtro paso banda. La estrategia que se propone es la de comprar un lote de resistencias y condensadores de los valores que se necesitan y con la ayuda de un polímetro (los hay que miden capacidades) elegir aquéllos que presentan el menor error y se aproximan más a los valores de diseño. Para obtener la frecuencia central objetivo, fp = 38 Khz, se han elegido los siguientes valores comerciales C = 470 pF y R= 9 K (el valor de la resistencia existe con tolerancia del 1 %), por lo que la frecuencia real obtenida es fp = 37.625 Hz, valor totalmente aceptable. Para que las frecuencias de corte estén situadas en torno a 36 y 40 Khz el valor que deberá adoptar el factor de calidad es Q = 1.9059, con lo que la ganancia del amplificador deberá de ser: A 3 1 2.475 Q Con los valores comerciales para las resistencias resistencias de 150 K y 100 k, en el amplificador se obtiene una ganancia de 2.5 y el factor de calidad vale Q = 2. La ganancia máxima que se puede obtener con el conjunto a la frecuencia de interés es (AQ)2 =(2.5 2)2 =25. En cuanto al amplificador, se seguirá usando el TL082 cuyas características son sobradas para el uso requerido. 17 7.3.4 Demodulador El demodulador se va a encargar de reconstruir la señal en banda. La parte clave del mismo es el detector de envolvente. La modulación ASK es un caso particular de la demodulación AM con la ventaja de que la saturación que se pueda presentar en los amplificadores no tiene ningún efecto negativo en la señal y, por tanto, la ganancia de los mismos no es un factor crítico. Esto es así porque la información no va codificada en la amplitud, sino en la frecuencia, en este caso frecuencia “0” o “32 Khz”. El demodulador completo se compone de tres partes diferenciadas, que son: el amplificador de entrada, el detector de envolvente y el regenerador. 7.3.4.1 Amplificador de entrada Se trata de un amplificador no inversor cuya función es la de adaptar el nivel de la señal recibida a un valor adecuado para el buen funcionamiento del detector de envolvente. Experimentalmente se ha determinado que una ganancia en torno a 50 es adecuada. Con la pareja de resistencias de 120 K y 2K7 se obtiene una ganancia de 45 (33dB). En cuanto al offset de tensión, la medida obtenida es de 340 mV., valor que se puede asumir como aceptable. Figura 16 – Demodulador. 7.3.4.2 Detector de envolvente El detector de envolvente está formado por un rectificador de media onda con carga RC. Si se aplica un tono senoidal al detector, durante el semiciclo positivo el diodo conduce produciéndose una caída de tensión de 0.7 V. Una vez que la tensión alcanza este valor el condensador comienza a cargarse y la tensión sube hasta el máximo y desciende de nuevo hasta los 0.7 V. A partir de ese punto el diodo entra en corte y el condensador comienza su descarga hasta que la tensión vuelve a superar el umbral de los 0.7 voltios 18 en el ciclo siguiente. Se pretende que la tensión caiga sólo un 10 % durante el tiempo de descarga, para lo cual: T /2 exp 0.9 ; 1/ 2 f 125 s ln 0.9 Como = RC, se han escogido los siguientes valores: R =120 K y C = 1nF, con lo que = 120 s. El tiempo que tarda la señal en alcanzar el 10 % de su valor una vez finalizado el pulso es: t ln 0.1 287 s que es el 2.8 % de la duración de un bit. 7.3.4.3 Regenerador A la salida del detector de envolvente se aplican dos inversores Trigger-Schmitt en cascada para regenerar la señal sin invertir la lógica. A la salida de esta etapa ya tenemos la señal demodulada y disponible. 7.4 Conexión al microcontrolador De las diferentes posibilidades de conexión al MC68331 sólo vamos a plantear la conexión del receptor a través del módulo de recepción serie SCI del QSM, para aprovechar las facilidades que este módulo proporciona, ya que la programación de un receptor puede llegar a ser laboriosa y compleja, aunque bastante interesante. La conexión es sencilla. La salida de datos del receptor se conecta a la entrada de datos serie RXD del microcontrolador. 7.4.1 Programa básico de atención de comunicaciones Si recordamos el protocolo de comunicación del telemando, se trata de palabras de ocho bits de los cuales una parte puede reservarse como identificación de dispositivo y la otra como código de instrucción. La velocidad de transmisión es de 100 baudios y la trama no contiene bit de paridad. 19 La trama de datos a recibir tiene la estructura siguiente: Bit 10 Parada 7 Código de instrucción 0 Identificador Bit 1 Arranque Tabla 3 – Estructura de la trama de datos. La aplicación de ejemplo realiza lo siguiente: 1. Habilita las interrupciones del receptor y se queda esperando a recibir un dato. 2. Una vez recibido, comprueba si es válido o no. 3. Si es valido, lo guarda en un buffer de memoria. 4. Si no es valido, no hace nada y sigue esperando al dato siguiente. Cabe notar que no se hace comprobación del desbordamiento del buffer, ya que se entiende que es un programa de prueba y con un tamaño de 500 tramas es suficiente para comprobar la recepción de ordenes. ****************************************************************************** * REGISTROS SIM * ****************************************************************************** SIMCR EQU $FFFA00 * Controla la configuración del sistema ($00CF). SYNCR EQU $FFFA04 * Fija frecuencia y modo de operación del reloj ($3F08). RSR EQU $FFFA06 * Guarda la causa de un reset (Ej.-$80, reset hardware). PORTE EQU $FFFA11 * Registro de lectura y escritura en el puerto E. PORTE1 EQU $FFFA13 * Tiene exactamente la misma función que el anterior. DDRE EQU $FFFA15 * Determina el sentido del puerto E pin a pin. PEPAR EQU $FFFA17 * Asignación del puerto E (Puerto o control de BUS). PORTF EQU $FFFA19 * Registro de lectura y escritura en el puerto F. PORTF1 EQU $FFFA1B * Tiene exactamente la misma función que el anterior. DDRF EQU $FFFA1D * Determina el sentido del puerto F pin a pin. PFPAR EQU $FFFA1F * Asignación del puerto F (Puerto F o control de BUS). PICR EQU $FFFA22 * Configuración de interrupciones periódicas ($000F). PITR EQU $FFFA24 * Contiene la cuenta del timer periódico ($0000). SYPCR EQU $FFFA21 * Controla las funciones de monitorización del sistema * como es el caso del Watchdog. ($40 anula watchdog). SWSR EQU $FFFA27 * Se debe escribir periódicamente con Watchdog activado. CSPAR0 EQU $FFFA44 * Sirve junto con CSPAR1 para configurar la función de CSPAR1 EQU $FFFA46 * los pins de Chip Select (CS, Port C, etc.). PORTC * Registro de escritura en el puerto C. EQU $FFFA41 20 ****************************************************************************** * REGISTROS GPT-PWM * ****************************************************************************** GPTMCR EQU $FFF900 * Configuración del GPT. ICR EQU $FFF904 * Configuración de interrupciones del GPT. DDRGP EQU $FFF906 * Determina el sentido del puerto GP. PORTGP EQU $FFF907 * Registro de lectura y escritura del puerto GP. OC1M EQU $FFF908 * Máscara para asignar los pin de captura de OC. OC1D EQU $FFF909 * Registro de datos a comparar con el puerto OC. TCNT EQU $FFF90A * Registro del GPT asociado a las capturas IC, OC y PAI. PACTL EQU $FFF90C * Configuración del acumulador de pulsos PAI. PACNT EQU $FFF90D * Es el contador de registro de eventos del PAI. TIC1 EQU $FFF90E * Capturan el TCNT cuando se registra un evento en IC1. TIC2 EQU $FFF910 * Capturan el TCNT cuando se registra un evento en IC2. TIC3 EQU $FFF912 * Capturan el TCNT cuando se registra un evento en IC3. TOC1 EQU $FFF914 * Cuando coincide con TCNT causa eventos en los pin OC. TOC2 EQU $FFF916 * Si el valor coincide con TCNT causa un evento en OC2. TOC3 EQU $FFF918 * Si el valor coincide con TCNT causa un evento en OC3. TOC4 EQU $FFF91A * Si el valor coincide con TCNT causa un evento en OC4. TI4O5 EQU $FFF91C * Pin compartido (Puede realizar una función TIC o TOC). TCTL1 EQU $FFF91E * Configura el modo de comparación y nivel de salida. TCTL2 EQU $FFF91F * Configura que flanco provoca la captura en los IC. TMSK1 EQU $FFF920 * Habilita las interrupciones de IC y OC. TMSK2 EQU $FFF921 * Habilita las interrupciones del PAI y del TIMER. TFLG1 EQU $FFF922 * Registro de flags de interrupciones de IC y OC. TFLG2 EQU $FFF923 * Registro de flags de interrupciones del PAI y TIMER CFORC EQU $FFF924 * Fuerza una salida en los pin OC y PWM. PWMC EQU $FFF925 * Configuración del PWM. PWMA EQU $FFF926 * Determina el ancho de pulso. ($80 es medio ciclo) PWMB EQU $FFF927 * Determina el ancho de pulso. ($80 es medio ciclo) PWMCNT EQU $FFF928 * Registro del contador del PWM. PWMBUFA EQU $FFF92A * Buffer para prevenir glitches cuando modificamos PWMA. PWMBUFB EQU $FFF92B * Buffer para prevenir glitches cuando modificamos PWMB. PRESCL * Guarda el valor del multiplicador del GPT. EQU $FFF92C ****************************************************************************** * REGISTROS QSM-QSI * ****************************************************************************** QSMCR EQU $FFFC00 * Configuración del QSM. 21 QILR EQU $FFFC04 * Configuración del nivel de interrupción. QIVR EQU $FFFC05 * Configuración del vector de interrupción. SCCR0 EQU $FFFC08 * Control 0 del SCI determina velocidad de transmisión. SCCR1 EQU $FFFC0A * Control 1 del SCI para configuraciones varias. SCSR EQU $FFFC0C * Registro de estado del SCI. SCDR EQU $FFFC0E * Registro de datos del SCI (RDR y TDR). PORTQS EQU $FFFC15 * Registro de lectura y escritura del Puerto QS. PQSPAR EQU $FFFC16 * Asignación de pins como Puerto QS o como QPSI. DDRQS EQU $FFFC17 * Dirección E/S de los pins del Puerto QS. ****************************************************************************** * CONTROL DEL QSM - SCI * ****************************************************************************** BIT_FE EQU 16 * Bit indicador de error de trama (Frame Error). BIT_PE EQU 17 * Bit de error de paridad (Parity Error). TRAMA_NULA EQU $FF * Valor de inicialización antes de recibir trama ERR_TRAMA EQU $AA * Valor devuelto cuando hay error de trama ERR_PARIDAD EQU $80 * Valor devuelto cuando hay error de paridad ****************************************************************************** * VECTORES DEL RESET * ****************************************************************************** ORG $0 PILA_RESET DC.L FIN_PILA PC_RESET DC.L PRINCIPAL ****************************************************************************** * VECTORES DE INTERRUPCIÓN * ****************************************************************************** ORG $110 VECTOR_QSM DC.L LEER_SCI * Vector de interrupción $44 ****************************************************************************** * PUNTERO DE PILA * ****************************************************************************** ORG $4000 PILA DS.L 200 FIN_PILA: 22 ****************************************************************************** * BUFFER DE RECEPCIÓN * ****************************************************************************** ORG $2000 BUFFER DS.B 500 INI_BUFFER: ****************************************************************************** * SUBRUTINAS * ****************************************************************************** ORG $1000 ****************************************************************************** * CONFIGURACION DEL HARDWARE DEL MICRO * ****************************************************************************** *************************** INHAB_WDOG **************************** * Inhabilita el Watchdog que es una función de monitoriración del * * sistema para detectar la entrada en un bucle infinito. * ******************************************************************* INHAB_WDOG: MOVE.B #$40,SYPCR * Inhabilitamos WatchDog RTS *----------------------------------------------------------------------------* **************************** QSM_CFG ***************************** * Configuración del QSM_SCI * ****************************************************************** QSM_SCI_CFG MOVE.W #$008F,QSMCR * Supervisor de arbitrio 15. MOVE.B #$44,QIVR * Vector de interrupción $44. MOVE.B #$06,QILR * Nivel de interrupción 6 para el SCI. MOVE.W #$0A3D,SCCR0 * velocidad de TX/RX de 100 baudios. RTS *----------------------------------------------------------------------------* ************************** RECEPTOR_CFG ************************** * Configura y habilita el módulo receptor del QSM-SCI. Inhabi- * * lita al tiempo el transmisor al tratarse de una comunicación * * semi-duplex. * ****************************************************************** 23 RECEPTOR_CFG MOVE.W #$0424,SCCR1 RTS * Interrupciones habilitadas para la recepción (RIE) * tramas de 7 bits + bit de paridad impar RTS ****************************************************************************** * RUTINAS DE CONTROL * ****************************************************************************** ************************** LEER_SCI ***************************** * Rutina LEER_SCI de atención a la interrupción del modulo serie* * El dato recibido se deja disponible en el registro D0 * ***************************************************************** LEER_SCI MOVE.L D1,-(A7) MOVE.L SCSR,D1 * Lectura de los registros de estado y de datos. * a la vez; se resetean los flags de estado. * automáticamente. BTST.L #BIT_FE,D1 * Se comprueba el error de trama. BNE TRAMA_ERROR BTST.L #BIT_PE,D1 BNE PARIDAD_ERROR ANDI.W #$007F,D1 * Nos quedamos con los bits 0 a 6 en D3. MOVE.W D1,D0 * Copia en D0 el dato bueno. BRA FIN_LECTURA * Se comprueba el error de paridad. TRAMA_ERROR MOVE.W #ERR_TRAMA,D0 BRA FIN_LECTURA PARIDAD_ERROR MOVE.W #ERR_PARIDAD,D0 FIN_LECTURA MOVE.L (A7)+,D1 RTE *----------------------------------------------------------------------------* ****************************************************************************** * PRINCIPAL * ****************************************************************************** ORG $400 PRINCIPAL 24 BSR INHAB_WDOG * Se inhabilita watchdog BSR QSM_SCI_CFG * Se configura el QSM MOVEA.L #INI_BUFFER,A0 * Carga dirección inicio del buffer de datos. BSR RECEPTOR_CFG * Se activan las interrupciones del receptor #TRAMA_NULA,D0 * Valor de cuando no se recibe trama. CMP.W #TRAMA_NULA,D0 * Espera a la recepción de una trama BEQ BUCLE CMP.W #ERR_TRAMA,D0 BEQ NUEVA_TRAMA CMP.W #ERR_PARIDAD,D0 BEQ NUEVA_TRAMA MOVE.B D0,(A0)+ NUEVA_TRAMA MOVE.W BUCLE BRA * Comprueba si hay error en la trama * Comprueba si hay error en la paridad * Copia la trama recibida en el buffer. NUEVA_TRAMA END 25 26 ÍNDICE DE CONTENIDO 7. TELEMANDO POR INFRARROJOS..................................................................... 1 7.1 INTRODUCCIÓN ............................................................................................................................ 1 7.1.1 ESTÁNDARES DE CODIFICACIÓN DE COMANDOS ......................................................................... 2 7.1.1.1 Codificación RC-5 ................................................................................................................ 2 7.1.1.2 Codificación RECS 80 .......................................................................................................... 3 7.1.2 CODIFICACIÓN DE LOS COMANDOS ............................................................................................. 3 7.1.3 TIPO DE MODULACIÓN ................................................................................................................ 4 7.2 TRANSMISOR DE INFRARROJOS ............................................................................................. 4 7.2.1 DIAGRAMA DE BLOQUES DEL TRANSMISOR ................................................................................ 4 GENERADOR DE RELOJ.............................................................................................................................. 5 7.2.3 GENERADOR DEL INTERVALO DE TRAMA ................................................................................... 6 7.2.4 REGISTRO DE DESPLAZAMIENTO ................................................................................................ 8 7.2.5 MODULADOR ASK ..................................................................................................................... 9 7.2.6 EMISOR DE LUZ INFRARROJA .................................................................................................... 10 7.2.7 ALIMENTACIÓN ........................................................................................................................ 12 7.3 RECEPTOR DE INFRARROJOS ................................................................................................ 12 7.3.1 DIAGRAMA DE BLOQUES DEL RECEPTOR .................................................................................. 13 7.3.2 FOTO-RECEPTOR ...................................................................................................................... 13 Red de desacoplo .............................................................................................................................. 15 7.3.3 FILTRO PASO BANDA ................................................................................................................ 16 7.3.4 DEMODULADOR ....................................................................................................................... 18 7.3.4.1 Amplificador de entrada ..................................................................................................... 18 7.3.4.2 Detector de envolvente ....................................................................................................... 18 7.3.4.3 Regenerador ....................................................................................................................... 19 7.4 CONEXIÓN AL MICROCONTROLADOR ............................................................................... 19 7.4.1 PROGRAMA BÁSICO DE ATENCIÓN DE COMUNICACIONES ......................................................... 19 I