Diseño e implementación de un sistema de adquisición de datos telecontrolado
76
0
0
Texto completo
(2) DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE ADQUISISCIÓN DE DATOS TELECONTROLADO. JUAN CARLOS SAAVEDRA R.. Proyecto de Grado. Asesor: JORDI PRAT TASIAS. UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA SANTAFÉ DE BOGOTÁ, 10 DE DICIEMBRE DE 2003.
(3) IEL1-03-II-22. TABLA DE CONTENIDO Pag.. INTRODUCCIÓN ............................................................................................................. 8 1. SISTEMA DE ADQUISICIÓN DE DATOS ........................................................... 10 1.1 1.2 1.3. 1.4 1.5 2. Muestreo y Conversión.................................................................................... 12 Comunicación serial ........................................................................................ 13 Control ............................................................................................................. 16 1.3.1 Versión SAD1: Adquisición ocasional ............................................ 16 1.3.2 Versión SAD2: Adquisición continua incesante ............................. 17 1.3.3 Versión final SAD7: Adquisición continua de un número determinado de muestras ................................................................. 18 Consideraciones ............................................................................................... 20 Implementación ............................................................................................... 20. ADAPTACIÓN INALÁMBRICA y SISTEMA DE RADIO .................................. 23 2.1 2.2 2.3 2.4 2.5. Transceiver ...................................................................................................... 23 Antena.............................................................................................................. 24 Protocolo de comunicación.............................................................................. 25 Consideraciones ............................................................................................... 27 Implementación ............................................................................................... 28. 3. SOFTWARE ............................................................................................................. 34. 4. CONCLUSIÓN ......................................................................................................... 38. A. ANEXO: Especificaciones Técnicas......................................................................... 39 B. ANEXO: Código Assembler SAD1.......................................................................... 40 C. ANEXO: Código Assembler SAD2.......................................................................... 44 D. ANEXO: Código Assembler SAD7.......................................................................... 49 E. ANEXO: Código MATLAB SAD4CH .................................................................... 59 REFERENCIAS............................................................................................................... 77. iv.
(4) IEL1-03-II-22. FIGURAS Pag.. Figura. I Diagrama de bloques del instrumento de telemetría (ITM)............................ 9. Figura 1-1 Diagrama funcional de bloques del Sistema de Adquisición de Datos (SAD.)........................................................................................................... 10 Figura 1-2 Conexión de dos dispositivos con un cable serial (Tomado de The MathWorks, 2002.) ....................................................................................... 14 Figura 1-3 Diagrama funcional para el SAD final listo para la adaptación inalámbrica.................................................................................................... 20 Figura 1-4 Sistema de telemetría utilizando un cable serial. .......................................... 21 Figura 1-5 Diagrama esquemático para la primera etapa del SAD. ............................... 21 Figura 2-1 Conexión de la antena al plano de tierra. ...................................................... 25 Figura 2-2 Protocolo de comunicación........................................................................... 27 Figura 2-3 Sistema finalmente implementado. ............................................................... 28 Figura 2-4 Diagrama esquemático para el circuito del sitio local. ................................. 29 Figura 2-5 Placa de circuito impreso para el sitio local.................................................. 30 Figura 2-6 Diagrama esquemático para el circuito del sitio remoto............................... 31 Figura 2-7 Placa de circuito impreso para el sitio remoto. ............................................. 32 Figura 2-8 Fotografía exterior de los prototipos finales ................................................. 33 Figura 2-9 Fotografía interior de los prototipos finales.................................................. 33 Figura 3-1 Aplicación gráfica de usuario (GUI) inicial. (a)Visualización en grafica de barras. (b)Visualización en forma de onda. ............................................. 35 Figura 3-2 Aplicación gráfica de usuario (GUI) tipo osciloscopio. ............................... 35 Figura 3-3 Aplicación grafica de usuario (GUI) final. ................................................... 36. v.
(5) IEL1-03-II-22. TABLAS Pag.. Tabla I Resumen de las señales del diagrama funcional. ............................................... 11 Tabla II Registros asociados al módulo A/D. ................................................................. 13 Tabla III Registros asociados a la USART..................................................................... 15 Tabla IV Lista de componentes. ..................................................................................... 22 Tabla V Resumen de las solicitudes de protocolo. ......................................................... 26. vi.
(6) IEL1-03-II-22. RESUMEN. Actualmente, los sistemas de adquisición de datos juegan un papel trascendental en el sector industrial. Este documento presenta el desarrollo de un instrumento de telemetría vía radio que puede ser utilizado para el monitoreo permanente de la información proveniente de varios sensores, su visualización y evaluación. La información de estos sensores es recolectada y transmitida de forma inalámbrica a una estación central situada a menos de 150 m utilizando un enlace de radio que opera en la banda ISM a una frecuencia de 910 MHz. En la estación central, un software desarrollado en el entorno MATLAB® procesa la información y permite la visualización y análisis post-adquisición de las señales de salida de los sensores. El instrumento cuenta con un máximo de 8 canales de entrada, cuatro de los cuales pueden ser empleados para monitorear, en tiempo real, señales que tengan una variación temporal considerable. La frecuencia de muestreo para un canal de este tipo es 1.92 KHz. Los cuatro canales restantes pueden utilizarse para medir señales de menor variación temporal. Se eligió un modelo digital de transmisión para el envío de los datos ya que aunque éste restringe la frecuencia máxima de las señales que pueden ser adquiridas, también presenta una mayor robustez para la transmisión de información en ambientes hostiles de propagación. Al realizar la comparación de las características del instrumento con dispositivos comerciales del mismo tipo, se obtuvieron resultados satisfactorios tendiendo en cuenta las restricciones de costo y tiempo de desarrollo.. vii.
(7) IEL1-03-II-22. INTRODUCCIÓN. En varios sectores de la industria es necesario recolectar, monitorear, analizar medir y controlar algunos parámetros físicos, ambientales o biológicos de interés a distancia. Para esto es fundamental contar con un sistema de telemetría inalámbrico que funcione en tiempo real. Entre las aplicaciones más comunes de estos sistemas se encuentran: monitoreo de las centrales de generación y subestaciones eléctricas, telemetría de datos ambientales y climáticos, manejo de aguas e irrigación en el sector agrícola, lectura de señales biomédicas a distancia, análisis de datos en el sector aeroespacial y militar, entre otros (Farell Instruments, Adcon Telemetry, 2003.) Adicionalmente, los sistemas de este tipo permiten realizar mediciones de campo en lugares inaccesibles o peligrosos, disponer de datos cruciales constantemente y tomar decisiones de control precisas. La movilidad que proporciona un enlace inalámbrico hace que esta clase de sistemas sea muy atractiva y de gran utilidad. Es por esta razón que las técnicas inalámbricas han tenido una gran aceptación; después de todo, los cables no tienen ningún uso intrínseco y se podría prescindir de ellos si no existieran las limitaciones de confiabilidad y costo presentes en la adaptación inalámbrica (Bensky 2000.) Por las razones expuestas anteriormente se planteó la posibilidad de diseñar y construir un instrumento de telemetría (ITM) controlado por computador cuyo rango de operación fuera de por lo menos 100m y que se pudiera incorporar a una amplia gama de aplicaciones. El modelo del ITM se presenta en la Figura I. En esta figura se observan dos sitios: el local y el remoto. En el sitio remoto se adquieren los datos provenientes de los. 8.
(8) IEL1-03-II-22. sensores de medida que posteriormente serán enviados al sitio local cuando el usuario, por medio de la herramienta software, lo solicite. En el sitio local se realiza la recepción de la información, su visualización y análisis así como el control del sistema. A lo largo de este documento se presentan las etapas que fue necesario desarrollar para el diseño, construcción y control de un instrumento de este tipo.. Figura I Diagrama de bloques del instrumento de telemetría (ITM).. Adicionalmente, con este proyecto se procuró aplicar los conocimientos adquiridos en las áreas de la electrónica digital y análoga al igual que familiarizarse con un sistema de comunicaciones RF. Se cree que el documento puede ser una guía útil para estudiantes interesados en el tema. El diseño del sistema de adquisición de datos se describe en el Capitulo 1; igualmente la implementación del sistema de radio y las modificaciones necesarias realizadas al sistema de adquisición de datos para la adaptación inalámbrica se encuentran en el Capitulo 2; por último, se realiza la presentación de la herramienta software definitiva en el Capitulo 3.. 9.
(9) IEL1-03-II-22. 1. SISTEMA DE ADQUISICIÓN DE DATOS. La primera fase del diseño del instrumento de telemetría (ITM) consistió en desarrollar un sistema de adquisición de datos (SAD) alámbrico. Este modulo es capaz de muestrear un canal de entrada análogo con cierta frecuencia, realizar la conversión análoga-digital (A/D) de la muestra adquirida, dar el formato RS-232 adecuado al resultado y posteriormente transmitirlo serialmente al computador. Adicionalmente, el SAD se encarga de recibir una orden procedente del computador, procesarla, y ejecutarla. El diagrama de bloques simplificado del SAD finalmente implementado se enseña en la Figura 1-1.. Figura 1-1 Diagrama funcional de bloques del Sistema de Adquisición de Datos (SAD.). 10.
(10) IEL1-03-II-22. En esta figura se presenta un control central encargado de coordinar la conversión A/D y la comunicación serial, un conversor A/D de 10 bits con selector de 8 canales análogos y una unidad de transmisión y recepción serial asincrónica (USART). Igualmente, se presentan dos drivers necesarios para convertir los niveles TTL a niveles RS-232 y viceversa. La Tabla I resume la función de cada una de las señales de la Figura 1-1.. Nombre. Función. GO/ DONE. Inicio de conversión / fin de conversión. TXEN. Habilita transmisión. CREN. Habilita recepción. TRMT. Bandera de fin de transmisión. RCIF. Bandera de fin de recepción. CHS2:CHS0. Selección de canal de conversión. Tabla I Resumen de las señales del diagrama funcional.. El sistema completo se implementó utilizando el microcontrolador PIC 16F877 de Microchip® que cuenta con los módulos de conversión A/D y USART integrados. La unidad de control central se realizó en software y fue programada en Assembler. A continuación se presenta un desarrollo detallado del SAD.. 11.
(11) IEL1-03-II-22. 1.1. MUESTREO Y CONVERSIÓN. El microcontrolador cuenta con un conversor análogo digital (ADC) incorporado provisto de 8 canales de entrada, el cual por medio de aproximaciones sucesivas, entrega a su salida un resultado digital de 10 bits correspondiente al valor de la entrada análoga seleccionada. Es necesario esperar un tiempo de adquisición TACQ (20 µs) para garantizar un error máximo de conversión de ½ LSB. Este tiempo es el resultado de la suma del tiempo de estabilización del amplificador, tiempo de carga del condensador de mantenimiento y un coeficiente de temperatura. El tiempo de conversión A/D por bit se define como TAD (2 µs.) La conversión requiere un mínimo de 12TAD (24 µs) para obtener 10 bits de resultado. Por lo tanto, el tiempo total de muestreo, mantenimiento y conversión es de 44 µs, es decir, una frecuencia permitida de muestreo de 22.7 MHz; sin embargo, como se explicara más adelante, la frecuencia de muestreo del ITM final es mucho menor. El conversor A/D tiene cuatro registros asociados. La Tabla II resume las funciones de cada uno de estos registros (Microchip, 2001, pp.111-117.) A continuación se presenta la rutina necesaria para efectuar una conversión A/D (Microchip, 2001, p.113): 1. Configurar el módulo A/D: . Configurar los pines como entradas análogas o digitales y voltajes de referencia (ADCON1). . Seleccionar el canal de entrada A/D (ADCON0). . Seleccionar el reloj de conversión. . Habilitar en módulo A/D. 2. Esperar el tiempo de adquisición requerido. 3. Empezar la conversión: . Encender el bit GO/ DONE (ADCON0). 12.
(12) IEL1-03-II-22. 4. Esperar que se complete la conversión A/D: . Verificar hasta que la bandera ADIF esté encendida. 5. Leer el resultado del par de registros (ADRESH: ADRESL.). Registro. ADCON0 (Registro de control). ADCON1 (Registro de control). Función . Selección de reloj de conversión Selección de canal análogo Inicio y fin de conversión Habilitación de conversor. . Formato del resultado Configuración entradas análogas y voltajes de referencia. ADRESH (Registro de resultado). Registro de resultado de conversión (2 bits más significativos). ADRESL (Registro de resultado). Registro de resultado de conversión (8 bits menos significativos). Tabla II Registros asociados al módulo A/D.. Las señales y parámetros a medir están limitadas en el rango de los 0 a los 5 V por lo cual se obtiene una resolución de aproximadamente 5 mV. Para más detalles acerca del ADC se puede consultar la referencia (Microchip, 2001, pp.111-117.). 1.2. COMUNICACIÓN SERIAL. El usuario, por medio de la herramienta software, envía una orden solicitando una función en particular, por ejemplo, la lectura de uno de los canales de entrada. Es. 13.
(13) IEL1-03-II-22. conveniente tener presente que en éste primer capitulo, todos los comentarios y parámetros referentes a la comunicación se hacen asumiendo un enlace alámbrico. La comunicación se efectúa entre el puerto serial del computador y la USART del microcontrolador. El estándar de comunicación empleado es RS-232 por lo cual resulta necesario convertir los niveles TTL de la salida y entrada de la USART a niveles de voltaje propios del estándar como fue mencionado anteriormente. Las características y especificaciones funcionales y eléctricas de la USART se pueden encontrar en la referencia (Microchip, 2001, pp.95-104.) Esta unidad puede ser configurada para la comunicación asincrónica full-duplex siendo capaz de comunicarse con dispositivos periféricos tales como computadores personales. La conexión realizada entre el computador personal (DTE) y el SAD (DCE) se aprecia en la Figura 1-2.. Figura 1-2 Conexión de dos dispositivos con un cable serial (Tomado de The MathWorks, 2002.). La USART esta conformada por: •. Generador de Tasa de Baudios. •. Circuito de Muestreo. •. Transmisor Asincrónico. •. Receptor Asincrónico. La unidad tiene cuatro registros asociados. La Tabla III resume las funciones de cada uno de estos registros (Microchip, 2001, pp.95-104.). 14.
(14) IEL1-03-II-22. Registro. TXSTA (Registro estatus de transmisión). TXREG. RCSTA (Registro estatus de recepción). RCREG. Función . Configuración de bits de datos Habilitación de transmisión Finalización de transmisión. Registro de 8 bits transmitidos . Configuración de bits de datos Habilitación de recepción Control de error. Registro de 8 bis recibidos. Tabla III Registros asociados a la USART.. La configuración utilizada para la comunicación serial es: 8 bits de datos, sin paridad ni control de flujo, 1 bit de parada. En la sección 1.3 se especificará la tasa de transmisión escogida. Para efectuar una transmisión asincrónica se deben seguir los siguientes pasos (Microchip, 2001, p.100): 1. Inicializar el registro SPBRG para la tasa en baudios deseada. Si se desea una tasa alta, encender el bit BRGH (TXSTA.) 2. Habilitar el puerto serial asincrónico apagando el bit SYNC (TXSTA) y encendiendo el bit SPEN (RCSTA.) 3. Habilitar la transmisión encendiendo el bit TXEN (TXSTA.) 4. Cargar los 8 bits a transmitir al registro TXREG. 5. Verificar hasta que el bit TRMT (TXSTA) se encienda.. 15.
(15) IEL1-03-II-22. Igualmente para efectuar una recepción asincrónica se deben seguir los siguientes pasos (Microchip, 2001, p.100):. 1. Inicializar el registro SPBRG para la tasa en baudios deseada. Si se desea una tasa alta, encender el bit BRGH (TXSTA.) 2. Habilitar el puerto serial asincrónico apagando el bit SYNC (TXSTA) y encendiendo el bit SPEN (RCSTA.) 3. Verificar hasta que el bit RCIF (PIR1) se encienda. 4. Leer los 8 bits recibidos del registro RCREG.. La USART se encarga de enviar el resultado de la conversión A/D. Debido a que el resultado es una palabra de 10 bits, es necesario enviarlo serialmente en dos bytes ADRESL y ADRESH.. 1.3. CONTROL. La sincronización y coordinación de las funciones de muestreo y conversión y comunicación serial las realiza el modulo de control. Durante el desarrollo del sistema de adquisición de datos (SAD) se consideraron e implementaron varias versiones de la unidad de control central las cuales serán presentadas y explicadas a continuación.. 1.3.1. Versión SAD1: Adquisición ocasional. La primera versión de la unidad de control que se implementó fue bastante sencilla y primitiva comparada con la versión final; sin embargo, ésta fue la plataforma primordial para desarrollar las demás versiones.. 16.
(16) IEL1-03-II-22. En esta primera versión solo se consideró la lectura del valor de dos sensores conectados a dos de los ocho canales posibles para propósitos de prueba. Los sensores fueron reemplazados por facilidad por reóstatos de 10kΩ como se puede apreciar en la Figura 1-5. Cuando el usuario desea conocer el valor del voltaje presente en alguno de los dos canales según la posición del reóstato correspondiente, envía la orden correspondiente por medio de la aplicación software (ver Capitulo 3.) Por ejemplo, para leer el primer canal la orden correspondiente es 0xAA; igualmente, para leer el segundo canal se debe enviar 0xBB. La unidad de control se encuentra a la espera de recibir una orden. Cuando esto sucede, ésta detecta la solicitud y comprueba si es valida. A continuación, se configura el ADC con los parámetros adecuados y empieza la conversión. El resultado de dicha conversión se encuentra en los registros ADRESH y ADRESL debido a que, como se mencionó anteriormente, el resultado es de 10 bits. El valor de esos registros es transferido al buffer de transmisión de la USART para ser enviados a una tasa de 19.2 Kbps al computador personal donde ocurrirá la visualización del valor obtenido. Para comprender los detalles del funcionamiento de la unidad de control se recomienda consultar el código Assembler del Anexo B. Los inconvenientes de esta versión de la maquina de control son evidentes: solo se tiene el valor de un canal una única vez por solicitud. Lo anterior y el hecho de que no se hace uso de ninguna interrupción del microcontrolador provocan que el ancho de banda las señales que se pueden monitorear sea demasiado pequeño.. 1.3.2. Versión SAD2: Adquisición continua incesante. Con el fin de solucionar los inconvenientes mencionados en la sección anterior, se pensó en utilizar las interrupciones generadas por la USART cuando se ha recibido o cuando es posible enviar un dato. Por medio de la utilización de rutinas de interrupción se logra que el envió de datos sea continuo (back to back) y que el funcionamiento del SAD sea mas eficiente.. 17.
(17) IEL1-03-II-22. El propósito principal para esta nueva versión era maximizar el ancho de banda permitido de las señales a monitorear por lo cual se modificó y extendió el conjunto de órdenes logrando así que el envío de muestras fuera continuo. En esta ocasión además de las órdenes de selección de canal (0xAA y 0xBB), se introdujeron dos órdenes adicionales: 0xCC para activar el envío incesante de muestras y 0xDD para detenerlo. Así, seria posible observar una forma de onda igual a la que se observa en un osciloscopio en la pantalla del computador personal (ver Capitulo 3.) Al incrementar la tasa de transmisión a 115.2 Kbps se obtuvo una frecuencia de muestreo de canal de 5.7 KHz. lo cual implicaría un ancho de banda permitido de 2.8 KHz. Es necesario tener en cuenta que hasta el momento solo se había trabajado con dos de los 8 canales posibles y que el monitoreo solo se podía hacer un canal a la vez ya que aún no se había implementado ningún tipo de multiplexación. El código Assembler de esta versión de la unidad de control se encuentra completamente explicada en el Anexo C.. 1.3.3. Versión final SAD7: Adquisición continua de un número determinado de muestras. La versión final que estuvo preparada para la adaptación inalámbrica tuvo que pasar por seis diferentes etapas provisionales antes de alcanzar el funcionamiento deseado. Para ésta se pretendía hacer uso de los 8 canales disponibles en el ADC por lo cual fue necesario implementar las rutinas de multiplexación por división en tiempo (TDM). Aunque los 8 canales de entrada del ADC son iguales esencialmente, en cuatro de ellos (canales tipo I) la unidad de control ordena realizar la adquisición de una forma permanente, es decir, pueden ser evaluados en tiempo real durante un periodo especificado. En los cuatro restantes (canales tipo II) se realiza el muestreo y conversión una vez, únicamente cuando se le es solicitado, por lo cual deben ser utilizados para medir parámetros de menor variación temporal.. 18.
(18) IEL1-03-II-22. La activación o desactivación de un canal en particular, el muestreo de los canales activos durante un tiempo determinado o la lectura del voltaje de salida de un sensor conectado al microcontrolador conforman el conjunto de órdenes que reconoce la unidad de control. Sin embargo, estas órdenes deben ser transmitidas siguiendo cierto protocolo que será explicado en la Sección 2.3. Cada vez que hay un dato en el buffer de entrada se genera una interrupción; el procesador ejecuta la rutina de interrupción en la cual se lee el dato recibido, se decodifica y se configura el SAD según la orden solicitada. De igual manera, cuando un dato es transmitido completamente se genera otra interrupción; esta vez, al ejecutarse la rutina de interrupción, una nueva muestra disponible es transferida al buffer de transmisión y el siguiente canal activo es seleccionado como entrada del ADC. De esta forma se realiza la multiplexación de muestras requeridas cuando más de un canal se encuentra activo. Durante el intervalo de tiempo en que no ha existido una interrupción, el microcontrolador habilita el ADC y prepara la siguiente muestra a ser enviada. Este proceso se resume en la Figura 1-3. Aunque esta versión es similar a la anterior ya que también hace uso de las rutinas de interrupción, se tuvieron en mente ciertas restricciones que aparecerían para la adaptación inalámbrica cuando fue diseñada y el envío de las muestras ya no seria incesante si no que por el contrario se realizaría únicamente durante un intervalo o un número de muestras establecido.. Posteriormente se explicará la razón de esta. modificación. Para realizar un análisis más detallado de la versión final de la máquina de control o SAD7 se debe consultar el código Assembler que se encuentra en el Anexo D. Se recomienda igualmente repasar el protocolo de comunicación descrito en la Sección 2.3 y la aplicación software de control del Capitulo 3. Desde este momento se hará referencia durante el resto del documento a la versión final del sistema de adquisición de datos SAD7 como SAD simplemente.. 19.
(19) IEL1-03-II-22. Figura 1-3 Diagrama funcional para el SAD final listo para la adaptación inalámbrica.. 1.4. CONSIDERACIONES. A pesar de que la máxima frecuencia de muestreo del ADC es 22.7 MHz., el ancho de banda permitido de las señales conectadas a los canales tipo I del SAD esta limitado por la tasa de transmisión de las muestras resultantes. Como la tasa máxima permitida por el DTE es 115.2 Kbps y cada muestra es enviada en dos “bytes” 20 bits si se tienen en cuenta los bits de inicio y parada, el ancho de banda máximo es 2.8 KHz cuando únicamente se encuentra activo un canal. A medida que se aumenta el número de canales activos, el ancho de banda permitido se reduce a la mitad, un tercio y un cuarto correspondientemente.. 1.5. IMPLEMENTACIÓN. Aunque las versiones descritas de la unidad de control difieren en muchos aspectos, la estructura física para todas es igual (Figura 1-4).. 20.
(20) IEL1-03-II-22. Figura 1-4 Sistema de telemetría utilizando un cable serial.. A continuación se presenta el diagrama esquemático del circuito utilizado para el SAD en su etapa alámbrica. El valor nominal de Vcc es 5V.. Figura 1-5 Diagrama esquemático para la primera etapa del SAD.. 21.
(21) IEL1-03-II-22. Los componentes necesarios se listan en la Tabla IV.. Componente. Cantidad. Microcontrolador PIC16F877. 1. MAX 232. 1. Condensador 1 µF. 5. Condensador 15 pF. 2. Cuarzo 4 Mhz. 1. Resistencia 1 kΩ. 1. Reóstato 10 kΩ. 2. Conector serie 9 pines. 1. Tabla IV Lista de componentes.. 22.
(22) IEL1-03-II-22. 2. ADAPTACIÓN INALÁMBRICA Y SISTEMA DE RADIO. La implementación del sistema de comunicación vía radio es fundamental para el funcionamiento adecuado del ITM. Se escogieron los elementos que lo conforman teniendo en cuenta los siguientes parámetros: máxima tasa de transmisión, comunicación. bidireccional,. transparencia. al. protocolo,. compatibilidad. UART,. operación en una banda de frecuencia sin licencia y compatibilidad FCC. Definitivamente se escogieron los módulos LINX SC-PA por contar con las características deseadas. Cada módulo (transceiver) cuenta con emisor y un receptor lo cual hace posible la transferencia de información en ambas direcciones; no obstante, estos módulos pueden operar únicamente en uno de los dos estados a la vez transmisor o receptor lo cual implica que la comunicación debe ser half duplex. La tasa de transferencia máxima que soportan los transceivers es 33.6 Kbps aunque la tasa utilizada es 19.2 Kbps debido a que éste es el valor más cercano que soporta el puerto serial del computador. Estos dos inconvenientes son analizados posteriormente en este capitulo.. 2.1. TRANSCEIVER. El modulo TR-SC-PA es un transceiver half duplex de un solo canal diseñado para la transmisión de información digital a distancias menores de 150 m en exteriores y 60 m en interiores. El transceiver incorpora un switch que permite el uso de una sola antena para el transmisor y el receptor. Debido a que el modulo solo puede ser. 23.
(23) IEL1-03-II-22. operado en un único modo a la vez, cuando transmite, el receptor es apagado y viceversa. Entre otras características del dispositivo se encuentran: control de potencia de transmisión, regulador de voltaje de alimentación a 3 V, modo de bajo consumo de potencia e indicador de intensidad la señal recibida (LINX, 2001, p.5.) El transmisor obtiene la información digital banda base proveniente de la USART del SAD y la modula en FSK utilizando un sintetizador de frecuencia y un PLL. La señal resultante es alimentada a un amplificador de potencia que puede generar una potencia de salida de hasta 1mW en una carga de 50 Ω. Esta potencia puede ser decrementada de 0 dBm a -15 dBm. Si se desea obtener mayor información, la referencia (LINX, 2001, p.6) puede ser consultada. El receptor principalmente consta de una etapa inicial de filtrado (SAW) y un receptor superheterodino FM compuesto de un amplificador de bajo ruido, un mezclador y varios filtros. La señal banda base a la salida del receptor es procesada por un detector que recupera la señal digital original. Una vez más, si se desea más información, ésta puede ser encontrada en la referencia (LINX, 2001, p.6.). 2.2. ANTENA. La antena utilizada es un monopolo tipo whip de un cuarto de longitud de onda. Esta antena se monta perpendicularmente a un plano conductor conectado a tierra, como lo indica la Figura 2-1, el cual refleja eléctricamente el monopolo formando un dipolo virtual de media longitud de onda. Aunque el plano de tierra no es necesario, si éste no se utiliza la resistencia de radiación es mucho menor a 36 Ω y se genera una reactancia capacitiva considerable (Bensky 2000.) La antena se conecta al transceiver con una línea de transmisión coaxial (RG174) de 50 Ω.. 24.
(24) IEL1-03-II-22. Figura 2-1 Conexión de la antena al plano de tierra.. 2.3. PROTOCOLO DE COMUNICACIÓN. Como se enunció anteriormente, el transceiver solo puede actuar como transmisor o receptor en un instante dado; es decir, nunca puede realizar las dos funciones simultáneamente. Es inminente entonces, el diseño de un protocolo de comunicación que se ajuste a esta restricción. Para solucionar este problema, tanto el transceiver conectado al SAD como el que esta conectado al computador se encuentran inicialmente en el modo de recepción. De esta forma se aprovecha que el consumo de potencia es menor cuando el receptor esta activo. En el momento en que el usuario realiza una petición mediante la aplicación software, el transceiver conectado al computador pasa al modo de transmisión y emite la trama de datos correspondiente a la solicitud. Existen tres tipos de solicitud: activación de canal, lectura de m muestras provenientes de los canales tipo I activos y lectura de una muestra procedente del canal tipo II especificado. El SAD al recibir la solicitud, procesa la orden y decide que hacer. Para el primer tipo de solicitud, el SAD únicamente activa el canal seleccionado y permanece en modo de recepción. Para las otras dos solicitudes, el SAD ordena al transceiver cambiar a modo de transmisor y empieza a enviar la información solicitada hasta completar el número de muestras deseado. A continuación se ilustra la estructura básica de una trama de solicitud.. 25.
(25) IEL1-03-II-22. [ byte de sincronización ] [ byte de inicio ] [ byte de comando ] [ byte de parámetro ]. El byte de sincronización tiene el valor de 0xFF y sirve para que efectivamente se detecte el comienzo del byte de inicio. El byte de inicio marca el comienzo de la información valida y tiene el valor de 0x55. El byte de comando es utilizado para definir la solicitud realizada por el usuario y el byte de parámetro contiene la información necesaria para llevarla a cabo. La Tabla V resume los posibles valores que pueden tomar estos dos bytes.. Solicitud. Comando (CMND). Activar canal. 0xAA. Iniciar transmisión de canales tipo I Leer valor de canales tipo II. 0xBB 0XCC. Parámetro (PARAM) 0, 1, 2 ,3 (según el canal) 1 – 255 (según el numero de muestras) 32, 40, 48, 56 (según el canal). Tabla V Resumen de las solicitudes de protocolo.. La información correspondiente solicitada contiene el valor actual del canal y se envía en pares de bytes (ADRESH y ADRESL). La estructura de la trama de datos es la siguiente:. [ byte de sincronización ] [ byte de inicio ] [ paquete de datos ]. Los diagramas de protocolo de la Figura 2-2 permiten la mejor comprensión de los procedimientos y definiciones descritas anteriormente. En la parte (a) se muestra la solicitud de activación de dos canales y la solicitud de adquisición continua de m x 128. 26.
(26) IEL1-03-II-22. muestras; en la parte (b) la respuesta del SAD a la solicitud de la parte (a). En la parte (c) se observa la petición de lectura de uno de los canales tipo II y el envío de su valor.. Figura 2-2 Protocolo de comunicación.. 2.4. CONSIDERACIONES. Para el diseño realizado utilizando el transceiver fue necesario tener presentes dos requerimientos en cuanto al intervalo de tiempo necesario para cambiar el modo de operación. Para cambiar de recepción a transmisión es necesario esperar un periodo entre 3 y 5 ms para que el transmisor se estabilice y la información pueda ser emitida correctamente. Igualmente, para cambiar de transmisión a recepción se. debe. considerar un intervalo de 4 a 6 ms después del cual la información a la salida del transceiver será valida. El hecho que la tasa de transmisión de 19.2 Kbps finalmente utilizada sea menor que la original de 115.2 Kbps, hace que el ancho de banda permitido para las señales de los canales tipo I se vea afectada directamente. Este ancho de banda se reduce a un valor de 480 Hz reacuérdese que en el caso alámbrico este valor era de 2.8 KHz y en el caso de seleccionar los cuatro canales, el ancho de banda se reduce hasta los 120 Hz. Existe la posibilidad de doblar este ancho de banda si en vez de. 27.
(27) IEL1-03-II-22. enviar los 10 bits resultantes de la conversión solo se envían los 8 bits más significativos. Así se reduciría la resolución a 20 mV. A pesar de esta restricción, el ancho de banda resultante (240 Hz) es suficiente para medir una gran cantidad de parámetros industriales. Las consideraciones de interferencia proveniente de fuentes no deseadas de RF al igual que los fenómenos de multicamino y ruido del canal se encuentran fuera del alcance de este documento aunque son factores que determinan el desempeño del sistema. El diagrama de bloques del sistema finalmente implementado se encuentra en la Figura 2-3.. Figura 2-3 Sistema finalmente implementado.. 2.5. IMPLEMENTACIÓN. Los diagramas esquemáticos para los circuitos y las placas de circuito impreso de los sitios local y remoto son presentados a continuación.. 28.
(28) IEL1-03-II-22. Figura 2-4 Diagrama esquemático para el circuito del sitio local.. 29.
(29) IEL1-03-II-22. Figura 2-5 Placa de circuito impreso para el sitio local.. 30.
(30) IEL1-03-II-22. Figura 2-6 Diagrama esquemático para el circuito del sitio remoto.. 31.
(31) IEL1-03-II-22. Figura 2-7 Placa de circuito impreso para el sitio remoto.. 32.
(32) IEL1-03-II-22. Figura 2-8 Fotografía exterior de los prototipos finales. Figura 2-9 Fotografía interior de los prototipos finales. 33.
(33) IEL1-03-II-22. 3. SOFTWARE. Se eligió el entorno de programación MATLAB® para desarrollar el software de control y visualización debido a que este entorno proporciona una amplia gama de herramientas para realizar un análisis post adquisición muy completo. Por ejemplo, es posible emplear el Toolbox de procesamiento de señales para filtrar la señal adquirida ya que con éste resulta muy sencillo diseñar filtros digitales de respuesta impulso finita o infinita (FIR IIR) que se ajusten a los requerimientos particulares de cada usuario. Este Toolbox también cuenta con funciones que permiten realizar procesado estadístico de señales y estimación espectral (Petrosky & Hirsch, 2003.) Por medio de la construcción de modelos de sistemas en Simulink®, es posible comparar los datos adquiridos utilizando el sistema de telemetría y los datos obtenidos de las simulaciones correspondientes. Por otro lado, MATLAB® permite la generación de interfases graficas de usuario (GUI). Antes de llegar a la aplicación software final, fue necesario pasar por varias etapas de desarrollo de herramientas más sencillas que fueron perfeccionadas conforme se implementaban cada unas de las versiones del sistema de adquisición de datos presentadas en la Sección 1.3. En primera instancia observamos en la Figura 3-1(a) una interfase de usuario en la cual el valor de un canal puede ser monitoreado por medio de una grafica de barras. La parte (b) de dicha figura proporciona la misma información pero se puede observar el cambio del valor del voltaje del canal a través del tiempo generándose así una forma de onda. Estas dos aplicaciones software fueron desarrolladas para trabajar en conjunto con la versión SAD1.. 34.
(34) IEL1-03-II-22. (a). (b). Figura 3-1 Aplicación gráfica de usuario (GUI) inicial. (a)Visualización en grafica de barras. (b)Visualización en forma de onda.. Con el fin de poder controlar la versión SAD2 se desarrollo una interfase grafica de usuario que contara con las utilidades más comunes en los equipos de medida de laboratorio como lo es un osciloscopio. La Figura 3-2 muestra los resultados obtenidos.. Figura 3-2 Aplicación gráfica de usuario (GUI) tipo osciloscopio.. 35.
(35) IEL1-03-II-22. En la Figura 3-3, por último, se enseña la aplicación GUI final desarrollada en funcionamiento normal. En primera instancia, el usuario puede escoger por medio de las cajas de selección los canales de su interés. En el cuadro de entrada de texto que se observa en la esquina superior derecha, se debe escribir el número paquetes de 128 muestras por canal que se desean adquirir. Finalmente, el botón marcado ‘Adquirir’ envía la petición al SAD de empezar la transmisión del monitoreo de los canales seleccionados hasta completar el numero de muestras especificadas. Al graficar cierto número de muestras de una canal en función del tiempo en la ventana correspondiente se obtiene una imagen de la señal original. En la parte inferior derecha se observan cuatro botones secundarios con los cuales se solicita al SAD la lectura de los canales tipo II. El resultado de dicha lectura aparece en el cuadro de texto del sensor propio e igualmente se modifica la grafica de barras. En el medio se encentran dos botones radiales y dos barras de desplazamiento.. Figura 3-3 Aplicación grafica de usuario (GUI) final.. 36.
(36) IEL1-03-II-22. Es posible visualizar el espectro de potencia en función de la frecuencia pulsando el botón radial marcado ‘Frecuencia’. Las barras desplazadoras permiten cambiar la escala para cada uno de los canales seleccionados tanto en tiempo como en amplitud. La aplicación cuenta con un menú de archivo que permite guardar el contenido del vector de datos representativo de la señal y salir de la aplicación. Adicionalmente el menú estilo permite modificar la apariencia de las pantallas de visualización. El código MATLAB correspondiente a la aplicación se encuentra en el Anexo E.. 37.
(37) IEL1-03-II-22. 4. CONCLUSIÓN. Se diseño e implementó el instrumento de telemetría propuesto satisfactoriamente. Se realizaron varias pruebas alimentando los canales de entrada del instrumento con señales triangulo, senoidales y rectangulares con el fin de comprobar su funcionamiento adecuado. Se encontró que la frecuencia máxima permitida antes de obtener una distorsión considerable de la onda fue aproximadamente 900 Hz para todos los casos. Es posible vencer esta limitación si se utilizan transceivers que tengan una mayor tasa de transmisión. Igualmente, se realizaron pruebas de alcance obteniendo distancias superiores a 30 m en interiores y 150 m en exteriores; no obstante, este rango puede variar dependiendo de las condiciones del medio de propagación. Acoplado a un computador portátil, resulta muy apropiado el uso del instrumento gracias a su naturaleza móvil. Por esta razón y por la generalidad del instrumento, éste puede ser fácilmente incorporado a gran variedad de aplicaciones y de estar forma hacerlas mas efectivas. Es posible modificar el instrumento de telemetría con solo cambiar el código de programación del microcontrolador y de la aplicación software para expandir sus capacidades; por ejemplo, se podría convertir en un telemando y de esta manera controlar los parámetros que hacen que varíe la salida de los sensores. Al realizar la comparación de las características del instrumento con dispositivos comerciales del mismo tipo, se obtuvieron resultados satisfactorios tendiendo en cuenta las restricciones de costo y tiempo de desarrollo. El instrumento puede servir para los laboratorios de comunicación futuros ya que con éste se pueden realizar bastantes pruebas de desempeño del enlace y condiciones de propagación.. 38.
(38) IEL1-03-II-22. A. ANEXO: ESPECIFICACIONES TÉCNICAS. . 8 canales de entrada al SAD. . 900 Hz. de ancho de banda de las señales adquiridas. . Rango de entrada de 0 a 5 V. . Resolución de 5 y 20 mV. . Alcance superior a 30 m en interiores y 150 en exteriores. . Frecuencia de operación RF en la banda de 910 MHz.. . Modulación FSK. . Tasa de tx a 19.2 Kbps.. . 4 - 6 ms necesarios para cambiar de tx a rx. . 3 - 5 ms necesarios para cambiar de rx a tx. . Alimentación con batería de 9V. . Consumo de corriente 29 mA - 15 mA. . Dimensiones de los módulos en cm. (a x al x l) 11 x 4 x 10. . Peso de los módulos 170 gm. incluyendo la batería.. 39.
(39) IEL1-03-II-22. B. ANEXO: CÓDIGO ASSEMBLER SAD1. ;********************************************************************** ; * ; Nombre de archivo: sad1.asm * ; Fecha: 9/5/2003 * ; Version: 1.0 * ; Ensamblado usando: MPASM v2.70 * ; * ; Autor: Juan C. Saavedra * ; Universidad de los Andes * ; * ; * ;********************************************************************** ; * ; Archivos Requeridos: * ; p16f877.inc * ; * ;********************************************************************** ; * ; Notas: * ; Sistema de Adquisición de datos alámbrico * ; Conversión y envío según solicitud * ; Tasa de tx reducida ya que no se usan interrupciones * ; * ; * ;********************************************************************** list include. p=16f877 <p16f877.inc>. ;********************************************************************** ; Definiciones ;********************************************************************** CnfPrtA CnfPrtD CnfPrtC. equ b'00101111' equ h'00' equ b'11000000'. ;Puerto A RA5,RA3-RA0 entradas An. ;Puerto D salidas ;Puerto C RC7 entrada, RC6 salida. CnfAdco CnfCana Retardo. equ b'10000010' equ h'21' equ h'22'. ;ADC justificado a la derecha,RA an ;Registro de configuracion de canal ;Registro de retardo. Baudio rxdata. equ d'12' equ h'20'. ;19200 Baudios ;Registro de datos recibidos. doit1 doit2. equ h'AA' equ h'BB'. ;Orden 1 ;Orden 2. ;********************************************************************** ; Programa ;********************************************************************** org goto. h'00' Inic. 40.
(40) IEL1-03-II-22. Inic banksel movlw movwf movlw movwf movlw movwf. TRISA CnfPrtA TRISA CnfPrtD TRISD CnfPrtC TRISC. movlw movwf bsf bcf banksel bsf clrf. Baudio SPBRG TXSTA,BRGH TXSTA,SYNC RCSTA RCSTA,SPEN PORTD. ;Banco 1 ;Configura puerto A ;Configura puerto D ;Configura puerto C. ;Configura Baudios ;Alta velocidad ;Puerto serial asincrono ;Banco 0 ;Habilita puerto serial ;Limpia PORTD. ;-------------; Ciclo sin fin loop. incf clrf clrf bsf. PORTD,f RCREG RCREG RCSTA,CREN. ;LED on/off ;Limpia buffer de entrada ;Habilita. ;---------------------------; Recibir y decodificar orden RX. btfss goto bcf movf movwf xorlw btfsc call movf xorlw btfsc call. PIR1,RCIF RX RCSTA,CREN RCREG,w rxdata doit1 STATUS,Z conf1 rxdata,w doit2 STATUS,Z conf2. ;Acabo recepcion? ;no, vuelve a RX ;si, Deshabilita recepcion ;Lee el registro de recepcion ;Copia los datos a rxdata ;Compara con orden 1 ;Es orden 1? ;si, configura el canal de ADC ;no ;Compara con orden 2 ;Es orden 2? ;si, configura el canal de ADC. movlw banksel movwf banksel movf movwf bcf bsf bsf bcf call bsf. CnfAdco ADCON1 ADCON1 ADCON0 CnfCana,w ADCON0 ADCON0,ADCS1 ADCON0,ADCS0 ADCON0,ADON PIR1,ADIF wait ADCON0,2. ;no ;Banco 1 ;Configura justificacion y pines ;Banco 0 ;Selecciona el canal ;Selecciona el reloj 01 ;Selecciona el reloj fosc/8 ;Habilita ADC ;Borra la bandera de conversion ;terminada ;Inicia conversion. 41.
(41) IEL1-03-II-22. ;--------------; Conversion A/D conv. btfss goto bcf. PIR1,ADIF conv ADCON0,ADON. ;Conversion terminada? ;no ;si, deshabilita ADC. banksel bsf banksel movf movwf banksel. TXSTA TXSTA,TXEN TXREG ADRESH,w TXREG TXSTA. ;Banco 1 ;Habilita transmision ;Banco 0 ;Carga Adresh ;Banco 1. ;------------------------------------; Enviar el resultado de la conversión ; +---+---+---+---+---+---+---+---+ ; | 0 | 0 | 0 | 0 | 0 | 0 | b9| b8| ; +---+---+---+---+---+---+---+---+ TXH btfss goto movf banksel movwf banksel. TXSTA,TRMT TXH ADRESL,w TXREG TXREG TXSTA. ;Acabo transmision? ;no ;si, Carga Adresl ;Banco 0 ;Banco 1. ; +---+---+---+---+---+---+---+---+ ; | b7| b6| b5| b4| b3| b2| b1| b0| ; +---+---+---+---+---+---+---+---+ TXL btfss goto banksel goto. TXSTA,TRMT TXL RCSTA loop. ;Acabo transmision? ;no ;Banco 0. ;********************************************************************** ; conf1 ;********************************************************************** conf1. movlw movwf incf return. b'00001000' CnfCana PORTD,f. ;Canal RA1. ;********************************************************************** ; conf2 ;********************************************************************** conf2. movlw. b'00010000'. ;Canal RA2. 42.
(42) IEL1-03-II-22. movwf incf return. CnfCana PORTD,f. ;********************************************************************** ; wait ;********************************************************************** wait menos. movlw movwf. d'5' retardo. ;2 de llamado ;2 de inicio. decfsz goto return. retardo,f menos. ;retardo_1x3 ;2 y 2 de retorno. END. 43.
(43) IEL1-03-II-22. C. ANEXO: CÓDIGO ASSEMBLER SAD2. ;********************************************************************** ; * ; Nombre de archivo: sad2.asm * ; Fecha: 10/22/2003 * ; Versión: 2.0 * ; Ensamblado usando: MPASM v2.70 * ; * ; Autor: Juan C. Saavedra * ; Universidad de los Andes * ; * ; * ;********************************************************************** ; * ; Archivos Requeridos: * ; p16f877.inc * ; * ; * ;********************************************************************** ; * ; Notas: * ; Sistema de Adquisición de datos alámbrico * ; Conversión y envío continuos * ; Tasa de tx 115200 bps usando interrupciones * ; Fosc 3.56 MHZ * ; * ;********************************************************************** list include. p=16f877 <p16f877.inc>. ;********************************************************************** ; Definiciones ;********************************************************************** CnfPrtA CnfPrtC CnfPrtD. equ b'00101111' equ b'11000000' equ b'00000000'. ;Puerto A RA5,RA3-RA0 entradas An. ;Puerto C RC7 entrada, RC6 salida ;Puerto D salidas. CnfAdco analogo Retardo Dos Flags w_temp s_temp. equ b'10000010'. ;ADC justificado a la derecha, RA. equ equ equ equ equ. ;Registro de retardo ;Registro cada dos ;Registro de testigos ;w temp ;s temp. Baudio rxdata. equ d'1' equ h'20'. ;115200 Baudios ;Registro de datos recibidos. doit1 doit2 on off. equ equ equ equ. ;Orden ;Orden ;Orden ;Orden. h'21' h'22' h'23' h'70' h'71'. h'AA' h'BB' h'CC' h'DD'. 44. 1 2 3 encender 4 apagar.
(44) IEL1-03-II-22. ;********************************************************************** ; Programa ;**********************************************************************. Inic. org goto. .0 Inic. ORG goto. .4 ISR. banksel movlw movwf movlw movwf movlw movwf. TRISA CnfPrtA TRISA CnfPrtC TRISC CnfPrtD TRISD. ;Banco 1. movlw movwf bsf bcf banksel clrf clrf bsf. Baudio SPBRG TXSTA,BRGH TXSTA,SYNC RCSTA PORTD Flags RCSTA,SPEN. ;Configura Baudios ;Alta velocidad ;Puerto serial asincrono ;Banco 0 ;Limpia PORTD ;Limpia banderas ;Habilita puerto serial. movlw banksel movwf banksel movlw movwf bcf bsf clrf bsf. CnfAdco ADCON1 ADCON1 ADCON0 b'00001000' ADCON0 ADCON0,ADCS1 ADCON0,ADCS0 Dos Flags,0. ;Configuración ADC ;Banco 1 ;Configura justificacion y pines ;Banco 0 ;Canal RA1 ;Selecciona el canal ;Selecciona el reloj 01 ;Selecciona el reloj fosc/8 ;Empezar con ADRESH ;Muestrear y convertir. banksel bsf bsf bsf bsf. PIE1 INTCON,GIE INTCON,PEIE PIE1,RCIE PIE1,TXIE. ;Banco 1 ;Habilita ;Habilita ;Habilita ;Habilita. banksel clrf clrf bsf. RCREG RCREG RCREG RCSTA,CREN. ;Banco 0 ;Limpia el buffer de rx ;Habilita recepcion. Flags,0 sample main. ;Conversion finalizada? ;si, muestrear y convertir ;no, espere. ;Configura puerto A ;Configura puerto C ;Configura puerto D. int. int. int. int.. globales perifericos USART rx USART tx. ;-------------; Ciclo infinito main. btfsc call goto. 45.
(45) IEL1-03-II-22. ;********************************************************************** ; Rutinas de interrupcion ;********************************************************************* ;--------------------------------------; Deteccion del origen de la interrupcion ISR. movwf movf movwf banksel bcf btfsc goto btfsc goto goto. w_temp STATUS,w s_temp INTCON INTCON,GIE PIR1,RCIF RXI PIR1,TXIF TXI exit. ;Guardar w ;Guardar ;status ;Banco 0 ;Deshabilitar interrup. GIE <- 0 ;Existio interrupcion RX USART? ;si, cambiar el canal ;Existio interrupcion TX USART? ;si, cargar nueva muestra ;no, salir de ISR. ;----------------------------------------------; Salir de ISR devolviendo los valores originales exit. movf movwf movf movwf movf retfie. Flags,w PORTD s_temp,w STATUS w_temp,w. ;Actualiza PORTD ;con el valor de Flags ;Restablecer ;status ;Restablecer w ;Volver desde interrupcion, GIE <-1. ;-------------------------------; Envio alterno de ADRESH y ADRESL ; +---+---+---+---+---+---+---+---+ ; | 0 | 0 | 0 | 0 | 0 | 0 | b9| b8| ADRESH ; +---+---+---+---+---+---+---+---+ ; +---+---+---+---+---+---+---+---+ ; | b7| b6| b5| b4| b3| b2| b1| b0| ADRESL ; +---+---+---+---+---+---+---+---+ TXI. alto. comf btfsc goto bsf banksel movf banksel movwf bsf goto. Dos,f Dos,0 alto Flags,7 ADRESL ADRESL,w TXREG TXREG Flags,0 exit. ;Si ya envio ADRESH enviar ADRESL ;Enviar ADRESH? ;si, ir a alto ;no, activa bandera 7 ;Banco 1 ;Carga Adresl ;Banco 0 ;Copia Adrel a TXREG ;Conversion y envio terminados ;Salir de ISR. bsf banksel movf movwf goto. Flags,6 ADRESH ADRESH,w TXREG exit. ;Activa bandera 6 ;Banco 0 ;Carga Adresh ;a TXREG ;Salir de ISR. 46.
(46) IEL1-03-II-22. ;-------------------------------------------; Deteccion y decodificacion de orden recibida RXI. bsf movf movwf xorlw btfsc goto movf xorlw btfsc goto movf xorlw btfsc goto movf xorlw btfsc goto goto. Flags,1 RCREG,w rxdata doit1 STATUS,Z conf1 rxdata,w doit2 STATUS,Z conf2 rxdata,w on STATUS,Z prender rxdata,w off STATUS,Z apagar exit. ;Activa bandera 1 ;Lee el registro de recepcion ;Copia los datos a rxdata ;Compara con orden 1 ;Es orden 1? ;si, configura el canal de ADC ;no ;Compara con orden 2 ;Es orden 2? ;si, configura el canal de ADC ;no ;Compara con orden 3 ;Es orden 3? ;si, enciende el envio continuo ;de muestras del canal selc. ;no, Compara con orden 4 ;Es orden 4? ;no, apaga el envio continuo ;de muestras del canal selc.. Flags,2 b'11000111' ADCON0,f ADCON0,3 exit. ;Activa bandera 2 ;Canal RA1 ;Selecciona el canal. Flags,3 b'11000111' ADCON0,f ADCON0,4 exit. ;Activa bandera 3 ;Canal RA2 ;Selecciona el canal. Flags,4 TXSTA TXSTA,TXEN PIR1 exit. ;Activa bandera 4 ;Banco 1 ;Habilita transmision ;Banco 0 ;Salir de ISR. ;-----; conf1 conf1. bsf movlw andwf bsf goto. ;Salir de ISR. ;-----; conf2 conf2 bsf movlw andwf bsf goto. ;Salir de ISR. ;-------; prender prender bsf banksel bsf banksel goto. 47.
(47) IEL1-03-II-22. ;------; apagar apagar. bsf banksel bcf banksel goto. Flags,5 TXSTA TXSTA,TXEN PIR1 exit. ;Activa bandera 5 ;Banco1 ;Deshabilita transmision ;Banco 0 ;Salir de ISR. ;********************************************************************** ; Subrutinas ; ; sample ;********************************************************************** sample. conv. bsf bcf call bsf. ADCON0,ADON PIR1,ADIF wait ADCON0,2. ;Habilita ADC ;Borra la bandera de conversion ter ;Esperar tiempo de adq ;Inicia conversion. btfss goto bcf bcf movf movwf return. PIR1,ADIF conv ADCON0,ADON Flags,0 Flags,w PORTD. ;Conversion terminada? ;no, espere ;si, deshabilita ADC ;muestra disponible ;Actualiza PORTD ;con Flags. ;********************************************************************** ; wait ;********************************************************************** wait menos. movlw movwf. d'5' retardo. ;2 de llamado ;2 de inicio. decfsz goto return. retardo,f menos. ;retardo_1x3 ;2 y 2 de retorno. END. 48.
(48) IEL1-03-II-22. D. ANEXO: CÓDIGO ASSEMBLER SAD7. ;********************************************************************** ; * ; Nombre de archivo: sadrf7.asm * ; Fecha: 11/30/2003 * ; Versión: 7.0 * ; Ensamblado usando: MPASM v2.70 * ; * ; Autor: Juan C. Saavedra * ; Universidad de los Andes * ; * ; * ;********************************************************************** ; * ; Archivos Requeridos: * ; p16f877.inc * ; * ; * ;********************************************************************** ; * ; Notas: * ; Sistema de Adquisición de datos inalámbrico * ; Hasta 4 canales monitoreados continuamente * ; Hasta 4 canales monitoreados ocasionalmente * ; Tasa de tx reducida por limitaciones de ancho de banda RF * ; * ; * ;********************************************************************** list include. p=16f877 <p16f877.inc>. ;********************************************************************** ; Definiciones ;********************************************************************** ;-----------------------; Definicion de etiquetas CnfPrtA CnfPrtC CnfPrtD. equ b'00101111' equ b'11000000' equ b'00000000'. ;Puerto A RA5,RA3-RA0 entradas ;Puerto C RC7 entrada, RC6 salida ;Puerto D salidas. CnfAdco. equ b'00000000'. Baudio. equ d'12'. ;ADC justificado a la izquierda, RA ;y RE anlogos ;19200 Baudios. doit1 doit2 doit3 canalA canalB canalC canalD. equ equ equ equ equ equ equ. ;Activar Desactivar canales tipo 1 ;Comenzar monitoreo ;Leer canales tipo 2 ;canal RA0 ;canal RA1 ;canal RA2 ;canal RA3. STRT. equ h'00'. h'AA' h'BB' h'CC' h'00' h'01' h'02' h'03'. ;Estado inicial esperar START. 49.
(49) IEL1-03-II-22. CMD CHN SND SNS. equ equ equ equ. h'01' h'02' h'03' h'04'. ;Estado ;Estado ;Estado ;Estado. de de de de. espera espera espera espera. de de de de. comando canal tipo 1 inicio canal tipo 2. ;-----------------------; Definicion de registros rxdata retardo Flags STATECNTR SMPLCNTR d1 d2 select rselect canal cnt. equ equ equ equ equ equ equ equ equ equ equ. h'20' h'21' h'23' h'24' h'25' h'26' h'27' h'28' h'29' h'2A' h'2B'. w_temp s_temp. equ h'70' equ h'71'. ;Registro ;Registro ;Registro ;Contador ;Contador ;Registro ;Registro ;Registro ;Registro ;Registro ;Registro. de datos recibidos de retardo de testigos de estado de muestras 1 delay 2 delay canales seleccionados de rotacion canales sel de canal actual contador. ;w temp ;s temp. ;********************************************************************** ; Programa ;********************************************************************** org goto. .0 Inic. org goto. .4 ISR. ;********************************************************************** ; RESET ; Inicializar ;********************************************************************** Inic. banksel movlw movwf movlw movwf movlw movwf. TRISA CnfPrtA TRISA CnfPrtC TRISC CnfPrtD TRISD. ;Banco 1. movlw movwf bsf bcf banksel clrf call clrf bsf. Baudio SPBRG TXSTA,BRGH TXSTA,SYNC RCSTA PORTD RXMODE Flags RCSTA,SPEN. ;Configura Baudios ;Alta velocidad ;Puerto serial asincrono ;Banco 0 ;Limpiar PORTD ;Transceiver RXEN on REC ;Limpiar banderas ;Habilita puerto serial. movlw. CnfAdco. ;Configuración ADC. ;Configura puerto A ;Configura puerto C ;Configura puerto D. 50.
(50) IEL1-03-II-22. banksel movwf banksel movlw movwf movlw movwf movwf clrf bcf bsf bsf clrf movlw clrf. ADCON1 ADCON1 ADCON0 b'00000000' ADCON0 b'00000000' select rselect canal ADCON0,ADCS1 ADCON0,ADCS0 Flags,0 STATECNTR h'80' cnt. ;Banco 1 ;Configura justificacion y pines ;Banco 0 ;Canal RA0 ;Selecciona el canal ;Ningun ;canal ;seleccionado. banksel bsf bsf bsf bsf. PIE1 INTCON,GIE INTCON,PEIE PIE1,RCIE PIE1,TXIE. ;Banco 1 ;Habilita ;Habilita ;Habilita ;Habilita. banksel bsf. RCREG RCSTA,CREN. ;Banco 0 ;Habilita recepcion USART. ;Selecciona el reloj 01 ;Selecciona el reloj fosc/8 ;Muestrear y convertir ;Estado START ;Cargar w con d128 ;Limpiar contador int. int. int. int.. globales perifericos USART rx USART tx. ;********************************************************************** ; MAIN ;********************************************************************** main btfsc call goto. Flags,0 sample main. ;Conversion finalizada? ;si, muestrear y convertir ;no, espere. ;********************************************************************** ; ISR ;********************************************************************* ISR. exit. movwf movf movwf banksel bcf btfsc goto btfsc goto goto. w_temp STATUS,w s_temp INTCON INTCON,GIE PIR1,RCIF RXI PIR1,TXIF TXI exit. ; ; ; ; ; ; ; ; ;. Guardar w Guardar Status Banco 0 Deshabilitar interrup. GIE <- 0 Existio interrupcion RX USART? si, decodificar orden Existio interrupcion TX USART? si, continuar enviando. movf movwf movf retfie. s_temp,w STATUS w_temp,w. ; ; ; ;. Restablecer STATUS Restablecer w Return from interruption, GIE <-1. 51.
(51) IEL1-03-II-22. ;********************************************************************** ; TXI ;********************************************************************** TXI mplex. movf movwf. ADRESH,w TXREG. call btfss goto movlw andwf movf iorwf bsf clrw xorwf btfss goto movlw movwf decfsz goto call call banksel bcf banksel clrf bcf bsf goto. NEXT rselect,0 mplex b'11000111' ADCON0,f canal,w ADCON0,f Flags,0 cnt,w STATUS,Z exit h'80' cnt SMPLCNTR,f exit DOSMAS RXMODE TXSTA TXSTA,TXEN PIR1 select RCSTA,CREN RCSTA,CREN exit. ;Carga Adresh ;a TXREG ;Activa el siguiente canal ;Esta seleccionado este canal? ;no, active siguiente ;si ;Borrar el canal actual del ADC ;Enmascarar el nuevo canal ;en ADC ;Conversion y envio terminados ;Contador ;es 0? ;Acabo? ;no, salir de ISR ;si ;Cargar cnt con d128 ;Decrementar numero muestras, es 0? ;no, salir de ISR ;si, retardo para enviar 2 mues. ;Transceiver RXMODE on REC ;Banco 1 ;Deshabilita transmision USART ;Banco 0 ;Borra los canales seleccionados ;Reinicia USART ;si hay algun error ;Salir ISR. ;********************************************************************** ; RXI ;********************************************************************** RXI movf movwf movf addwf goto goto goto goto goto goto. RCREG,w rxdata STATECNTR,w PCL, f START CMND CHAN SEND SENS exit. ;Lee el registro de recepcion ;Copia los datos a rxdata ;Carga contador de estado a w ;Salta a: ;0. Inicio START ;1. Deco. Inst. ;2. Selec. canal Tipo 1 ;3. Inicio TX ;4. Selec. canal Tipo 2 ;5. Salir ISR seguridad. ;********************************************************************** ; START ;********************************************************************** START. movf xorlw btfsc. rxdata,w h'55' STATUS,Z. ;Compara con START ;Es valido?. 52.
(52) IEL1-03-II-22. incf goto. STATECNTR,f exit. ;si, estado CMND ;no, estado START salir ISR. ;********************************************************************** ; CMND ;********************************************************************** CMND. movf xorlw btfsc goto movf xorlw btfsc goto movf xorlw btfsc goto movlw movwf goto. rxdata,w doit3 STATUS,Z cmdsens rxdata,w doit2 STATUS,Z cmdsend rxdata,w doit1 STATUS,Z cmdchn STRT STATECNTR exit. ;Compara con cmdsens ;Es orden cmdsens? ;si ;no ;Compara con cmdsend ;Es orden cmdsend? ;si ;no ;Compara con cmdchn ;Es orden cmdchn? ;si ;no ;Estado START ;Salir ISR. cmdsens movlw movwf goto. SNS STATECNTR exit. ;Cambiar ;Estado SENS ;Salir ISR. cmdsend movlw movwf goto. SND STATECNTR exit. ;Cambiar ;Estado SEND ;Salir ISR. CHN STATECNTR exit. ;Cambiar ;Estado CHAN ;Salir ISR. cmdchn. movlw movwf goto. ;********************************************************************** ; CHAN ;********************************************************************** CHAN movlw movwf movf xorlw btfsc goto movf xorlw btfsc goto movf xorlw btfsc goto. STRT STATECNTR rxdata,w canalA STATUS,Z conf1 rxdata,w canalB STATUS,Z conf2 rxdata,w canalC STATUS,Z conf3. ;Volver a ;Estado START ;Compara con canalA ;Es canalA? ;si, configura el canal de ADC ;no ;Compara con canalB ;Es canalB? ;si, configura el canal de ADC ;no ;Compara con canalC ;Es canalC? ;si, configura el canal de ADC. 53.
(53) IEL1-03-II-22. movf xorlw btfsc goto goto. rxdata,w canalD STATUS,Z conf4 exit. ;no ;Compara con canalD ;Es canalD? ;si, configura el canal de ADC ;no, salir ISR. bsf goto. select,0 exit. ;Canal RA0 Set ;Seleciona el canal. bsf goto. select,1 exit. ;Canal RA1 Set ;Selecciona el canal. bsf goto. select,2 exit. ;Canal RA2 Set ;Selecciona el canal. bsf goto. select,3 exit. ;Canal RA3 Set ;Selecciona el canal. conf1. conf2. conf3. conf4. ;********************************************************************** ; SEND ;********************************************************************** SEND. mplex1. scero. movf movwf banksel bsf banksel call call movlw movwf movlw movwf movlw movwf movlw movwf clrf movf movwf btfsc goto. rxdata,w SMPLCNTR TXSTA TXSTA,TXEN PIR1 TXMODE MATLAB STRT STATECNTR h'FF' TXREG h'55' TXREG h'80' cnt canal select,w rselect rselect,0 scero. ;Enviar numero de muestras ;por canal a SMPLCNTR ;Banco 1 ;Habilita transmision USART ;Banco 0 ;Transceiver TXMODE on TX ;Retardo 0.1s RTS ;Volver a ;Estado START ;SYNC BYTE ;Transmite SYNC ;START BYTE ;Transmite START :Carga d128 ;a cnt ;Reinicia canal ;Reasignar select ;a rselect ;Esta activo RA0 ;si,. call btfss goto. NEXT rselect,0 mplex1. ;no, activar el siguiente ;Esta activo este? ;no, otro. movlw andwf movf iorwf bsf goto. b'11000111' ADCON0,f canal,w ADCON0,f Flags,0 exit. ;si, ;Borrar el canal actual del ADC ;Enmascarar el nuevo canal ;en ADC ;Comenzar conversion y envio ;Salir ISR. 54.
(54) IEL1-03-II-22. ;********************************************************************** ; SENS ;********************************************************************** SENS. movlw andwf movf andlw iorwf call banksel bsf banksel call call movlw movwf movlw movwf movlw movwf call movf movwf banksel movf banksel movwf call call banksel bcf banksel movlw andwf movf iorwf bcf bsf goto. b'11000111' ADCON0,f rxdata,w b'00111000' ADCON0,f sample TXSTA TXSTA,TXEN PIR1 TXMODE MATLAB STRT STATECNTR h'FF' TXREG h'55' TXREG DOSMAS ADRESH,w TXREG ADRESL ADRESL,w TXREG TXREG DOSMAS RXMODE TXSTA TXSTA,TXEN PIR1 b'11000111' ADCON0,f canal,w ADCON0,f RCSTA,CREN RCSTA,CREN exit. ;Borrar el canal ;actual del ADC ;Guardar el canal Tipo 2 ;a leer ;Enmascarar el nuevo canal en ADC ;Muestrear y convertir ;Banco 1 ;Habilita transmision USART ;Banco 0 ;Transceiver TXMODE ;Retardo 0.1s RTS ;Volver a ;Estado START ;SYNC BYTE ;Transmite SYNC ;START BYTE ;Transmite START ;Retardo de TX de SYNC START ;Cargar ADRESH ;a TXREG ;Banco 1 ;Cargar ADRESL ;a TXREG ;Banco 0 ;Retardo de TX de ADRESH ADRESL ;Transceiver RXMODE on REC ;Banco 1 ;Deshabilita transmision USART ;Banco 0 ;Borra canal ;actual ADC ;Enmascara ;ultimo canal ;Reinicia USART ;en caso de error ;Salir ISR. ;********************************************************************** ; SUBRUTINAS ; ; SAMPLE ;********************************************************************** sample. conv. bsf bcf call bsf. ADCON0,ADON PIR1,ADIF wait ADCON0,2. ;Habilita ADC ;Borra la bandera de conversion ter ;Retardo de adq ;Inicia conversion. btfss goto bcf bcf return. PIR1,ADIF conv ADCON0,ADON Flags,0. ;Conversion terminada? ;no ;si, deshabilita ADC ;muestra disponible ;Retorna. 55.
(55) IEL1-03-II-22. ;********************************************************************** ; WAIT ;********************************************************************** wait menos. movlw movwf. d'5' retardo. ;2 de llamado ;2 de inicio. decfsz goto return. retardo,f menos. ;retardo-1 x 3 ;2 y 2 de retorno. ;********************************************************************** ; Rx2Tx ;********************************************************************** Rx2Tx. ;4993 ciclos. movlw movwf movlw movwf Delay_0 decfsz goto decfsz goto goto nop. 0xE6 d1 0x04 d2 d1, f $+2 d2, f Delay_0 $+1. ;3 ciclos. ;4 ciclos (incluyendo llamada) return ;********************************************************************** ; Tx2Rx ;********************************************************************** Tx2Rx. movlw movwf movlw movwf Delay_1 decfsz goto decfsz goto goto nop return. 0xAE d1 0x05 d2. ;5993 ciclos. d1, f $+2 d2, f Delay_1 $+1. ;3 ciclos. ;4 ciclos (incluyendo llamada). 56.
(56) IEL1-03-II-22. ;********************************************************************** ; MATLAB ;********************************************************************** MATLAB. movlw movwf movlw movwf Delay_2 decfsz goto decfsz goto. 0x1E d1 0x4F d2. ;99993 ciclos. d1, f $+2 d2, f Delay_2 ;3 ciclos. goto nop. $+1 ;4 cycles (incluyendo llamada). return. ;********************************************************************** ; DOSMAS ;********************************************************************** DOSMAS banksel notdone btfss goto banksel return. TXSTA TXSTA,TRMT notdone PIR1. ;Faltan dos ;Esperar a Buffer libre. ;********************************************************************** ; TX MODE ;********************************************************************** TXMODE. bcf bsf call return. PORTD,1 PORTD,0 Rx2Tx. ;Transceiver RXEN off ;Transceiver TXEN on ;Esperar. ;********************************************************************** ; RX MODE ;********************************************************************** RXMODE. bcf bsf call return. PORTD,0 PORTD,1 Tx2Rx. ;Transceiver TXEN off ;Transceiver RXEN on ;Esperar. 57.
(57) IEL1-03-II-22. ;********************************************************************** ; NEXT ;********************************************************************** NEXT. rrf movlw addwf btfss return clrf movf movwf decf return. rselect,f b'00001000' canal,f canal,5 canal select,w rselect cnt,f. ;Rotar a la derecha rselect ;Sumar d8 ;a el registro canal ;Canal RA4? ;no, retorne ;si, canal RA0 ;Reasignar select ;a rselect ;decrementar el contador ;retorne. END. 58.
(58) IEL1-03-II-22. E. ANEXO: CÓDIGO MATLAB SAD4CH. function varargout = sad4ch(varargin) % SAD4CH M-file for sad4ch.fig % SAD4CH, by itself, creates a new SAD4CH or raises the existing % singleton*. % % H = SAD4CH returns the handle to a new SAD4CH or the handle to % the existing singleton*. % % SAD4CH('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in SAD4CH.M with the given input arguments. % % SAD4CH('Property','Value',...) creates a new SAD4CH or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before sad4ch_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to sad4ch_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help sad4ch % Last Modified by GUIDE v2.5 30-Nov-2003 23:13:05 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @sad4ch_OpeningFcn, ... 'gui_OutputFcn', @sad4ch_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin & isstr(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before sad4ch is made visible. function sad4ch_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to sad4ch (see VARARGIN) % Choose default command line output for sad4ch. 59.
(59) IEL1-03-II-22. handles.output = hObject; %************************************************************************* set(hObject,'Renderer','Zbuffer','DoubleBuffer','on','BackingStore','on'); serial_object = serial('com1'); chg=[1 1 1 1]; cht=[1 1 1 1]; num_samples = 128; chnum = 1; set(handles.samples,'String',num2str(num_samples)); set(handles.vs1,'Enable','off'); set(handles.vs2,'Enable','off'); set(handles.vs3,'Enable','off'); set(handles.vs4,'Enable','off'); set(handles.time,'Enable','off'); set(handles.frequency,'Enable','off'); axes(handles.axes1); plot1_handle = plot(zeros(1,128)); grid on; axes(handles.axes2); plot2_handle = plot(zeros(1,128)); grid on; axes(handles.axes3); plot3_handle = plot(zeros(1,128)); grid on; axes(handles.axes4); plot4_handle = plot(zeros(1,128)); grid on; axes(handles.axes5); bar_handle = bar([0.01 0.01 0.01 0.01; 0 0 0 0],.75); colormap(hsv(4)); t1=text(0,0,''); t2=text(0,0,''); axis([0.5 1.5 0 6]); grid on; set([plot1_handle,plot2_handle,plot3_handle,plot4_handle],'Color',[ 0.945 0.820 0.388 ]); axis([handles.axes1,handles.axes2,handles.axes3,handles.axes4],[1 128 -1 6]); set([handles.axes1,handles.axes2,handles.axes3,handles.axes4],'XTickLabel','',' color',... [ 0 0 0 ],'Xcolor',[ 0.502 0.502 1.000 ],... 'Ycolor',[ 0.502 0.502 1.000 ],'LineWidth',[2.5]); set(handles.axes5,'XTickLabel',''); handles.serial_object = serial_object; handles.num_samples = num_samples; handles.chg=chg; handles.cht=cht; handles.chnum = chnum; handles.plot1_handle = plot1_handle; handles.plot2_handle = plot2_handle; handles.plot3_handle = plot3_handle; handles.plot4_handle = plot4_handle; handles.bar_handle=bar_handle; %************************************************************************* % Update handles structure guidata(hObject, handles); %*************************************************************************. 60.
Documento similar