S.E.P. S.E.S. D.G.E.S.T.
CENTRO NACIONAL DE INVESTIGACIÓN
Y DESARROLLO TECNOLÓGICO
cenidet
DISEÑO Y CONSTRUCCIÓN DE UNA TARJETA PROGRAMABLE DE ADQUISICIÓN,
PROCESAMIENTO DE DATOS Y CONTROL
T E S I S PARA OBTENER EL GRADO DE MAESTRO EN CIENCIAS EN M E C A T R Ó N I C A
PRESENTAN:
FÉLIX VICENTE JÍMENEZ RÍOS JOAQUÍN RIVERO JUÁREZ
DIRECTORES DE TESIS:
M.C. JOSÉ LUIS GONZÁLEZ RUBIO SANDOVAL DR. RAÚL PINTO ELÍAS
CUERNAVACA, MORELOS, MÉXICO FEBRERO DE 2006
RESUMEN La automatización industrial se divide en 3 fases: adquisición de datos, procesamiento o tratamiento de la información y control de elementos actuadores. Existen alternativas comerciales que permiten realizar una o todas las fases de automatización en un solo componente como tarjetas de adquisición de datos o controladores lógicos programables (PLCs). En este trabajo se presenta el diseño, construcción y prueba de una tarjeta programable capaz de realizar las 3 funciones de automatización de un proceso con la capacidad de trabajar de forma autónoma. Se diseñó y fabricó una tarjeta de aplicación para la realización de las pruebas de los módulos de: entradas/salidas digitales, entradas analógicas, potencia para motores, comunicación con la computadora y memorias EEPROM. Además de las pruebas funcionales, se diseñaron, construyeron y probaron 3 plantas mecatrónicas con la tarjeta programable. Las 3 plantas son: un robot móvil seguidor de línea, un modelo a escala de una plataforma de seguimiento solar y una cámara térmica con temperatura controlada.
ABSTRACT
The industrial automation is divided in 3 phases: acquisition of data, processing or treatment of information and control of actuator elements. There exist commercial alternatives to carry out one or all the automation phases in a single component such as cards of data acquisition or programmable logic controllers (PLCs). This work shows up the design, construction and test of a programmable card able to carry out the 3 automation functions of a process with the capacity to work in an autonomous way. An application card was designed for testing the modules of: digital inputs/outputs, analog inputs, power for motors, communication between the computer and EEPROM memories. Besides the functional tests, there were designed, built and tested 3 mechatronic plants with the programmable card. The 3 plants are: a line follower mobile robot, a scale model of a solar tracer platform and a thermal camera with controlled temperature.
i
CONTENIDO
LISTA DE FIGURAS ...........................................................................................................iv LISTA DE TABLAS.............................................................................................................vi ACRONIMOS Y SIGLAS ...................................................................................................vii NOMENCLATURA...............................................................................................................x Capítulo 1. Introducción.......................................................................................................1 1.1. Antecedentes......................................................................................................2 1.2. Descripción del problema..................................................................................2 1.3. Estado del arte de sistemas de adquisición, procesamiento de datos y control
de procesos ........................................................................................................3 1.3.1. Transductores y sensores ...................................................................................3 1.3.2. Acondicionadores de señales.............................................................................4 1.3.3. Módulos de adquisición de datos ......................................................................4 1.3.4. Controladores ....................................................................................................7 1.4. Propuesta de solución ........................................................................................9 1.4.1. Objetivos............................................................................................................9 1.4.2. Metodología de solución ...................................................................................9 1.4.3. Aportación o contribución...............................................................................10 1.5. Organización de la tesis...................................................................................10 Capítulo 2. Determinación de las características funcionales de la tarjeta programable ...11 2.1. Recursos requeridos por plantas o procesos ....................................................12 2.2. Microcontroladores y controladores de señal digital.......................................12 2.2.1. Microcontroladores..........................................................................................12 2.2.2. Controladores de señal digital .........................................................................18 2.2.3. Herramientas de desarrollo..............................................................................21 2.3. Proceso de selección del microcontrolador con el que opera la tarjeta
programable .....................................................................................................22 2.4. Tiempo de procesamiento del microcontrolador del PIC18F452....................26 2.4.1. Temporizadores del microcontrolador.............................................................27 2.4.2. Modulación de ancho de pulso generada por el microcontrolador..................28 2.4.3. Tiempo de conversión del conversor análogo/digital......................................29 2.5. Interfases de comunicación ............................................................................31 2.5.1. Interfaz de comunicación entre tarjetas ...........................................................32 2.5.2. Interfaz de comunicación entre la tarjeta y la computadora............................32 2.6. Descripción de la tarjeta programable de adquisición, procesamiento de datos
y control...........................................................................................................33 Capítulo 3. Diseño electrónico de la tarjeta .......................................................................34 3.1. Descripción a bloques de la tarjeta programable.............................................35 3.2. Diagramas esquemáticos electrónicos de la tarjeta programable ....................36
ii
3.3. Diagramas esquemáticos electrónicos de la tarjeta de aplicación ...................44 3.4. Diseño de las tarjetas de circuito impreso .......................................................45 Capítulo 4. Construcción y pruebas de las tarjetas electrónicas.........................................47 4.1. Construcción de las tarjetas electrónicas .........................................................48 4.2. Emulación funcional de los módulos de la tarjeta programable......................50 4.2.1. Prueba de E/S digitales ....................................................................................51 4.2.2. Prueba de entradas analógicas .........................................................................51 4.2.3. Prueba de potencia para motores .....................................................................52 4.2.4. Prueba de la pantalla de cristal líquido (LCD) ................................................53 4.2.5. Prueba de comunicación con la PC .................................................................53 4.2.6. Prueba de memorias EEPROM .......................................................................54 4.2.7. Prueba de E/S de 4-20 mA ..............................................................................55 Capítulo 5. Diseño y construcción de plantas ....................................................................58 5.1. Descripción de plantas a controlar...................................................................59 5.2. Robot móvil seguidor de línea.........................................................................60 5.2.1. Objetivo ...........................................................................................................60 5.2.2. Requerimientos de la planta ............................................................................60 5.2.3. Diseño mecánico .............................................................................................60 5.2.4. Diseño eléctrico del robot móvil .....................................................................61 5.2.5. Algoritmo de control .......................................................................................62 5.3. Modelo a escala de una plataforma de seguimiento solar ...............................63 5.3.1. Objetivo ...........................................................................................................63 5.3.2. Requerimientos de la planta ............................................................................63 5.3.3. Diseño mecánico .............................................................................................65 5.3.4. Diseño eléctrico del modelo a escala de la plataforma de seguimiento solar..66 5.3.5. Algoritmo de control .......................................................................................68 5.4. Cámara térmica con temperatura controlada ...................................................70 5.4.1. Objetivo ...........................................................................................................70 5.4.2. Diseño mecánico .............................................................................................70 5.4.3. Diseño eléctrico de la cámara térmica.............................................................71 5.4.4. Requerimientos de la planta ............................................................................72 5.4.5. Algoritmo de control .......................................................................................73 Capítulo 6. Experimentación y análisis de resultados........................................................76 6.1. Pruebas y resultados de la tarjeta programable con el robot móvil seguidor de
línea .................................................................................................................77 6.2. Pruebas y resultados de la tarjeta programable con el modelo a escala de la
plataforma de seguimiento solar......................................................................78 6.3. Pruebas y resultados de la tarjeta programable con la cámara térmica con
temperatura controlada ....................................................................................79 Capítulo 7. Conclusiones....................................................................................................83
iii
7.1. Conclusiones....................................................................................................84 7.2. Trabajos futuros...............................................................................................85 REFERENCIAS ...................................................................................................................86 Anexo A. Circuitos esquemáticos de la tarjeta programable ...........................................88 Anexo B. Diseños de placas de circuito impreso.............................................................92 Anexo C. Programas de prueba de la tarjeta programable.............................................104 Anexo D. Documentación de los programas de control de las plantas..........................113 Anexo E. Lista de componentes ....................................................................................146
iv
LISTA DE FIGURAS Figura 1.1 Módulo de adquisición de datos............................................................................ 4 Figura 1.2 Diagrama a bloques de un sistema de adquisición, procesamiento de datos y control..................................................................................................................................... 5 Figura 2.1 Comparación de microcontroladores en cuanto a frecuencia de operación........ 23 Figura 2.2 Comparación de microcontroladores en cuanto a número de terminales de E/S.24 Figura 2.3 Comparación de microcontroladores en cuanto a memoria de programa........... 24 Figura 2.4 Circuito oscilador del microcontrolador ............................................................. 26 Figura 2.5 Flujo de ejecución de instrucciones. ................................................................... 27 Figura 2.6 Flujo paralelo de búsqueda/ejecución (pipelining). ............................................ 27 Figura 2.7 Salida PWM. ....................................................................................................... 28 Figura 2.8 Modelo de la entrada analógica........................................................................... 30 Figura 3.1 Módulos que conforman la tarjeta programable. ................................................ 35 Figura 3.2 Circuito electrónico del módulo de entradas/salidas digitales. ........................... 36 Figura 3.3 Circuito electrónico del módulo de entradas analógicas..................................... 38 Figura 3.4 Circuito electrónico del módulo de alimentación. .............................................. 38 Figura 3.5 Circuito electrónico del módulo de memoria EEPROM..................................... 39 Figura 3.6 Circuito electrónico del módulo de comunicación con la PC. ............................ 40 Figura 3.7 Circuito electrónico del módulo de comunicación I2C. ...................................... 41 Figura 3.8 Circuito electrónico del módulo de potencia para motores................................. 42 Figura 3.9 Circuito electrónico del conector para pantalla de cristal líquido....................... 42 Figura 3.10 Circuito electrónico del módulo de procesamiento........................................... 43 Figura 3.11 Circuito electrónico del módulo de E/S de 4-20 mA. ....................................... 44 Figura 3.12 Circuito electrónico de la tarjeta de aplicación................................................. 45 Figura 4.1 Tarjeta principal. ................................................................................................. 48 Figura 4.2 Tarjeta de procesamiento. ................................................................................... 49 Figura 4.3 Tarjeta de entrada/salida de 4-20 mA. ................................................................ 49 Figura 4.4 Tarjeta de aplicación. .......................................................................................... 50 Figura 4.5 Gráfica de respuesta del receptor de 4-20 mA. ................................................... 56 Figura 5.1 Robot móvil seguidor de línea ............................................................................ 60 Figura 5.2 Robot móvil seguidor de línea ........................................................................... 61 Figura 5.3 Circuito electrónico del robot móvil seguidor de línea...................................... 62 Figura 5.4 Diferentes acciones del robot de acuerdo al estado de sus sensores. .................. 63 Figura 5.5 Circuito de potencia (puente H) para alimentar dos motores de 24 VCD. ......... 64 Figura 5.6 Circuito de operación simplificado del puente H................................................ 64 Figura 5.7 Diseño mecánico del modelo a escala de la plataforma de seguimiento solar.... 66 Figura 5.8 Vista superior del modelo a escala de la plataforma de seguimiento solar......... 67 Figura 5.9 Fotografía del modelo a escala de la plataforma de seguimiento solar............... 67 Figura 5.10 Circuito eléctrico del modelo a escala de la plataforma de seguimiento solar. 68 Figura 5.11 Referencia de giros e identificación de sensores............................................... 69 Figura 5.12 Cámara térmica con temperatura controlada..................................................... 70
v
Figura 5.13 Circuito generador de señal de referencia......................................................... 71 Figura 5.14 Señal de referencia. ........................................................................................... 71 Figura 5.15 Circuito de control de CA. ................................................................................ 72 Figura 5.16 Diagrama eléctrico de la cámara térmica y la tarjeta programable. .................. 72 Figura 5.17 Instrumento virtual de configuración y visualización de la cámara térmica..... 74 Figura 6.1 Pista de prueba del robot móvil seguidor de línea. ............................................. 77 Figura 6.2 Prueba de controlador proporcional. ................................................................... 82 Figura 6.3 Prueba de controlador proporcional-integral. ..................................................... 82 Figura A.1 Circuito esquemático de tarjeta principal.......................................................... 88 Figura A.2 Circuito esquemático de tarjeta de procesamiento............................................ 89 Figura A.3 Circuito esquemático de la tarjeta de 4-20 mA. ................................................ 90 Figura A.4 Circuito esquemático de tarjeta de aplicación................................................... 91 Figura B.1 Diseño de la cara superior de la tarjeta principal. ............................................. 92 Figura B.2 Diseño de la cara inferior de la tarjeta principal. .............................................. 93 Figura B.3 Capa de leyenda de componentes de la tarjeta principal................................... 94 Figura B.4 Diseño de la cara superior de la tarjeta de procesamiento................................. 96 Figura B.5 Diseño de la cara inferior de la tarjeta de procesamiento.................................. 97 Figura B.6 Capa de leyenda de componentes de la tarjeta de procesamiento. .................... 98 Figura B.7 Diseño de la cara inferior de la tarjeta de E/S de 4-20 mA. .............................. 99 Figura B.8 Capa de leyenda de componentes de la tarjeta de E/S de 4-20 mA. ............... 100 Figura B.9 Diseño de la cara superior de la tarjeta de aplicación. .................................... 101 Figura B.10 Diseño de la cara inferior de la tarjeta de aplicación..................................... 102 Figura B.11 Capa de leyenda de componentes de la tarjeta de aplicación........................ 103 Figura D.1 Panel frontal. ................................................................................................... 143 Figura D.2 Bloque 1 de 4 del programa de monitoreo y control....................................... 144 Figura D.3 Bloque 2 de 4 del programa de monitoreo y control....................................... 144 Figura D.4 Bloque 3 de 4 y sub-bloque 1 de 3 del programa de monitoreo y control. .... 144 Figura D.5 Sub-bloque 2 de 3 del programa de monitoreo y control................................ 145 Figura D.6 Sub-bloque 3 de 3 del programa de monitoreo y control................................ 145 Figura D.7 Bloque 4 de 4 del programa de monitoreo y control....................................... 145
vi
LISTA DE TABLAS Tabla 1.1 Características más importantes de las tarjetas de adquisición de datos. .............. 5 Tabla 1.2 Sistemas comerciales de adquisición de datos. ..................................................... 6 Tabla 1.3 Comparación de puertos de comunicación............................................................ 8 Tabla 2.1 Recursos requeridos por plantas o procesos........................................................ 12 Tabla 2.2 Características técnicas de los microcontroladores. ............................................ 14 Tabla 2.3 Comparación de familia de controladores C2000. .............................................. 19 Tabla 2.4 Comparación entre el PIC18F452 y el dsPIC30F. .............................................. 25 Tabla 2.5 Selección de capacitores...................................................................................... 26 Tabla 2.6 Especificación de la tarjeta programable............................................................. 33 Tabla 3.1 Dimensiones físicas de las tarjetas electrónicas. ................................................. 46 Tabla 4.1 Pruebas de la tarjeta programable....................................................................... 50 Tabla 4.2 Caracterización del receptor de 4-20 mA............................................................ 55 Tabla 4.3 Caracterización del transmisor de 4-20 mA. ....................................................... 56 Tabla 5.1 Descripción de plantas fabricadas ....................................................................... 59 Tabla 6.1 Experimentación de voltaje eficaz y tiempo de recorte....................................... 80 Tabla B.1Ubicación de componentes en la tarjeta principal. ............................................... 95 Tabla C.1 Programas de las pruebas de la tarjeta programable.......................................... 104 Tabla D.1 Variables del programa de configuración y monitoreo. .................................... 143 Tabla E.1 Lista de componentes de la tarjeta principal...................................................... 146 Tabla E.2 Lista de componentes de la tarjeta de procesamiento ........................................ 148 Tabla E.3 Lista de componentes de la tarjeta de E/S de 4-20 mA ..................................... 148 Tabla E.4 Lista de componentes de la tarjeta de aplicación............................................... 149 Tabla E.5 Costo total de la tarjeta programable ................................................................. 149
vii
ACRONIMOS Y SIGLAS A/D Analógico/digital ADC Analog-digital converter (“Convertidor analógico-digital”) ADCON0 Registro 0 de control del convertidor analógico-digital ADCON1 Registro 1 de control del convertidor analógico-digital ADFM Bit selector de formato de resultado del convertidor analógico-digital ADRESH Byte alto del registro de resultado del convertidor analógico- digital ADRESL Byte bajo del registro de resultado del convertidor analógico- digital bms Bit menos significativo CA Corriente alterna CAN Controller Area Network (“Red de área de controlador”) CCP1 Terminal del módulo 1 de captura, comparación y modulación por ancho
de pulsos CCP1CON Registro de control del módulo 1 de captura, comparación y modulación
por ancho de pulso CCPR1L Byte bajo del registro 1 de captura, comparación y modulación por ancho
de pulso CD Corriente directa CMOS Complementary Metal-Oxide Semiconductor (“Semiconductor de oxido
de metal complementario”) COP8 Control Oriented Processor (“Procesador orientado a control”) CP Contador de programa CPU Central processing unit (“Unidad central de procesamiento”) D/A Digital/analógico DAC Digital-analog converter (“Convertidor digital-analógico”) DIP Dual Inline Package (“Encapsulado doble en línea”) DSC Digital signal controller (“Controlador digital de señales”) DSP Digital signal processor (“Procesador digital de señales”) E/S Entradas y salidas EEPROM Electrically erasable programmable read-only memory (“Memoria de solo
lectura programable eléctricamente borrable”) EIA Electronic Industries Association (“Asociación de industrias de
electrónica”) FFT Fast Fourier Transform (“Transformada rápida de Fourier”) gcc Gnu c compiler (“Compilador C de gnu”) GNU GNU is not Unix (“GNU no es Unix”) GPIB General purpose input board (“Placa de entrada de propósito general”) HCMOS High-density Complementary Metal-Oxide Semiconductor
(“Semiconductor de oxido de metal complementario de alta densidad”) ICD In-Circuit Debugger (“Depurador en circuito”) ICE In-Circuit Emulator (“Emulador en circuito”) IDE Integrated development environment (“Ambiente integrado de desarrollo”) IEEE Institute for Electrical and Electronics Engineers (“Instituto para
ingenieros eléctricos y electrónicos”) IIC o I2C Inter Integrated Circuit (“Interconexión de circuitos integrados”)
viii
IrDA Infrared Data Association ISA Industry Standard Architecture (“Arquitectura de estándar industrial”) ISP In System Programming (“Programación en sistema”) kHz KiloHertz LCD Liquid Crystal Display (“Pantalla de cristal líquido”) LED Light-Emitting Diode (“Diodo emisor de luz”) LPT Line Print Terminal (“Terminal de línea de impresora”) mA MiliAmpere MHz MegaHertz MIDI Musical instrument digital interface (“Interfaz digital de instrumento
musical”) MIMO Multiple Input, Multiple Output (“Múltiples entradas, múltiples salidas”) MIPS Millions of Instructions per second (“Millones de instrucciones por
segundo”) MN Moneda nacional MOSFET Metal-Oxide Semiconductor field effect transistor (“Transistor de efecto
de campo de semiconductor de oxido de metal”) nF Nanofaradio PC Personal Computer (“Computadora personal”) PCI Peripheral Component Interconnect (“Interconexión periférica de
componentes”) PCMCIA Personal Computer Memory Card Internacional Association (“Asociación
internacional de tarjetas de memoria de computadora personal”) PDA personal digital assistant (“Asistente digital personal”) pF Picofaradio PI Proporcional integral PIC programmable integrated circuit (“Circuito integrado programable”) PLC Programmable logic controller (“Controlador lógico programable”) PLCC Plastic-Leaded Chip Carrier (“Encapsulado de montaje superficial para
circuito integrado”) PR2 Registro de período del temporizador 2 PWM Pulse Width Modulation (“Modulación por ancho de pulso”) RAM Random access memory (“Memoria de acceso aleatorio RC Resistencia-capacitor RISC Reduced Instruction Set Computer (“Computadora con conjunto reducido
de instrucciones”) ROM Read-only memory (“Memoria de solo lectura”) SCI Serial communications Interface (“Interfaz de comunicación serial”) SCL Serial clock (“Reloj serial”) SD Secure digital SDA Serial data (“Dato serial”) SISO Single Input, Single Output (“Una entrada, una salida”) spbrg Registro generador de baudios SPI Serial Peripheral Interface (“Interfaz periférica serial”) T2CON Registro de control del temporizador TMR2 TI Texas Instruments TIA Thanks In Advance
ix
TOSC Tiempo de oscilación TTL Transistor-transistor logic (“Lógica transistor-transistor”) μC Microcontrolador μF Microfaradio UPS Uninterruptible power supply (“Fuente de poder ininterrrumpible”) μs Microsegundo USART Universal synchronous/asynchronous receiver transmitter (“Transmisor-
receptor universal síncrono/asíncrono”) USB Universal Serial Bus (“Bus serie universal”) VCD Volts corriente directa Wi-Fi Wireless Fidelity (“Fidelidad inalámbrica”)
x
NOMENCLATURA C Capacitor CPIN Capacitancia de entrada CRETEN Capacitancia de muestreo y retención del DAC E(n) Error en tiempo discreto E(t) Error en tiempo continuo F Frecuencia fc Frecuencia de corte FOSC Frecuencia de oscilador hFE Ganancia de corriente IB Corriente de base IB(max) Corriente máxima de base IB(sat) Corriente de base cuando el transistor esta en saturación IC(max) Corriente máxima de colector IC(sat) Corriente de colector cuando el transistor esta en saturación If Corriente del fotodiodo en polarización directa IFUGA Corriente de fuga en la terminal debido a varias conexiones Imax Corriente máxima KI Ganancia integral KP Ganancia proporcional RIC Resistencia de interconexión R Resistencia Rs Impedancia de la fuente Rss Impedancia del interruptor interno de muestreo SS Interruptor de muestreo TACQ Tiempo mínimo de adquisición TAMP Tiempo de establecimiento del amplificador TC Tiempo de carga del capacitor de retención TCOFF Coeficiente de temperatura TI VAIN Voltaje analógico de entrada VBE(on) Voltaje entre base y emisor cuando el transistor esta en funcionamiento VCC Voltaje de alimentación VCE(on) Voltaje entre colector y emisor cuando el transistor esta en funcionamiento VCE(sat) Voltaje entre colector y emisor cuando el transistor esta en saturación VDD Voltaje del dispositivo Vef Voltaje eficaz Vf Voltaje de diodo en polarización directa Vinst Voltaje instantaneo Vp Voltaje pico VT Voltaje de umbral Δtmax Aumento máximo de temperatura ωc Frecuencia de corte
Diseño y construcción de una tarjeta programable Capítulo 1. Introducción de adquisición, procesamiento de datos y control
1
CAPÍTULO 1. INTRODUCCIÓN
Diseño y construcción de una tarjeta programable Capítulo 1. Introducción de adquisición, procesamiento de datos y control
2
1.1. Antecedentes Los sistemas de adquisición de datos se utilizan cada vez más en laboratorios, industria y educación. Puede ser sólo para la lectura de las variables físicas (presión, nivel, temperatura y flujo por ejemplo), para visualizar el estado de un proceso o bien, para el procesamiento de estas variables con la finalidad de controlar un proceso. Con un sistema de adquisición de datos se puede obtener el valor de las variables físicas. También es posible llevar un registro de los valores de las variables del proceso. Muchos procesos industriales se monitorean y/o controlan con tarjetas de adquisición de datos y una computadora, además de graficadores y de registradores. La mayoría de estas aplicaciones usan módulos de adquisición de datos compatibles con la computadora para adquirir datos y transferirlos directamente a la memoria de la computadora. Estos módulos de adquisición de datos pueden conectarse de forma interna (PCI, PXI) o externa (PCMCIA, USB, IEEE 1394 o RS232) a la computadora por alguno de los puertos disponibles, por ejemplo los que se describen en la sección 1.3.3 de Módulos de adquisición de datos. 1.2. Descripción del problema La mayoría de las tarjetas de adquisición de datos comerciales son de aplicación específica, esto es, operan adquiriendo y enviando información por medio del puerto serie, paralelo, USB o por los puertos ISA y PCI, etc., a una computadora, pero no pueden operar de forma autónoma. El término tarjeta autónoma se refiere a que la tarjeta puede por sí misma (sin necesidad de la computadora), adquirir, procesar, calcular y enviar los valores de las acciones de control para la operación de algún mecanismo o proceso. El término programable a que permite que el programa de control de la tarjeta pueda ser modificado para la aplicación que se deseé monitorear y/o controlar. En el Departamento de Ciencias Computacionales del cenidet se requiere del uso de tarjetas de adquisición de datos que sean capaces de trabajar de forma autónoma para pruebas de interacción con el entorno empleando visión elemental, esto es, empleando sensores digitales; de proximidad, infrarrojos, de color, etcétera. De igual manera en algunos cursos de la Maestría en Mecatrónica se requiere de este tipo de tarjetas para la realización de prácticas. El grupo de visión artificial del cenidet está en condiciones de modelar y solucionar problemas de inspección elemental, pero no ha encontrado una tarjeta comercial de adquisición de datos económica que trabaje de forma autónoma y satisfaga las condiciones necesarias para poder aplicar los algoritmos de control e interactuar con un proceso.
Diseño y construcción de una tarjeta programable Capítulo 1. Introducción de adquisición, procesamiento de datos y control
3
1.3. Estado del arte de sistemas de adquisición, procesamiento de datos y control de procesos
En esta sección se describen los diferentes sistemas empleados sólo para adquisición de datos o bien, para la adquisición, procesamiento de datos y control, así como las partes que los conforman. Se denomina sistema de adquisición de datos al conjunto de elementos empleados para medir una o varias señales analógicas o digitales. Las etapas de un sistema de adquisición, procesamiento de datos y control son:
• Transductores y sensores • Acondicionadores de señal • Módulo de adquisición de datos • Controlador (controlador lógico programable o PLC, computadora, asistente digital
personal, microcontrolador) 1.3.1. Transductores y sensores La adquisición de datos comienza con el fenómeno físico a ser medido. Este fenómeno físico podría ser la temperatura de un recinto, la intensidad de una fuente luminosa, la presión dentro de una cámara, la fuerza aplicada a un objeto, etcétera. Un sistema de adquisición de datos efectivo puede medir todos estos diferentes fenómenos. Un transductor es un dispositivo que convierte de un tipo de energía a otro. El sensor es un transductor que convierte una magnitud física a otra para facilitar su medición, específicamente a una señal eléctrica para módulos de adquisición de datos. La capacidad de un sistema de adquisición de datos para medir diferentes fenómenos depende de los sensores. Los sensores se clasifican de acuerdo al tipo de señal de salida en dos grupos:
• Sensores digitales • Sensores analógicos
Un sensor digital es aquel que entrega una salida del tipo discreta. Los sensores digitales entregan una salida de tipo binaria las cuales poseen dos estados posibles (0 y 1). Los sensores digitales más comunes son:
• Interruptor, botón o pulsador. • Microinterruptor. • Sensores infrarrojos optoacoplados.
o De reflexión. (utilizados para detectar la presencia de objetos) o De ranura. (utilizado en encoders)
Diseño y construcción de una tarjeta programable Capítulo 1. Introducción de adquisición, procesamiento de datos y control
4
Un sensor analógico es aquel que puede entregar una salida variable dentro de un determinado intervalo; por ejemplo, entre 0 y 5 Volts. Los sensores analógicos más comunes son:
• Resistencia variable. • Sensor de temperatura. • Fotorresistencia. (Mide la intensidad de la luz)
1.3.2. Acondicionadores de señales El problema de varios transductores es que generan señales demasiado difíciles o peligrosas de medir directamente con un módulo de adquisición de datos. Por ejemplo, cuando se trabaja con alto voltaje, en ambiente con ruido eléctrico, con señales extremadamente altas o bajas o para la medición simultánea de varias señales. Es por esto que es necesario acondicionarlas para que el módulo de adquisición de datos pueda medirlas con mayor precisión. Este proceso es conocido como acondicionamiento de señales e incluye funciones como amplificación, atenuación, filtrado, aislamiento eléctrico y multiplexeo. 1.3.3. Módulos de adquisición de datos La mayoría de los módulos de adquisición de datos tienen entradas, tanto analógicas como digitales y funcionan solamente con conexión a la computadora. Estos módulos operan únicamente en lazo abierto para el monitoreo de variables. Otros módulos con conexión a la computadora tienen tanto entradas como salidas (analógicas y digitales). Éstas no pueden ser programadas para calcular una acción de control. La activación de las salidas depende de las acciones de control provenientes de la computadora. Ver figura 1.1.
Figura 1.1 Módulo de adquisición de datos.
Algunos equipos pueden estar monitoreando las variables de un proceso y guardar los datos en una memoria de tipo Flash, poder sustituir esta memoria y conectarla en una computadora para descargar los datos almacenados.
Señales
enviadas a la PC
Señales
recibidasdesde la
PC
Señales de entrada
Señales de salida
Acondicionamiento de señales
Diseño y construcción de una tarjeta programable Capítulo 1. Introducción de adquisición, procesamiento de datos y control
5
Otros equipos de adquisición de datos pueden aplicar un procesamiento matemático a una señal de entrada (por ejemplo la transformada rápida de Fourier) pero esta característica es programada de fábrica y sólo puede ser configurada. Un sistema de adquisición, procesamiento de datos y control tiene: entradas y salidas (tanto analógicas como digitales), conexión opcional a un controlador y esencialmente cuenta con un controlador interno que permite el procesamiento de los datos de entrada y tomar decisiones sin la necesidad de un controlador externo. Ver figura 1.2.
Figura 1.2 Diagrama a bloques de un sistema de adquisición, procesamiento de datos y control.
Respecto a los módulos de adquisición de datos, éstos pueden clasificarse en dos grandes grupos: las tarjetas internas, conectadas internamente a un bus de una computadora como el bus PCI; y los módulos externos, que se conectan a la computadora por medio de un puerto de comunicación como el puerto paralelo, el puerto serie RS232, el puerto Firewire y el puerto USB, el cual es el más usado actualmente. Actualmente, las tarjetas de adquisición de datos se aplican en la industria, existen varias empresas que se dedican a la fabricación de dichas tarjetas en una amplia variedad de características y precios. Las características más importantes de las tarjetas de adquisición de datos son:
Tabla 1.1 Características más importantes de las tarjetas de adquisición de datos.
Número de entradas/salidas Cantidad de entradas/salidas disponibles. Tipo de entradas/salidas La señal que procesa puede ser analógica o digital. Resolución Valor mínimo que puede identificarse de una señal
analógica. Intervalo Los niveles de voltaje o corriente permitidos en la
entrada/salida. Frecuencia de muestreo La cantidad de muestras adquiridas en un segundo. Puerto de conexión El puerto por el que la tarjeta se conecta a la PC o a otra
tarjeta.
Opto acopla dores
Controlador interno
Señales
enviadas a la PC
Señales
recibidasdesde la
PC
Opto acopla dores
Acondicionamiento
de señales de
entrada
Señales de salida
Diseño y construcción de una tarjeta programable Capítulo 1. Introducción de adquisición, procesamiento de datos y control
6
En la tabla 1.2 se muestran algunas tarjetas comerciales de adquisición de datos.
Tabla 1.2 Sistemas comerciales de adquisición de datos. D
I710
9-36
--
Tarje
ta S
D
rem
ovib
le
1MB
– 1
GB
16
14
4,80
0
± 10
--
-- 8
0 a
5
USB
/E
THER
NET
$540
0 a
$870
0
DA
TAQ
In
stru
men
ts
DI-
148U
USB
--
-- 8 10
14,4
00
± 10
--
-- 6
0 a
5
USB
$550
DA
TAQ
In
stru
men
ts
DI-
158
USB
--
-- 4 12
14,4
00
± 10
2 12
4
0 a
5
USB
$1,1
00
DA
TAQ
In
stru
men
ts
DI-
154R
S
RS2
32
--
-- 4 12
240
± 10
--
--
--
--
RS2
32
$1,6
50
DA
TAQ
In
stru
men
ts
DI-
194R
S
RS2
32
--
-- 4 10
240
± 10
--
--
--
--
RS2
32
$300
DA
TAQ
In
stru
men
ts
DT9
810
USB
--
-- 8 10
25,0
00
0 a
2.44
--
--
20
0 a
5
USB
$1,6
00
Dat
a Tr
ansl
atio
n
USB
-600
9
USB
--
-- 8 14
48,0
00
±1 a
±20
2 12
12
0 a
5
USB
$2,7
00
Nat
iona
l In
stru
men
ts
USB
-600
8
USB
--
-- 8 12
10,0
00
±1 a
±20
2 12
12
0 a
5
USB
$1,6
00
Nat
iona
l In
stru
men
ts
Vol
taje
de
alim
enta
ción
(V
)
Mem
oria
de
prog
ram
a
(KB
ytes
)
Mem
oria
de
dato
s
Entra
das a
naló
gica
s
Res
oluc
ión
de e
ntra
da
(bits
)
Frec
uenc
ia d
e m
uest
reo
(mue
stra
s /se
gund
o)
Inte
rval
o de
ent
rada
(V)
Salid
as a
naló
gica
s
Res
oluc
ión
de sa
lida
(bits
)
E/S
digi
tale
s
Inte
rval
o de
salid
a (V
)
Puer
to d
e co
mun
icac
ión
con
PC
Prec
io (p
esos
mex
ican
os)
Fabr
ican
te
T.P.
Tar
jeta
pro
gram
able
--
No
tiene
Diseño y construcción de una tarjeta programable Capítulo 1. Introducción de adquisición, procesamiento de datos y control
7
1.3.4. Controladores Las funciones del controlador de un sistema de adquisición de datos son:
• Visualizar las variables provenientes de los sensores. • Procesar las señales de entrada. • Calcular una acción de control. • Registrar y/o graficar las señales de entrada.
Los principales controladores para sistemas de adquisición de datos son:
• Controlador lógico programable (PLC) • Computadora • Asistente digital personal (PDA) • Microcontroladores
1.3.4.1. Puertos para los módulos de adquisición de datos Los módulos de adquisición de datos pueden utilizar uno o varios puertos para comunicarse con un controlador o con otros dispositivos. En términos de computación, un puerto es una forma genérica de denominar a una interfaz por la cual diferentes tipos de datos pueden ser enviados y recibidos. La interfaz puede ser física o a nivel software (por ejemplo, los puertos que permiten la transmisión de datos entre diferentes computadoras). En la tabla 1.3 se muestran los puertos disponibles ordenados por medio de transmisión (alámbrico o inalámbrico), tipo de transmisión (paralelo o serie) y velocidad de transmisión.
Diseño y construcción de una tarjeta programable Capítulo 1. Introducción de adquisición, procesamiento de datos y control
8
Tabla 1.3 Comparación de puertos de comunicación. [1]
Puerto Formato Número
máximo de dispositivos
Longitud máxima
(m)
Velocidad máxima (bits/s)
Aplicación típica
LPT Paralelo 2 3-9 8M Impresoras, escaners, unidades de disco
IEEE-488 (GPIB) Paralelo 15 18 8M Instrumentación
RS-232 (EIA/TIA-232
Serial asíncrono 2 15-30
20k (115k con hardware
extra)
Modem, ratón, instrumentación
MIDI Lazo de corriente serial 2 15 31.5k Música, control de
espectáculos
Microwire Serial síncrono 8 3 2M Comunicación entre microcontroladores
SPI Serial síncrono 8 3 2.1M Comunicación entre microcontroladores
I2C Serial síncrono 40 5.5 3.4M Comunicación entre microcontroladores
USB Serial asíncrono 127 5 1.5M, 12M,
480M
Ratón, unidad de disco, modem, audio
RS485 (TIA/EIA-485)
Serial asíncrono
32 cargas unitarias 1220 10M
Sistemas de adquisición de datos y de control
Ethernet Serial 1024 490 10M/100M/1G PC en red IEEE-1394 (FireWire)
Serial 64 4.5 400M Video, almacenamiento masivo
IrDA Serial asíncrono infrarrojo
2 1.8 115k Impresoras, asistente digital personal (PDA)
Bluetooth Serial radiofrecuencia 32 10 723k
Teléfonos celulares, PDAs, videocámara
Wi-Fi (IEEE 802.11x)
Serial radiofrecuencia 60 11M, 54M PC en red
Diseño y construcción de una tarjeta programable Capítulo 1. Introducción de adquisición, procesamiento de datos y control
9
1.4. Propuesta de solución Con la finalidad de resolver problemas tanto de adquisición de datos y para controlar diversos procesos con un solo módulo se planteó:
• Diseñar y construir una tarjeta programable de adquisición, procesamiento de datos y control que funcione de manera autónoma con base en un programa contenido en un microcontrolador, y que pueda controlar una amplia variedad de procesos. Gracias a las características propias del microcontrolador, los puertos digitales de la tarjeta podrán configurarse por software de acuerdo a las necesidades de un proceso determinado.
• Desarrollar los programas necesarios para la interacción del microcontrolador con
los demás componentes de la tarjeta, la adquisición, procesamiento de los datos, el cálculo de los valores de la acción de control y el envío de estos valores para el control de procesos específicos.
1.4.1. Objetivos 1.4.1.1. Objetivo general
• Diseñar y construir una tarjeta programable y autónoma de adquisición, procesamiento de datos y control, con opción de conexión a la computadora o a otra tarjeta similar.
1.4.1.2. Objetivos específicos
• Revisar y seleccionar el microcontrolador a utilizar. • Revisar y seleccionar el protocolo de comunicación con la PC de acuerdo a los
requerimientos de la tarjeta. • Diseñar los diagramas electrónicos de la tarjeta programable de adquisición,
procesamiento de datos y control. • Realizar el programa de monitoreo y control de la tarjeta programable de
adquisición, procesamiento de datos y control. • Construir la tarjeta programable de adquisición, procesamiento de datos y control. • Verificar el funcionamiento y la versatilidad de la tarjeta controlando tres procesos
diferentes. 1.4.2. Metodología de solución
1. Revisar, estudiar y analizar el estado del arte y de la práctica en torno a la adquisición y control A/D. Así como de los protocolos estándar de comunicación a la PC.
2. Estudiar y conocer los diferentes tipos de microcontroladores existentes en el mercado, su uso, funcionalidad y aplicabilidad en el desarrollo del proyecto.
3. Diseñar e implementar los circuitos electrónicos para la tarjeta, y de ser necesario, también de los dispositivos sensores.
Diseño y construcción de una tarjeta programable Capítulo 1. Introducción de adquisición, procesamiento de datos y control
10
4. Diseñar e implementar el software para el control y monitoreo de las entradas y salidas de la tarjeta.
5. Diseñar un plan de pruebas y realizar las pruebas con diferentes configuraciones de la tarjeta (conectado a la PC y en forma autónoma).
6. Evaluar el funcionamiento global de la herramienta. 7. Aplicar ajustes a la herramienta en caso de que los resultados no sean los esperados.
1.4.3. Aportación o contribución Se empezará en la Coordinación de Mecatrónica del cenidet a desarrollar una tecnología propia de tarjetas programables. Se contará con una tarjeta programable de adquisición, procesamiento de datos y control, económica (no más de $ 1,200 de costo de componentes), fácil de programar (en lenguaje C) y documentada, para aplicaciones a nivel laboratorio, para la realización de prácticas en los Departamentos de Electrónica y ciencias computacionales y la Coordinación de Mecatrónica. Se usará como base para el desarrollo de trabajos de la coordinación de Mecatrónica y con el grupo de visión artificial del Departamento de Ciencias Computacionales del cenidet. 1.5. Organización de la tesis La tesis se encuentra dividida en 7 capítulos distribuidos de la siguiente manera: En el capítulo 1 se encuentran los antecedentes, la descripción del problema, el estado del arte de sistemas de adquisición de datos y control, la propuesta de solución con los objetivos y la metodología de trabajo. El capítulo 2 describe las necesidades de las plantas de muestra consideradas para el desarrollo de la tarjeta programable, además de la descripción funcional de módulos deseables en la tarjeta. El capítulo 3 abarca el diseño electrónico de la tarjeta donde se describen los circuitos electrónicos que conforman la tarjeta programable. El capítulo 4 consta de la construcción, ensamble y pruebas de las tarjetas de circuito impreso. En el capítulo 5 se describe el diseño mecánico y eléctrico, construcción y algoritmo de control de cada una de las plantas a controlar. El capítulo 6 muestra la experimentación y los resultados obtenidos de la aplicación de la tarjeta programable controlando 3 plantas. El capítulo 7 presenta las conclusiones de la elaboración del presente proyecto de tesis.
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
11
CAPÍTULO 2. DETERMINACIÓN DE LAS CARACTERÍSTICAS FUNCIONALES DE
LA TARJETA PROGRAMABLE
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
12
2.1. Recursos requeridos por plantas o procesos
La especificación de la tarjeta programable y la selección del microcontrolador se definieron de acuerdo a los requerimientos de cinco plantas o procesos típicos a controlar. Las plantas que se consideraron son: una incubadora, una banda transportadora, un microbot seguidor de línea, una plataforma de paneles solares y un brazo robótico. Los recursos requeridos por las plantas se indican en la tabla 2.1.
Tabla 2.1 Recursos requeridos por plantas o procesos.
Planta o proceso
Recursos Incubadora Banda
transportadora Microbot Plataforma de paneles solares
Brazo robótico
Tipo de proceso SISO MIMO MIMO MIMO MIMO
Valor máximo + 10%
Analógicas 1 - 3 - - 4 Entradas Digitales - 2 3 13 8 14 Digitales 1 - - - - 1 Motor paso a paso - - 2 - - 3 Salidas Motor CD (PWM) - 2 - 2 4 5
Tiempo de respuesta requerido (segundos) 2 0.5 0.5 1 1E-05 1E-06
Precisión en entradas analógicas ± 1 % - - - - ± 0.5 %
Memoria de programa (Bytes) 90 150 300 1500 6000 8000
Al valor máximo de cada requerimiento se le agregó aproximadamente un 10 % adicional para tener un margen de seguridad y obtener las características preliminares de la tarjeta programable. 2.2. Microcontroladores y controladores de señal digital En la presente sección se describen los principales microcontroladores utilizados en México, además de los nuevos controladores con características tanto de microcontroladores como de procesadores de señal digital (DSP). Estos dispositivos se consideran más aptos para la solución del problema por sus destacables características de funcionamiento además de pertenecer a los principales distribuidores de componentes electrónicos en México. 2.2.1. Microcontroladores Los sistemas de control embebidos más pequeños usan microcontroladores como su procesador, con la ventaja de que éstos incorporan componentes que tienen la funcionalidad de una computadora en un circuito integrado. Un microcontrolador está constituido por una Unidad Central de Procesamiento (CPU), una pequeña cantidad de memoria interna (ROM y/o RAM), y una forma de entradas y salidas (E/S), las cuales están implementadas como subsistemas. Estos subsistemas proporcionan la funcionalidad adicional para el procesador y son comunes entre varios procesadores.
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
13
Las E/S más comunes son de tipo digital. Estas se agrupan en puertos y pueden ser configuradas por software como entrada o salida. Las terminales configuradas como entradas pueden ser usadas para leer el estado de interruptores, botones pulsadores o de otro dispositivo. Las terminales configuradas como salidas pueden ser utilizadas para encender o apagar dispositivos externos o transmitir estados a otro dispositivo. Varios microcontroladores tienen otros subsistemas además de las E/S digitales, pero si no se requiere la funcionalidad de dichos subsistemas se proporciona la capacidad de convertir las terminales de éstos a E/S digitales. Para un diseñador de sistemas, esto da gran versatilidad en como usar un microcontrolador dentro de una aplicación. Varios microcontroladores tienen además entradas analógicas, lo que permite muestrear sensores para propósitos de monitoreo o registro. Algunos tienen puertos seriales que les permiten ser comunicados con una computadora u otro microcontrolador. Las formas estandarizadas de interfaz serial, como la Interfaz Periférica Serial (Serial Peripheral Interface o SPI) y la Interconexión de Circuitos Integrados (Inter-Integrated Circuit o I2C), proporcionan una manera sencilla de expandir la funcionalidad del microcontrolador. La mayoría de microcontroladores tienen temporizadores y contadores. Éstos pueden ser usados para generar interrupciones internas a intervalos regulares, para generar disparos a dispositivos externos al microcontrolador o para proporcionar pulsos de control para motores. Alternativamente pueden ser usados para contar disparos externos (pulsos) de otro dispositivo. La mezcla de subsistemas de E/S que tienen los microcontroladores puede variar considerablemente. Algunos microcontroladores están dirigidos para control digital simple y pueden tener solamente E/S digitales. Otros pueden estar dirigidos a aplicaciones industriales y pueden tener E/S digitales, entradas analógicas, control de motores y comunicación con otros dispositivos de control. La selección de un microcontrolador (ya que hay literalmente miles de familias disponibles de varios fabricantes) depende de las necesidades de procesamiento y los requerimientos de comunicación. Los microcontroladores más comunes en México son los PIC de Microchip, los 68HCxx de Motorola, los COP8 de National y los AVR de Atmel, que son los que se presentan en la tabla 2.2.
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
14
Tabla 2.2 Características técnicas de los microcontroladores.
TI (D
SP)
TMS3
20LF
2407
40 M
Hz
32 K
2.5
K
X
41
X
X
2 de
16
bits
3.3
V
16 c
anal
es d
e 10
bi
ts
PGE
144
term
inal
es
25 n
s
C
Cod
e C
ompo
ser
Stud
io
$ 26
7.00
AG
ele
ctró
nica
--
--
Mot
orol
a M
C68
HC
12
8 M
Hz
32 K
1 K
768
110
63
X
X
-0.3
– 6
.5 V
8 ca
nale
s de
10 b
its
QFP
80
term
inal
es
Ensa
mbl
ador
MC
Uez
$ 28
7.00
AG
el
ectró
nica
--
--
Mot
orol
a M
C68
HC
11A
8
3 M
Hz
256
8 K
512
145
38
X
X
1 de
8 b
its
-0.3
– 7
V
8 ca
nale
s de
8 bi
ts
QFP
64
term
inal
es
Ensa
mbl
ador
MC
Uez
$ 13
6.00
AG
ele
ctró
nica
--
--
Mic
roch
ip
dsPI
C30
F
20-3
0 M
Hz
12 K
- 48
K
1 K
– 2
K
1 K
84
20 -
30
X
X
3 de
16
bits
4.5
– 5.
5 V
8 ca
nale
s de
12 b
its
DIP
18
– 28
–
40
33.3
– 5
0 ns
C
MPL
AB
$ 14
2.00
Mic
roch
ip
.com
--
Mic
roch
ip
PIC
16C
765
24 M
Hz
8 K
256
X
35
33
X
X
2 de
8 b
its
1 de
16
bits
4.35
– 5
.25
V
8 ca
nale
s de
8 bi
ts
TQFP
44
term
inal
es
C
MPL
AB
$ 25
1.00
AG
el
ectró
nica
--
--
Atm
el
ATm
ega1
03
6MH
z
128
K
4 K
4 K
121
32
8 8 2 de
8 b
its
1 de
16
bits
4.0
– 5.
5 V
8 ca
nale
s de
10 b
its
TQFP
64
term
inal
es
160
ns
C
AV
RSt
udio
Mou
ser.c
om
--
--
Mic
roch
ip
PIC
16F8
77
20 M
Hz
8 K
368
256
35
33
X
X
2 de
8 b
its
1 de
16
bits
2.0
– 5.
5 V
8 ca
nale
s de
10 b
its
PDIP
40
term
inal
es
200
ns
C
MPL
AB
$ 78
.00
AG
el
ectró
nica
ST
ST7L
ite 0
16 M
Hz
1 K
128
128
63
13
5 de
13
X
1 de
8 b
its
1 de
12
bits
2.4
– 5.
5 V
5 ca
nale
s de
8 bi
ts
DIP
16
term
inal
es
Ensa
mbl
ado
r $ 23
.50
Mou
ser
.com
--
--
Atm
el
ATt
iny2
8
4 M
Hz
2 K
X
X
90
11
8 1 1 de
8 b
its
2.7
– 5.
5 V
X
PDIP
28
term
inal
es
250
ns
C
AV
RSt
udio
$ 16
.50
Mou
ser
.com
--
--
Mic
roch
ip
PIC
16F8
4
10 M
Hz
1 K
68
64
35
13
X
X
1 de
8 b
its
2.0
– 6.
0 V
X
PDIP
18
term
inal
es
400
ns
C
MPL
AB
$ 63
.00
AG
el
ectró
nica
Car
acte
rístic
as
Máx
ima
fr
ecue
ncia
de
oper
ació
n M
emor
ia d
e pr
ogra
ma
Mem
oria
de
dato
s M
emor
ia
EEPR
OM
Ju
ego
de
inst
rucc
ione
s Te
rmin
ales
ES
prog
ram
able
s
Term
inal
es E
Term
inal
es S
Con
tado
r/ te
mpo
rizad
or
Vol
taje
de
o per
ació
n
AD
C –
bits
Enca
psul
ado
Tiem
po d
e ci
clo
de in
stru
cció
n
Com
pila
dore
s
Her
ram
ient
a de
pr
ogra
mac
ión
Cos
to μ
C
Prov
eedo
r
Info
rmac
ión
Expe
rienc
ia d
e lo
s tes
ista
s
Niv
eles
:
-- N
ingu
na
Baj
o
R
egul
ar
A
lto
Cam
bio
de d
ólar
= $
10.
30. P
reci
os si
n IV
A
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
15
2.2.1.1. National COP8 El microcontrolador COP8 es un circuito integrado fabricado por National Semiconductor. Las siglas COP8 se refieren a un Procesador Orientado al Control de 8 bits. La familia del COP8 se divide en cuatro grandes grupos que son:
• Familia Básica en Máscara ROM • Familia Característica en Máscara ROM • Familia OTP • Familia S
La familia que interesa es la familia S subfamilia SB/CB porque es la única que posee memoria de programa tipo Flash. Hasta el momento sólo hay versiones de 32 kbytes en Flash y con conversor analógico a digital (ADC) (COP8CB) y sin ADC (COP8SB). Los encapsulados son de tipo PLCC (Plastic-Leaded Chip Carrier, encapsulado de montaje superficial para circuito integrado) de 44 y 68 terminales. Esta familia del COP8 pertenece al núcleo de la familia característica de alta escala de integración. La característica particular del COP8CB es el comportamiento de la memoria FLASH, ya que puede actuar como memoria virtual EEPROM (es decir, desde el programa de usuario puede grabar datos en la misma memoria). Aunado a esta característica se tiene una unidad de conversión analógica-digital (COP8CB), temporizadores de alta velocidad, ocho puertos, unidad de comunicación serial USART (transmisión y recepción síncrona y asíncrona universal) y reinicio por bajo voltaje de alimentación. Se temporiza con cristales de hasta 20MHz y es ISP (In System Programming, se puede programar el microcontrolador en circuito). [2] 2.2.1.2. Microchip PIC A finales de los 70’s, General Instruments tenía un procesador de 16 bits conocido como CP1600. Éste era grande y pasó al olvido perdiendo terreno frente al 8086 de Intel y el 68000 de Motorola. El problema con el CP1600 fue que tenía capacidad de E/S limitada, y entonces General Instruments diseñó un procesador más pequeño para actuar como un controlador de E/S. La idea era que este controlador podía proporcionar no solamente las E/S para el CP1600, sino que además ser un procesador permitiendo proporcionar algún grado de control inteligente. Este procesador fue llamado Controlador de Interfaz Periférica (Peripheral Interface Controller) o PIC. El CP1600 desapareció pero la pequeña compañía existe. A mediados de los 80’s, la división de microelectrónica de General Instruments se convirtió en Microchip y el procesador PIC fue su producto central. Los PICs son ampliamente usados en los controles de la consola de juegos Playstation de Sony, juguetes infantiles, aparatos domésticos y sistemas industriales. La arquitectura original del PIC tiene solamente un acumulador (conocido como registro de trabajo o registro w) y de 25 a 368 bytes de RAM en los procesadores originales. El byte
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
16
menos significativo del contador de programa, el registro de estado y varios registros de control están ubicados en la parte baja del espacio RAM y pueden ser accesados por operaciones de movimiento de memoria. La parte superior de la memoria RAM es para datos. Microchip se refiere al espacio RAM como “registros” aunque tienen funcionalidad limitada como registros reales. Son principalmente para almacenamiento de datos. Aparte de algunas excepciones, el PIC no tiene buses externos y es una computadora contenida dentro de un circuito integrado. La expansión es posible usando las interfases periféricas del microcontrolador (SPI e I2C) o los puertos digitales de E/S. El PIC se destaca de otros microcontroladores para aplicaciones en las que el tamaño y el consumo de potencia son críticos. El PIC es de tipo RISC, es decir, está basado en un conjunto reducido de instrucciones. La arquitectura es Harvard, en la cual el programa y los datos se encuentran en memorias independientes. La memoria de datos es de 8 bits, mientras que la memoria de código es de 12 o 16 bits dependiendo de la familia de PIC. [3] El conjunto de microcontroladores PIC se distribuye en cuatro familias [4]:
• Básica (PIC12C5xx y PIC16C5x) • Media (PIC12C6xx y PIC16Cxx) • Alta (PIC17Cxxx) • Mejorada (PIC18Cxxx)
El ambiente de desarrollo de software de Microchip (MPLAB) proporciona un ensamblador, un simulador y software para grabar el código en los microcontroladores. MPLAB puede descargarse gratuitamente del sitio Web de Microchip (http://www.microchip.com). Existen varios compiladores del lenguaje C comerciales (CCS, PICC, C18) para los PIC de los que pueden encontrarse versiones de demostración en la página oficial de cada compilador. 2.2.1.3. Atmel AVR El AVR fue desarrollado en Noruega y es producido por ATMEL. Es un microcontrolador RISC con arquitectura Harvard diseñado para una rápida ejecución y un bajo consumo de potencia. Tiene 32 registros de 8 bits de propósito general y con 118 instrucciones provee un ambiente de programación versátil. En muchos AVRs, la pila se encuentra en la memoria general. Puede entonces ser manipulada por instrucciones y no tiene límite de tamaño. El AVR tiene los espacios de memoria de programa y datos separados y soporta un espacio de dirección de hasta 8M. [3]
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
17
Hay tres familias básicas dentro de la arquitectura AVR:
• ATtiny, para aplicaciones de pequeña escala. • AT90xxxx, que es la familia original. • ATmega, para aplicaciones complejas.
Para el desarrollo de software, se dispone de un puerto de gcc (compilador de C desarrollado en el proyecto GNU) para el AVR. ATMEL proporciona un ensamblador, un simulador y software para grabar los programas en los microcontroladores. El software de ATMEL se puede descargar gratuitamente en su sitio Web (http://www.atmel.com). 2.2.1.4. Motorola HC11 / HC912 El HCMOS MC68HC11A8 es un microcontrolador de 8 bits con capacidades periféricas integradas altamente sofisticadas. Un diseño completamente estático y un proceso de fabricación de semiconductor oxido-metal complementario de alta densidad (High-density Complementary Metal-Oxide Semiconductor o HCMOS) permiten dispositivos de serie E para operar en frecuencias de 3 MHz a corriente directa, con bajo consumo de potencia. La tecnología CMOS de alta densidad utilizada en el MC68HC11A8 combina el menor tamaño y mayores velocidades con baja potencia y alta inmunidad al ruido de CMOS. Los sistemas de memoria integrados incluyen 8 Kbytes de ROM, 512 bytes de EEPROM y 256 bytes de RAM estática. Más funciones periféricas están dentro del chip. Se incluye un conversor analógico a digital de 8 canales con resolución de 8 bits, además de una interfaz de comunicación serial asíncrona (SCI) y una interfaz periférica serial síncrona (SPI). El sistema temporizador principal de 16 bits tiene tres líneas de entrada de captura, cinco líneas de salida de comparación y una función de interrupción de tiempo real. Un subsistema acumulador de pulsos de 8 bits puede contar eventos externos o medir periodos externos. La circuitería de auto monitoreo está incluida en el circuito integrado para proteger contra errores del sistema. Un sistema de perro guardián (watchdog) de operación apropiada protege contra fallas por software. Un sistema de monitoreo de reloj genera un reinicio al sistema en caso de que se pierda la señal de reloj o se ejecute demasiado lento. Se dispone de dos modos de operación controlados por software, WAIT y STOP, para ahorrar energía. [5] El MC68HC912 es un microcontrolador de 16 bits compuesto de periféricos estándares dentro del chip. El bus externo multiplexado puede operar en modo reducido de 8 bits para interconectar con una memoria de 8 bits en sistemas de menor costo. [6]
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
18
2.2.2. Controladores de señal digital En la actualidad cada vez más se empieza a desarrollar la tecnología mezclada entre microprocesadores y DSP's. Diversas son las razones para que se produzca esta integración, sin embargo, es posible identificar una en particular: los requerimientos de control en tiempo real bajo condiciones cada vez más exigentes en cuanto a necesidad de cálculo han llevado a los fabricantes de microcontroladores (Microchip, ST, etc.) a integrar a sus microprocesadores características de DSP (unidades de cálculo paralelas, ejecución paralela de instrucciones o pipeline, etc.) y por el otro lado los fabricantes de DSP's (Texas Instruments, Motorola, etc.) empiezan a utilizar las características de microcontroladores (conversores A/D, puertos digitales E/S, bloques de modulación por ancho de pulso o PWM) integrándolas dentro del DSP. Estos nuevos dispositivos son nombrados controladores de señal digital. Un controlador de señal digital (Digital Signal Controller o DSC) es un controlador incrustado en un solo chip que integra los atributos de control de un microcontrolador con la eficiencia y rendimiento computacional de un procesador de señal digital. 2.2.2.1. Texas Instruments C2000 La plataforma TMS320C2000 de controladores de señal digital establece el estándar de desempeño e integración periférica ofreciendo una combinación única de tecnología líder en DSPs de Texas Instruments con la integración de periféricos y facilidad de uso de microcontroladores. La familia TMS320C24x de controladores de señal digital ofrece de 20 a 40 MIPS de desempeño DSP junto con el control y facilidad de uso de un microcontrolador con memoria Flash o ROM integrada y son ideales para implementar algoritmos de control sofisticados en aplicaciones sensibles de costo y limitados de espacio como productos de línea blanca. Al igual que el C28x, el C24x ofrece seguridad total de código para su propiedad de código intelectual. El conjunto de instrucciones de un ciclo permite calcular funciones matemáticas complejas en tiempo real mientras que la arquitectura Harvard optimiza la matemática vectorial, ideal para aplicaciones de control embebido. La arquitectura avanzada tipo Harvard del controlador C24x maximiza la potencia de procesamiento manteniendo dos estructuras de bus de memoria separadas, programa y datos, para ejecución a velocidad completa. Esta múltiple estructura de bus permite la lectura de datos e instrucciones simultáneamente. Las instrucciones soportan transferencia de datos entre los dos espacios. La familia TMS320C28x de controladores de señal digital son los primeros controladores de 32 bits basados en DSP de la industria con memoria Flash o ROM en tarjeta y desempeño hasta de 150 millones de instrucciones por segundo (MIPS). Centrados a motores y controles industriales y aplicaciones automotrices. El núcleo C28x es el núcleo de mayor desempeño de control optimizado y ofrece hasta 150 MIPS de ancho de banda computacional para manejar numerosos algoritmos de control sofisticado en tiempo real como control de velocidad sin sensores, PWM aleatorio y corrección del factor de potencia.
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
19
El C28x es además el núcleo más eficiente de código en la industria y su código es completamente compatible con dispositivos actuales de la familia C2000. [7] Varias características únicas disponibles en el núcleo del controlador C28x fueron desarrolladas junto con el compilador C para ofrecer una excelente relación de C a ensamblador de 1.1. El núcleo del controlador C28x fue diseñado únicamente para soportar la librería “IQ-math” dando al diseñador la comodidad del desarrollo de algoritmos de punto flotante a la perfección combinado con la efectividad de costos de una máquina de punto fijo. En la tabla 2.3 se comparan las dos familias de controladores C2000.
Tabla 2.3 Comparación de familia de controladores C2000.
Parámetro Controladores de punto fijo C24x
Controladores de punto fijo C28x
Unidades
Frecuencia de trabajo 20 – 40 150 MHz Velocidad de procesamientos
20 – 40 150 MIPS
Arquitectura Punto fijo de 16 bits Punto fijo de 32 bits Memoria Flash / ROM 8 – 32 mil / 4 – 32 mil Hasta 128 mil / 4 mil Palabra RAM Hasta 2.5 mil 18 mil Palabra ADC 10 bit, 500 ns 12 bit, 80 ns Periféricos SCI, SPI, CAN SCI, SPI, CAN,
McBSP
Administrador de eventos
Hasta 16 PWM, E/S de propósito general, 4 temporizadores, CAP/QEP
16 PWM, E/S de propósito general, 7 temporizadores, CAP/QEP
Precio (por unidad en la compra de mil unidades)
22.00 – 180.00 64.00 – 182.00 Pesos mexicanos
2.2.2.2. Microchip dsPIC Los controladores de señal digital dsPIC abarcan un amplio campo de requerimientos de desempeño, haciéndolo una arquitectura ideal para cualquier consideración de un microcontrolador de 16 bits, DSP o incluso un microcontrolador de 32 bits. Los dispositivos fueron diseñados para proporcionar un aspecto familiar a los usuarios de microcontroladores, especialmente a los usuarios de microcontroladores PIC. Las características de DSP fueron integradas para facilitar la adopción por los nuevos usuarios de tecnología DSP. Además, la estructura de precio de los dispositivos dsPIC los hace aceptables para aplicaciones de control embebido. Los controladores de señal digital dsPIC fueron planeados desde las bases para proporcionar todas las características que un usuario esperaría de un microcontrolador de 16 bits. Un conjunto rico de instrucciones asociado con amplios modos de
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
20
direccionamiento opera sobre un conjunto de registros de trabajo de propósito general y una pila de software. El resultado es una muy buena eficiencia de compilación en C. Todos los dispositivos usan tecnología de memoria Flash para la memoria de programa y la EEPROM de datos, para ofrecer la máxima flexibilidad en tiempos de ciclos de manufactura. La tecnología de autoprogramación en circuito permite la actualización remota de la memoria de programa y la EEPROM de datos. La alta confiabilidad de la memoria Flash permite una retención de datos por 40 años y hasta un millón de ciclos de grabado y borrado a 85 grados centígrados. Un poderoso conjunto de características DSP permiten un desempeño competitivo. Un multiplicador de 17x17 bits en un solo ciclo, dos acumuladores de 40 bits y un registro de corrimiento cíclico de 40 bits; ciclos de Do y Repeat; redondeo y truncamiento de resultados y soporte de un modo de direccionamiento especial para buffers circulares y transformadas rápidas de Fourier (FFT’s). Además, la arquitectura dsPIC soporta una estructura flexible de procesamiento de interrupciones. Cada dispositivo incluye un extenso conjunto de módulos periféricos, incluyendo temporizadores, subsistemas seriales y canales de convertidor analógico a digital. Algunos dispositivos contienen periféricos avanzados orientados para aplicaciones específicas como control de motores, audio o conectividad a Internet. Por último pero no menos importante, los dispositivos contienen lógica hardware que permite depuración y programación Flash en circuito sin remover el dispositivo de la tarjeta de aplicación. Los dsPICs están disponibles en dos categorías de velocidad: una versión de 20 MIPS y una versión de 30 MIPS. [8] Las familias en las que se dividen los dsPICs son:
• Familia de propósito general. Esta familia es ideal para una amplia variedad de aplicaciones embebidas para microcontroladores de 16 bits. Además, existen variantes con interfases codificadores-decodificadores (codecs) que se ajustan para aplicaciones de audio.
• Familia de control de motores y conversión de potencia. Esta familia soporta aplicaciones de control de motores, como motores de CD sin escobillas, motores de inducción de una y tres fases y motores de reluctancia conmutativa. Son ideales para fuentes ininterrumpidas de poder (UPS), inversores, fuentes de poder conmutativos y corrección del factor de potencia.
• Familia de sensores. Los productos de esta familia tienen opciones diseñadas para soportar aplicaciones de control embebido de bajo costo y alto desempeño. Los encapsulados de 18 y 28 pines son diseñados para ajustarse a aplicaciones de espacio crítico.
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
21
2.2.3. Herramientas de desarrollo Las herramientas de desarrollo son los programadores, emuladores y tarjetas de evaluación para cada microcontrolador. Los programadores son los dispositivos con los que se puede programar el microcontrolador. Los emuladores son herramientas que permiten probar el circuito de control y en donde se puede visualizar la ejecución del programa, detenerlo en alguna línea del código de programa, así como modificar el contenido de memoria de datos. Las tarjetas de evaluación son tarjetas con los circuitos necesarios para que el microcontrolador y sus periféricos funcionen. En cuanto a software, algunos fabricantes proporcionan de forma gratuita un entorno integrado de desarrollo (IDE) el cual consta básicamente de un editor, un compilador y un simulador. El simulador tiene implementadas las funciones que realizaría el microcontrolador de acuerdo al programa y a las condiciones establecidas como son el estado de las terminales del microcontrolador. Algunos fabricantes independientes de los microcontroladores desarrollan programas compiladores de un lenguaje de alto nivel al lenguaje ensamblador del microcontrolador. Buscando mantener la sencillez y economía para la programación de los microcontroladores, se muestran las herramientas de desarrollo disponibles para cada microcontrolador desde algunos que puede armar el usuario hasta los comerciales. Para el microcontrolador COP8 de National Semiconductor, el ambiente de desarrollo es el WCOP8 IDE, y el programador es una interfaz sencilla que se conecta al puerto paralelo de la computadora y utiliza el programa FLASHWIN para cargar el programa al microcontrolador. Este programador utiliza la característica ISP (In System Programming) en donde puede programarse el microcontrolador cuando se encuentra conectado en el circuito de trabajo. La emulación se puede realizar con algunas herramientas comerciales del fabricante como son la unidad de emulador y programación (Emulator and Programming Unit), el módulo de depuración (Debug Module) y el depurador “ICE Master”. Algunas herramientas pueden emular en tiempo real y pueden tanto emular como programar o emular solamente. El ambiente de trabajo utilizado para los microcontroladores PIC de Microchip es el MPLAB IDE, también puede comunicarse y trabajar con los programadores PICStart Plus, MPLAB PM3, PRO MATE II y los emuladores ICD 2, ICE 4000 y ICE 2000; todos estos productos comerciales de Microchip. También existe una diversidad de programadores fáciles de armar que se conectan al puerto paralelo o serie de la computadora. Algunos de estos programadores son el NOPP, el JDM, el PIPO 2, el PP2 y el GTP. Algunos pueden grabar el PIC estando conectado en el circuito de trabajo. Algunos programas que se utilizan con estos programadores son IC PROG, PONY PROG y WinPic 800. Los programas para los microcontroladores AVR de Atmel pueden ser desarrollados en AVRStudio o WinAVR. El programador más sencillo es una interfaz con un buffer de protección conectado al puerto paralelo, este programador es utilizado junto con el AVRStudio. Algunas de las herramientas para emular los AVR’s son ICE 40, ICE 50 y JTAG ICE 2.
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
22
Para realizar la compilación de los programas para el MC68HC11 se utiliza el IASM11, los programas disponibles para simulación son SIM68 para DOS y WOOKIE para Windows. El ambiente de desarrollo MCUeZ sirve para editar y compilar los programas para el MC68HC12. Las tarjetas de evaluación del MC68HC11 y MC68HC12 son sistemas mínimos y pueden conectarse a la computadora para programar dichos microcontroladores por medio del MCUeZ. Existen emuladores comerciales para estos microcontroladores como son BDM Multilink y Ciclone Pro. El Code Composer Studio es el ambiente de desarrollo utilizado para los controladores de señal digital C2000 de Texas Instruments. Utiliza el lenguaje C para la programación de los dispositivos. Estos controladores ya vienen ensamblados en tarjetas de desarrollo o módulos de evaluación donde se pueden conectar a la computadora y programarse directamente. El fabricante vende distintos emuladores que pueden estar conectados en el bus PCI o en el puerto paralelo o USB. Los programas para el controlador dsPIC30F pueden ser editados, ensamblados y simulados en MPLAB IDE de la misma forma que para un PIC. Algunos de los programadores de Microchip pueden grabar los programas a los dsPIC como son MPLAB PM3 y MPLAB ICD 2. Los emuladores para los controladores dsPIC30F son MPLAB ICE 4000 y MPLAB ICD 2. También el fabricante provee un software compilador de lenguaje C para los dsPIC30F que es el C30. Existen otros programas y herramientas de desarrollo fabricadas por empresas distintas a los fabricantes de los microcontroladores. Los productos pueden ser compiladores de lenguaje C o Pascal, simuladores, tarjetas de evaluación, tarjetas de desarrollo, programadores y emuladores específicos para una familia de microcontroladores o solamente para un microcontrolador. 2.3. Proceso de selección del microcontrolador con el que opera la tarjeta
programable La elección de un microcontrolador para una aplicación se dificulta usualmente por la existencia de una enorme variedad de opciones y características de los chips y otros factores de difícil ponderación como son: existencia en el mercado, documentación y apoyo técnico, disponibilidad y costo de las herramientas de desarrollo, conocimiento de otros productos del fabricante, seriedad del proveedor y obtención gratuita de muestras. Los criterios considerados para determinar el microcontrolador a utilizar en la tarjeta son:
1. Frecuencia de operación.- Da una idea de la velocidad de procesamiento del microcontrolador.
2. Número de canales analógicos/digitales de entrada/salida.- Es la cantidad de variables analógicas/digitales de entrada/salida que tiene el microcontrolador.
3. Tamaño de memoria de programa.- La capacidad en kilobytes para almacenar el programa de control.
4. Tamaño de memoria de datos.
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
23
La capacidad en bytes para almacenar datos medidos, datos procesados o valores calculados.
5. Tipo de encapsulado. Sirve para identificar la dimensión y también la disposición de terminales para la realización en circuito impreso.
6. Número de canales analógicos/digitales de entrada/salida. Es la cantidad de variables analógicas/digitales de entrada/salida que tiene el microcontrolador.
7. Interfaz de comunicación. Los estándares que permiten la comunicación de la tarjeta programable con otros dispositivos (como la PC u otra tarjeta similar).
8. Costo. El precio por unidad de microcontrolador.
9. Lenguaje y/o compilador. Lenguaje en el que puede programarse y compiladores el microcontrolador
10. Disponibilidad de herramientas de programación y desarrollo. Facilidad para conseguir o elaborar las herramientas de programación y desarrollo.
11. Costo de herramientas de programación y desarrollo. En las figuras 2.1, 2.2 y 2.3 se pueden comparar con facilidad los microcontroladores de acuerdo a la frecuencia de operación, número de terminales de E/S y memoria de programa que posee cada uno. Se marca con una línea para diferenciar cuáles microcontroladores tienen un valor adecuado para cada parámetro considerado de acuerdo a las necesidades descritas en la columna de valor máximo de la tabla 2.1. Las características principales de los microcontroladores están concentradas en la tabla 2.2.
Figura 2.1 Comparación de microcontroladores en cuanto a frecuencia de operación.
Frecuencia de operación (MHz)
24
120120
4040
2016108643
0
20
40
60
80
100
120
140
MC68HC11
ATtiny2
8
ATmega1
03
MC68HC12
PIC16
F84
ST7Lite
0
PIC16
F877
PIC16
C765
PIC18
F452
TMS320L
F2407
A
dsPIC
30F
dsPIC
30F-B
Frecuencia de operación (MHz)
Requerimiento mínimo
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
24
Figura 2.2 Comparación de microcontroladores en cuanto a número de terminales de E/S.
Figura 2.3 Comparación de microcontroladores en cuanto a memoria de programa.
Numero de E/S
13
38
6368
413333333230
1311
0
10
20
30
40
50
60
70
80
ATtiny2
8
PIC16
F84
ST7Lite
0
dsPIC
30F
ATmega1
03
PIC16
F877
PIC16
C765
PIC18
F452
MC68HC11
TMS320L
F2407
A
MC68HC12
dsPIC
30F-B
Numero de E/S´
´
Requerimiento mínimo
Memoria de programa (KB)
8
32 32
128
144
1 1 2 816
24
10
20
40
60
80
100
120
140
160
PIC16
F84
ST7Lite
0
MC68HC11
ATtiny2
8
PIC16
F877
PIC16
C765
PIC18
F452
dsPIC
30F
MC68HC12
TMS320L
F2407
A
ATmega1
03
dsPIC
30F-B
Memoria de programa (KB)
Requerimiento mínimo
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
25
Para obtener el intervalo de la familia dsPIC30F, se graficaron dos elementos de esta familia, el más austero y el más completo. Los microcontroladores útiles para la mayoría de las plantas o procesos son los que se encuentran en la parte superior de la línea interrumpida de cada una de las tres gráficas anteriores; dichos microcontroladores tienen un costo ligeramente menor al de algunos otros que cuentan con mejores características, por lo que se optó por seleccionar un microcontrolador que ofrezca mayores prestaciones a la tarjeta y con disponibilidad de información y apoyo técnico sin que el costo del microcontrolador varíe significativamente. También se consideró la utilización de nuevas tecnologías para tener referencias de consulta en el CENIDET. Con base en los valores de los criterios anteriormente mencionados, el microcontrolador que se considera idóneo para el desarrollo de este proyecto es de la familia dsPIC30F, ya que proporciona mejores características a la tarjeta sin que la variación del precio sea muy significativo y es una nueva tendencia en cuanto a microcontroladores que están adquiriendo características de procesadores de señal digital (DSP). Se adquirieron los dsPIC30F pero no se consiguió el programador de dsPICs y éstos no se pueden programar con los programadores PICSTART Plus, TE-20 y EPIC. Por consecuencia se seleccionó al PIC18F452 que tiene características cercanas al dsPIC30F como una velocidad de procesamiento de 10 MIPS comparado con 30 MIPS del dsPIC30F además de que se puede adquirir fácilmente al contrario de los dsPIC que no había venta al menudeo en México. En la tabla 2.4 se muestra la comparación del PIC18F452 y la familia dsPIC30F.
Tabla 2.4 Comparación entre el PIC18F452 y el dsPIC30F.
Características PIC18F452 dsPIC30F Memoria de programa Flash 32 KBytes 12 – 144 KBytes Velocidad de procesamiento 10 MIPS 20 o 30 MIPS Número de terminales de entradas/salidas digitales 24 13
Número de terminales de entradas analógicas 5 13
Conjunto de instrucciones optimizado para compilador C
Si Si
Memoria de datos EEPROM 256 Bytes 1 – 4 KBytes Número de instrucciones 75 84
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
26
2.4. Tiempo de procesamiento del microcontrolador del PIC18F452 El microcontrolador PIC18F452 puede funcionar dentro de un intervalo de velocidad el cual depende del circuito oscilador. El tiempo de procesamiento depende de la velocidad de operación. El PIC18F452 puede utilizar un cristal oscilador desde 38 kHZ hasta 25 MHz. El circuito oscilador se muestra en la figura 2.4.
Figura 2.4 Circuito oscilador del microcontrolador
La tabla 2.5 indica el valor de los capacitores cerámicos que se deben emplear de acuerdo al valor de frecuencia del cristal oscilador. El cristal empleado en la tarjeta programable es de 12 MHz, por lo que se emplearon dos capacitores de 22 nF.
Tabla 2.5 Selección de capacitores
MODO FRECUENCIA DEL CRISTAL
(MHz)
C1 (pF)
C2 (pF)
0.032 33 33 LP (Cristal de baja potencia) 0.200 15 15
0.200 22-68 22-68 1 15 15 XT
(Cristal) 4 15 15 4 15 15 8 15-33 15-33
20 15-33 15-33 HS
(Cristal de alta velocidad) 25 15-33 15-33
Esquema de tiempo de ejecución de instrucciones La entrada de la señal de reloj por OSC1 es internamente dividido en cuatro relojes de cuadratura no traslapados, llamados Q1, Q2, Q3 y Q4. Internamente el contador de programa (CP) es incrementado cada pulso de reloj de Q1, la instrucción es buscada en la memoria de programa y almacenada en el registro de instrucción en Q4. La instrucción es codificada y ejecutada en el siguiente ciclo de Q1 a Q4. El flujo de búsqueda y ejecución de la instrucción es mostrado en la figura 2.5.
XTAL
C1
RF
C2 REPOSO
Alógicainterna
OSC2
OSC1
PIC18FXXX
<
>
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
27
Figura 2.5 Flujo de ejecución de instrucciones.
Flujo simultáneo de búsqueda y ejecución de instrucciones (pipelining) Un ciclo de instrucción es el tiempo en el que se ejecuta una instrucción y consta de cuatro ciclos de reloj (Q1, Q2, Q3 Y Q4). Las instrucciones de búsqueda y ejecución son realizadas de tal forma que la búsqueda requiere de un ciclo de instrucción mientras que la decodificación y ejecución requiere de otro. Sin embargo debido a la búsqueda y ejecución simultánea (pipelining), cada instrucción se ejecuta efectivamente en un solo ciclo. Excepcionalmente si una instrucción produce una alteración del incremento normal del contador de programa (por ejemplo GOTO) entonces se requieren dos ciclos para completar la instrucción. Ver figura 2.6.
Figura 2.6 Flujo paralelo de búsqueda/ejecución (pipelining).
2.4.1. Temporizadores del microcontrolador Los temporizadores internos del microcontrolador tienen varias funciones. Pueden ser usados como contadores o como una base de tiempo para otros módulos dentro del microcontrolador. En el caso del microcontrolador PIC18F452, se tienen 4 temporizadores que son:
Tcy0
Tcy1
Tcy3
Tcy2
Tcy4
Tcy5
Buscar inst.1 Ejecutar inst.11 MOVLW 55h
2 MOVWF PORTB
3 GOTO 5
4 BSF PORTA,BIT3 (NOP forzado)
5 BCF PORTB,6
Buscar inst.2 Ejecutar inst.2Buscar inst.3 Ejecutar inst.3
Buscar inst.4 NOP buscar inst.5 Ejecutar inst.5
CP CP+2 CP+4
OSC1
Q1
Q2
Q3
Q4
CP
Ejecuta instrucción (CP-2) y Busca instrucción (CP)
Ejecuta instrucción (CP) y Busca instrucción (CP+2)
Ejecuta instrucción (CP+2) y Busca instrucción (CP+4)
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
28
• El TMR0 es un temporizador/contador de 8/16 bits con preescala programable. Puede configurarse para trabajar con 8 bits o con 16 bits, y seleccionar el flanco ascendente o descendente para aplicaciones como contador de eventos externos.
• El TMR1 es un temporizador/contador de 16 bits. Puede ser utilizado como
contador de eventos externos cada flanco ascendente.
• El TMR2 es un temporizador/contador de 8 bits con un registro de periodo de 8 bits que se utiliza como base de tiempo para la generación de señales de control por modulación de ancho de pulso.
• El TMR3 es un temporizador/contador de 16 bits. También funciona como contador de eventos en el flanco ascendente después del primer flanco descendente.
Todos los temporizadores pueden ser leídos y se puede escribir un nuevo valor en ellos sin importar el valor que tengan previamente. 2.4.2. Modulación de ancho de pulso generada por el microcontrolador La salida del microcontrolador que se utiliza para modulación por ancho de pulso (PWM, Pulse Width Modulation) que es utilizado para control de velocidad de motores de CD. Esta señal esta formada con una base de tiempo (período) y un tiempo en el que la salida permanece en nivel alto (ciclo útil). La salida PWM puede mostrarse en la figura 2.7.
Figura 2.7 Salida PWM.
La señal PWM generada por el microcontrolador PIC18F452 depende principalmente del valor del periodo que se encuentra en el registro PR2, y del valor de ciclo útil que se encuentra en el registro CCPR1L (byte bajo del registro 1 del módulo de captura/comparación/PWM) y los bits 5 y 4 del registro CCP1CON (registro de control del módulo 1 de captura/comparación/PWM). El periodo PWM para el microcontrolador se puede calcular usando la ecuación 2.1:
Periodo PWM = [(PR2)+1] • 4 • TOSC • (Valor de preescala TMR2) (2.1)
La ecuación 2.2 sirve para calcular el ciclo útil de la señal PWM en tiempo:
Ciclo útil PWM = (CCPR1L:CCP1CON<5:4>) • TOSC • (Valor de prescala TMR2) (2.2)
Periodo
Ciclo útil
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
29
Para ambas ecuaciones, el valor de prescala de TMR2 se configura en el registro T2CON (registro de control de TMR2). Para configurar y usar el microcontrolador para las señales de PWM deben de seguirse los siguientes pasos:
1. Establecer el periodo PWM escribiéndolo en el registro PR2. 2. Establecer el ciclo útil del PWM escribiendo el dato correspondiente en el registro
CCPR1L y en los bits 4 y 5 de CCP1CON. 3. Configurar la terminal CCP1 como salida en el bit 2 del registro TRISC. 4. Establecer el valor de prescala del temporizador TMR2 y habilitarlo en el registro
T2CON. 5. Configurar el módulo CCP1 para operar en PWM.
2.4.3. Tiempo de conversión del conversor análogo/digital La precisión de la lectura de sensores de variables analógicas (por ejemplo, sensores de temperatura) está en función de la resolución del convertidor analógico/digital y del tiempo de adquisición. Para que el convertidor A/D alcance su precisión especificada, se debe esperar el tiempo necesario para que se cargue completamente al nivel de voltaje del canal de entrada. El modelo de entrada analógica se muestra en la figura 2.8. La impedancia de la fuente (RS) y la impedancia del interruptor interno de muestreo (RSS) varían de acuerdo al voltaje del dispositivo (VDD). La impedancia de la fuente afecta el voltaje de desplazamiento en la entrada analógica (debido a la corriente de fuga del terminal). La impedancia máxima recomendada para fuentes analógicas es de 2.5 kΩ. Después de seleccionar el canal de entrada analógica, debe realizarse la adquisición antes de que empiece la conversión (debido a que el capacitor de retención es desconectado de la terminal de entrada cuando empieza la conversión).
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
30
Figura 2.8 Modelo de la entrada analógica.
Se puede utilizar la ecuación 2.3 para calcular el tiempo mínimo de adquisición. Esta ecuación supone que se utiliza el error de ½ bit menos significativo o bms (1024 pasos para el conversor A/D). El error de ½ bms es el máximo error permitido por el conversor A/D para alcanzar su resolución específica.
TACQ = TAMP + TC + TCOFF (2.3)
Donde: TACQ = Tiempo mínimo de adquisición. TAMP = Tiempo de establecimiento del amplificador. TC = Tiempo de carga del capacitor de retención. TCOFF = Coeficiente de temperatura. Con la ecuación 2.4 se calcula el tiempo de carga del capacitor de retención para el cálculo del tiempo mínimo de adquisición.
TC = -(120 pF)(1 kΩ + RSS + RS) ln(1/2048) (2.4)
El tiempo de conversión A/D por bit se denomina TAD. La conversión A/D requiere 12 veces el tiempo TAD por cada conversión de 10 bits. Para una correcta conversión A/D, se debe seleccionar el reloj de conversión para asegurar un tiempo mínimo de 1.6 μs.
65432
5 6 7 8 9 10 11
VDD[Volts]
Interruptor de muestreo [kΩ]
donde: VAIN = Voltaje analógico de entrada RS = Impedancia de la fuente CPIN = Capacitancia de entrada. VT = Voltaje de umbral. IFUGA = Corriente de fuga en la terminal
debido a varias conexiones. RIC = Resistencia de interconexión. SS = Interruptor de muestreo. CRETEN = Capacitancia de muestreo y retención
(del DAC).
DD
Rs
PINFUGA
V = 0.6V
V = 0.6VR < 1k SS Rss
RETENVAIN
± 500 mA
ANx
5 pF
SS
Interruptor de muestreo
V
V
T
TIC
CI C = 120 pF
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
31
El resultado de la conversión se guarda en dos registros por ser un dato de 10 bits. Puede configurarse si el resultado guardado se justifica a la izquierda o a la derecha según el estado del bit ADFM. Para iniciar la conversión A/D se deben seguir los siguientes pasos:
1. Configurar el módulo A/D: • Configurar los pines analógicos, las referencias de voltaje y las E/S digitales
(ADCON1). • Seleccionar el canal de entrada analógica (ADCON0). • Seleccionar el reloj de conversión A/D (ADCON0). • Encender el módulo A/D (ADCON0).
2. Configurar la interrupción del conversor A/D (si se desea). 3. Esperar el tiempo requerido de adquisición. 4. Iniciar la conversión:
• Poner a uno el bit GO/DONE del registro (ADCON0). 5. Esperar que se complete la conversión, ya sea por:
• Verificando que el bit GO/DONE se ponga a cero. • Esperar la interrupción del conversor A/D.
6. Leer los registros de resultado del conversor A/D (ADRESH/ADRESL). 7. Para otra conversión, ir al paso 1 o 2 si se requiere cambiar o no el canal del
conversor A/D. Se requiere una espera mínima de 2 TAD antes de iniciar otra conversión.
2.5. Interfases de comunicación La transferencia de información puede realizarse básicamente de dos formas: en serie o en paralelo. En la comunicación serie la información digital viaja por una línea de bit en bit. Esta transmisión puede ser síncrona o asíncrona, es decir, si utiliza una señal de reloj o no durante la transmisión de la información. La gran ventaja de la comunicación serie es su simplicidad y economía al estar implementada por un par de líneas. En la comunicación paralela el transmisor y el receptor están conectados por un bus de datos compuesto por tantas líneas como bits tiene la palabra de trabajo. Típicamente la palabra de trabajo es de 8 bits. La comunicación paralela es más rápida que la serie, sin embargo es compleja y cara debido a que el enlace físico necesita muchas líneas. Además la proximidad entre las líneas la hace muy sensible a la captación y generación de ruidos e interferencias, lo que reduce la distancia entre los dispositivos y la seguridad en el intercambio de datos. Aunque la comunicación serie es básicamente enviar datos digitales sobre una línea de bit en bit, existen varias maneras de hacerlo y el proceso de comprensión entre el transmisor y el receptor puede variar. Esto da lugar a diversas normas y métodos de comunicación serie que son conocidos como protocolos.
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
32
2.5.1. Interfaz de comunicación entre tarjetas El bus IIC (Inter Integrated Circuit) es una red muy barata y efectiva utilizada para interconectar dispositivos periféricos en sistemas embebidos de pequeña escala. También se conoce como I2C y ha existido por más de 20 años. Es equivalente al SPI (Serial Peripheral Interface), pero su operación es un poco diferente. El I2C es un bus de dos líneas en el que se pueden conectar varios dispositivos. El bus es bidireccional, de baja velocidad y sincronizado a un reloj común. Un dispositivo puede ser agregado o retirado del bus I2C en operación sin afectar otros dispositivos. Varios fabricantes como Microchip, Philips e Intel producen microcontroladores con una interfaz I2C integrada. La tasa de datos del bus I2C es 100 kbps en modo estándar y 400 kbps en modo rápido. Las dos líneas usadas para interconectar con el bus I2C son SDA (dato serial) y SCL (reloj serial). Ambas líneas están a drenaje abierto (la terminal de drenaje del MOSFET del dispositivo no esta conectado internamente) por lo que necesitan estar conectadas a una fuente de voltaje positivo por medio de una resistencia (resistencia de pull-up) y entonces permanece en nivel alto cuando no se utiliza. Cada dispositivo conectado al bus I2C tiene una dirección única y puede operar como transmisor (maestro del bus), como receptor (esclavo del bus) o ambos. El bus I2C es de tipo multimaestro, es decir, más de un dispositivo puede asumir el rol de maestro del bus. 2.5.2. Interfaz de comunicación entre la tarjeta y la computadora La interfaz de comunicación seleccionada para comunicar la tarjeta con la computadora es la RS-232C. Esta interfaz serial se ha usado desde los 60’s. El RS-232C se utiliza para intercomunicar dispositivos seriales con cables de longitud de hasta 25 metros. Anteriormente varios periféricos de computadoras tenían interfaz RS-232C. Con la necesidad de transferir grandes cantidades de datos rápidamente, el RS-232C está siendo sustituido como la conexión estándar por el USB o el IEEE 1394. Sin embargo, todavía es un puerto de comunicación útil y sencillo para sistemas embebidos. La mayoría de los microcontroladores poseen una unidad USART en su arquitectura, éste es un circuito que se encarga de convertir la información paralela del microcontrolador a información serie para el periférico o dispositivo con el que se está comunicando y viceversa. La pieza faltante para la interfaz RS-232C es un circuito que convierta la transmisión serial de y hacia los niveles RS-232C, ya que esta interfaz trabaja con niveles de ±5 a ±15 VCD. El circuito integrado MAX232 es el encargado de adaptar los niveles lógicos a RS-232C.
Diseño y construcción de una tarjeta programable Capítulo 2. Determinación de las características de adquisición, procesamiento de datos y control funcionales de la tarjeta programable
33
2.6. Descripción de la tarjeta programable de adquisición, procesamiento de datos
y control Las características de la tarjeta programable se muestran en la tabla 2.6.
Tabla 2.6 Especificación de la tarjeta programable
Característica Cantidad Tipo Intervalo Unidad De programa 32 Kbytes Memoria De datos 1 MBytes 4 Analógicas 0-5 V 16(1) Digitales 0,5 V Entradas 1 Corriente 4-20 mA 16(1) Digitales 0,5 V 8 Potencia 0-20(2) V Salidas 1 Corriente 4-20 mA
Frecuencia de muestreo 13800 Muestreos/ segundo
Resolución AD 10 Bits Precisión máxima AD 0.1 % Tiempo de ciclo de instrucción 100(3) ns
Alimentación ±15 V Consumo máximo 150 mA
Compilador -Ensamblador -C
Puerto de comunicación con PC RS232
Puerto de comunicación (tarjeta/periféricos) I2C
Periféricos 1 Pantalla LCD Intervalo de temperatura de operación 0-50(4) °C
Nota: (1) Físicamente son las mismas terminales, pero se pueden configurar mediante programación para que sean entradas ó salidas.
(2) El voltaje de la salida de potencia depende de la fuente de alimentación conectada en el conector de voltaje externo de la tarjeta programable.
(3) Depende de la frecuencia de operación del microcontrolador. (4) Estimación con base en las especificaciones del componente más sensible a la
temperatura.
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
34
CAPÍTULO 3. DISEÑO ELECTRÓNICO DE LA TARJETA
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
35
3.1. Descripción a bloques de la tarjeta programable La tarjeta programable se encuentra dividida en módulos de acuerdo a la función que realizan, además que permite un mejor análisis y verificación de operación. Los módulos de la tarjeta programable se muestran en la figura 3.1.
Figura 3.1 Módulos que conforman la tarjeta programable.
Dentro de la tarjeta principal se encuentran la mayoría de los módulos, dejando en otras tarjetas los módulos de procesamiento y de E/S de 4-20 mA. El módulo de E/S de 4-20 mA se colocó en una tarjeta externa debido a que no es común aplicarla en varios procesos, pero se realizó para poder utilizar un sensor y un actuador que trabajen con el estándar industrial de 4-20 mA.
Módulo de E/S de 4-20 mA
Módulo de
procesamiento dsPIC30F4013
Módulo de
procesamiento PIC18F452
Módulo de comunicación
con la PC (RS232)
Módulo de entradas
analógicas Módulo de potencia
para motores
Módulo de memoria EEPROM
Módulo de comunicación entre tarjetas
(I2C)
Módulo de E/S digitales
Módulo de alimentación
(5 y ±15 VCD)
Pantalla de cristal líquido
1 - Tarjeta principal
2 - Tarjeta de procesamiento
3 - Tarjeta de E/S de 4-20 mA
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
36
El módulo de procesamiento se colocó en una tarjeta externa para poder utilizar cualquier microcontrolador. De esta forma sólo tendrá que fabricarse la tarjeta de procesamiento para utilizar otro microcontrolador, en vez de construir la tarjeta programable completa. 3.2. Diagramas esquemáticos electrónicos de la tarjeta programable Los diagramas esquemáticos de la tarjeta se realizaron en OrCAD para generar las tarjetas de circuito impreso. OrCAD permite modificar automáticamente el diseño de la tarjeta de circuito impreso cuando se realizan modificaciones en el diagrama esquemático. • Módulo de entradas y salidas digitales En esta etapa se podrán conectar a través de compuertas lógicas (buffers) diversos sensores digitales como son microinterruptores y foto sensores, así como elementos de salida digital. Utiliza un buffer CMOS bidireccional (74HC245) en el puerto B del microcontrolador para reforzar las señales provenientes de los sensores. El conector de configuración (jumper) J25 permite configurar la dirección de las señales (entradas o salidas) y debe ser igual a la configuración del puerto B por software. Los conectores tienen señales de voltaje de 5 Volts, tierra y de voltaje de 5 Volts con una resistencia limitadora. Ver figura 3.2.
Figura 3.2 Circuito electrónico del módulo de entradas/salidas digitales.
Las terminales de E/S digitales tienen conectores de configuración para poner la terminal a pull-up o pull-down y evitar que se dañe debido a que el PIC es de tecnología CMOS. La máxima capacidad de corriente de cada una de las terminales de los puertos en modo sumidero (sink) y en modo fuente (source) es de 25 mA. El cálculo del valor mínimo para las resistencias de pull-up y pull-down es:
VCC
VCC
B2
B5
B3B4
B1B0
B6B7
B5
B1
B4
B6
B2
B0
B7
B3
RB0
R21
10K
U2
74HC245
23456789
1817161514131211
119
A1A2A3A4A5A6A7A8
B1B2B3B4B5B6B7B8
DIROE
R42
47K
J2612
C28
100 nF
J42
1234
C
R47
220
123456789
J43
1234
J39
1234
J41
1234
J45
1234
J40
1234
J44
1234
J38
1234
R1470
R4R5R6
R2R3
A la tarjeta de
procesamiento
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
37
5 V25 mA200
R
R
=
= Ω
Las resistencias de pull-up son de 330 Ω y las resistencias de pull-down son de 560 Ω. Ambos valores aseguran un valor menor de 25 mA a cada terminal de puerto del microcontrolador. • Módulo de entradas analógicas En este módulo las señales analógicas (figura 3.3) provienen de sensores que pueden ser de temperatura, fotorresistencias o cualquier otra señal de 0-5 Volts, se acondicionan por medio de seguidores de tensión con amplificadores operacionales y filtro pasabajas de 5 KHz para eliminar ruido en la señal. El amplificador operacional es de baja potencia para que pueda funcionar este módulo cuando la tarjeta este alimentada con pilas. Las ecuaciones 3.1, 3.2 y 3.3 se utilizan para el cálculo del filtro pasabajas:
5cf KHz=
2 31,400c cfω π= = (3.1)
1 10 nFC =
2 12 20 nF 22 nFC C= = ≈ (3.2)
1
0.707R=cCω
(3.3)
-9
0.707R= 2,251.6 2.2 KΩ(31,400)(10x10 )
= Ω ≈
Donde R son las dos resistencias de entrada, C1 es el capacitor de entrada conectado a tierra y C2 es el capacitor de retroalimentación. [9]
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
38
Figura 3.3 Circuito electrónico del módulo de entradas analógicas.
Los conectores de entrada disponen de conexión a 5 Volts y a tierra para conectar el sensor directamente. • Módulo de alimentación El módulo de alimentación (figura 3.4) proporciona los niveles de voltajes necesarios para la operación del PIC y de los circuitos adicionales. El componente principal es el regulador 7805 que regula el voltaje a 5 Volts debido a que la mayoría de los circuitos integrados funcionan con este voltaje. Los otros reguladores son utilizados para módulos externos como el módulo de 4-20 mA.
Figura 3.4 Circuito electrónico del módulo de alimentación.
VAN
C26
+
-
U7A
MCP6044
3
21
+
-
U7B5
67
+
-
U7C10
98
+
-
U7D12
1314
R40
470
R39
470
C2110nF
C25
C22
22nFR29
2K2
R31
2K2
R35
470
R36R37
R38
470
C
R41
47K
J22
123
J23
123
J25
123
J24
123
AN1
AN3
AN2
AN0
VCC
VCC1
VAN
VCC
D0D1D2
D7D6D5D4D3
R46
470
D8JP4
CONECTOR A TARJETA 4-20 mA
1 23 45 67 89 1011 1213 14
L1
0.5mH
L2
0.5mH
D7
U9LM7805C/TO220
1 3
2
IN OUT
GN
D
J27
CON3
123
U6LM7815C/TO220
1 3
2
IN OUT
GN
D
C44
0.1uF
C43
0.1uF
U1 LM7915C/TO220
2 3
1
IN OUT
GN
D
C30
0.1uF
C29
0.1uF
F11 A C31
0.1uF
C32
0.1uF
C33
1000uF/50v
D4
1N4148
C37
100uF/50v
C38
100uF/50v
C34
100uF/50v
C40
100uF/50v
C36
100uF/100v
C39
100uF/50v
C35
1000uf/50v
C41
100uF/50v
D6
C42
0.1uF
R43
470
R44470
RA5
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
39
Los reguladores LM7815, LM7915 y LM7805 son utilizados debido a que permiten una corriente máxima de salida de 1 Ampere, cuentan con protección térmica y tienen un voltaje de caída de 3 Volts. Los capacitores a la entrada del regulador cancelan inductancias presentes y los capacitores a la salida del regulador mejoran la respuesta transitoria. [10] Los diodos emisores de luz (LEDs) D6, D7 y D8 indican que los reguladores están funcionando. A la salida del regulador LM7805 se encuentran dos filtros para reducir el ruido separando el voltaje para el módulo de entradas analógicas del voltaje de alimentación general. El diodo D4 protege el circuito de alimentación contra inversiones de polaridad. • Módulo de memoria EEPROM En esta etapa se tienen dos memorias EEPROM de 512 Kbytes cada una, que se conectan al microcontrolador por medio del bus I2C. Los microinterruptores (DIPswitchs) permiten configurar por hardware los últimos tres bits de la dirección de la memoria EEPROM. La tarjeta programable podrá almacenar datos de mediciones en aplicaciones de adquisición de datos. Las memorias EEPROM 24FC512 pueden reemplazarse por otras memorias de distinta capacidad que tengan la misma disposición de terminales. La figura 3.5 muestra el circuito esquemático del módulo de memoria EEPROM. Las resistencias de pull-up para las señales de I2C pueden ser de 2 kΩ a 10 kΩ. [11] Se definió un valor de 4.7 KΩ para estas resistencias.
Figura 3.5 Circuito electrónico del módulo de memoria EEPROM.
• Módulo de comunicación con la PC Esta etapa consta del circuito MAX232 que junto con los capacitores forma una interfaz de comunicación serial entre los niveles TTL (0 - 5 Volts) con los que trabaja el
VCC
R48
4K7 SW5
SW DIP-3
1 2 3
6 5 4
U10
24FC512A0A1
SDASCLA2
C50
100nF
C3
C4
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
40
microcontrolador y los niveles RS232 de la computadora. Se utilizó la configuración típica de conexión mostrada en la hoja de datos del MAX232. Ver figura 3.6.
Figura 3.6 Circuito electrónico del módulo de comunicación con la PC.
Los diodos D2 y D3 con la resistencia R28 permiten reiniciar el microcontrolador desde la computadora poniendo en estado alto la línea RTS del puerto serie desde la computadora. Esta opción puede habilitarse o deshabilitarse con el jumper S1de la tarjeta de procesamiento. • Módulo de comunicación I2C Emplea los puertos RC3/SCK/SCL y RC4/SDI/SDA, cada una de ellas conectadas por medio de resistencias a 5 Volts. Todos los periféricos que empleen esta interfaz de comunicación deberán conectarse a estas líneas (SCL Y SDA). En la figura 3.7 se muestra la conexión de una memoria EEPROM sobre el bus I2C. En el conector J47 se puede conectar una tarjeta o circuito que trabaje con el protocolo I2C. Se consideran los valores de resistencia del módulo de memoria EEPROM.
RESET POR PCVCC
RC6
RC7
D3
5V1
C3
C2
C1
10uF/25V
C6
10uF/25V
C4
10uF/25V
R334.7
P1594837261
C7100uF/25V
D2
1N4148
U3
MAX232
138
1110
134526
129147
R1INR2INT1INT2IN
C+C1-C2+C2-V+V-
R1OUTR2OUTT1OUTT2OUT
R28
330R32
330
A la tarjeta de procesamiento
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
41
Figura 3.7 Circuito electrónico del módulo de comunicación I2C.
• Módulo de potencia para motores (drivers) Permite manejar motores de CD y motores de pasos de hasta 1 ampere, basado en el circuito L293D que son dos puentes H en un circuito integrado y puede controlar los motores con un nivel de voltaje distinto al de alimentación (5 VCD). Con los jumpers 35 y 36 se puede configurar si la alimentación para los motores proviene del módulo de alimentación de la tarjeta principal o de una fuente externa de voltaje que esté en el conector J32. Cada interruptor de SW4 habilita o deshabilita un par de las salidas de potencia para motores. Los capacitores cerámicos de 100 nF conectados a las salidas para los motores mejoran el filtrado de la señal de voltaje. Ver figura 3.8.
VCC
J47
I2C
12
R45
4K7
U8
24FC512A0A1
SDASCLA2
C27
100nF
SW3
1 2 3
6 5 4
C3
C4
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
42
Figura 3.8 Circuito electrónico del módulo de potencia para motores
• Conector para pantalla de cristal líquido Adicionalmente en caso de que se quiera visualizar algunos de los parámetros que están variando en la planta o proceso, está disponible un conector (figura 3.9) en la tarjeta principal para una pantalla de cristal líquido (LCD). El LCD esta integrado a la tarjeta programable y es de 2 líneas y 16 caracteres por línea. El puerto B es utilizado como bus de datos y el puerto E como bus de control para configurar el LCD. Las resistencias R19 y R20 configuran la intensidad de iluminación del LCD.
Figura 3.9 Circuito electrónico del conector para pantalla de cristal líquido.
VCC
B0B1B2B3
B7
B5B4
B6
R19
10K
R20
820
JP5
HEADER 7X2
1 23 45 67 89 1011 1213 14
RE1RE2
RE0
VCC2VCC
VCC1 VCC2VCC
VCC1
B7
RB0C0C1
C5
B6C2
A4
C20 C45100nF
C46C47
U4
L293
27
1015
19
361114
8
1A2A3A4A
1,2EN3,4EN
1Y2Y3Y4Y
VC
C2
U5
L293
27
1015
19
361114
8
1A2A3A4A
1,2EN3,4EN
1Y2Y3Y4Y
VC
C2
C12 C13
C10
100nF C14C11
C9
C8100nF
C16 C18
C15
C19100nF
C17
C
R34
10K
J35
1 2 3
J36
1 2 3
C24
100uF/25V
C23
J33
CO
N5
12345
J34
CO
N5
12345
SW4
1 2 3 4
8 7 6 5
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
43
• Módulo de procesamiento. Este módulo (figura 3.10) está compuesto esencialmente por el microcontrolador que es la parte central que va a procesar y controlar la tarjeta; además de los circuitos oscilador y de reinicio (reset) necesarios para que funcione el microcontrolador. Este módulo se conecta por medio de un conector de cable plano a la tarjeta principal para así poder conectar una tarjeta con un PIC, un dsPIC o un microcontrolador de otro fabricante.
Figura 3.10 Circuito electrónico del módulo de procesamiento.
El circuito oscilador consiste del cristal de cuarzo de 12 MHz y los capacitores con el valor adecuado según la tabla 2.3. El capacitor C3 es el elemento principal del circuito de reinicio al encendido así como el reinicio manual presionando el botón SW1. El diodo D1 ayuda a que el capacitor se descargue en la resistencia R21 cuando se presiona el botón SW1. • Módulo de E/S de 4-20 mA Este módulo externo está basado en los circuitos integrados XTR110 y RCV420 los cuales son un transmisor y un receptor de señales de 4-20 mA. Estos circuitos junto con otros componentes permiten convertir una señal de corriente de 4-20 mA a una señal de voltaje de 0-5 Volts y viceversa, es decir, que se pueden usar tanto para señales de entrada como de salida de corriente. Se utiliza el DAC0808 junto con el amplificador operacional LF351 para generar la señal de voltaje analógico para el transmisor de 4-20 mA. Con la resistencia variable R4 se ajusta la ganancia para que la salida del amplificador operacional sea 5 Volts
VCC
R2310K
C310uF
D1
1N4148
12MHz
C1
100 nF
C2
100 nF
SW1
12
S1
C5
22pF
R21
100
C6
10 uF / 16V
C4
22pF
U1
PIC18F452
1
234567
89
10
11
13
14
19202122
32
27282930
3334353637383940
2625242318171615
MCLR/Vpp
RA0/AN0RA1/AN1RA2/AN2/VREF-RA3/AN3/VREF+RA4/TOCKIRA5/AN4/SS#
RE0/RD#/AN5RE1/WR#/AN6RE2/CS#/AN7
VCC
OSC1/CLKIN
OSC2/CLKOUT
RD0/PSP0RD1/PSP1RD2/PSP2RD3/PSP3
VCC
RD4/PSP4RD5/PSP5RD6/PSP6RD7/PSP7
RB0/INTRB1RB2RB3PGMRB4RB5RB6/PGCRB7/PGD
RC7/RX/DTRC6/TX/CKRC5/SDORC4/SDI/SDARC3/SCK/SCLRC2/CCP1RC1/T1OSO/CCP2RC0/T1OSI/T1CKI
A la tarjeta principal
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
44
cuando todas las entradas del conversor analógico/digital estan a nivel alto. La alimentación de esta tarjeta se obtiene del módulo de alimentación de la tarjeta principal. El transistor MOSFET Q1 le da potencia a la salida de corriente del transmisor XTR110. Ver figura 3.11.
-15VCC+15VCC
+5VCC +15VCC-15VCC
-15VCC
+15VCC
+15VCC
+5VCC
U3
XTR110
16
8
5
3 14
126
2 15
117
9
4
1
13
10
+ Vcc
Zero Adj3
Vin2(5V)
Vref In Gate Driv e
Vref SenseZero Adj1
Comm Vref Force
Vref AdjZero Adj2
16mA Span
Vin1(10V)
Source Res
SourceSense
4mA Span
U1
DAC0808
12111098765
14
15
4
2
16
133
A8A7A6A5A4A3A2A1
VR+
VR-
IOUT
IOUT
COMP
V+
V-
U2
RCV420
16
8
5
314
126
215
117
9
4
1
13
10
V +
Ref Trim
Ref Com
+ InRcv Out
Ref InNC1
CTRcv f B
Ref OutRef Noise Red
NC2
V -
- In
Rcv Com
Ref f B
JP1
HEADER 7X2
1 23 45 67 89 1011 1213 14
+
- U4
LF3513
26
7 14 5
R1
3K3
R23K3
R3 1K R4
10K
C1
33pF
J1
ENTRADA 4-20 mA
12
J2
SALIDA 4-20 mA
12
Q1MOSFET MTP2955
1
2
3
+C2
1 uF
Figura 3.11 Circuito electrónico del módulo de E/S de 4-20 mA.
Cada uno de los circuitos integrados tiene un capacitor cerámico de desacoplamiento de 100 nF en sus terminales de alimentación. Los circuitos electrónicos se simularon en el programa Proteus para verificar su funcionamiento, debido a que permite programar virtualmente el microcontrolador y realizar simulaciones paso a paso o en forma animada de los circuitos. 3.3. Diagramas esquemáticos electrónicos de la tarjeta de aplicación Además de los circuitos anteriores, con el propósito de realizar fácil y rápidamente las pruebas simuladas de la tarjeta programable, se diseñó y construyó una tarjeta de aplicación. Esta tarjeta consta de:
• Un módulo para generar entradas digitales (botones pulsadores) y/o visualizar salidas digitales (LEDs) de la tarjeta programable.
• Un módulo que genera señales analógicas provenientes de distintos elementos (un sensor de temperatura LM35, una fotorresistencia y dos potenciómetros).
• Un módulo de indicadores de 7 segmentos de cátodo común (1 indicador conectado directamente o 4 indicadores multiplexados).
• Un módulo de conversión A/D o D/A en base al integrado PCF8591, que funciona con el protocolo I2C.
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
45
• Generador de pulsos al temporizador/contador TMR0 (RA4/T0CKI) por medio de un botón pulsador.
• Botón pulsador que sirve para generar una petición de interrupción externa (RB0/INT).
El circuito electrónico de la tarjeta de aplicación se muestra en la figura 3.12.
VCC
VAN
VCC1
VAN
VCC1
VCC1
VCC
VCC
VCC
VCC
VCC
A2
S3
S0S1
D1
A4
S3
S5S6
S1
S4S3
S0
D6
S1
S4
B5
D3D5D7
D4
D5
S3
S5
C3
D3
S2S3
S5
S2
S7
D7
S1S0
S5
C5
A5
S7S6
S5
S0
S2
S6
RB0
D2
S7B4
D6
S4
S2
S4
S0
D1D2D4
S4
C4
S6
S2S1
S7
B5
B4
S6
D0
D0
B3
B1
B1B3B2
B7
B2
B0
B6
B0
B6 B7
R210K 13
2
R110K1 3
2
U1
LM35/TO
1 2VS+ VOUT
R44K7
R3
R5LDR
J4
1 2 3
J1
1 2 3
J2
1 2 3
C447uF/16v
J3
1 2 3
SW20
R15
1k
R13
1k
R12
220
JP2
124
5
67
910
ed
3
c
dp
ba
8
fg
JP3
124
5
67
910
ed
3
c
dp
ba
8
fg
SW18
JP5
124
5
67
910
ed
3
c
dp
ba
8fg
JP4
124
5
67
910
ed
3
c
dp
ba
8
fg
U2
74LS48
7126
453
1312111091514
ABCD
BIRBILT
OAOBOCODOEOFOG
U3
PCF8591
15
14
13
12
11109
32
567
4
1AOUT
VREF
AGND
EXT
OSCSCLSDA
AIN2AIN1
A0A1A2
AIN3
AIN0
SW3
SW4
SW11
SW9
SW5
SW8
SW6
SW10
SW7
SW17
SW12
SW14
SW15
SW16
SW13
C
R101 2
3456789
C
R11
123456789
Q3
2N3904
32
1
Q2
2N3904
32
1
Q4
2N3904
32
1
Q1
2N3904
32
1
R7220
R6220
R810K
Q5
2N3904
32
1
J5
12
D1
C1
100n
R9
10K
13
2
SW19
C5
R14470
D27
LED
JP6
1 23 45 67 89 1011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 36
JP1
124
5
67
910
ed
3
c
dp
ba
8
fg
D10
D12
D13
D11
D20
D19
D21
D18
D14
D16
D15
D17
D25
D23
D22
D24
D26
D3D2 D5 D7D6 D8D4 D9
J6
12
J7
CON2
12
B4B5
A5
B7
B4
B1
C3
RB
0
AN3
B5
B2
C4
B3
AN3
A4
B0
B6
C5
B7 B6
Figura 3.12 Circuito electrónico de la tarjeta de aplicación
3.4. Diseño de las tarjetas de circuito impreso Después de verificar el funcionamiento de los circuitos electrónicos por medio de simulaciones en el programa Proteus, se realizaron los diseños de las placas de circuito impreso en OrCAD. Debido a la complejidad de algunos circuitos, las placas de la tarjeta principal, de la tarjeta de procesamiento y de la tarjeta de aplicación se diseñaron para placas de doble cara. La tarjeta del módulo de E/S de 4-20 mA se diseñó para realizarse en placa de una cara. El proceso de realización del diseño de la placa de circuito impreso es el traslado del diagrama esquemático del circuito electrónico al módulo de Layout de OrCAD. En este módulo se realiza la disposición de los componentes sobre la placa. Los componentes fueron organizados de acuerdo a los módulos descritos en la sección 3.2.
Diseño y construcción de una tarjeta programable Capítulo 3. Diseño electrónico de la tarjeta de adquisición, procesamiento de datos y control
46
Después de distribuir los componentes para minimizar la densidad de las pistas, se realizó la operación de AutoRoute para que OrCAD genere automáticamente la colocación de las pistas de acuerdo al dibujo esquemático. A pesar de utilizar la función automática de enrutado, fue necesario reubicar algunas pistas para que no hubiera cortocircuitos. El ancho mínimo de las pistas fue determinado con una calculadora [12] basada en la curva de ajuste de la norma IPC-D-275 para placas de circuitos impresos. Los datos utilizados son:
max
max2
I = 1 AΔt = 10 °C
Grosor de conductor = 35 μm = 1 oz./ft
Donde Imax es la corriente máxima que circulará en la pista y se consideró la corriente máxima de salida de los reguladores de voltaje; Δtmax es el aumento máximo de temperatura de la pista de circuito impreso con respecto a la temperatura ambiente cuando circule la corriente máxima; y el grosor del conductor es el espesor del cobre de la placa fenólica. Después de introducir los datos, el resultado fue un ancho de pista requerido de 9.8 milésimas de pulgada o 0.248 mm. Esto significa que una corriente de 1 Ampere circulando a través de una pista de 0.248 mm de ancho, producirá un aumento de 10 °C. Si el ancho de la pista es mayor, el aumento de temperatura es menor que 10 °C. El ancho de pista utilizado para la realización de las tarjetas es de 0.381 mm y la corriente que circula por las pistas cuando la tarjeta está en funcionamiento es menor de 1 Ampere, por lo tanto el aumento de temperatura es menor de 5 °C. En el anexo D se muestran los diseños de las placas de circuito impreso. Las medidas de las tarjetas electrónicas pueden consultarse en la tabla 3.1:
Tabla 3.1 Dimensiones físicas de las tarjetas electrónicas.
Tarjeta Largo (mm) Ancho (mm) 1. Principal 195 120 2. De procesamiento 80 55 3. De E/S de 4 – 20 mA 65 55 4. De aplicación 145 95
Diseño y construcción de una tarjeta programable Capítulo 4. Construcción y pruebas de las tarjetas De adquisición, procesamiento de datos y control electrónicas
47
CAPÍTULO 4. CONSTRUCCIÓN Y PRUEBAS DE LAS TARJETAS ELECTRÓNICAS
Diseño y construcción de una tarjeta programable Capítulo 4. Construcción y pruebas de las tarjetas De adquisición, procesamiento de datos y control electrónicas
48
4.1. Construcción de las tarjetas electrónicas Las tarjetas se hicieron por método serigráfico debido a que es confiable y económico para la elaboración de tarjetas complejas de circuitos impresos. Las conexiones entre caras de la tarjeta (conocidas como through holes o vías) se realizaron de manera directa al no disponer de la máquina que realiza las vías. Se probó la continuidad de las pistas y de las conexiones entre las caras de las tarjetas a lo largo del proceso de montaje de los componentes para comprobar las conexiones eléctricas de la tarjeta programable. Las tarjetas de circuito impreso que se realizaron son:
1. Tarjeta principal. (Ver figura 4.1). 2. Tarjeta de procesamiento. (Ver figura 4.2). 3. Tarjeta de entrada/salida de 4-20 mA. (Ver figura 4.3). 4. Tarjeta de aplicación. (Ver figura 4.4).
Figura 4.1 Tarjeta principal.
Diseño y construcción de una tarjeta programable Capítulo 4. Construcción y pruebas de las tarjetas De adquisición, procesamiento de datos y control electrónicas
49
Figura 4.2 Tarjeta de procesamiento.
Figura 4.3 Tarjeta de entrada/salida de 4-20 mA.
Diseño y construcción de una tarjeta programable Capítulo 4. Construcción y pruebas de las tarjetas De adquisición, procesamiento de datos y control electrónicas
50
Figura 4.4 Tarjeta de aplicación.
Finalmente se integraron la tarjeta principal, la tarjeta de procesamiento, la tarjeta de 4-20 mA y la pantalla de cristal líquido en una base de acrílico para formar la tarjeta programable. La conexión de la tarjeta principal con las tarjetas externas se realiza por medio de cable plano con conectores. 4.2. Emulación funcional de los módulos de la tarjeta programable Después de que la tarjeta fue ensamblada, se realizaron pruebas de cada uno de los módulos de la tarjeta programable, éstas se muestran en la tabla 4.1 donde se indican los módulos utilizados como entrada y salida de datos.
Tabla 4.1 Pruebas de la tarjeta programable.
N° Nombre Módulo de entrada Módulo de salida Puerto B (E/S digitales) Puerto D (E/S digitales) 1 E/S digitales Puerto D (E/S digitales) Puerto B (E/S digitales)
2 Entradas analógicas Entrada analógica RA0 Puerto B (E/S digitales)
3 Potencia para motores * Potencia para motores
4 Pantalla de cristal líquido (LCD) * LCD
5 Comunicación RS232 Puerto B (E/S digitales) RS232
6 Comunicación I2C * Memoria EEPROM E/S de 4-20 mA Puerto B (E/S digitales) 7 E/S de 4 - 20 mA * E/S de 4-20 mA
* En estas pruebas los datos iniciales o de control son generados en el módulo de procesamiento.
Diseño y construcción de una tarjeta programable Capítulo 4. Construcción y pruebas de las tarjetas De adquisición, procesamiento de datos y control electrónicas
51
Todos los programas en la parte inicial tienen la función de incluir la librería del PIC18F452, las librerías necesarias de acuerdo a las instrucciones programadas (# include) y las directivas de configuración del microcontrolador (# pragma config). Para la programación del PIC18F452 durante estas pruebas se deshabilitaron las opciones del oscilador del perro guardián (watchdog timer) y el reinicio por bajo voltaje para evitar que se reinicie el programa de prueba en los ciclos infinitos de ejecución o por caídas en el voltaje de alimentación, también se deshabilita la programación en bajo voltaje para que el pin RB5 pueda funcionar como entrada/salida digital. 4.2.1. Prueba de E/S digitales Se prueban los módulos de entrada/salida digitales. Se divide en dos partes, en la primera parte el estado del puerto B es el complemento a 1 del puerto D. Primero se configuran los puertos asignando el valor 0xFF al registro TRISB para configurar el puerto B como entrada y el valor de 0x00 al registro TRISD para configurar el puerto D como salida. Después, en un ciclo infinito se le asigna al puerto D el complemento a 1 del puerto B. En la segunda parte de esta prueba, el estado del puerto D es el complemento a 1 del puerto B. Los valores asignados a TRISB y TRISD se intercambian para que el puerto D sea la entrada y el puerto B sea la salida. En ambas pruebas, las salidas (LEDs) y las entradas (interruptores) interactuaron correctamente de acuerdo al programa en el microcontrolador. 4.2.2. Prueba de entradas analógicas Se muestran los ocho bits más altos de la conversión A/D de un potenciómetro conectado al canal AN0. Esta prueba permitió probar el funcionamiento del módulo de entradas analógicas. Gracias a la facilidad de programar en lenguaje C, el proceso de configuración del conversor analógico a digital descrito en el capítulo 2, se simplifica en una sola instrucción que es:
OpenADC(ADC_FOSC_RC & ADC_LEFT_JUST & ADC_5ANA_0REF,ADC_CH0 & ADC_INT_OFF);
En esta instrucción se selecciona el oscilador RC interno como el reloj del conversor A/D; el resultado justificado a la izquierda (los ocho bits más significativos del resultado de la conversión están en el registro ADRESH); configura el microcontrolador para que operen 5 terminales como entradas analógicas y utilizar el voltaje de alimentación como voltaje de referencia para el conversor; selecciona el canal 0 como entrada a convertir y deshabilita la interrupción generada por el conversor A/D.
Diseño y construcción de una tarjeta programable Capítulo 4. Construcción y pruebas de las tarjetas De adquisición, procesamiento de datos y control electrónicas
52
La rutina utilizada en un ciclo infinito para leer el valor analógico de entrada y mostrarlo en el puerto B es realizado cuando se utilizan las subrutinas de la librería del conversor A/D. ConvertADC(); // Inicia la conversión while (BusyADC()); // Espera a que la conversión finalice PIR1bits.ADIF = 0; // Se limpia la bandera de interrupción del conversor AD PORTB = ADRESH; // Copia los 8 bits mas significativos al PORTB Después de una conversión se necesita un tiempo de espera de 2 veces el tiempo de adquisición por bit (TAD) antes de iniciar la siguiente conversión. El valor mínimo de TAD es de 1.6 μs, por lo que se requiere de un retardo de 3.2 μs. Para programar los retardos en el PIC18F452 se utiliza la ecuación 4.1 para calcular los ciclos de instrucción necesarios para el retardo.
( )Ciclos Tiempo de retardo deseado Frecuencia de oscilador 4= • (4.1)
Aplicando la ecuación 3.2 para un retardo de 3.2 μs se obtiene:
( )-6 6Ciclos 3.2 10 12 10 4 9.6 10= • = ≈i i La instrucción para generar el retardo es: Delay10TCYx(1); //Retardo de 3.2 μs para 12 MHz En la librería “delays.h” se incluyen varias funciones para generar los retardos en múltiplos del tiempo de ciclo de instrucción. Como resultado, la respuesta mostrada en los LEDs fue proporcional a la posición del potenciómetro. 4.2.3. Prueba de potencia para motores En esta prueba se verificó el funcionamiento del módulo de potencia de motores. De acuerdo al estado del puerto D dos motores de corriente directa giran a la izquierda o a la derecha. Se asigna el valor de 0xFF al registro TRISD para que el puerto D funcione como entrada, y se asignan los valores de 0x00 a los registros TRISA, TRISB y TRISC porque las terminales del módulo de potencia son RA4, RB0, RB6, RB7, RC0, RC1, RC2 y RC5. Para el control de los motores se está asignando constantemente el valor de una terminal del puerto D a un valor de una terminal de salida del módulo de potencia de motores.
Diseño y construcción de una tarjeta programable Capítulo 4. Construcción y pruebas de las tarjetas De adquisición, procesamiento de datos y control electrónicas
53
Los motores se accionaron de acuerdo al estado de los pulsadores conectados al puerto D del microcontrolador. 4.2.4. Prueba de la pantalla de cristal líquido (LCD) Para esta prueba se envió a la pantalla de cristal líquido (LCD) el mensaje “CENIDET MECATRÓNICA”. En esta prueba se realizó el protocolo de transmisión para enviar las instrucciones de configuración del LCD y del mensaje, y posteriormente se envían los componentes de los arreglos “mensaje” y “mensaje2” que contienen las palabras a mostrar. Se aplican los retardos necesarios de acuerdo a la hoja de datos de la pantalla de cristal líquido. Los retardos utilizados son de 1 milisegundo y de 10 microsegundos. Estos fueron calculados con la ecuación 4.1 para obtener los ciclos de instrucción necesarios para generar el retardo. Para generar el retardo de 1 ms:
( )-3 6Ciclos 1 10 12 10 4 3000= • =i i
Para generar el retardo de 10 μs: ( )-6 6Ciclos 10 10 12 10 4 30= • =i i
Por lo que las instrucciones para cada uno de los retardos son: Delay1KTCYx(3); //Retardo de 1 ms para 12 MHz Delay10TCYx(3); //Retardo de 10 μs para 12 MHz Se mostró en el LCD el mensaje enviado desde la tarjeta programable. 4.2.5. Prueba de comunicación con la PC Esta prueba consistió en enviar el estado del puerto D a la computadora por medio del puerto RS232. Se verificó el funcionamiento del módulo de comunicación RS232. Para verificar los datos enviados a la computadora, se utilizó un programa gratuito de monitoreo de puerto serie llamado “Comunica”. [13] Igual que en pruebas anteriores, se utilizaron las librerías específicas para desarrollar el programa de prueba. Con una sola instrucción se configura el módulo de transmisión y recepción síncrono/asíncrono universal (USART). Para configurar la velocidad de comunicación, se requiere calcular el valor de la variable spbrg que se almacena en el registro del generador de velocidad de transmisión en baudios. Las fórmulas del cálculo de la variable spbrg dependen de la velocidad y tipo de transmisión serial de datos. Las ecuaciones 4.2 y 4.3 se utilizan para modo asíncrono a alta velocidad y a baja velocidad respectivamente, y la ecuación 4.4 se utiliza para modo síncrono.
Diseño y construcción de una tarjeta programable Capítulo 4. Construcción y pruebas de las tarjetas De adquisición, procesamiento de datos y control electrónicas
54
( )( )Velocidad deseada 16 1OSCspbrg F= − (4.2)
( )( )Velocidad deseada 64 1OSCspbrg F= − (4.3)
( )( )Velocidad deseada 4 1OSCspbrg F= − (4.4)
Como se definió una velocidad de 19200 baudios en modo asíncrono, se utiliza la ecuación 4.2. Sustituyendo FOSC = 12 MHz y Velocidad = 19200 en la ecuación 4.2 se obtiene:
( )( )612 10 19200 16 1 38.06 38spbrg = − = ≈i
El valor de spbrg se coloca al final de la instrucción OpenUSART() para configurar la velocidad de transmisión de datos (ver programa de prueba 5 en anexo E). Con la instrucción WriteUSART(x) se envía el valor de la variable x por el puerto serie. Se mostró correctamente en la pantalla de la computadora los datos enviados por el puerto D de la tarjeta programable. 4.2.6. Prueba de memorias EEPROM Esta prueba utiliza dos programas, uno para escribir dos datos en la memoria EEPROM y otro para leer el primer dato y mostrarlo en el puerto D. Se configura el módulo de transmisión I2C con la instrucción OpenI2C() para operar en modo maestro y velocidad estándar de 100 KHz. En este modo de funcionamiento es necesario calcular el valor del registro SSPADD. Para calcular el valor de SSPADD se despeja esta variable de la ecuación 4.5.
( )( )Reloj 4 1OSCF SSPADD= +i (4.5)
Para el modo de velocidad estándar de 100 KHz y la frecuencia de oscilación de 12 MHz, el valor de SSPADD es:
( )6
3
12 10SSPADD 1 294 100 10
= − =i
i i
En el primer programa se ejecuta el protocolo de transmisión I2C para enviar un dato a una de las memorias EEPROM. Se envía primero la dirección de la EEPROM con la instrucción de escritura (0xA0). Como es una memoria de 512 KBytes, utiliza una palabra (2 bytes) para el direccionamiento interno, se envía el byte inferior de la dirección y luego el byte superior. Después se envían los dos datos a almacenar (0xA5 y 0x00) y finaliza el programa.
Diseño y construcción de una tarjeta programable Capítulo 4. Construcción y pruebas de las tarjetas De adquisición, procesamiento de datos y control electrónicas
55
En el segundo programa se realiza el protocolo sin utilizar las instrucciones de la librería “i2c.h”. Se envía la dirección con la instrucción de lectura y la dirección interna de la memoria EEPROM. Después empieza a recibir los datos solicitados y finaliza el programa. Los datos almacenados en la memoria EEPROM fueron recuperados y el dato mostrado (0xA5) correspondía con el que fue solicitado. 4.2.7. Prueba de E/S de 4-20 mA Antes de realizar pruebas a este módulo, se caracterizó el receptor y el transmisor de corriente. Para el receptor se enviaron señales de corriente desde 4 hasta 20 mA cada 2 mA, tanto en forma ascendente como descendente para verificar la linealidad del circuito integrado. En la tabla 4.2 se muestran los resultados obtenidos de la caracterización del receptor RCV420.
Tabla 4.2 Caracterización del receptor de 4-20 mA.
Salida (V) Entrada de corriente (mA) Prueba 1 (Ascendente) Prueba 2 (Descendente)
4 0.02 0.00 6 0.63 0.64 8 1.27 1.27 10 1.89 1.90 12 2.52 2.52 14 3.16 3.17 16 3.80 3.80 18 4.42 4.43 20 5.05 5.05
La figura 4.5 muestra los datos de la tabla 4.2 y se observa la linealidad del receptor.
Diseño y construcción de una tarjeta programable Capítulo 4. Construcción y pruebas de las tarjetas De adquisición, procesamiento de datos y control electrónicas
56
Figura 4.5 Gráfica de respuesta del receptor de 4-20 mA.
Para la caracterización del transmisor, se calcularon los valores digitales necesarios para que la salida del conversor digital-analógico entregue cada uno de los niveles de corriente de la tabla 4.2. Se utilizó una resistencia de 250Ω como resistencia de carga típica según la hoja de datos del transmisor XTR110. Los valores programados para cada una de las salidas de corriente se muestran en la tabla 4.3 con los valores de corriente medidos a la salida del transmisor de corriente y el error calculado del transmisor de 4-20 mA.
Tabla 4.3 Caracterización del transmisor de 4-20 mA.
Salida (mA) Dato programado (hexadecimal) Valor ideal Valor real
Error (%)
0x00 4 4 0.00 0x20 6 6 0.00 0x40 8 8 0.00 0x60 10 10.1 1.00 0x80 12 12.1 0.83 0x9F 14 14.1 0.71 0xBF 16 16.2 1.25 0xDF 18 18.2 1.11 0xFF 20 20.2 1.00
0
1
2
3
4
5
6
2 4 6 8 10 12 14 16 18 20 22Corriente de entrada (mA)
Vo
lta
je d
e s
alid
a (
Vo
lts
)
Prueba ascendente Prueba descendente
Diseño y construcción de una tarjeta programable Capítulo 4. Construcción y pruebas de las tarjetas De adquisición, procesamiento de datos y control electrónicas
57
El error máximo que presenta el transmisor de 4-20 mA es de 1.25 %. Después de la caracterización del receptor y del transmisor de corriente, se realizó una prueba para la entrada de 4-20 mA donde se mostró el dato del receptor de corriente en el puerto B. La salida del receptor RCV420 está conectada a una entrada analógica del microcontrolador. Se configura el conversor A/D con la instrucción OpenADC(). Este programa es similar al programa de prueba del módulo de entradas analógicas. Se visualizó correctamente en binario el valor de la corriente de entrada a la tarjeta de 4-20 mA. Para probar el transmisor de corriente, el programa realizado enciende todas las terminales del puerto B para que el transmisor envíe 20 mA, después de 10 segundos éstas se apagan para que el transmisor envíe 4 mA. Esto se realiza infinitamente hasta que se apague la tarjeta. En la salida de la tarjeta de 4-20 mA se leían los valores de corriente generados por el programa de prueba. Después de haber realizado estas pruebas, se comprobó que los módulos de la tarjeta programable funcionan correctamente.
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
58
CAPÍTULO 5. DISEÑO Y CONSTRUCCIÓN DE PLANTAS
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
59
5.1. Descripción de plantas a controlar Para demostrar la funcionalidad y versatilidad de la tarjeta programable, se diseñaron y construyeron tres prototipos de plantas con los que la tarjeta programable debe interactuar; Adquiere datos por medio de sensores, los procesa de acuerdo a un logaritmo de control y envía las señales de salida a las plantas para controlar su proceso. Es importante señalar que las plantas se construyeron con el objetivo de mostrar la funcionalidad de la tarjeta programable, por lo que en el proceso de diseño no se consideraron cálculos de resistencia de materiales. Las plantas o procesos se describen a continuación: Robot móvil seguidor de línea.- Robot con dos sensores ópticos de reflexión orientados hacia el piso para detectar una línea negra sobre fondo blanco y dos motores de corriente directa con caja reductora para que el robot pueda desplazarse. Modelo a escala de una plataforma de seguimiento solar.- Tiene dos grados de libertad de tipo giratorio y utiliza un motor de corriente directa para cada uno de ellos. La luz del sol es detectada por medio de sensores ópticos y el giro en cada eje está limitado mediante sensores electromecánicos. Cámara térmica con temperatura controlada.- Consiste en dos cubos de acrílico (uno dentro de otro). El control de temperatura es en el volumen del cubo interno. Tiene un calefactor, un agitador de aire para mantener uniforme la temperatura, un sensor de temperatura, un inyector, un extractor de aire y dos ductos por donde circula el aire que es regulado mediante compuertas. En la tabla 5.1 se describen las plantas que se fabricaron, los recursos y el tipo de control que cada una de ellas utiliza.
Tabla 5.1 Descripción de plantas fabricadas
Planta Objetivo de control Sensores
No. de Canales de
entrada
No. de canales de
salida Actuadores Tipo de
control
Robot móvil seguidor de línea
Seguir línea negra sobre superficie blanca
2 sensores ópticos de reflexión
2 (digitales) 2 (potencia para motores)
2 motores de CD Enc/apag
Modelo a escala de plataforma de seguimiento solar
Orientar la placa colectora hacia el sol
5 micro interruptores 21 fototransistores 1 encoder
13 (digitales) 2 (potencia para motores)
2 motores de CD Enc/apag
Cámara térmica con temperatura controlada
Controlar la temperatura de un ambiente aislado térmicamente
1 sensor de temperatura
1 (digital) 1 (analógica)
1 (digital) 5 (potencia para motores)
1 calefactor 1 soplador 1 extractor de aire 2 solenoides
Propor-cional- integral
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
60
5.2. Robot móvil seguidor de línea 5.2.1. Objetivo El robot móvil debe seguir una línea negra trazada sobre una superficie blanca. Esto se logra mediante dos sensores ópticos de reflexión (cada uno de estos consta de un LED infrarrojo y un fototransistor). Los sensores son activados por el reflejo sobre el transistor de la luz infrarroja emitida por el LED. Es por esto que se deben emplear superficies que contrasten en color; ya sea línea obscura sobre fondo claro o viceversa. El robot emplea dos motores de corriente directa (CD) para poderse mover, cada motor se controla de forma independiente para que el robot pueda girar. Ver figura 5.1
Figura 5.1 Robot móvil seguidor de línea
5.2.2. Requerimientos de la planta El robot móvil requiere de la tarjeta programable: dos entradas digitales (RD0 Y RD1), por donde entran las señales provenientes de los sensores al microcontrolador, y cuatro salidas del módulo de potencia L293 (RA4, RB6, RB7 y RC2), por donde la tarjeta envía las señales para activar/desactivar cada uno de los motores de 12 VCD. 5.2.3. Diseño mecánico El robot móvil consta de un chasis metálico rectangular de 66 x 79 mm. En la parte delantera del chasis van montados dos motores eléctricos de 12 VCD / 0.5 Amperes. Cada motor tiene una caja reductora en cuyas salidas se montan las ruedas del robot. En la parte posterior del chasis se localiza una rueda “loca” y en la parte frontal la placa porta sensores. Ver figura 5.2
Giro del motor izquierdo
Giro del motorderecho
Rueda “loca” Sensores
Chasis
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
61
Figura 5.2 Robot móvil seguidor de línea
5.2.4. Diseño eléctrico del robot móvil Los recursos que la planta requiere de la tarjeta programable son: dos canales digitales de entrada por medio de los cuales los fototransistores ingresan las señales a la tarjeta, y, cuatro canales de salida para operar los motores de CD en ambas direcciones. El sensor empleado en el robot móvil es el fototransistor CNY70 el cual se activa cuando la luz de su diodo rebota (en una superficie blanca) hacia su fototransistor. Al activarse el sensor ingresa un ‘1’ lógico (+ 5 VCD) a la tarjeta, en caso contrario ingresa un ‘0’ lógico (0 VCD). La figura 5.3 muestra el circuito electrónico empleado por el robot móvil. La corriente en el fotodiodo es limitada por R1, la señal del sensor es el voltaje presente en la resistencia R2. Estas resistencias son calculadas con la ecuación 5.1.
1 CC f
f
V VR
I−
= (5.1)
Donde: Vcc = Voltaje de alimentación = 5 Volts Vf = Voltaje del diodo en polarización directa = 1.25 Volts If = Corriente del fotodiodo en polarización directa = 50 mA R1 = 75 Ω
Chasis
Ruedas delanteras
Rueda “loca”
Motores de 12 VCD
Soporte de sensores
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
62
5 VCC
5 VCC
SENSOR IZQ
CNY70
SENSOR DER
CNY70
R247 K
R247 K
R175
R175
MOTORIZQUIERDO15 VCD
MOTORDERECHO15 VCD
TA
RJE
TA
PR
OG
RA
MA
BLE
RD0
RD1
RC2
RB6
RA4
RB7
Figura 5.3 Circuito electrónico del robot móvil seguidor de línea.
El valor de R2 debe ser lo suficientemente grande para que la mayor parte de voltaje caiga en ésta cuando el fototransistor se sature, y conduzca. Por lo anterior se toma de esta resistencia la señal que se envía a la tarjeta programable. Con una resistencia de 47 kΩ la tarjeta detectó perfectamente las señales enviadas desde los sensores del robot móvil. Los motores utilizados son controlados por el driver L293 de la tarjeta programable. Con éste se controla el encendido y sentido de giro de ambos motores. La velocidad de los motores depende del voltaje que se les aplique, en este caso es de 12 VCD aplicado desde una fuente externa. 5.2.5. Algoritmo de control
1. Si ambos sensores están sobre la línea oscura, el robot móvil se debe mover en línea recta. Posición 1 del robot en la figura 5.4.
2. Si se activa el sensor izquierdo debido a que salió de la línea oscura, el robot debe girar a la derecha hasta que el sensor se vuelva a desactivar. Posición 2 del robot en la figura 5.4
3. Si se activa el sensor derecho debido a que salió de la línea oscura, el robot debe girar a la izquierda hasta que el sensor se vuelva a desactivar. Posición 3 del robot en la figura 5.4
4. Si ambos sensores se activan debido a que salen de la línea oscura, el robot debe detenerse. Posición 4 en la figura 5.4
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
63
Figura 5.4 Diferentes acciones del robot de acuerdo al estado de sus sensores.
El algoritmo de control se representa mediante el diagrama de flujo en el anexo D.1. El programa fuente que controla esta planta se realizó en lenguaje C, utilizando el compilador C18 específico para la familia de microcontroladores PIC18. En el anexo D.2 se encuentra el programa fuente que controla el robot móvil seguidor de línea. 5.3. Modelo a escala de una plataforma de seguimiento solar 5.3.1. Objetivo Orientar la placa colectora de la planta a la dirección del sol, con la finalidad de aprovechar al máximo la energía calorífica de éste. Esta tarea se realiza por medio de 21 sensores y 2 motores de 24 VCD. 5.3.2. Requerimientos de la planta Los recursos que la planta demanda de la tarjeta programable son: 2 entradas digitales del puerto A, 8 entradas digitales del puerto B, 4 entradas digitales del puerto D y 4 salidas digitales del puerto D. No se conectan los motores de la planta a la salida de potencia de la tarjeta programable debido a que el integrado L293 tiene una capacidad de suministro de corriente de 1 Ampere, y la corriente que demandan los motores de la planta es de 1.8 Amperes. Debido a lo anterior se implementaron en una tablilla de conexión (protoboard) dos puentes H, con transistores de 15 Amperes, con los que se controla el giro y el frenado de cada uno de los motores de la plataforma de seguimiento solar. Ver figura 5.5
Posición 1 Avanza en línea recta
Posición 2 Gira a la derecha
Posición 3Gira a la izquierdaPosición 4
Se detiene el robot
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
64
24 VCD
5 VCD
TIP125
TIP120
BC548
R13k3
150k
R2
MOTOR24VCD
Figura 5.5 Circuito de potencia (puente H) para alimentar dos motores de 24 VCD.
Para que los transistores TIP220, TIP225 y BC548 trabajen en la región de saturación, se calculó el valor de las resistencias R1 y R2. Los datos de transistores indicados en la figura 5.6 se tomaron de hojas de datos del fabricante FAIRCHILD SEMICONDUCTORTM. [14]
Figura 5.6 Circuito de operación simplificado del puente H.
Cálculo de la resistencia conectada a la base del transistor TIP 125 IL(max) = 2 A R1 = VR1 / IR1 R1 = VR1 / IB(sat) VR1 = 24 – (VBE(on) del TIP 125) – (VCE(on) del BC548) – (VBE(on) del TIP 120) VR1 = 24 – 2 - 0.6 -2.5 = 18.9 V
VCE(sat)=2 V, Ic(max)=5 A, hFE=1000, VBE(on)=2.5 V
VCE(sat)=-2 V, Ic(max)=5 A, hFE=1000, IB(max)=-120 mA, VBE(on)=-2 V
VCE(sat)=0.6 V, Ic(max)=500 mA, hFE=800, IB=0.625 mA, VBE(on)=0.77 V
24 VCD
24 VCD
TIP120
TIP125
TIP120
TIP125
BC548BC548
R2
R13k3
150k
R13k3
150k
TIP125
TIP120
TIP125
TIP120
BC548 BC548
R13k3
R13k3
150kR2
150k
R2
R2
MOTOR GIROVERTICAL 24 VCD
MOTOR GIROHORIZONTAL24 VCD
RD0 RD1
RD3RD2
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
65
IBmin = IL(max) / hFE IBmin = 2 A / 1000 = 2 mA Considerando IB = 5 mA R1 = 18.9 V / 5 mA = 3.78 kΩ El valor próximo comercial es de 3.3 kΩ. Siendo R1 = 3.3 kΩ, la corriente de base para saturación de los transistores TIP120 y TIP125 es: IB(sat) = 18.9 V / 3300 Ω = 5.72 mA Cálculo de la resistencia conectada a la base del transistor BC548 R2 = VR2(on) / IR2(max) VR2(on) = 5 - VBE(on)BC548 - VBE(on)TIP120 VR2(on) = 5 - 0.77 – 2.5 = 1.73 V IBmin = IL(max) / hFEBC548 IBmin = 5.72 mA / 800 = 7.15 μA Considerando IB = 10 μA R2 = 1.73 V / 10 μA = 173 kΩ El valor próximo comercial es de 150 kΩ. Siendo R2 = 150 kΩ, la corriente de base para saturación de los transistores BC548 es: IB(sat) = 1.73 V / 150 kΩ = 11.53 μA 5.3.3. Diseño mecánico Es una base cuadrada de aluminio de 400 x 400 x 6 mm. Al centro de esta base se montó un buje para que pueda girar un soporte vertical en conjunto con la placa colectora, el soporte vertical es un perfil cuadrado de acero de 32.5 x 32.5 x 402 mm, dentro del cual se aloja un mecanismo de tornillo sin fin que proporciona el giro vertical a la placa colectora. Ver figura 5.7.
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
66
Figura 5.7 Diseño mecánico del modelo a escala de la plataforma de seguimiento solar.
El sistema es de dos grados de libertad; uno de ellos es el giro horizontal que en conjunto mueve el soporte vertical y la placa colectora por medio de un motor de 24 VCD, el otro grado de libertad es el giro vertical de la placa colectora por medio de otro motor de 24 VCD 5.3.4. Diseño eléctrico del modelo a escala de la plataforma de seguimiento solar La placa colectora tiene instalada una placa semicircular de acrílico con 21 sensores fotoeléctricos distribuidos de la siguiente manera:
• Un sensor colocado en la parte superior de la placa semicircular (sensor principal). Ver figura 5.8
• Dos grupos de ocho sensores cada uno, ubicados en los extremos de la placa semicircular. Los ocho sensores de cada grupo están conectados en paralelo La separación entre sensores consecutivos es de 10º. Ver figura 5.8 y 5.9.
• Cuatro sensores (sensor1, sensor2, sensor3, y sensor4) alrededor del sensor principal con una inclinación de 20º con respecto a la dirección este. Ver figura 5.8.
En cada uno de los límites de giros horizontal y vertical, la planta tiene instalado un interruptor de límite. Para posicionar horizontalmente la placa colectora en la rutina de inicio, la planta cuenta con un interruptor de límite instalado en el centro de la polea de giro de la placa colectora. Ver figura 5.9.
Varilla roscada
Polea roscada
Dados deslizantes
Poleas de placa colectora
Bujes depolea
Motor girovertical
Motor girohorizontal
Buje
Placacolectora
Mecanismo de giro vertical Modelo completo del modelo a escalade plataforma de seguimiento solar
Soportevertical
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
67
Figura 5.8 Vista superior del modelo a escala de la plataforma de seguimiento solar.
Figura 5.9 Fotografía del modelo a escala de la plataforma de seguimiento solar.
La figura 5.10 muestra el circuito eléctrico del modelo a escala de la plataforma de seguimiento solar.
Sensorcentral
Grupo izquierdo de 8 sensores conectados en paralelo
Grupo derecho de 8 sensores conectados en paralelo
Sensor 4Sensor 1
Sensor 2
Sensor 3
Interruptor delímite inferior
Placa semicircularde acrílico Placa colectora
Girohorizontal
10º
Sensores
Motor de giro vertical
Girovertical
Motor girohorizontal
Interruptor de límite superior
Interruptor delímite central
Soporte vertical
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
68
Figura 5.10 Circuito eléctrico del modelo a escala de la plataforma de seguimiento solar.
5.3.5. Algoritmo de control Las vistas de la planta mostradas en la figura 5.11 se toman como referencia para nombrar los movimientos de la planta, en donde también se muestra la distribución de los sensores colocados en la parte superior de la placa colectora
1. Al pulsar el botón de arranque la placa colectora gira simultáneamente a la izquierda y hacia arriba/abajo deteniendo cada uno de estos giros hasta que ésta se posicione horizontalmente en el límite de giro izquierdo.
2. Posterior a la rutina de inicio la placa colectora inicia una rutina de búsqueda la cual consiste en giros horizontales a la izquierda y a la derecha. Las primeras cuatro veces que la placa colectora llegue a los límites de giro, realizará ahí un giro vertical de 2.5º hacia arriba, y las próximas cuatro veces hacia abajo. Si el sol no es detectado por los sensores montados en la parte superior de la placa colectora en estos 4 ciclos de búsqueda, la planta se detendrá.
3. El giro vertical de la placa colectora es definido por un encoder fotoeléctrico montado en el motor de giro vertical de la planta.
4. Si en la rutina de búsqueda el sol es detectado por uno de los sensores del grupo izquierdo de la placa de acrílico, entonces la placa colectora primero frenará su giro horizontal y después girará verticalmente hacia arriba, frenando este giro hasta que el sensor principal apunte hacia el sol.
5 VCC 5 VCC
5 VCC
5 VCC
5 VCC5 VCC 5 VCC
GRUPO IZQUIERDO DE SENSORES
R1330
R1330 S6
INT DE ARRANQUE
GRUPO DERECHO DE SENSORES
R1330
SEN
SO
RPR
INC
IPA
L
SENSOR 1SENSOR 4
SEN
SOR
2
SEN
SOR
3
INT
LIM
IZQ
INT
LIM
DER
INT
LIM
SU
P
INT
LIM
INF
R1330
INT
LIM
CE
NTR
AL
R1330
R1330
R1330
R1330
R1330
R1330
R1 33
0
R1
330
ENCODER
R1330
R1
330
MOTOR DE 24 VCCGIRO IZQ/DER
MOTOR DE 24 VCCGIRO SUB/BAJ
RA4 RB0RB1 RB2
RB3RB4RB5 RB6RB7
RD0
RD1
RD2
RD3
RD4 RD5RD6 RD7
TARJETA PROGRAMABLE
TARJETA DEPOTENCIA(2 PUENTES H)
RA5
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
69
5. Si en la rutina de búsqueda el sol es detectado por uno de los sensores del grupo derecho de la placa de acrílico, entonces la placa colectora primero frenará su giro horizontal y después girará verticalmente hacia abajo, frenando este giro hasta que el sensor principal apunte hacia el sol.
6. La rutina de búsqueda termina en el momento que el sensor principal es activado por el sol y entonces inicia la rutina de seguimiento.
7. El sensor principal está rodeado por seis sensores. Ver figuras 5.8 y 5.11. 8. El seguimiento inicia en el momento que el sensor principal pierde la luz del sol por
el movimiento relativo de este. Y entonces se espera a identificar cuál de los seis sensores que rodean al principal se activa para realizar los giros que harán que el sensor principal apunte nuevamente hacia el sol, y en consecuencia la placa colectora también quedara orientada hacia el sol.
a. Si el sol es detectado por el sensor de la trampa izquierda la placa colectora girará hacia arriba, frenando hasta que el sensor principal detecte el sol
b. Si el sol es detectado por el sensor de la trampa derecha la placa colectora girará hacia abajo, frenando hasta que el sensor principal detecte el sol
c. Si el sol es detectado por el sensor No. 1 la placa colectora girará hacia la derecha y hacia abajo, frenando hasta que el sensor principal detecte la luz del sol.
d. Si el sol es detectado por el sensor No. 3 la placa colectora girará hacia la derecha y hacia arriba, frenando hasta que el sensor principal detecte la luz del sol. La lógica cuando se detecta la luz por los sensores restantes es similar
Figura 5.11 Referencia de giros e identificación de sensores.
Cabe aclarar que la precisión de los movimientos está limitada, debido a que se utilizaron poleas/bandas para la transmisión de movimiento de los motores a la planta (las bandas se deslizan), además las piezas que conforman el mecanismo de giro vertical no se fabricaron con la maquinaria apropiada por lo que varía el grado de rozamiento de las piezas a lo largo de su carrera de trabajo. Debido a lo anterior es difícil el control de la velocidad rotacional de la placa colectora. El diagrama de flujo del algoritmo de control se localiza en el anexo D.3, y el código fuente en el anexo D.4.
Motor / giro vertical
Grupo izq. sensores
Detalle “A”
Límite giro arriba
Grupo der. sensores
Sube
Bajalímite giro abajo
Límite central
Giro der. Giro izq. Límite giro izquierda
Límite giro derecha
Sensor principal
Sensor 1
Detalle “A”Vista superior de la planta
Sensor 2 Sensor 3
Sensor 4
Sensor grupo der.
Sensor grupo izq.
Giro der.
Giro izq.
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
70
5.4. Cámara térmica con temperatura controlada 5.4.1. Objetivo Controlar la temperatura dentro de la cámara térmica con un controlador tipo proporcional o proporcional-integral, configurado por medio de un instrumento virtual de LabVIEW. 5.4.2. Diseño mecánico Por ser una planta didáctica, se hizo de acrílico para poder observar los componentes y su funcionamiento en el interior de la cámara. El cubo interno es de 305 x 305 x 310 mm. y está en el centro del cubo externo de 405 x 405 x 410 mm. Con las dimensiones anteriores se tiene un volumen interno de 300 x 300 x 300 mm. y 400 x 400 x 400 mm. en cada cubo respectivamente. Los cubos están ensamblados con tornillos de 1/8 de pulgada. Para colocar el cubo interno en la parte central del cubo grande se utilizan unos soportes de acrílico en las esquinas internas de éste último. Los elementos que se encuentran dentro de la cámara térmica son un calefactor que es el elemento actuador del sistema, un agitador de aire para mantener uniforme la temperatura en el volumen interno de la cámara, unos ductos de ventilación y un sensor de temperatura. El calefactor se encuentra en una base de porcelana. La base del calefactor y el agitador de aire están atornillados a la base del cubo interno. El sensor de temperatura se encuentra a 3 cm. de la parte central de la cara superior del cubo interno. Ver figura 5.12.
Figura 5.12 Cámara térmica con temperatura controlada.
Sopladorde aire
Agitador de aire
Calefactor
Extractorde aire
Solenoide de apertura de compuerta
Sensor de temperatura
Cubo externo
Cubo interno
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
71
Los ductos se fabricaron de acuerdo a las dimensiones del soplador y el extractor de aire. Cada ducto tiene una compuerta que está conectada al núcleo móvil de un solenoide con el fin de poder abrir la compuerta al energizar el solenoide. Todo este conjunto es utilizado para que circule aire hacia el interior de la cámara y expulse el aire caliente. La cámara térmica está sellada con silicón para optimizar el aislamiento térmico. 5.4.3. Diseño eléctrico de la cámara térmica El calefactor es de tipo resistivo. El sensor de temperatura es el LM35 el cual tiene una salida de 10 mV/°C y está conectado directamente al módulo de entradas analógicas de la tarjeta programable. Todos los elementos (excepto el calefactor) se conectan al exterior a través de un conector DB9 macho. Para controlar adecuadamente el calefactor, se utiliza una señal de referencia proveniente de un sencillo circuito detector de cruce por cero (ver figura 5.13) de la señal de corriente alterna. [15]
(2)
- +
(1)
120 VCA
CD4093
REFERENCIA DE CRUCE POR CERO
Figura 5.13 Circuito generador de señal de referencia.
Las señales de entrada y salida del circuito anterior se muestran en la figura 5.14.
Figura 5.14 Señal de referencia.
El circuito de interfaz para el control de CA (figura 5.15) consiste en un optoacoplador y un triac. Los valores de las resistencias corresponden para el circuito de control de un elemento resistivo. [16]
F = 60 Hz+9V
+5V
t
t
2
1
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
72
TIC226D
180
470MOC3010
CARGA
100
100 nF120 VCA
SEÑAL DE DISPARO
Figura 5.15 Circuito de control de CA.
Los falsos disparos del TRIAC se pueden prevenir con el uso de una red snubber entre las terminales MT1 y MT2 para limitar la razón de cambio del voltaje. Los valores comunes de la red snubber son una resistencia de 100 Ω seleccionada para el manejo de corriente y un capacitor de 100 nF. [17] El diagrama de conexión de la tarjeta programable con los circuitos electrónicos adicionales y los elementos de la cámara térmica se muestran en la figura 5.16.
Figura 5.16 Diagrama eléctrico de la cámara térmica y la tarjeta programable.
5.4.4. Requerimientos de la planta Para controlar esta planta la tarjeta programable utiliza un canal de entrada analógica (sensor de temperatura), un canal de entrada digital (señal de referencia de cruce por cero), cinco canales de salida de potencia (agitador, soplador, extractor y las compuertas) y un canal de salida digital para enviar la señal de control del calefactor. Además de estos recursos de la tarjeta programable, se utiliza un circuito detector de cruce por cero y un circuito de interfaz de CA.
CALEFACTOR
120
VCA
120 VCA- +
LM35
VS+ VOUT
A-
+
EXTRACTOR
A -+
AGITADOR
A-
+
SOPLADOR
TAR
JETA
PR
OG
RA
MA
BLEAN0
RB0
RD0
GND
+5V
RC1
RC0
RA4
RC2
RC5
COMPUERTA EXTRACTOR
COMPUERTA SOPLADOR
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
73
5.4.5. Algoritmo de control La parte central del algoritmo de control es el controlador proporcional-integral. Para deducir la fórmula de control PI a programar se realizó el siguiente proceso. Siendo la ecuación de un controlador PI el que se muestra en la ecuación 5.2.
0
( ) ( ) ( )t
P IC t K E t K E t dt= + ∫ (5.2)
Considerando la aproximación 5.3 para la parte integral:
0
0( ) ( )
NtE t dt Ts E n∑∫ ∼ (5.3)
La ecuación de control PI aplicado a tiempo discreto puede rescribirse como:
0( ) ( ) ( )
N
P SIC n K E n T E nK= + ∑
0
( ) ( ) ( )N
S IC n K E n T T E n⎛ ⎞≈ +⎜ ⎟⎝ ⎠
∑ (5.4)
Donde: KP = K KI = K/TI
La ecuación 5.4 puede programarse en el microcontrolador. El programa del microcontrolador está diseñado para trabajar junto con el instrumento virtual de LabVIEW mostrado en la figura 5.17.
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
74
Figura 5.17 Instrumento virtual de configuración y visualización de la cámara térmica.
Este instrumento virtual es utilizado para configurar los valores de las variables requeridas para que el controlador funcione y opera de la siguiente manera: 1. Presionar el botón “RUN” para ejecutar el instrumento virtual. Aparece en el monitor
una ventana con instrucciones de: • Encender la tarjeta programable. • Establezca los valores de setpoint, Kp y Ti. • Presiona LISTO para comenzar.
2. Siguiendo las indicaciones mostradas, se asignan los valores a las variables “SETPOINT”, “Kp” y “Ti”. El valor de la variable “SETPOINT” está limitada al intervalo de 30°C – 70°C para evitar altas temperaturas que puedan afectar a la cámara térmica o a los elementos internos. La variable Kp esta limitada a que sea mayor que cero para que la acción de control proporcional no se pueda deshabilitar. La variable Ti puede ser cero para que la tarjeta funcione solamente como controlador proporcional.
3. Presionar el botón de “LISTO” para que los datos de las variables sean enviados a la tarjeta programable.
4. El dato de temperatura transmitido desde la tarjeta programable es recibido y graficado, también se enciende el indicador “LEYENDO”.
5. En caso de error de configuración o error de acceso del puerto, se encienden unos indicadores para mostrar el origen de la falla.
6. Presionando el botón de “PARO” el instrumento virtual detiene su ejecución. Al encender la tarjeta programable, el proceso de operación es: 1. Se inicializan los puertos y se configuran los módulos de conversor A/D y de USART
del microcontrolador.
Diseño y construcción de una tarjeta programable Capítulo 5. Diseño y construcción de plantas de adquisición, procesamiento de datos y control
75
2. Se enciende el agitador y espera la recepción de datos por el puerto serie. 3. Después de que los 3 datos (setpoint, Kp y Ti) son recibidos, se lee la temperatura de la
cámara térmica por medio del sensor LM35. 4. El dato de temperatura es enviada a la computadora y se escala para las futuras
operaciones. Se tiene aproximadamente un 1 digital del conversor A/D por cada ½ °C de temperatura. En el programa, se manejan los valores de temperatura en décimas de grado Celsius para que las variables sean de tipo entero.
5. Se calcula el error y el error acumulado. 6. Si el valor de Ti es diferente de cero, se calcula la parte integral del controlador; en caso
contrario la parte integral se iguala a cero. Se calcula el valor del controlador de acuerdo a la fórmula 5.4.
7. El valor del controlador es adaptado para que controle el voltaje eficaz aplicado al calefactor.
La tarjeta programable sigue funcionando sin importar que se haya presionado el botón de “PARO” en el instrumento virtual. El diagrama de flujo del programa de control de la cámara térmica puede consultarse en el anexo D.5 y el código fuente del programa de control en el anexo D.6. El código gráfico del programa de monitoreo y control de la cámara térmica se muestra en el anexo D.7.
Diseño y construcción de una tarjeta programable Capítulo 6. Experimentación y análisis de resultados de adquisición, procesamiento de datos y control
76
CAPÍTULO 6. EXPERIMENTACIÓN Y ANÁLISIS DE RESULTADOS
Diseño y construcción de una tarjeta programable Capítulo 6. Experimentación y análisis de resultados de adquisición, procesamiento de datos y control
77
6.1. Pruebas y resultados de la tarjeta programable con el robot móvil seguidor de línea
La prueba aplicada al robot móvil seguidor de línea consiste en que realice el recorrido de una pista que tiene rectas y curvas hacia la izquierda y hacia la derecha. Con esta pista se prueba la respuesta de la tarjeta programable a las distintas condiciones presentadas a los sensores ópticos. La pista de prueba se muestra en la figura 6.1. El punto de partida del robot esta indicado con la letra P. El robot se coloca en la posición de partida para recorrer la pista en sentido contrario a las manecillas del reloj. Los puntos donde el robot móvil reacciona para girar a la izquierda están marcados con la letra “I”, los puntos donde el robot móvil gira hacia la derecha están marcados con la letra “D”. Después de las curvas, el robot móvil reacciona a la recta y entonces avanza para continuar la trayectoria. El ancho de la línea es de 3 cm.
Figura 6.1 Pista de prueba del robot móvil seguidor de línea.
En las primeras pruebas el robot móvil no siempre realizaba correctamente la vuelta en las esquinas, esto fue causado por la falta de ajuste en la separación y en la altura de los sensores. Los sensores se colocaron con una separación de tal manera que quedaron próximos a la orilla de la línea, y a una altura de 2 mm. Con estos ajustes el robot móvil hizo el seguimiento de la línea correctamente durante diez minutos. El robot móvil es capaz de seguir líneas de diferente ancho ya que la distancia entre sensores se puede ajustar. En el caso de que la línea sea blanca sobre superficie negra, se debe cambiar la programación de la tarjeta, para que funcione correctamente. [18]
Diseño y construcción de una tarjeta programable Capítulo 6. Experimentación y análisis de resultados de adquisición, procesamiento de datos y control
78
6.2. Pruebas y resultados de la tarjeta programable con el modelo a escala de la plataforma de seguimiento solar
Las pruebas realizadas al sistema de control de la planta se llevaron a cabo con un foco incandescente de 100 Watts, el cual simuló al sol. En las pruebas se detectaron algunos problemas mecánicos debido a que las piezas no fueron fabricadas con el equipo apropiado. Los principales problemas son: el desplazamiento deficiente de los dados del mecanismo de movimiento vertical dentro del soporte vertical y el deslizamiento de las bandas en las poleas, los cuales se ve reflejado en la dificultad del control de la velocidad de giro tanto vertical como horizontal de la placa colectora. La definición de la dirección de los sensores fotoeléctricos se logró mediante tubo termo contráctil (thermofit). Para realizar las pruebas se colocó el foco en una determinada posición, y entonces se oprimió el botón de arranque. Inicia la rutina de posicionamiento de inicio y después la rutina de búsqueda en donde el foco fue detectado por el grupo derecho de ocho sensores, por lo que frena horizontalmente y después gira verticalmente hacia abajo hasta que el sensor principal apunto hacia el foco. Al momento en que el sensor principal apunto al foco se produjo un frenado vertical. Se procedió a mover el foco en dirección del sensor número cuatro, para esto el sistema respondió con un giro hacia la izquierda y hacia arriba, frenando hasta que el sensor principal apunto nuevamente hacia el foco. Después el foco se movió hacia el sensor numero 2, para esto el sistema respondió con un giro simultaneo hacia la izquierda y hacia abajo, frenando hasta que el sensor central apunto hacia el foco. Se probaron los límites de giro vertical moviendo el foco a lo largo de la fila del grupo derecho de ocho sensores, para esto el sistema respondió con un giro vertical hacia abajo. El foco se siguió moviendo en la misma dirección hasta que se accionó el límite inferior de giro vertical, provocando que el sistema se reinicie desde la posición de inicio “home”. De manera similar se hizo la prueba para verificar la respuesta al accionamiento del interruptor de límite de giro vertical hacia arriba. Se probaron los límites de giro horizontal moviendo el foco de tal manera que la planta lo siguiera hasta que se activó el límite de giro horizontal derecho. Para esta posición los sensores uno y tres se inhabilitan mediante programa, por lo que la planta ya no pudo girar mas a la derecha, protegiéndola así del sobregiro a la derecha. De manera similar se realizó la prueba de protección de sobre giro a la izquierda. Los resultados de las pruebas realizadas se consideran satisfactorios, considerando la falta de maquinaria y equipo para la fabricación de los mecanismos de la planta, además del mínimo presupuesto empleado para su fabricación. El ajuste de la longitud de los tubos que direccionan la luz del foco hacia los sensores fotoeléctricos es diferente a la que deben de tener estos para direccionar la luz del sol, debido a la diferencia de intensidades luminosas entre ambos. La dirección perpendicular del sol a la placa colectora se puede optimizar mediante un ajuste fino del tubo colocado en el sensor principal, que es el que debe apuntar hacia el sol.
Diseño y construcción de una tarjeta programable Capítulo 6. Experimentación y análisis de resultados de adquisición, procesamiento de datos y control
79
La respuesta que dieron las protecciones de sobregiros tanto horizontales como verticales fue satisfactoria en todas las pruebas que se hicieron. Las diez pruebas que se hicieron, primero haciendo que el sistema siguiera al foco hasta los límites verticales. En estos casos el sistema al sensar los límites verticales respondió, llevando el sistema a la posición de inicio y posteriormente a la etapa de seguimiento. Las otras diez pruebas se hicieron llevando el sistema en la etapa de seguimiento a los limites horizontales en donde el sistema respondió de manera tal que se bloquearon los sensores que impiden al sistema girar mas allá de los limites horizontales de la planta. El encoder empleado para incrementar/decrementar el giro vertical de la placa colectora en 2.5º tenia su disco ligeramente doblado, después que se le dio mantenimiento al disco, el encoder funcionó correctamente, incrementando o decrementando satisfactoriamente la altura de la placa colectora al llegar a los extremos de giro horizontal. Los rebotes producidos por el accionamiento de los sensores electromecánicos, se resolvieron mediante programación. Esto consiste básicamente en llamar una rutina de retardo una vez que se detecto el primer accionamiento del sensor, esperando un tiempo para evitar sensar los accionamientos subsecuentes producidos por los rebotes del interruptor. Así se corrigieron movimientos inesperados de la planta debidos precisamente a los rebotes de los sensores electromecánicos. No hay que olvidar que la planta tiene una velocidad de respuesta, y que esta en base a la velocidad de giro de la placa colectora. Entonces en las pruebas con el foco, si este se mueve muy rápido en la etapa de seguimiento, la planta perderá el rastro, por lo que ya no podrá seguirlo. Con una velocidad moderada del movimiento del foco, la planta funciona satisfactoriamente. 6.3. Pruebas y resultados de la tarjeta programable con la cámara térmica con
temperatura controlada Se realizaron varias pruebas preliminares para comprobar el funcionamiento de la cámara térmica. Estas pruebas preliminares están listadas a continuación: Comprobación de voltaje eficaz. Esta prueba abarcó desde el análisis matemático para la obtención del voltaje eficaz de una onda senoidal recortada hasta la verificación con el osciloscopio del corte de la señal de corriente alterna. Comunicación serie tarjeta programable – PC. Se probó la transmisión del dato adquirido del sensor LM35 hacia la computadora y visualizarlo gráficamente en LabVIEW. Comunicación serie PC – tarjeta programable. Se realizó un programa de prueba para que el microcontrolador muestre los 3 datos enviados desde LabVIEW.
Diseño y construcción de una tarjeta programable Capítulo 6. Experimentación y análisis de resultados de adquisición, procesamiento de datos y control
80
a) Comprobación de voltaje eficaz. Para esta prueba se requirieron los siguientes datos:
175 Volts
60 HertzpV
F
=
=
para obtener la ecuación de la señal de corriente alterna:
( ) 175sin(120 )f t π=
La fórmula para el voltaje eficaz de cualquier señal es:
0
1 ( )t
efV f t dtT
= ∫ (6.1)
Aplicando la ecuación 6.1 para el cálculo del voltaje eficaz de la onda recortada se obtiene:
( ) ( )( )( )
1 1
2 2 2
2
1 175sin(120 ) 175sin(120 )T T
ef t T tV dt dt
Tπ π
+= +∫ ∫
( )11
sin 240 1175 30 2120 60ef
tV t
ππ
⎛ ⎞= − +⎜ ⎟
⎝ ⎠
Con la ayuda de un programa para graficar y tabular funciones, se buscaron los valores de t1 para cada voltaje eficaz de la tabla 6.1.
Tabla 6.1 Experimentación de voltaje eficaz y tiempo de recorte.
Vef deseado (Volts)
t1 (obtenido de gráfica)
(ms)
t1 programado
(ms)
t1 medido
(ms)
Vinst gráfica (Volts)
Vinst medido (Volts)
10 7.50 7.50 7.40 60.31 55 20 7.00 7.00 6.90 90.00 88 30 6.55 6.57 6.50 111.00 116 40 6.15 6.13 6.00 134.83 136 50 5.70 5.73 5.60 150.00 148 60 5.30 5.33 5.20 161.88 162 70 4.90 4.93 4.80 170.00 170 80 4.50 4.50 4.40 174.00 170 90 4.00 4.03 3.90 174.00 170 100 3.50 3.50 3.40 167.00 165 110 2.80 2.87 2.80 152.00 150 120 1.80 1.80 1.70 104.63 100
Diseño y construcción de una tarjeta programable Capítulo 6. Experimentación y análisis de resultados de adquisición, procesamiento de datos y control
81
Se comprobó que el tiempo de retardo programado corresponde al tiempo de retardo real y por lo tanto, los recortes de señal dan valores de voltaje eficaz cercanos a los que se deseaban. Durante esta prueba se elevó la temperatura dentro de la cámara térmica a un valor mayor de 100 °C. El agitador de aire se deformó por la alta temperatura, por lo que se decidió limitar la temperatura de operación de la cámara térmica. b) Comunicación serie tarjeta programable – PC. Se programó el microcontrolador para estar enviando la señal del dato de temperatura cada segundo a la computadora por medio del puerto serie. Los datos recibidos eran visualizados en una gráfica del instrumento virtual programado en LabVIEW. Con esto se probó la transmisión por puerto serie de la tarjeta programable a la computadora. c) Comunicación serie PC – tarjeta programable. En esta prueba se enviaban los datos de las variables desde el instrumento virtual de LabVIEW a la tarjeta programable. En la tarjeta, se almacenaban los datos recibidos en tres variables y eran mostrados por el puerto D en la tarjeta de aplicación. Los datos enviados desde la computadora eran los que se mostraban en la tarjeta de aplicación de la tarjeta programable. Después de comprobar con estas pruebas las etapas esenciales tanto a nivel físico como a nivel de programación, se procedió a realizar las pruebas de la cámara térmica. Las pruebas de la cámara térmica consistieron en un controlador proporcional y un controlador proporcional-integral. En la primera prueba se inició el instrumento virtual, se encendió la tarjeta programable y se colocó el valor de “setpoint” (45 °C) y un valor de Kp (3). El valor de Ti se conserva en cero. Después se presionó el botón de “LISTO” para que el controlador empezara a funcionar. La temperatura se estabilizó después de 2.5 minutos sin llegar a la temperatura requerida debido a que es un controlador de tipo proporcional. Finalmente se detuvo el instrumento virtual y se activaron las compuertas, el soplador y el extractor de aire para sacar el aire caliente de la cámara térmica.
Diseño y construcción de una tarjeta programable Capítulo 6. Experimentación y análisis de resultados de adquisición, procesamiento de datos y control
82
Figura 6.2 Prueba de controlador proporcional.
Para la segunda prueba, los valores fueron los mismos que la prueba anterior, excepto el valor de Ti (2). Se enviaron los valores de las variables a la tarjeta programable e inició el proceso de control. El error en estado estable se eliminó al incluir el control integral.
Figura 6.3 Prueba de controlador proporcional-integral.
La forma poligonal de la señal en las figuras 6.2 y 6.3 se debe a que el conversor detecta cada ½ °C y la temperatura no está exactamente uniforme en todo el volumen de la cámara térmica.
Diseño y construcción de una tarjeta programable Capítulo 7. Conclusiones de adquisición, procesamiento de datos y control
83
CAPÍTULO 7. CONCLUSIONES
Diseño y construcción de una tarjeta programable Capítulo 7. Conclusiones de adquisición, procesamiento de datos y control
84
7.1. Conclusiones El resultado final del desarrollo de este trabajo de tesis, es una tarjeta programable que permite controlar una amplia variedad de procesos de acuerdo al algoritmo de control programado en el microcontrolador. Esta tarjeta puede operar de forma autónoma o con conexión a la computadora por el puerto serie RS232. Pueden conectarse a la tarjeta sensores de tipo digital (botones, sensores ópticos, sensores de contacto) y de tipo analógico (resistencias variables, fotorresistencias, sensores de temperatura). Los actuadores que pueden ser controlados por la tarjeta programable no deben requerir más de 1 Ampere, algunos de ellos son: relevadores, LEDs, pantallas de 7 segmentos, motores de corriente directa de baja potencia y cargas de corriente alterna utilizando una interfaz externa de potencia. Además puede utilizar un sensor y un actuador que trabaje con el estándar industrial de 4-20 mA. Tiene una pantalla de cristal líquido para mostrar resultados, condiciones de operación o lo que el usuario quiera visualizar. Existen sistemas comerciales de adquisición de datos que pueden realizar la lectura de varios sensores e interactuar con la computadora, pero están limitadas únicamente a transmitir los datos hacia ésta, no permiten trabajar de forma independiente a la computadora y tomar decisiones con respecto a los valores de los sensores conectados. La tarjeta programable puede interactuar con programas comerciales de instrumentación como LabVIEW comparado con otros módulos de adquisición de datos que funcionan solamente con el programa del fabricante. Por su diseño modular, la tarjeta programable puede funcionar con cualquier microcontrolador solamente sustituyendo la tarjeta de procesamiento, por lo que no se requiere construir completamente la tarjeta programable para trabajar con otro microcontrolador. Esto le da una característica de escalabilidad y la posibilidad de ser actualizable. Es importante mencionar que en este trabajo se desarrolló una tarjeta programable que cumple con el objetivo principal de la tesis, que fue el diseñar y construir una tarjeta programable y autónoma de adquisición, procesamiento de datos y control con opción de conexión a la computadora o a otra tarjeta similar. Además de lograr todas las metas planteadas, incluyendo que el costo de los componentes fue de $1,099.17 MN (ver anexo E), se obtuvieron los siguientes logros: • Tarjeta de procesamiento intercambiable. • Tarjeta de aplicación para emulación, pruebas y prácticas con la tarjeta programable. • Plantas para demostrar la funcionalidad de la tarjeta, incluyendo los programas de
control de cada una: o Robot móvil seguidor de línea. o Modelo a escala de plataforma de seguimiento solar. o Cámara térmica con temperatura controlada.
Diseño y construcción de una tarjeta programable Capítulo 7. Conclusiones de adquisición, procesamiento de datos y control
85
En el disco compacto de la tesis esta este documento en formato electrónico y documentación adicional sobre la fabricación, operación y uso de la tarjeta programable, además de todos los programas realizados. 7.2. Trabajos futuros Este trabajo de tesis abre la posibilidad de nuevos de proyectos de tesis para ampliar las aplicaciones de la tarjeta, facilitar la utilización al usuario y facilitar el desarrollo de otros trabajos de tesis. Algunos de los posibles trabajos futuros que involucren la tarjeta programable son: • Realizar prácticas sobre microcontroladores de la materia de “Computación Básica”,
y trabajos finales de la materia de “Sensores, Actuadores e Interfases” del plan de estudios de la Coordinación de Mecatrónica del cenidet.
• Desarrollar un programa de simulación de la tarjeta programable junto con las plantas
de prueba para poder elaborar y validar los modelos de las plantas. • Realizar una interfaz gráfica en la computadora que facilite la utilización de la tarjeta
programable permitiendo configurar la tarjeta programable, leer las terminales de entrada y controlar las terminales de salida desde la computadora.
• Diseñar interfases para comunicar la tarjeta programable por medio de puertos de
comunicación alámbricos (USB, Ethernet) e inalámbricos (IrDA, Bluetooth), para tener una mayor velocidad de transmisión de datos para aplicaciones de visión y capacidad para conectar la tarjeta con dispositivos portátiles (computadoras portátiles, PDAs).
• En algunos proyectos del cenidet, hay retrasos por la falta de un controlador
económico que sea de fácil manejo, porque se tiene que diseñar uno desde cero. Al término de este trabajo, se está realizando una tesis que considera la utilización de esta tarjeta programable para el monitoreo y control de un secador de caña de azúcar.
• Para poder aplicar a plantas con dinámica de mayor velocidad o un nivel mayor de
procesamiento matemático, se pueden utilizar controladores de señal digital (como los dsPICs) los cuales tienen características de un microcontrolador y de un DSP como la facilidad de implementación, y se podrían reutilizar todos los programas de la tarjeta realizados en esta tesis con ajustes mínimos.
• Para el avance en el campo de la Mecatrónica, puede utilizarse la tarjeta para la
aplicación, demostración o desarrollo de algoritmos de comunicación de inteligencia artificial distribuida para realizar tareas entre varios robots.
Diseño y construcción de una tarjeta programable Referencias de adquisición, procesamiento de datos y control
86
REFERENCIAS [1] Jan Axelson. “USB Complete. Everything you need to develop custom USB
peripherals”. Lakeview Research, Estados Unidos de América, 2001. [2] Jesús Flores V. “MICROCONTROLADOR COP8. Manual de Teoría y Práctica
Básica”. National Semiconductor Corp., México, 2001. [3] John Catsoulis. “Designing embedded hardware”. O’ Reilly, Estados Unidos de
América, 2002. [4] José María Ángulo Usategui e Ignacio Ángulo Martínez. “Microcontroladores PIC:
Diseño práctico de aplicaciones 1ª parte”. McGraw-Hill, España, 2003. [5] Motorola. “MC68HC11A8 HCMOS Single-chip microcontroller”. Motorola Inc,
Estados Unidos de América, 1996. [6] Motorola. “MC68HC12B family data sheet”. Motorola Inc, Estados Unidos de
América, 2004. [7] Texas Instruments. “C2000 Controllers”. Estados Unidos de América, consultado en
mayo de 2005, http://focus.ti.com/mcu/docs/overview.tsp?templateId=5992& navigationId=11468&path=templatedata/cm/mcuovw/data/C2000_ovw
[8] Microchip. “What is a dsPIC DSC?”. Microchip webseminars, Estados Unidos de
América, 2004. [9] Robert F. Coughlin. “Amplificadores operacionales y circuitos integrados lineales”.
Editorial Prentice Hall, México, 1999. [10] Hen Chan. “Electronic Circuitry EE303”, Notas de clase. Mohawk College, Canada,
2000. [11] AN10216-01 “Manual de I2C” de Philips. [12] Brad Suppanz. “Calculadora de ancho de pista para placa de circuito impreso”.
Consultado en enero de 2005, http://www.geocities.com/suppanz/TraceWidth.htm [13] Programa de monitoreo del puerto serie. Descargado en abril de 2005,
http://tapec.uv.es/edupic/test/Comunica.exe [14] Buscador de hojas de datos de componentes electrónicos. Consultado en septiembre
de 2005, http://www.alldatasheet.com [15] Resistor. Electrónica Práctica. Numero 203, Revistas profesionales, España, 2004.
Diseño y construcción de una tarjeta programable Referencias de adquisición, procesamiento de datos y control
87
[16] John Iovine. “Pic Microcontroller Project Book”. McGraw-Hill, Estados Unidos de América, 2004.
[17] Application Note. “Thyristors & Triacs – Ten golden rules for success in your
application. [18] Reglas del concurso de robots de carreras de microbótica en México. Consultado en
septiembre de 2005, http://www.microbotica.org/reglamenteo/carreras.pdf
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
88
Anexo A. Circuitos esquemáticos de la tarjeta programable
Figura A.1 Circuito esquemático de tarjeta principal.
VC
C
VCC
VCC
2
VCC
VC
C1
VAN
VCC
VCC
2V
CC
VCC
VCC
1VC
C2
VCC
VCC
VCC
VC
C1
VAN
VCC VC
C
VC
C
VC
C1
VAN
VC
C
VC
C
H20
H2
L13
L2
H6H15
L9
H7
L9
H19
H18
H10
L7
L8
H17
L4
H17
H6
L12
H8
L7
L3
H13
H12
H2
H16
H9
H7
H21
H19
L4
L5
H3
H14
L3
H8
L10
H1
H18
H15
H16
L2
L10
L6
L11
H3
H5
H5
H4
L6
H9
L5
L1
H4
L8
H13
H21H20
H14
L12L11
L13
H12
L1
H1
H10
H11H11
L18
L16
L14L14
L16L17L18
L21L20L19
L15
L17
L19
L21
L20
L15
C2
D2
RES
ET
PO
R P
C
C5
C5
D5
D3
D3
B3
B3
C1
B3
C2
B7
D4
D1
D0
RB
0 RB
0
B1
D0
B0
C5
B2
D7
B7
D6
B2
B0
B7
C1
C0
C1
B1
B1
B2
C5
D7
B0
C5
B6
B1
D6
D5
C2
B7
B0
D4
C0
B2
C0
D2
D6
D0
B7
D3
D1
RA5
B3
D1
D7
D5
D4
D2
D0
D1
D2
D7
D6
D5
D4
D3
B0
B1
B2
B3
B7
B6
B4
B6
B5
B4
B6
B6
B6
B5
B5
B4
B5
B4
B5
B4
C4
C3
A4
A4
A4 A
4
C26
U2
74H
C24
5
23456789
1817161514131211
1 19
A1
A2
A3
A4
A5
A6
A7
A8
B1
B2
B3
B4
B5
B6
B7
B8
DIR
OE
C20
+ -U7D
12 1314
+ -U7C
10 98
+ -U7B
5 67
+ -U7A
MC
P60
44
3 21
C47
C46
C45
100n
F
R39
470
R40
470
J47
I2C1 2
U5
L293
2 7 10 15 1 9
3 6 11 14
8
1A 2A 3A 4A 1,2E
N3,
4EN
1Y 2Y 3Y 4YVCC2
U4
L293
2 7 10 15 1 9
3 6 11 14
8
1A 2A 3A 4A 1,2E
N3,
4EN
1Y 2Y 3Y 4YVCC2
J28 USB
1 2 3 4
VBU
SD
-D
+G
ND
5 6
R45
4K7
C8
100n
FC
9
C11
C14
C10
100n
FC
13C
12
C17
C19
100n
F
C15
C18
C16
C22
22nF
C25
C21 10
nF
R32
330
R28
330
R31
2K2
R29
2K2
U8
24FC
512
A0
A1
SD
ASC
LA
2
D8
R46
470
JP4
CO
NE
CTO
R A
TA
RJE
TA 4
-20
mA
12
34
56
78
910
1112
1314
R22
47K
C
R34
10K
R20
820
R19
10K
R48
4K7
R4247K
R33
4.7
SW
5
SW
DIP
-3
123
654 J3
0 123
J29 1
23
J31
123
R36
R35
470
R38
470
R37
J35 1
23
R23
R30
1K5
J2612
C
R41
47K
R27
R26
C48
C49
100n
F
L2
0.5m
H
L1
0.5m
H
U3
MA
X232
13 8 11 10 1 3 4 5 2 6
12 9 14 7
R1I
NR
2IN
T1IN
T2IN
C+
C1-
C2+
C2-
V+ V-
R1O
UT
R2O
UT
T1O
UT
T2O
UT
P15 9 4 8 3 7 2 6 1
D7
U9
LM78
05C
/TO
220
13
2
INO
UT
GND
JP3
EN
T. P
RO
G
VPP/
MC
LR#
RB3
/PG
MR
B7/P
GD
RB6
/PG
C1
23
45
6
C4
10uF
/25V
C2
C1
10uF
/25V
C3
C7
100u
F/25
V
C6
10uF
/25V
D2
1N41
48
JP1
CO
NE
CTO
R A
TA
RJE
TA D
E uC
12345678910111213141516171819202122232425262728293031323334353637383940
R24
R25
J36 1
23
C27
100n
F
J27
CO
N3
123
U10
24FC
512
A0
A1
SD
ASC
LA
2
U6
LM78
15C
/TO
220
13
2
INO
UT
GND
C43 0.1uF
C44 0.1uF
C50
100n
F
C23
C24
100u
F/2
5VJ32
FTE
. VC
D E
XT.
1 2
J34
CON5
12345
J33
CON5
12345
D3
5V1
JP5
HEA
DER
7X2
12
34
56
78
910
1112
1314
R1
470
R2
R4
R3
R8
R6
R9
R5
R7
U1
LM79
15C
/TO
220
23
1
INO
UT
GND
R10
470
R11
R13
R12
R14
C29 0.1uF
C30 0.1uF
R17
R18
470
R16
C28
100
nF
R15
J1 123
D4
1N41
48
C33
1000uF/50v
C32 0.1uF
C31 0.1uF
C
R47 220
1 23456789
F1 1 A
C35
1000uf/50v
C39 100uF/50v
C36 100uF/100v
C40 100uF/50v
C34 100uF/50vC38 100uF/50v
C37 100uF/50v
J2 123
J5 123
J4 123
J7 123
J3 123
J6 123
C42 0.1uF
D6
C41 100uF/50v
R2110K
J14 1
23
J9 123
J8 123
J11 1
23
J12 1
23
J15 1
23
J13 1
23
J10 1
23
JP2
HE
ADE
R 1
8X2
12
34
56
78
910
1112
1314
1516
1718
1920
2122
2324
2526
2728
2930
3132
3334
3536
J21 1
23
J18 1
23
J20 1
23
J17 1
23
J19 1
23
J16 1
23
J23 123
J22 123
J24 123
J25 123
J43
1234
J39
1234
J41
1234
J40
1234
J44
1234
J38
1234
J42
1234
J45
1234
SW4
1234
8765
R44 470
R43 470
SW
3
123
654
C4
RC
4
RC
3
C3
RC4
RC
6
AN
3
RC
6
RC3
RE1
AN
0
RC
7
RA
5
AN
1
RC
7
RB
0
RE0
RE2
AN2
RA5
C3
C4
C3
C4
RE
1R
E2
RE
0
AN1
AN3
AN2
AN0
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
89
Figura A.2 Circuito esquemático de tarjeta de procesamiento.
VCC
VCC
U1
PIC
18F4
52
1
2 3 4 5 6 7 8 9 10
11 1314
19 20 21 22
32
27 28 29 3033 34 35 36 37 38 39 40 2625242318171615
MC
LR/V
pp
RA0
/AN
0R
A1/A
N1
RA2
/AN
2/VR
EF-
RA3
/AN
3/VR
EF+
RA4
/TO
CKI
RA5
/AN
4/SS
#
RE0
/RD
#/AN
5R
E1/W
R#/
AN6
RE2
/CS#
/AN
7
VC
C
OSC
1/C
LKIN
OS
C2/
CLK
OU
T
RD
0/PS
P0R
D1/
PSP1
RD
2/PS
P2R
D3/
PSP3
VC
C
RD
4/PS
P4R
D5/
PSP5
RD
6/PS
P6R
D7/
PSP7
RB0
/INT
RB1
RB2
RB3
PGM
RB4
RB5
RB6
/PG
CR
B7/P
GD
RC
7/R
X/D
TR
C6/
TX/C
KR
C5/
SDO
RC
4/SD
I/SD
AR
C3/
SCK/
SCL
RC
2/C
CP1
RC
1/T1
OSO
/CC
P2R
C0/
T1O
SI/T
1CKI
XTL
C2
100
nF
C1
100
nF
C5
22pF
C4
22pF
C3 10uF
JP1
HEA
DER
20X
2
12345678910111213141516171819202122232425262728293031323334353637383940
S1
C6
10 u
F / 1
6V
R23
10K
D1
1N41
48
SW1
12
R21
100
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
90
Figura A.3 Circuito esquemático de la tarjeta de 4-20 mA.
-15V
CC
+15V
CC
+5V
CC
+15V
CC
-15V
CC
-15V
CC +1
5VC
C
+15V
CC
+5VC
C
U3 XT
R11
0
16
85314 12
6215 11
79
41
13 10
+ Vc
c
Zer
o A
dj3
Vin
2(5V
)
Vre
f In
Gat
e D
rive
Vref
Sens
eZ
ero
Adj
1
Com
mV
ref
Forc
e
Vref
Adj
Zer
o A
dj2
16m
A S
pan
Vin
1(10
V)
Sou
rce
Res
Sou
rceS
ense
4mA
Spa
n
U1
DAC
0808
12 11 10 9 8 7 6 5 14 15
4 2 16
13 3
A8 A7 A6 A5 A4 A3 A2 A1 VR+
VR-
IOU
T
IOU
T
CO
MP
V+ V-
U2
RC
V42
0
16
85314 12
6215 11
79
41
13 10
V +
Ref
Trim
Ref
Com+ In
Rcv
Out
Ref
In
NC
1
CT
Rcv
fB
Ref
Out
Ref
Noi
se R
edN
C2
V -
- In
Rcv
Com
Ref
fB
JP1
HE
AD
ER 7
X2
12
34
56
78
910
1112
1314
+-
U4
LF35
132
6
71
45
R1
3K3
R2
3K3
R3
1KR
4 10K
C1
33pF
J1
EN
TRA
DA
4-20
mA
1 2
J2
SALI
DA
4-20
mA
1 2
Q1
MO
SFE
T M
TP29
551
23
+C
2
1 uF
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
91
Figura A.4 Circuito esquemático de tarjeta de aplicación.
VC
C
VA
N
VC
C1
VA
N
VC
C1
VC
C1
VCC
VC
C
VC
C
VC
C
VC
C
A2
S3
S0
S1
D1
A4
S3
S5
S6
S1
S4
S3
S0
D6
S1
S4
B5
D3
D5
D7
D4
D5
S3
S5
C3
D3
S2 S3
S5
S2
S7
D7
S1S0
S5
C5
A5
S7S
6S
5
S0
S2
S6
RB
0
D2
S7
B4
D6
S4
S2
S4
S0
D1
D2
D4
S4
C4
S6
S2
S1
S7
B5
B4
S6
D0
D0
B3
B1
B1
B3
B2
B7
B2 B
0
B6
B0
B6B
7
R5
LDR
R3
10K
U1
LM35
/TO
12
VS+
VO
UT
R110
K1
32
R2 10
K1
3
2
J3 123
C4
47uF
/16v
J2 123
J1 123
J4 123
SW20
R13
1k
R15
1k
R12
3K9
JP2
124 567 9 10ed
3
c dpba
8
f g
SW18
JP3
124 567 9 10ed
3
c dpba
8f g
JP4
124 567 9 10ed
3
c dpba
8
f g
JP5
124 567 9 10ed
3
c dpba
8
f g
U2
74LS
48
7 1 2 64 5 3
13 12 11 10 9 15 14A B C DB
IR
BI
LT
OA
OB
OC
OD
OE
OF
OG
U3 PC
F85
91
15 14 13 12 1110932 5 6 741
AOU
T
VRE
F
AG
ND
EXT
OS
CS
CL
SD
A
AIN
2A
IN1
A0
A1
A2
AIN
3
AIN
0
SW4
SW3
SW7
SW10
SW6
SW8
SW5
SW9
SW11
SW13
SW16
SW15
SW14
SW12
SW17
C
R11
470
123456789
Q4
2N39
04
32
1
Q2
2N39
04
32
1
Q3
2N39
04
32
1
Q5
2N39
04
32
1
R8
10K
R6
220
R7
3K9
Q1
2N39
04
32
1
J5 1 2
D1
R9 10
K
13
2
C1
100n
C5
100n
SW19
D27 LE
D
R14
3K9
JP6
12
34
56
78
910
1112
1314
1516
1718
1920
2122
2324
2526
2728
2930
3132
3334
3536
JP1
124 567 9 10ed
3
c dpba
8
f g
D11
D13
D12
D10
D17
D15
D16
D14
D18
D21
D19
D20
D26
D24
D22
D23
D25
D4
D8
D6
D7
D5
D2
D3
D9
J6
1 2
J7 CO
N2
1 2
C
R10
470
12 3 4 5 6 7 8 9
R4
470
B4
B5
A5
B7B4
B1
C3
RB0
AN
3
B5
B2
C4
B3A
N3
A4
B0
B6
C5
B7
B6
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
92
Anexo B. Diseños de placas de circuito impreso
Figura B.1 Diseño de la cara superior de la tarjeta principal.
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
93
Figura B.2 Diseño de la cara inferior de la tarjeta principal.
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
94
A B C D
1 1
2 2
3 3
4 4
5 5
A B C D Figura B.3 Capa de leyenda de componentes de la tarjeta principal
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
95
Tabla B.1 Ubicación de componentes en la tarjeta principal.
Compo-nente
Ubica-ción
C1 5B C2 4B C3 4B C4 4B C6 5A C7 5B C8 4C C9 4C C10 5C C11 5D C12 5C C13 5D C14 5D C15 5C C16 5D C17 5D C18 5D C19 4D C20 5D C21 3D C22 3C C23 4C C24 5C C25 3D C26 3D C27 4D C28 3B C29 4A C30 4B C31 4C C32 4C C33 4A C34 4B C35 4A
Compo-nente
Ubica-ción
C36 4C C37 4C C38 4B C39 4C C40 4C C41 4C C42 4C C43 4A C44 4B C45 5D C46 4C C47 4D C48 2D C49 2D C50 4D D2 5B D3 5A D4 4C D6 2D D7 4C D8 4B F1 4A J1 3C J2 4C J3 3C J4 3C J5 3C J6 3C J7 3C J8 3C J9 3C
J10 3C J11 2C J12 2C
Compo-nente
Ubica-ción
J13 3C J14 2C J15 2C J16 2C J17 2C J18 2C J19 2C J20 2C J21 2C J22 2D J23 3D J24 3D J25 3D J26 3B J27 4A J28 2D J29 2C J30 2D J31 2D J32 4A J33 5D J34 5D J35 5C J36 4C J38 5D J39 5C J40 5C J41 5C J42 5B J43 5B J44 5A J45 5A J47 4D JP1 3A
Compo-nente
Ubica-ción
JP2 1A JP3 2D JP4 1C JP5 1D P1 5A R1 3A R2 3A R3 3A R4 3A R5 2A R6 2A R7 2B R8 2B R9 2B R10 2B R11 2A R12 2A R13 2B R14 2B R15 2B R16 2A R17 2B R18 2A R19 1D R20 1D R21 2B R22 2C R23 3C R24 2C R25 2C R26 3C R27 2C R28 5B R29 2D
Compo-nente
Ubica-ción
R30 2D R31 3C R32 5B R33 5A R34 5C R35 3C R36 3D R37 3D R38 3D R39 3C R40 3C R41 3D R42 3B R43 4C R44 4B R45 4D R46 4B R47 5B R48 4D SW3 4D SW4 5C SW5 4D U1 4B U2 3B U3 5B U4 5D U5 4D U6 4B U7 3D U8 4D U9 4B U10 4D
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
96
Figura B.4 Diseño de la cara superior de la tarjeta de procesamiento.
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
97
Figura B.5 Diseño de la cara inferior de la tarjeta de procesamiento.
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
98
Figura B.6 Capa de leyenda de componentes de la tarjeta de procesamiento.
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
99
Figura B.7 Diseño de la cara inferior de la tarjeta de E/S de 4-20 mA.
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
100
Figura B.8 Capa de leyenda de componentes de la tarjeta de E/S de 4-20 mA.
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
101
Figura B.9 Diseño de la cara superior de la tarjeta de aplicación.
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
102
Figura B.10 Diseño de la cara inferior de la tarjeta de aplicación.
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
103
Figura B.11 Capa de leyenda de componentes de la tarjeta de aplicación.
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
104
Anexo C. Programas de prueba de la tarjeta programable Los programas de este anexo corresponden a los programas realizados para las pruebas funcionales de la tarjeta programable. En la tabla C.1 se enlistan los programas así como la prueba que realizan.
Tabla C.1 Programas de las pruebas de la tarjeta programable.
Nº Nombre Módulo de entrada Módulo de salida Programa
Puerto B (E/S digitales) Puerto D (E/S digitales)
1.A
1 E/S digitales Puerto D (E/S digitales) Puerto B (E/S
digitales) 1.B
2 Entradas analógicas Entrada analógica RA0 Puerto B (E/S
digitales) 2
3 Potencia para motores * Potencia para motores 3
4 Pantalla de
cristal líquido (LCD)
* LCD 4
5 Comunicación RS232 Puerto B (E/S digitales) RS232 5
6 Comunicación I2C * Memoria EEPROM 6.A
6.B
E/S de 4-20 mA Puerto B (E/S digitales)
7.A 7 E/S de 4 - 20
mA * E/S de 4-20 mA 7.B * En estas pruebas los datos iniciales o de control son generados en el módulo de procesamiento. La descripción de operación de cada programa se detalla en la sección 4.1. Programa 1.A – Entradas/salidas digitales #include <p18f452.h> #pragma config OSC = HS #pragma config BOR = OFF #pragma config WDT = OFF #pragma config LVP = OFF void main (void) PORTB = 0;LATB = 0; TRISB = 0xFF; // PORTB entrada PORTD = 0;LATD = 0; INTCON2 = 0x80; TRISD = 0x00; // PORTD salida while (1)
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
105
PORTD = ~PORTB; // PORTD = complemento a 1 de PORTB Programa 1.B – Entradas/salidas digitales #include <p18f452.h> #pragma config OSC = HS #pragma config BOR = OFF #pragma config WDT = OFF #pragma config LVP = OFF void main (void) PORTB = 0;LATB = 0; TRISB = 0x00; // PORTB salida PORTD = 0;LATD = 0; INTCON2 = 0x80; TRISD = 0xFF; // PORTD entrada while (1) PORTB = ~PORTD; // PORTB = complemento a 1 de PORTD
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
106
Programa 2 – Entradas analógicas #include <p18f452.h> #include <delays.h> #include <adc.h> void main (void) INTCON = 0; // Deshabilita las interrupciones PORTA = 0;LATA = 0; TRISA = 0xEF; // RA4 SALIDA PORTB = 0;LATB = 0; INTCON2 = 0x80; TRISB = 0; // PORTB SALIDA OpenADC(ADC_FOSC_RC & ADC_LEFT_JUST & ADC_5ANA_0REF,ADC_CH0 & ADC_INT_OFF); while (1) // Ciclo infinito Delay10TCYx(1); // Retardo de 3.2 us para 12 MHz ConvertADC(); // Inicia la conversión while (BusyADC()); // Espera a que la conversión finalice PIR1bits.ADIF = 0; //Limpia la bandera de interrupción del conversor AD PORTB = ADRESH; // Copia los 8 bits mas significativos al PORTB Programa 3 – Potencia para motores #include <p18f452.h> void main (void) PORTA = 0; LATA = 0; TRISA = 0x00; // PORTA salida PORTB = 0; LATB = 0; TRISB = 0x00; // PORTB salida PORTC = 0; LATC = 0; TRISC = 0x00; // PORTC salida PORTD = 0; LATD = 0; TRISD = 0xFF; // PORTD entrada while (1) PORTCbits.RC2 = PORTDbits.RD0; PORTBbits.RB6 = PORTDbits.RD1; PORTBbits.RB7 = PORTDbits.RD2; PORTAbits.RA4 = PORTDbits.RD3; PORTCbits.RC1 = PORTDbits.RD4; PORTCbits.RC0 = PORTDbits.RD5; PORTBbits.RB0 = PORTDbits.RD6; PORTCbits.RC5 = PORTDbits.RD7;
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
107
Programa 4 – Pantalla de cristal líquido (LCD) #include <p18f452.h> #include <delays.h> #define RS PORTEbits.RE0 #define RW PORTEbits.RE1 #define EN PORTEbits.RE2 unsigned char mensaje[]='c','e','n','i','d','e','t',mensaje2[]='m','e','c','a','t','r','o','n','i','c','a'; unsigned int i=0; /* Conexiones del LCD PORTB - DATOS RE0 - RS RE1 - RW RE2 - ENA - DelayFor18TCY() provides a 18 Tcy delay - DelayPORXLCD() provides at least 15ms delay - DelayXLCD() provides at least 5ms delay */ void main(void) ADCON1=0x02; TRISB=0x00; TRISE=0x00; // Configura el LCD externo RW=0; RS=0; EN=1; //Transmisión 8 bits, una línea, 5x8 puntos PORTB=0x38; Delay1KTCYx(3); EN=0; Delay1KTCYx(3); RS=0; EN=1; //Mensaje fijo PORTB=0x06; Delay1KTCYx(3); EN=0; Delay1KTCYx(3); RS=0; EN=1; //Enciende display PORTB=0x0C; Delay1KTCYx(3); EN=0; Delay1KTCYx(3); RS=1; for(i=0;i<7;i++)
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
108
EN=1; PORTB=mensaje[i]; Delay1KTCYx(3); EN=0; Delay1KTCYx(3); RS=0;Delay10TCYx(1);EN=1; //Cambia de renglón PORTB=0xC0; Delay10TCYx(3); EN=0; Delay10TCYx(3); RS=1; for(i=0;i<11;i++) EN=1; PORTB=mensaje2[i]; Delay1KTCYx(3); EN=0; Delay1KTCYx(3); while(1); Programa 5 – Comunicación RS232 #include <p18f452.h> #include <usart.h> #include <delays.h> int A1=0; void main(void) // Configuracion USART OpenUSART( USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 38 ); //BGR = 19200 TRISD=0xFF;LATD=0x00; while(1) Delay10KTCYx(0); A1=PORTD+0x30; WriteUSART(A1); //Envía el valor de PORTD
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
109
if(TXSTAbits.TRMT == 1) break; CloseUSART(); Programa 6.A – Comunicación I2C (Escritura) #include <p18f452.h> #include <i2c.h> #include <delays.h> #pragma config OSC = HS #pragma config BOR = OFF #pragma config WDT = OFF #pragma config LVP = OFF void main(void) OpenI2C(MASTER, SLEW_OFF);// Inicializa el modulo I2C SSPADD = 29; // 400kHz Baud clock(6.5) @12MHz // 100kHz Baud clock(29) @12MHz SSPCON2=0x00; TRISC=0x18; PORTD=0;LATD=0;TRISD=0; StartI2C(); //Escribe en la memoria EEPROM IdleI2C(); WriteI2C(0xA0); IdleI2C(); WriteI2C(0x00); IdleI2C(); WriteI2C(0x00); IdleI2C(); WriteI2C(0xA5); IdleI2C(); WriteI2C(0x00); IdleI2C(); StopI2C(); IdleI2C(); Programa 6.B – Comunicación I2C (Lectura) #include <p18f452.h> #include <i2c.h> #include <delays.h> #pragma config OSC = HS #pragma config BOR = OFF #pragma config WDT = OFF #pragma config LVP = OFF
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
110
void main(void) unsigned char buffer[4]; OpenI2C(MASTER, SLEW_OFF);// Inicializa el modulo I2C SSPADD = 29; // 400kHz Baud clock(6.5) @12MHz // 100kHz Baud clock(29) @12MHz SSPCON2=0x00; TRISC=0x18; PORTD=0;LATD=0;TRISD=0; SSPCON2bits.SEN = 1; // Envía bit de inicio while(SSPCON2bits.SEN); // y lo espera para limpiar SSPCON2bits.ACKDT = 0; // el bit de ACK PIR1bits.SSPIF = 0; SSPBUF = 0xA0; // 10100000 - Comando de escritura while(!PIR1bits.SSPIF); // espera la interrupción PIR1bits.SSPIF = 0; // entonces limpia la bandera. SSPBUF = 0x00; // Se envía el byte alto while(!PIR1bits.SSPIF); // de la dirección 0x0000 PIR1bits.SSPIF = 0; // SSPBUF = 0x00; // Se envía el byte bajo while(!PIR1bits.SSPIF); // de la dirección 0x0000 PIR1bits.SSPIF = 0; // SSPCON2bits.RSEN = 1; // envía el bit de inicio repetido while(SSPCON2bits.RSEN); // y espera por el para limpiar PIR1bits.SSPIF = 0; SSPBUF = 0xA1; // 10100001 - comando de lectura while(!PIR1bits.SSPIF); // espera por la interrupción PIR1bits.SSPIF = 0; // entonces limpia la bandera. SSPCON2bits.RCEN = 1; // empieza a recibir while(!SSPSTATbits.BF); // espera por el dato buffer[0] = SSPBUF; // y lo obtiene SSPCON2bits.ACKEN = 1; // empieza la secuencia de ACK while(SSPCON2bits.ACKEN); // espera a que la secuencia ACK termine SSPCON2bits.RCEN = 1; // Empieza a recibir while(!SSPSTATbits.BF); // espera por el dato buffer[1] = SSPBUF; // y lo obtiene SSPCON2bits.ACKEN = 1; // empieza la secuencia de ACK
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
111
while(SSPCON2bits.ACKEN); // espera a que la secuencia ACK termine SSPCON2bits.RCEN = 1; // Empieza a recibir while(!SSPSTATbits.BF); // espera por el dato buffer[2] = SSPBUF; // y lo obtiene SSPCON2bits.ACKEN = 1; // empieza la secuencia de ACK while(SSPCON2bits.ACKEN); // espera a que la secuencia ACK termine SSPCON2bits.RCEN = 1; // Empieza a recibir while(!SSPSTATbits.BF); // espera por el dato buffer[3] = SSPBUF; // y lo obtiene SSPCON2bits.ACKDT = 1; // sin reconocimiento para el ultimo byte SSPCON2bits.ACKEN = 1; // inicia secuencia ACK while(SSPCON2bits.ACKEN); // espera a que la secuencia ACK termine SSPCON2bits.PEN = 1; // envía bit de paro PORTD=buffer[0]; while(1); Programa 7.A – Entrada de 4-20 mA // Leer la entrada de 4-20 mA y mostrarla en puerto B #include <p18f452.h> #include <timers.h> #pragma config OSC = HS #pragma config BOR = OFF #pragma config WDT = OFF #pragma config LVP = OFF void main (void) PORTC=0;LATC=0;TRISC=0x00; // PORTC salida PORTD=0;LATD=0;TRISD=0x00; // PORTD salida PORTB=0;LATB=0;TRISB=0x00; // PORTB salida INTCON=0; // Deshabilita las interrupciones PORTA=0;LATA=0;TRISA=0xEF; // RA4 SALIDA INTCON2=0x80; OpenADC(ADC_FOSC_RC & ADC_LEFT_JUST & ADC_5ANA_0REF,ADC_CH4 & ADC_INT_OFF); while(1) ConvertADC(); // Inicia la conversión
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
112
while (BusyADC()); // Espera a que la conversión finalice PIR1bits.ADIF = 0; // Limpia la bandera de interrupción del ADC PORTB = ADRESH; // Copia los 8 bits mas significativos al puerto B Programa 7.B – Salida de 4-20 mA // Prueba 01 - Salida DAC 0 y 5 Volts cada 10 seg #include <p18f452.h> #include <timers.h> #include <delays.h> #pragma config OSC = HS #pragma config BOR = OFF #pragma config WDT = OFF #pragma config LVP = OFF void off (void) PORTD=0x00; void on (void) PORTD=0xFF; void main (void) PORTD = 0;LATD = 0; INTCON2 = 0x80; TRISD = 0x00; // PORTD salida while (1) on(); Delay10KTCYx(0);Delay10KTCYx(0);Delay10KTCYx(0);
Delay10KTCYx(0);Delay10KTCYx(0);Delay10KTCYx(0); Delay10KTCYx(0);Delay10KTCYx(0);Delay10KTCYx(0); Delay10KTCYx(0);Delay10KTCYx(0);Delay10KTCYx(0);
off(); Delay10KTCYx(0);Delay10KTCYx(0);Delay10KTCYx(0);
Delay10KTCYx(0);Delay10KTCYx(0);Delay10KTCYx(0); Delay10KTCYx(0);Delay10KTCYx(0);Delay10KTCYx(0); Delay10KTCYx(0);Delay10KTCYx(0);Delay10KTCYx(0);
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
113
Anexo D. Documentación de los programas de control de las plantas Anexo D.1. Diagrama de flujo del programa de control del robot móvil seguidor de línea
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
114
Anexo D.2. Documentación del programa de control del robot móvil seguidor de línea // Programa de control del seguidor de línea // Conexión de los sensores a la tarjeta programable // RD1 - Sensor izquierdo // RD0 - Sensor derecho // Conexión de los motores a la tarjeta programable // RC2 - Avance Motor izquierdo // RB6 - Retroceso Motor izquierdo // RB7 - Avance Motor derecho // RA4 - Retroceso Motor derecho // #include <p18f452.h> // Se incluye librería del microcontrolador PIC18F452 #pragma config OSC = HS // Se selecciona modo de oscilador de alta velocidad. #pragma config BOR = OFF // Deshabilita el reinicio por bajo voltaje #pragma config WDT = OFF // Deshabilita el perro guardián #pragma config LVP = OFF // Deshabilita la programación en bajo voltaje void girder(void) // Subrutina para que el robot móvil gire hacia la derecha PORTCbits.RC2=1; // El motor izquierdo gira PORTBbits.RB6=0; // hacia delante y PORTBbits.RB7=0; // el motor derecho gira PORTAbits.RA4=1; // hacia atrás void girizq(void) // Subrutina para que el robot móvil gire hacia la izquierda PORTCbits.RC2=0; // El motor izquierdo gira PORTBbits.RB6=1; // hacia atrás y PORTBbits.RB7=1; // el motor derecho gira PORTAbits.RA4=0; // hacia delante void adelante(void) // Subrutina para que el robot móvil avance PORTCbits.RC2=1; // PORTBbits.RB6=0; // Ambos motores PORTBbits.RB7=1; // giran hacia delante PORTAbits.RA4=0; // void apagado(void) // Subrutina de apagado de motores PORTCbits.RC2=0; // Desactiva los PORTBbits.RB6=0; // motores PORTBbits.RB7=0; // izquierdo y PORTAbits.RA4=0; // derecho void main (void) // Inicio de programa principal PORTA = 0;LATA = 0; // Asigna un valor inicial de 0 al puerto A ADCON1 = 0x02; // El puerto A actúa con 5 entradas analógicas y 3 E/S digitales TRISA = 0x00; // Configura puerto A como salidas digitales PORTB = 0;LATB = 0; // Asigna un valor inicial de 0 al puerto B INTCON2 = 0x80; // Deshabilita las interrupciones
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
115
TRISB = 0x00; // Configura puerto B como salidas digitales PORTC = 0;LATC = 0; // Asigna un valor inicial de 0 al puerto C TRISC = 0; // Configura puerto C como salidas digitales PORTD = 0; LATD = 0; // Asigna un valor inicial de 0 al puerto D TRISD = 0xFF; // Configura el puerto D como entradas digitales PORTE = 0; LATE = 0; // Asigna un valor inicial de 0 al puerto E TRISE = 0x00; // Configura el puerto E como salidas digitales while (1) // Empieza un ciclo infinito donde esta el control del robot móvil switch(PORTD) // Se lee el Puerto D donde están conectados los sensores // y según el valor de éste, se toma una decisión case 0x00: // Los sensores están sobre la línea negra, por lo que adelante(); // la acción a tomar es que el robot avance break; // Sale de la sentencia SWITCH case 0x01: // El sensor derecho detecta una área blanca, girizq(); // entonces el carro gira hacia la izquierda break; // Sale de la sentencia SWITCH case 0x02: // El sensor izquierdo detecta una área blanca, girder(); // entonces el carro gira hacia la derecha break; // Sale de la sentencia SWITCH case 0x03: // Ambos sensores detectan una área blanca, apagado(); // entonces el robot móvil se detiene break; // Sale de la sentencia SWITCH // Fin del programa
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
116
izq
D1=
home3
refsube
flgd,2=0
D3=0
B5=1
iz
D1=
home3
izq2
D1=1
home2
Horz=1
Sube
B5=1
izq2
frenovert
Portb,4=0
flgB,4=1 flgB,4=0
Portb,5=0
flgB,5=1 flgB,5=0
Portb,6=0
flgB,6=1 flgB,6=0
Portb,7=0
flgB,7=1 flgB,7=0
home2
home3
Intcon=b’10001000’ home
Flgb=0
flga=0
Flgc=0
Portd=0
arranqe
1
Porta,5=1
arranqe
Flgd=0
Inicio
Portd=0
tmr0=0
tmr0=0
tmr0=0
busqueda
obj=0
siguelo
trampI=0
subelo
trampD=0
bajalo
busqueda
Flg lim=0
home
Intcon
subelo
D2=
busqueda
flg subelo=0
busqueda
Flg subelo=1 Flg bajalo=0
Freno horz
Portd=0
Intcon=b’10001000’
bajalo
D3=1
busqueda
flg bajalo=0
busqueda
Flg subelo=0 Flg bajalo=1
Freno horz
Portd=0
b’10001000’
Anexo D.3. Diagrama de flujo del programa de control del modelo a escala de la plataforma de seguimiento solar
3 seg
Portd=0
busqueda
Intcon=b’10101000’
D0=1
Flgd,1=1
Ciclos busq=8
Pasos=4
opcion=b’10100001’
Tmr0=200
1
reposo
Intcon=0
Portd=0
sleep
fin
baja
B7=0
D3=1
refsube
B5=1
izq
flgd,2=1
D1=0
home3
D2=0
flg ciclsbusq=0
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
117
Flg_obj_perd=1
siguelo
Obj=1
chkcenti
ssiguelo
ssiguelo
Flg_obj_perd=0
ssiguelo
Flg_obj_perd=0
Frenovert/horz
Flga=0
Flgc=0
Flgsiguelo=1
Flgc,2=1
Intcon=b’10001000’
Frenovert/horz
CHK13DI
flg limite=0
home
Cent1=0
Chkcent4/trpD
chkcenti
Flg_obj_perd=1
flg2DB=0
2
B4=0
chk24DI
B5=0
Flgsub=0
cent3=0
Chkcent2/trpI
trampI=0
Chkcent3/4
Cent4=0
Chkcent1/trpI
ssiguelo
flg2DS=0
Flg2IS=0
trpD=0
Chkcent1/2
Cent2=0
Chkcent3/trpD
Flg2IB=0
2
Flgbaj=0
Intcon=b’
chk24DI
Cent2=0
Chkcent3/trpD
Cent4=0
chktrpI/4
trpD=0
baj
trpI=0
sub
ssiguelo
Flg2IB=0
Flg2IS=0
chk13DI
Cent1=0
Chkcent4/trpD
Cent3=0
chktrpI/3
trpD=0
baja
trpI=0
sube
ssiguelo
Flg2DB=0
Flg2DS=0
Chkcent3/4
Cent3=0
cent4=0
dersub
izqsub
FlgDS=0
FlgIS=0sub
Flgsub=0
ssiguelo
Portd=0
Flga=0
Flgc=0
Flgsiguelo=1
Flgsub=1
D2=1
ssiguelo
Intcon=b’10001000’
chktrpI/4
trpI=0
izqsub
2izqsub
chktrpI/3
trpI=0
dersub
2dersub
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
118
Chkcent1/2
Cent1=0
cent2=0
Derbaj
izqbaj
FlgDB=0
FlgIB=0 baj
Flgbaj=0
ssiguelo
Portd=0
Flga=0
Flgc=0
Flgsiguelo=1
Flgbaj=1
D3=1
ssiguelo
Intcon=‘b10001000’
Chkcent4/trpD
Cent4=0
trpD=0
“2derbaj”
3derbaj
Derbaj
Flg3DB=0
FlgDB=0
deron=100
der off=10
Flg 2DB=0
ssiguelo
ssiguelo
Opción=b’10000111’
Intcon=b’10101000’
Flg 2DB=1
D0=1
D3=1
Flg velizq=0
Tmr0=100
portd=0
Flga=0
B4=0
sigue2DB
Flgc=0
Flgc,2=1
Chkcent3/trpD
Cent3=0
trpD=0
“2izqbaj”
3izqbaj
izqbaj
Flg3IB=0
FlgIB=0
izqon=100
Izq off=10
Flg 2IB=0
ssiguelo
ssiguelo
Opción=b’10000111’
Intcon=b’10101000’
Flg 2IB=1
D1=1
D3=1
Flg velizq=1
Tmr0=100
portd=0
Flga=0
B5=0
sigue2IB
Flgc=0
Flgc,2=1
Chkcent2/trpI
Cent2=0
trpI=0
“2dersub”
3izqbaj
dersub
Flg3IB=0
FlgDS=0
deron=100
deroff=10
Flg 2DS=0
ssiguelo
ssiguelo
Opción=b’10000111’
Intcon=b’10101000’
Flg 2DS=1
D0=1
D2=1
Flg velizq=0
Tmr0=100
portd=0
Flga=0
B4=0
sigue2DS
Flgc=0
2dersub
Flgc,2=1
Chkcent1/trpI
Cent1=0
trpI=0
“2izqsub”
3derbaj
izqsub
Flg3DB=0
FlgIS=0
izqon=100
Izq off=10
Flg 2IS=0
ssiguelo
ssiguelo
Opción=b’10000111’
Intcon=b’10101000’
Flg 2IS=1
D1=1
D2=1
Flg velizq=1
Tmr0=100
portd=0
Flga=0
B5=0
sigue2IS
Flgc=0
2izqsub
Flgc,2=1
sigue2IS
Flg 2IS=0
Intcon=b’10001000’
ssiguelo
sigue2DS
Flg 2DS=0
Intcon=b’10001000’
ssiguelo
sigue2DB
Flg 2DB=0
Intcon=b’10001000’
ssiguelo
sigue2IB
Flg 2IB=0
Intcon=b’10001000’
ssiguelo
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
119
izqbaja
izqon=100
Izqoff=3
Flg IB=0
ssiguelo
ssiguelo
Opción=b’10000111’
Intcon=b’10101000’
Flg IB=1
D1=1
D3=1
Flg velizq=1
Tmr0=100
portd=0
B5=0
sigueIB
Flga=0
Flgc=
Flgc,2=1
izqsube
izqon=100
Izqoff=3
Flg IS=0
ssiguelo
ssiguelo
Opción=b’10000111’
Intcon=b’10101000’
Flg IS=1
D1=1
D2=1
Flg velizq=1
Tmr0=100
portd=0
B5=0
sigueIS
Flga=0
Flgc=0
Flgc,2=1
dersube
deron=100
deroff=3
Flg DS=0
ssiguelo
ssiguelo
Opción=b’10000111’
Intcon=b’10101000’
Flg DS=1
D0=1
D2=1
Flg velizq=0
Tmr0=100
portd=0
B4=0
sigueDS
Flga=0
Flgc=0
Flgc,2=1
derbaja
deron=100
deroff=3
Flg DB=0
ssiguelo
ssiguelo
Opción=b’10000111’
Intcon=b’10101000’
Flg DB=1
D0=1
D3=1
Flg velizq=0
Tmr0=100
portd=0
B4=0
sigueDB
Flga=0
Flgc=0
Flgc,2=1
3derbaja
deron=100
deroff=20
Flg 3DB=0
ssiguelo
ssiguelo
Opción=b’10000111’
Intcon=b’10101000’
Flg 3DB=1
D0=1
D3=1
Flg velizq=0
Tmr0=100
portd=0
B4=0
sigue3DB
Flga=0
Flgc=0
Flgc,2=1
3izqbaja
izqon=100
Izqoff=20
Flg 3IB=0
ssiguelo
ssiguelo
Opción=b’10000111’
Intcon=b’10101000’
Flg 3IB=1
D1=1
D3=1
Flg velizq=1
Tmr0=100
portd=0
Flga=0
Flgc=0
Flgc,2=1
B5=0
sigue3IB
sigue3IBFlg 3IB=0
Intcon=b’10001000’
ssiguelo
sigueIB Flg IB=0
Intcon=b’10001000’
ssiguelo
sigueIS Flg IS=0
Intcon=b’10001000’
ssiguelo
sigueDSFlg DS=0
Intcon=b’10001000’
ssiguelo
sigueDBFlg DB=0
Intcon=b’10001000’
ssiguelo
sigue3DB Flg 3DB=0
Intcon=b’10001000’
ssiguelo
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
120
interrupcio
B4=0
Chk flg B4
Flg B4=0
offlagb4
B5=0
Chk flg B5
Flg B5=0
offlagb5
B6=0
Chk flg B6
Flg B6=0
offlagb6
B7=0
Chk flg B7
Flg B7=0
offlagb7
Intcon,0=0
retfie
conti1
conti2
conti3
Flgsigelo=1
norebot
Intcon,2=0
chkgiro
Intcon,2=0
On der
D0=1
Flg on/off=0
Intcon,2=0
Tmr0=deron
retfie On izq
D1=1
Flg on/off=0
Intcon,2=0
Tmr0=izqon
retfie
chkgiro
Flg B4=1
derecha
frenovert
D1=1
retfie
Intcon,2=0
flgsiguelo=0
velgirohorz
Tmr0=200
Chk flg B4
Flg B4=0
conti1
Intcon,0=0
ciclsbusq-=0
Conti_D
Flg ciclosbusq=1
retfie
Flg B4=1
Flgsiguelo=0
para
frenoh
Chk flg B5
Flg B5=0
conti2
Intcon,0=0
ciclsbusq-=0
Conti_I
Flg ciclosbusq=1
retfie
Flg B5=1
Flgsiguelo=0
Flgposini=1
retfie
para
frenoh
retfie
para
Intcon=b’10001000’
velgirohorz
Flg velizq=0
velizq
Flg on/off=0
On der
D0=0
Flg on/off=1
Intcon,2=0
Tmr0=deroff
retfie
velizq
Flg on/off=0
On izq
D1=0
Flg on/off=1
Intcon,2=0
Tmr0=izqoff
retfie
Flg B0=0
decr
Pasos-=0
subir
Flg B0=1
D2=1
Pasos=4
retfie
Conti_I
bajar
D3=1
retfie
decr
Pasos-=0
bajar
Flg B0=0
Pasos=4
retfie
D3=1
subirD2=1
retfie
Flg B0=0
decr
Pasos-=0
subir
Flg B0=1
D2=1
Pasos=4
retfie
Conti_D
derecha
D0=1
retfie
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
121
offlagb4
Flg B4=0
Intcon,0=0
retfie
offlagb5
Flg B5=0
Intcon,0=0
retfie
refres
Intcon,0=0
retfie
posinib Portd,2=0
Portd,3=1
retfie
posinisPortd,3=0
Portd,2=1
retfie
Chk flg B6
Flg limite=1
Flg B6=0
conti3
retfie
Flgposini=1
portd=0
Intcon,0=0
Flg B6=1
retfie
Tmr0=
Intcon,2=0
Intcon=b’10001000’
Chk flg B7
Flg limite=1
Flg B7=0
refres
retfie
Flgposini=1
portd=0
Intcon,0=0
Flg B7=1
retfie
Tmr0=
Intcon,2=0
Intcon=b’10001000’
offlagb6
Flg B6=0
Intcon,0=0
retfie
Intcon,2=0
Tmr0=
offlagb7
Flg B7=0
Intcon,0=0
retfie
Intcon,2=0
Tmr0=
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
122
frenovert Cont1=2
Cont2-=0
c11
c9
return
portd=0
Cont2=100
nop
nop
nop
Cont3=80
portD=b’00100’
Cont3-=0
portD=b’01000’
c9
Cont3=80
Cont3-=0
c10
c10
c11
Cont1-=0
c12
c12
frenohorz
Cont1=20
Cont2-=0
c7
c5
return
portd=0
Cont2=100
nop
nop
nop
Cont3=80
portD=b’00001’
Cont3-=0
portD=b’00010’
c5
Cont3=80
Cont3-=0
c6
c6
c7
Cont1-=0
c8
c8
Frenohorz/vert
Cont1=2
Cont2-=0
c3
c1
return
portd=0
Cont2=100
nop
nop
nop
Cont3=80
portD=b’00101’
Cont3-=0
portD=b’01010’
c1
Cont3=80
Cont3-=0
c2
c2
c3
Cont1-=0
c4
c4
Tresseg
Conta1=1
Conta2=250
Conta2-=0
Conta1-=0
Retlw 0
Conta3-=0
Conta3=250
c15
c15
c14
c14
c13
c13
norebot
Conta1=2
Conta2=100
Conta2-=0
Conta1-=0
Retlw 0
Conta3-=0
Conta3=100
c25
c25
c24
c24
c23
c23
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
123
Anexo D.4. Documentación del programa de control del modelo a escala de la plataforma de seguimiento solar Registros de banderas y de entradas/salidas
flg
a
0
1
2 3 4 5 6
7
flgb
0 1 2 3 4 5 6 7
flgc
0 1 2 3 4 5 6 7
flgd
0 1 2 3 4 5 6 7
FLG INCR/DECR ALTURA. Bandera que indica: 0 = sube placa colectora o 1 = baja placa colectora FLG LÍMITE. Bandera que indica: que en la etapa de seguimiento se ha llegado a algún límite de giro vertical FLG OBJ PERD. Bandera que indica: sensor principal ha dejado de sensar luz FLG CICLOS DE BUSQ. Bandera que indica: ya se realizaron el número de barridos de búsqueda FLG DERECHA. Bandera a la que se le asigna el estado del interruptor de límite derecho FLG IZQUIERDA. Bandera a la que se le asigna el estado del interruptor de límite izquierdo FLG ARRIBA. Bandera a la que se le asigna el estado del interruptor de límite superior FLG ABAJO. Bandera a la que se le asigna el estado del interruptor de límite inferior
FLG 2DB Bandera que indica: La placa colectora se mueve con velocidad a la derecha dos veces mayor a la velocidad con que baja FLG 2IB Bandera que indica: La placa colectora se mueve con velocidad a la izquierda dos veces mayor a la velocidad con que baja FLG 2DS Bandera que indica: La placa colectora se mueve con velocidad a la derecha dos veces mayor a la velocidad con que sube FLG 2IS Bandera que indica: La placa colectora se mueve con velocidad a la izquierda dos veces mayor a la velocidad con que sube FLG DB Bandera que indica: La placa colectora se mueve con velocidad a la derecha igual a la velocidad con que baja FLG IB Bandera que indica: La placa colectora se mueve con velocidad a la izquierda igual a la velocidad con que baja FLG 3DB Bandera que indica: La placa colectora se mueve con velocidad a la derecha tres veces mayor a la velocidad con que baja FLG 3IB Bandera que indica: La placa colectora se mueve con velocidad a la izquierda tres veces mayor a la velocidad con que baja
FLG SUBELO. Bandera que indica: girar hacia arriba 2.5° la placa colectora (en la etapa de búsqueda) FLG BAJALO. Bandera que indica: girar hacia abajo 2.5° la placa colectora (en la etapa de búsqueda) FLG SIGELO. Bandera que indica: que el programa se encuentra en la etapa de búsqueda FLG ON/OFF. Bandera que se emplea para generar el ancho de pulso modulado, para ajustar la velocidad de giro horizontal FLG SUB. Bandera que indica: que la placa colectora esta subiendo (en la etapa de seguimiento) FLG BAJ. Bandera que indica: que la placa colectora esta bajando (en la etapa de seguimiento) FLG DS. Bandera que indica: La placa colectora se mueve con velocidad a la derecha igual a la velocidad con que sube FLG IS. Bandera que indica: La placa colectora se mueve con velocidad a la izquierda igual a la velocidad con que sube
FLG VEL IZQ. Bandera que indica: 1= placa colectora gira a la izquierda, 0= placa colectora gira a la derecha FLG POS INI. Bandera que indica: que el programa se encuentra en la etapa de posicionamiento inicial de la planta FLG SUBE INI. Bandera que indica: 0= sube placa colectora, 1= baja placa colectora (etapa de posicionamiento inicial) No empleada No empleada No empleada No empleada No empleada
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
124
PO
RT
A
0 1 2 3 4 5 6 7
POR
T B
0 1 2 3 4 5 6 7
POR
T D
0 1 2 3 4 5 6 7
No empleada No empleada No empleada No empleada Entrada de pulsos que provienen del encoder Arranque del sistema No empleada No empleada No empleada
Entrada de señal proveniente del sensor principal Entrada de señal proveniente del grupo izquierdo de sensores Entrada de señal proveniente del grupo derecho de sensores Entrada de señal proveniente del interruptor de límite central Entrada de señal proveniente del interruptor de límite derecho Entrada de señal proveniente del interruptor de límite izquierdo Entrada de señal proveniente del interruptor de límite arriba Entrada de señal proveniente del interruptor de límite abajo
Salida a motor: giro a la derecha Salida a motor: giro a la izquierda Salida a motor: giro arriba Salida a motor: giro abajo No empleada No empleada No empleada No empleada
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
125
adcon1 equ 9fh intcon equ 0bh opcion equ 81h estado equ 03h tmr0 equ 01h porta equ 05h portb equ 06h portd equ 08h trisa equ 85h trisb equ 86h trisd equ 88h conta1 equ 20h conta2 equ 21h conta3 equ 22h cont1 equ 23h cont2 equ 24h cont3 equ 25h flga equ 26h flgb equ 27h flgc equ 28h flgd equ 29h deron equ 2ah deroff equ 2bh izqon equ 2ch izqoff equ 2dh pasos equ 2eh cbusq equ 2fh org 00h ; Posición a la que apunta el contador de programa al iniciar la operación del microcontrolador goto inicio ; salto a la etiqueta “inicio” ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;Atención de interrupción Debido a que el accionamiento (apertura o cierre) de los interruptores de límite produce una ;interrupción en el programa Este bloque de programa detecta si un interruptor se abrió o cerró: ;En la etapa de ajustes de banderas, cada bandera se le asigno un cero o un uno dependiendo si el interruptor de limite estaba abierto o ;cerrado respectivamente. ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ org 04h ; Vector de interrupción (si ocurre alguna interrupción el programa salta a esta línea) btfss flgc,2 ; Checa si el programa esta en la etapa de seguimiento, si los esta brinca la próxima instrucción call norebot ; Llamada a rutina que elimina los efectos de rebotes mecánicos de interruptores de límite btfsc portb,4 ; Checa interruptor de límite derecho. Si no esta activado se produce salto de instrucción goto chflgb4 ; Salto a la etiqueta “chflgb4” btfsc flgb,4 ; Checa bandera de interruptor de límite derecho. Si no esta activado se produce salto de instrucción goto offlgb4 ; Salto a la etiqueta “offlgb4” conti1 btfsc portb,5 ; Checa interruptor de límite izquierdo. Si no esta activado se produce salto de instrucción goto chflgb5 ; Salto a la etiqueta “chflgb5” btfsc flgb,5 ; Checa bandera de interruptor de límite izquierdo. Si no esta activado se produce salto de instrucción goto offlgb5 ; Salto a la etiqueta “offlgb5” conti2 btfsc portb,6 ; Checa interruptor de límite superior. Si no esta activado se produce salto de instrucción goto chflgb6 ; Salto a la etiqueta “chflgb6” btfsc flgb,6 ; Checa bandera de interruptor de límite superior. Si no esta activado se produce salto de instrucción goto offlgb6 ; Salto a la etiqueta “offlgb6” conti3 btfsc portb,7 ; Checa interruptor de límite inferior. Si no esta activado se produce salto de instrucción goto chflgb7 ; Salto a la etiqueta “chflgb7” btfsc flgb,7 ; Checa bandera de interruptor de límite inferior. Si no esta activado se produce salto de instrucción goto offlgb7 ; Salto a la etiqueta “offlgb7” btfsc intcon,2 ; Checa bandera de interrupción por desbordamiento de registro tmr0 goto chkgiro ; Salto a la etiqueta “chkgiro” bcf intcon,0 ; Limpia bandera de interrupción por cambio de estado en el puerto B bcf intcon,2 ; Limpia bandera de interrupción por desbordamiento del registro tmr0
Mnemónicos de las direcciones en la memoria de datos empleadas en el programa
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
126
retfie ; Retorno de subrutina al programa principal chkgiro btfsc flgc,2 ; Checa bandera “sigelo”. Si esta desactivada se produce salto de instrucción goto velgirh ; Salto a la etiqueta “velgirh” call frenov ; Llamada a rutina que frena el giro vertical bcf intcon,2 ; Limpia bandera de interrupción por desbordamiento del registro tmr0 movlw .200 ; Se carga el tmr0=200 para que combinado con el divisor de frecuencia 1:4 movwf tmr0 ; y el paso del tornillo sin fin de la planta, produzca un giro vertical de 2.5°
btfss flgb,4 ; Checa bandera de interruptor de limite derecho. Si esta activada se produce salto de instrucción
goto derecha ; Salto a la etiqueta “derecha” bsf portd,1 ; Activa giro a la izquierda retfie ; Retorno de la rutina que atiende la interrupción, al programa principal onder bsf portd,0 ; Activa giro a la derecha bcf flgc,3 ; Limpia bandera “” bcf intcon,2 ; Limpia bandera de interrupción por desbordamiento de tmr0 movf deron,0 ; Se carga el tmr0 con el valor de movwf tmr0 ; la variable “deron” retfie ; Retorno de la rutina que atiende la interrupción, al programa principal onizq bsf portd,1 ; Se active giro a la izquierda bcf flgc,3 ; Limpia bandera “on/off” bcf intcon,2 ; Limpia bandera de interrupción por desbordamiento del registro tmr0 movf izqon,0 ; Se carga el tmr0 con el valor de movwf tmr0 ; la variable “izqon” retfie ; Retorno de la rutina que atiende la interrupción, al programa principal chflgb5 bcf intcon,0 ; Limpia bandera de interrupción por cambio de estado en el puerto B btfsc flgb,5 ; Checa bandera de interruptor de límite izquierdo. Si no esta activado se produce salto de instrucción goto conti2 ; Salto a la etiqueta “conti2” bsf flgb,5 ; Activa bandera “izquierda” btfss flgd,1 ; Checa bandera “pos ini”. Si esta activada se produce salto de instrucción retfie ; Retorno de la rutina que atiende la interrupción, al programa principal call frenoh ; Llamada a rutina que frena el giro horizontal btfsc flgc,2 ; Checa bandera “sigelo”. Si esta desactivada se produce salto de instrucción goto para ; Salto a la etiqueta “para” decfsz cbusq,1 ; Decrementa variable “cbusq”. Si reduce a cero, se produce salto de instrucción goto conti_i ; Salto a la etiqueta “conti_i” bsf flgb,3 ; Activa bandera “ciclos de busq” retfie ; Retorno de la rutina que atiende la interrupción, al programa principal velgirh btfsc flgd,0 ; Checa bandera “vel izq”. Si esta desactivada se produce salto de instrucción goto velizq ; Salto a la etiqueta “velizq” btfsc flgc,3 ; Checa bandera “on/off”. Si esta desactivada se produce salto de instrucción goto onder ; Salto a la etiqueta “onder” bcf portd,0 ; Se desactiva giro a la derecha bsf flgc,3 ; Activa bandera “on/off” bcf intcon,2 ; Limpia bandera de interrupción por desbordamiento del registro tmr0 movf deroff,0 ; Se carga el tmr0 con el valor de movwf tmr0 ; la variable “deroff” retfie ; Retorno de la rutina que atiende la interrupción, al programa principal velizq btfsc flgc,3 ; Checa bandera “on/off”. Si esta desactivada se produce salto de instrucción goto onizq ; Salto a la etiqueta “onizq” bcf portd,1 ; Se desactiva giro a la izquierda bsf flgc,3 ; Activa bandera “on/off” bcf intcon,2 ; Limpia bandera de interrupción por desbordamiento del registro tmr0 movf izqoff,0 ; Se carga el tmr0 con el valor de movwf tmr0 ; la variable “izqoff” retfie ; Retorno de la rutina que atiende la interrupción, al programa principal chflgb4 bcf intcon,0 ; Limpia bandera de interrupción por cambio de estado en el puerto B btfsc flgb,4 ; Checa bandera “derecha”. Si esta desactivada se produce salto de instrucción goto conti1 ; Salto a la etiqueta “conti1” call frenoh ; Llamada a rutina que frena el giro horizontal bsf flgb,4 ; Activa bandera “derecha” btfsc flgc,2 ; Checa bandera “sigelo”. Si esta desactivada se produce salto de instrucción goto para ; Salto a la etiqueta “para” decfsz cbusq,1 ; Decrementa variable “cbusq”. Si reduce a cero, se produce salto de instrucción goto conti_d ; Salto a la etiqueta “conti_d” bsf flgb,3 ; Activa bandera “ciclos de busq” retfie ; Retorno de la rutina que atiende la interrupción, al programa principal para movlw b'1000100’ ; Se activa interrupción por movwf intcon ; cambio de estado del puerto B retfie ; Retorno de la rutina que atiende la interrupción, al programa principal decr decfsz pasos,1 ; Decrementa variable “pasos”. Si reduce a cero, se produce salto de instrucción goto bajar ; Salto a la etiqueta “bajar”
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
127
bcf flgb,0 ; Limpia bandera “inca/decr altura”
movlw .4 ; Se carga pasos = 4, que es el número de veces que el giro vertical movwf pasos ; incrementara / decrementará 2.5° bsf portd,3 ; Se activa giro hacia abajo retfie ; Retorno de la rutina que atiende la interrupción, al programa principal bajar bsf portd,3 ; Se activa giro hacia abajo retfie ; Retorno de la rutina que atiende la interrupción, al programa principal subir bsf portd,2 ; Se activa giro hacia arriba retfie ; Retorno de la rutina que atiende la interrupción, al programa principal conti_d btfsc flgb,0 ; Checa bandera “inca/decr altura”. Si esta desactivada se produce salto de instrucción goto decr ; Salto a la etiqueta “decr” decfsz pasos,1 ; Decrementa variable “pasos”. Si reduce a cero, se produce salto de instrucción goto subir ; Salto a la etiqueta “subir” bsf flgb,0 ; Activa bandera “incr/decr altura” movlw .4 ; Se carga pasos = 4, que es el numero de veces que el giro vertical movwf pasos ; que incrementara / decrementará 2.5° bsf portd,2 ; Se activa giro hacia arriba retfie ; Retorno de la rutina que atiende la interrupción, al programa principal derecha bsf portd,0 ; Se activa giro a la derecha retfie ; Retorno de la rutina que atiende la interrupción, al programa principal conti_i btfsc flgb,0 ; Checa bandera “incr/decr altura”. Si esta desactivada se produce salto de instrucción goto decr ; Salto a la etiqueta “decr” decfsz pasos,1 ; Decrementa variable “pasos”. Si reduce a cero, se produce salto de instrucción goto subir ; Salto a la etiqueta “subir” bsf flgb,0 ; Se activa bandera “inca/decr altura” movlw .4 ; Se carga pasos = 4, que es el numero de veces que el giro vertical movwf pasos ; que incrementara / decrementará 2.5° bsf portd,2 ; Se activa giro a la derecha retfie ; Retorno de la rutina que atiende la interrupción, al programa principal chflgb6 btfsc flgb,6 ; Checa bandera “arriba”. Si esta desactivada se produce salto de instrucción goto conti3 ; Salto a la etiqueta “conti3” bcf intcon,0 ; Limpia bandera de interrupción por cambio de estado en el puerto B bsf flgb,6 ; Activa bandera “arriba” bcf intcon,2 ; Limpia bandera de interrupción por desbordamiento del registro tmr0 clrf tmr0 ; Limpia registro tmr0 btfss flgd,1 ; Checa bandera “pos ini”. Si esta desactivada se produce salto de instrucción retfie ; Retorno de la rutina que atiende la interrupción, al programa principal clrf portd ; Limpia Puerto D movlw b'1000100’ ; Se activa interrupción por cambio de movwf intcon ; estado del Puerto B bsf flgb,1 ; Activa bandera “limite” retfie ; Retorno de la rutina que atiende la interrupción, al programa principal chflgb7 btfsc flgb,7 ; Checa bandera “abajo”. Si esta desactivada se produce salto de instrucción goto refres ; Salto a la etiqueta “refres” bcf intcon,0 ; Limpia bandera de interrupción por cambio de estado en el puerto B bsf flgb,7 ; Activa bandera “abajo” bcf intcon,2 ; Limpia bandera de interrupción por desbordamiento del registro tmr0 clrf tmr0 ; Limpia registro tmr0 btfss flgd,1 ; Checa bandera “pos ini”. Si esta activada se produce salto de instrucción retfie ; Retorno de la rutina que atiende la interrupción, al programa principal clrf portd ; Limpia Puerto D movlw b'10001000' ; Se activa interrupción por cambio de movwf intcon ; estado del Puerto B bsf flgb,1 ; Activa bandera “limite” retfie ; Retorno de la rutina que atiende la interrupción, al programa principal refres bcf intcon,0 ; Limpia bandera de interrupción por cambio de estado en el puerto B retfie ; Retorno de la rutina que atiende la interrupción, al programa principal offlgb4 bcf flgb,4 ; Limpia bandera “derecha” bcf intcon,0 ; Limpia bandera de interrupción por cambio de estado en el puerto B retfie ; Retorno de la rutina que atiende la interrupción, al programa principal offlgb5 bcf flgb,5 ; Limpia bandera “izquierda” bcf intcon,0 ; Limpia bandera de interrupción por cambio de estado en el puerto B retfie ; Retorno de la rutina que atiende la interrupción, al programa principal offlgb6 bcf flgb,6 ; Limpia bandera “arriba” bcf intcon,0 ; Limpia bandera de interrupción por cambio de estado en el puerto B bcf intcon,2 ; Limpia bandera de interrupción por desbordamiento del registro tmr0 clrf tmr0 ; Limpia registro tmr0 retfie ; Retorno de la rutina que atiende la interrupción, al programa principal offlgb7 bcf flgb,7 ; limpia bandera “arriba” bcf intcon,0 ; Limpia bandera de interrupción por cambio de estado en el puerto B bcf intcon,2 ; Limpia bandera de interrupción por desbordamiento del registro tmr0
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
128
clrf tmr0 ; Limpia registro tmr0 retfie ; Retorno de la rutina que atiende la interrupción, al programa principal ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
inicio ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; Configuración de puertos ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ bsf estado,5 ; Se ubica en el bcf estado,6 ; banco uno movlw b'00000111' ; Se configura el microcontrolador para que todos movwf adcon1 ; sus canales operen como entradas o salidas digitales movlw b'00111100' ; Se configura el puerto A para que las terminales 0 y 1 sean movwf trisa ; salidas y las demás sean entradas movlw 0ffh ; Se configura el puerto B para que todas sus terminales sean movwf trisb ; entradas movlw b'11110000' ; Se configura el puerto D para que sus primeras cuatro terminales movwf trisd ; sean salidas y las restantes sean salidas bcf estado,5 ; se pasa al banco cero ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; programa principal ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ clrf portd ; Se ponen todas las salidas a cero ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ETAPA DE ARRANQUE ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ arranqe btfss porta,5 ; Checa si se pulsa el botón de arranque, si así es, brinca la siguiente instrucción goto arranqe ; Ir a la etiqueta “arranque” home movlw b'10001000' ; Se activan las interrupciones por cambio de estado de movwf intcon ; las terminales 4,5,6 y 7 del Puerto B clrf tmr0 ; Se limpia el temporizador interno del PIC clrf flag ; Se limpia el registro de banderas flga clrf flgb ; Se limpia el registro de banderas flgb clrf flgc ; Se limpia el registro de banderas flgc clrf flgd ; Se limpia el registro de banderas flgd ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ETAPA DE INICIALIZACIÓN DE BANDERAS DE LOS INTERRUPTORES DE LÍMITE ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ btfsc portb,4 ; Checa el estado del interruptor de limite derecho, si es 0 brinca una instrucción goto onflgb4 ; Salto a la etiqueta onflgb4 bcf flgb,4 ; Pone acero la bandera del interruptor de limite derecho s1 btfsc portb,5 ; Checa el estado del interruptor de limite izquierdo, si es 0 brinca una instrucción goto onflgb5 ; Salto a la etiqueta onflgb5 bcf flgb,5 ; Pone acero la bandera del interruptor de limite izquierdo s2 btfsc portb,6 ; Checa el estado del interruptor de limite arriba, si es 0 brinca una instrucción goto onflgb6 ; Salto a la etiqueta onflgb6 bcf flgb,6 ; Pone acero la bandera del interruptor de limite arriba bcf flgd,2 ; Pone acero la bandera “subeini” (se emplea para subir o bajar la placa colectora) s3 btfsc portb,7 ; Checa el estado del interruptor de limite abajo, si es 0 brinca una instrucción goto onflgb7 ; Salto a la etiqueta onflgb7 bcf flgb,7 ; Pone acero la bandera del interruptor de limite abajo goto home3 ; Salto a la etiqueta home3 onflgb4 bsf flgb,4 ; Pone a 1 la bandera del interruptor de limite derecho goto s1 ; Salto a la etiqueta s1 onflgb5 bsf flgb,5 ; Pone a 1 la bandera del interruptor de limite izquierdo goto s2 ; Salto a la etiqueta s2 onflgb6 bsf flgb,6 ; Pone a 1 la bandera del interruptor de limite arriba bsf flgd,2 ; Pone a 1 la bandera subeini (se usa para subir o bajar la placa colectora) goto s3 ; Salto a la etiqueta s3 onflgb7 bsf flgb,7 ; Pone a 1 la bandera del interruptor de limite abajo ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ETAPA DE POSICIONAMIENTO INICIAL DE LA PLANTA ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ home3 clrf tmr0 ; Limpia el registro tmr0 (temporizador) btfss portb,3 ; Checa interruptor de posición horizontal de placa colectora, si esta activado brinca la siguiente instrucción goto sube ; Salto a etiqueta sube
A cada interruptor de límite de sobregiro le corresponde una bandera, la cual se debe ajustar al estado que tenga su correspondiente interruptor. Esto es: Si el interruptor de límite esta cerrado, su bandera se pondrá a 1 Si el interruptor de límite esta abierto, su bandera se pondrá a 0
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
129
call frenov ; Llamado a rutina que frena el giro vertical de la placa colectora home2 clrf tmr0 ; Limpia el registro tmr0 (temporizador) btfss portb,5 ; Checa interruptor de limite izquierdo, si esta activado brinca la siguiente instrucción goto izq2 ; Salto a etiqueta izq2 clrf portd ; Limpia registro portd bsf flgd,1 ; Activa la bandera “posini” que indica que se a completado el posicionamiento inicial de la planta movlw .8 ; Se cargan 8 recorridos (de limite izquierdo a derecho y viceversa) movwf cbusq ; de búsqueda movlw .4 ; Se cargan cuatro incrementos/decrementos de giro de la placa colectora esto ocurre movwf pasos ; cada vez que la placa colectora llegue a un limite de giro horizontal call tress ; llamada a rutina que detiene el sistema 3 segundos movlw b'10101000' ;Se habilitan la interrupción por cambio de estado del Puerto B y movwf intcon ; la interrupción por desbordamiento del temporizador tmr0 bsf estado,5 ; Se pasa al banco 1 movlw b'10100001' ; Se asigna un divisor de frecuencia 1:4 al tmr0 y movwf opcion ; se configura para que los pulsos ingresn por el T0kI (contador) bcf estado,5 ; se pasa al banco cero movlw .200 ; Se carga el registro movwf tmr0 ; tmr0 con el valor 200 call tress ; Llamada a rutina detiene el proceso tres segundos ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ETAPA DE BUSQUEDA ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ movlw 01h ; Inicia el proceso de búsqueda movwf portd ; con giro hacia la derecha busqeda btfsc flgb,3 ; Checa la bandera “flg_ciclos de búsqueda”, si no esta activa brinca la siguiente instrucción. goto reposo ; Salto a la etiqueta ”reposo” btfsc flgb,1 ; Checa la bandera de limite de giro vertical. Si es cero brinca la siguiente instrucción goto home ; Salto a la etiqueta “home” btfsc portb,0 ; Checa sensor principal. Si es cero brinca la siguiente instrucción goto sigelo ; Salto a la etiqueta “sigelo” btfsc portb,1 ; Checa grupo izquierdo de sensores. Si son cero se brinca la instrucción siguiente goto subelo ; Salto a etiqueta “subelo” btfsc portb,2 ; Checa grupo derecho de sensores. Si son cero se brinca la instrucción siguiente goto bajalo ; Salto a etiqueta “bajalo” goto busqueda ; Salto a etiqueta “busqueda” subelo btfsc flgc,0 ; Checa bandera “subelo”. Si es cero, brinca la siguiente instrucción goto busqueda ; Salto a etiqueta “búsqueda” clrf portd ; Limpia puerto D call frenoh ; Llamada a rutina que frena motor de giro horizontal movlw b'10001000' ; Se habilitan las interrupciones por movwf intcon ; cambio de estado del Puerto B bsf portd,2 ; Giro vertical arriba bsf flgc,0 ; Giro horizontal a la derecha bcf flgc,1 ; Limpia bandera que enclava giro vertical hacia abajo goto busqueda ; Salto a etiqueta “busqueda” bajalo btfsc flgc,1 ; Checa bandera “bajalo”. Si es cero se brinca la siguiente instrucción goto busqeda ; Salto a etiqueta “busqueda” clrf portd ; Limpia Puerto D call frenoh ; Llamada a rutina que frena motor de giro horizontal movlw b'10001000' ; Se habilitan las interrupciones por movwf intcon ; cambio de estado del Puerto B bsf portd,3 ; Baja placa colectora bcf flgc,0 ; Limpia bandera “subelo” bsf flgc,1 ; Se active bandera “bajalo” goto busqeda ; salto a etiqueta “búsqueda” sube btfsc flgd,2 ; Checa bandera “sube ini” goto baja ; salto a etiqueta “baja” btfsc portb,6 ; Checa interruptor de limite superior. Si es cero se brinca la próxima instrucción goto baja ; Salto a etiqueta “baja” bsf portd,2 ; Gira placa colectora hacia arriba btfss portb,5 ; Checa interruptor de limite izquierdo. Si esta activado se produce un salto a la próxima instrucción goto izq ; Salto a la etiqueta “izq” bcf portd,1 ; Se desactiva giro a la izquierda de placa colectora goto home3 ; Salto a la etiqueta “home3” baja bcf portd,2 ; Se deactiva giro hacia arriba de placa colectora btfsc portb,7 ; Checa interruptor de limite inferior. Si esta desactivado se produce un salto a la próxima instrucción goto refsube ; Salto a la etiqueta “refsube”
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
130
bsf portd,3 ; Gira hacia abajo la placa colectora btfss portb,5 ; Checa interruptor de limite izquierdo. Si esta activado se produce un salto a la próxima instrucción goto izq ; Salto a la etiqueta “izq” bcf portd,1 ; Se desactiva giro a la izquierda goto home3 ; Salto a la etiqueta “home3” refsube bcf portd,3 ; Se desactiva giro hacia abajo bcf flgd,2 ; Se limpia bandera “sube ini”, para que se pueda volver a subir la placa colectora btfss portb,5 ; Checa interruptor de limite izquierdo. Si esta activado, se produce un salto de instruccion goto izq ; Salto a la etiqueta “izq” bcf portd,1 ; Se desactiva giro a la izquierda goto home3 ; Salto a la etiqueta “home3” izq bsf portd,1 ; Se active giro a la izquierda goto home3 ; Salto a la etiqueta “home3” izq2 bsf portd,1 ; Se active giro a la izquierda goto home2 ; Salto a la etiqueta “home2” sigelo movlw b'10001000' ; Se activan interrupciones por movwf intcon ; cambio de estado del Puerto B call frenohv ; Llamada a rutina que frena el giro vertical de la palca colectora bsf flgc,2 ; Se activa bandera “siguelo” bcf flgb,2 ; Se limpia bandera “obj perd” ssigelo btfss portb,0 ; Checa sensor principal. Si esta activado se produce salto de instrucción goto chcenti ; Salto a la etiqueta “chcenti” btfss flgb,2 ; Checa bandera “obj perd” goto ssigelo ; salto a etiqueta “ssigelo” movlw b'10001000' ; Se activa interrupción por movwf intcon ; cambio de esta do del Puerto B call frenohv ; Llamada a rutina que frena giro horizontal y vertical clrf flga ; Se limpia registro de banderas “flga” clrf flgc ; Se limpia registro de banderas “flgc” bsf flgc,2 ; Se activa bandera “sigelo” bcf flgb,2 ; Se limpia bandera “obj perd” goto ssigelo ; Salto a etiqueta “ssigelo” chcenti bsf flgb,2 ; Se activa bandera “obj perd” btfsc flgb,1 ; Checa bandera “limite”. Si esta desactivada se produce salto de instrucción goto home ; Salto a la etiqueta “home” btfsc portb,4 ; Checa interruptor de limite derecho. Si esta desactivado se produce salto de instrucción goto chk24di ; Salto a la etiqueta “chk24di” btfsc portb,5 ; Checa interruptor de limite izquierdo. Si esta desactivado se produce salto de instrucción goto chk13di ; Salto a la etiqueta “chk13di” btfsc portd,4 ; Checa sensor 1. Si esta desactivado se produce salto de instrucción goto chkc4td ; Salto a etiqueta “chkc4td” bcf flga,0 ; Limpia bandera “2DB” btfsc portb,2 ; Checa grupo derecho de sensores. Se esta desactivado se produce salto de instrucción goto chkc1_2 ; Salto a la etiqueta “chkc1_2” bcf flgc,5 ; Limpia bandera “baj” btfsc portd,5 ; Checa sensor 2. si est desactivado se produce salto de instrucción goto chkc3td ; Salto a etiqueta “chkc3td” bcf flga,1 ; Limpia bandera “2DB” btfsc portd,6 ; Checa sensor 3. Si esta desactivado se produce salto de instrucción goto chkc2ti ; Salto a etiqueta “chkc2ti” bcf flga,2 ; Limpia bandera “2DS” btfsc portb,1 ; Checa grupo izquierdo de sensores. Si esta desactivado se produce salto de instrucción goto chkc3_4 ; Salto a etiqueta “chkc3_4” bcf flgc,4 ; Limpia bandera “sub” btfsc portd,7 ; Checa sensor 4. Si esta desactivado se produce salto de instruccion goto chkc1ti ; Salto a la etiqueta “chkc1ti” bcf flga,3 ; Limpia bandera “2IS” goto ssigelo ; Salto a etiqueta “ssigelo” chk24di btfsc portd,5 ; Checa sensor 2. Si esta desactivado se produce salto de instrucción goto chkc3td ; Salto a etiqueta “chkc3dtd” bcf flga,1 ; Limpia bandera “2IB” btfsc portd,7 ; Checa sensor 4. Si esta desactivado se produce salto de instrucción goto chtiyc4 ; Salto a la etiqueta “chtiyc4” bcf flga,3 ; Limpia bandera “2IS” btfsc portb,2 ; Checa grupo derecho de sensores. Si esta desactivado se produce salto de instrucción goto baj ; Salto a la etiqueta “baj” btfsc portb,1 ; Checa grupo izquierdo de sensores. Si esta desactivado se produce salto de instrucción goto sub ; Salto a la etiqueta “sub”
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
131
goto ssigelo ; Salto a la etiqueta “ssigelo” chk13di btfsc portd,4 ; Checa el sensor 1. Si esta desactivado se produce salto de instrucción goto chkc4td ; Salto a la etiqueta “chkc4td” bcf flga,0 ; Limpia la bandera “2DB” btfsc portd,6 ; Checa el sensor 3. Si esta desactivado se produce salto de instrucción goto chtiyc3 ; Salto a la etiqueta “chtiyc3” bcf flga,2 ; Limpia la bandera “2DS” btfsc portb,2 ; Checa el grupo derecho de sensores. Si esta desactivado se produce salto de instrucción goto baj ; Salto a la etiqueta “baj” btfsc portb,1 ; Checa el grupo izquierdo de sensores. Si esta desactivado se produce salto de instrucción goto sub ; Salto a la etiqueta “sub” goto ssigelo ; Salto a la etiqueta “ssigelo” chtiyc4 btfsc portb,1 ; Checa el grupo izquierdo de sensores. Si esta desactivado se produce salto de instrucción goto izqsub ; Salto a la etiqueta “izqsub” goto dizqsub ; Salto a la etiqueta “dizqsub” chtiyc3 btfsc portb,1 ; Checa grupo izquierdo de sensores. Si esta desactivado se produce salto de instrucción goto dersub ; Salto a la etiqueta “dersub” goto ddersub ; Salto a la etiqueta “ddersub” chkc3_4 btfsc portd,6 ;Checa sensor 3. Si esta desactivado se produce salto de instrucción goto dersub ; Salto a la etiqueta “dersub” bcf flgc,6 ; Limpia bandera “DS” btfsc portd,7 ; Checa sensor 4. Si esta desactivado se produce salto de instrucción goto izqsub ; Salto a la etiqueta “izqsub” bcf flgc,7 ; Limpia bandera “IS” sub btfsc flgc,4 ; Checa bandera “sub” goto ssigelo ; Salto a etiqueta “ssigelo” clrf portd ; Limpia Puerto D movlw b'10001000' ; Se activa interrupción por movwf intcon ;cambio de estado del puerto B clrf flga ; Se limpia registro de banderas flga clrf flgc ; Se limpia registro de banderas flgc bsf flgc,2 ; Se activa bandera “sigelo”. Que indica que el programa se encuentra en esta etapa bsf flgc,4 ; Se activa bandera “sub”, para que la placa colectora suba bsf portd,2 ; Giro hacia arriba goto ssigelo ; Salto a la etiqueta “ssigelo” chkc1_2 btfsc portd,4 ; Checa sensor 1. Si esta desactivado se produce salto de instrucción goto derbaj ; Salto a la etiqueta “derbaj” bcf flga,4 ; Limpia bandera “DB” btfsc portd,5 ; Checa sensor 2. Si esta desactivado se produce salto de instrucción goto izqbaj ; Salto a la etiqueta “izqbaj” bcf flga,5 ; Limpia bandera “IB” baj btfsc flgc,5 ; Checa bandera “baj” goto ssigelo ; Salto a la etiqueta “ssigelo” movlw b'10001000' ; Se activa interrupción por movwf intcon ; cambio de estado del Puerto B clrf portd ; Limpia Puerto D clrf flga ; Limpia registro de banderas flga clrf flgc ; Limpia registro de banderas flgc bsf flgc,2 ; Se activa bandera “sigelo” bsf flgc,5 ; Se activa bandera “baj” bsf portd,3 ; Gira hacia debajo de la placa colectora goto síguelo ; Salto a la etiqueta “siguelo” chkc4td btfsc portd,7 ; Checa sensor 4. Si esta desactivado se produce salto de instrucción goto tderbaj ; Salto a etiqueta “tderbaj” (velocidad a la derecha 3 veces mayor que velocidad de giro hacia abajo) bcf flga,6 ; Limpia bandera “3DB” btfsc portb,2 ; Checa grupo derecho de sensores. Si esta desactivado se produce salto de instrucción goto derbaj ; Salto a etiqueta “derbaj” bcf flga,4 ; Limpia bandera “DB” movlw .100 ; Se carga la variable deron=100 y movwf deron ; la variable derof=10, para modular movlw .10 ; el ancho de pulso que alimentara al movwf deroff ; motor de giro horizontal, para una velocidad media bcf flgd,0 ; Limpia bandera “velizq” btfsc flga,0 ; Checa bandera “2DB” goto ssigelo ; Salto a etiqueta “ssigelo” clrf portd ; Limpia Puerto D clrf flga ; Limpia registro de banderas flga clrf flgc ; Limpia registro de bandera flgc
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
132
bsf flgc,2 ; Activa bandera “sigelo” bsf flga,0 ; Activa bandera “2DB” movlw b'10101000' ; Se activan interrupción por cambio de estado en puerto B e interrupción movwf intcon ; por saturación del temporizador tmr0 bsf estado,5 ; Cambio al banco 1 movlw b'10000111' ; Se asigna un divisor de frecuencia de 1:256 movwf opcion ; al temporizador tmr0 bcf estado,5 ; cambio al banco 0 movlw .100 ; Se inicia el tmr0 con un valor de 100 movwf tmr0 ; igual al valor cargado la variable “deron” btfsc portb,4 ; Checa interruptor de limite derecho. Si esta desactivado se produce salto de instrucción goto sige2db ; Salto a etiqueta “sige2db” bsf portd,0 ; se activa giro a la derecha bsf portd,3 ; se activa giro hacia abajo goto síguelo ; Salto a la etiqueta “sigelo” sige2db bcf flga,0 ; Limpia bandera “2DB” movlw b'10001000' ; Se activa solo interrupción por movwf intcon ; cambio de estado en el puerto B goto síguelo ; Salto a la etiqueta “sigelo” chkc3td btfsc portd,6 ; Checa sensor 3. Si esta desactivado se produce salto de instrucción goto tizqbaj ; Salto a la etiqueta “tizqbaj” bcf flga,7 ; Limpia bandera “3IB” btfsc portb,2 ;Checa grupo derecho de sensores. Si esta desactivado se produce salto de instrucción goto izqbaj ; salto a etiqueta “izqbaj” bcf flga,5 ; Limpia bandera “IB” movlw .100 ; Carga la variable izqon=100 y movwf izqon ; la variable izqoff =10 para modular, movlw .10 ; el ancho de pulso que regula a movwf izqoff ; una velocidad horizontal media bsf flgd,0 ; Activa bandera “vel izq” btfsc flga,1 ; Checa bandera “2IB”. Si esta desactivado se produce salto de instrucción goto síguelo ; Salto a la etiqueta “sigelo” clrf portd ; Limpia puerto D clrf flga ; Limpia registro de banderas flga clrf flgc ; Limpia registro de banderas flgc bsf flgc,2 ; Se activa bandera “sigelo” bsf flga,1 ; Se activa bandera “2IB” movlw b'10101000' ; Se activan interrupcion por cambio de estado en movwf intcon ; puerto B e interrupción por saturación del temporizador tmr0 bsf estado,5 ; Cambio al banco 1 movlw b'10000111' ; Se ajusta eldivisor de frecuencias de 1:256 movwf opcion ; y se le asigna al tmr0 bcf estado,5 ; Se cambia al banco 0 movlw .100 ; Se carga el tmr0 con el mismo” movwf tmr0 ; valor que se carga la variable “izqon btfsc portb,5 ; Checa interruptor de limite izquierdo. Si esta desactivado se produce salto de instrucción goto sige2ib ; Salto a la etiqueta “sige2ib” bsf portd,1 ; Se activa giro a la izquierda bsf portd,3 ; Se activa giro hacia abajo goto ssigelo ; Salto a la etiqueta “ssigelo” sige2ib bcf flga,1 ; Se limpia bandera “2IB” movlw b'10001000' ; Solo se queda activada la interrupcion movwf intcon ; por cambio de estadel del Puerto B goto ssigelo ; Salto a la etiqueta “ssigelo” chkc2ti btfsc portd,5 ; Checa el sensor 2. Si esta desactivado se produce salto de instrucción goto tizqbaj ; Salto a la etqiueta “tizqbaj” bcf flga,7 ; Limpia bandera “3IB” btfsc portb,1 ; Checa grupo izqueirdo de sensores. Si esta desactivado se produce salto de instrucción goto dersub ; Salto a la etiqueta “dersub” bcf flgc,6 ; Limpia bandera “DS” ddersub movlw .100 ; Carga la variable deron=100 y la movwf deron ; variable deroff=10para modular movlw .10 ; el ancho de pulso que regula a movwf deroff ; una velocidad horizontal media bcf flgd,0 ; Limpia bandera “vel izq” btfsc flga,2 ; Checa bandera “2DS”. Si esta desactivada se produce salto de instrucción goto ssigelo ; Salto a la etiqueta “ssigelo” clrf portd ; Limpia Puerto D clrf flga ; Limpia bandera “flga” clrf flgc ; Limpia bandera “flgc” bsf flgc,2 ; Activa bandera “sigelo”
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
133
bsf flga,2 ; Activa bandera “2DS” movlw b'10101000' ; Se activan interrupción por cambio de estado en Puerto B e movwf intcon ; interrupción por desbordamiento del temporizador tmr0 bsf estado,5 ; se pasa al banco 1 movlw b'10000111' ; Se ajusta divisor de frecuencia de 1:256 y movwf opcion ; se le asigna al tmr0 bcf estado,5 ; Se pasa al banco 0 movlw .100 ; Se carga el tmr0 con el mismo valor que movwf tmr0 ; se cargo la variable “deron” btfsc portb,4 ; Checa el interruptor de limite derecho. Si esta desactivado se produce salto de instrucción goto sige2ds ; Salto a la etiqueta “sige2ds” bsf portd,0 ; Se active giro a la dereha bsf portd,2 ; Se active giro hacia arriba goto síguelo ; Salto a la etiqueta “sigelo” sige2ds bcf flga,2 ; Limpia bandera “2DS” movlw b'10001000' ; Se activa solo la interrupcion por cambio de movwf intcon ; estado del puerto B goto síguelo ; Salto a la etiqueta “sigelo” chkc1ti btfsc portd,4 ; Checa sensor 1. Si esta desactivado se produce salto de instrucción goto tderbaj ; Salto a etiqueta “tderbaj” bcf flga,6 ; limpia bandera “3DB” btfsc portb,1 ; Checa grupo izquierdo de sensores. Si esta desactivado se produce salto de instrucción goto izqsub ; Salto a la eiqueta “izqdub” bcf flgc,7 ; Limpia “IS” dizqsub movlw .100 ; Se carga la variable izqon=100 y la movwf izqon ; variable izqoff=10, para modular el ancho movlw .10 ; de los pulsos que regulan a un valor medio movwf izqoff ; la velocidad a la izquierda del motor bsf flgd,0 ; Se activa la bandera “vel izq” btfsc flga,3 ; Checa la bandera “2IS” goto ssigelo ; Salto a la etiqueta “ssigelo” clrf portd ; Limpia Puerto D clrf flga ; Limpia registro de banderas flga clrf flgc ; Limpia registro de banderas flgc bsf flgc,2 ; Se activa bandera “sigelo” bsf flga,3 ; Se activa bandera “2IS” movlw b'10101000' ; Se activan interrupcion por cambio de estado en movwf intcon ; puerto B e interrupción por desbordamiento del temporizador tmr0 bsf estado,5 ; Cambio al banco 1 movlw b'10000111' ; Se ajusta divisor de frecuencia de 1:256 y movwf opcion ; se le asigna al tmr0 bcf estado,5 ; Salto al banco 0 movlw .100 ; Se carga el tmr0 con el mismo valor que movwf tmr0 ; se cargo la variable “izqon” btfsc portb,5 ; Checa el interruptor de limite izquierdo. Si esta desactivado se produce salto de instrucción goto sige2is ; Salto a la etiqueta “sige2is” bsf portd,1 ; Se activa giro a la izquierda bsf portd,2 ; Se activa giro hacia arriba goto ssigelo ; Salto a la etiqueta “ssigelo” sige2is bcf flga,3 ; Limpia bandera “2IS” movlw b'10001000' ; Se activa solo la interrupcion por cambio de movwf intcon ; estado del puerto B goto ssigelo ; Salto a la etiqueta “ssigelo” izqbaj movlw .100 ; Se carga la variable izqon=100 y la movwf izqon ; variable izqoff=3, para modular el ancho movlw .3 ; de los pulsos que regulan a un valor bajo movwf izqoff ; la velocidad a la izquierda del motor bsf flgd,0 ; Activa la bandera “vel izq” btfsc flga,5 ; Checa bandera “IB”. Si esta desactivada se produce salto de instrucción goto ssigelo ; Salto a la etiqueta “ssigelo” clrf portd ; Limpia Puerto D clrf flag ; Limpia registro de banderas flga clrf flgc ; Limpia registro de banderas flgc bsf flgc,2 ; Activa la bandera “sigelo” bsf flga,5 ; Activa la bandera “IB” movlw b'10101000' ; Se activa solo la interrupcion por cambio de movwf intcon ; estado del puerto B bsf estado,5 ; Cambio al banco 1 movlw b'10000111' ; Se ajusta divisor de frecuencia de 1:256 y movwf opcion ; se le asigna al tmr0
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
134
bcf estado,5 ; Cambio al banco 0 movlw .100 ; Se carga la variable tmr0 con el mismo valor movwf tmr0 ; que se cargo la variable “izqon” btfsc portb,5 ; Checa el interruptor de limite izquierdo. Si esta desactivado se produce salto de instrucción goto sigeib ; Salto a la etiqueta “sigeib” bsf portd,1 ; Se aciva giro a la izquerda bsf portd,3 ; Se activa giro hacia abajo goto síguelo ; Salto a la etiqueta “sigelo” sigeib bcf flga,5 ; Limpia bandera “IB” movlw b'10001000' ; Se activa solo la interrupción por cambio de movwf intcon ; estado del puerto B goto síguelo ; Salto a la etiqueta “sigelo” izqsub movlw .100 ; Se carga la variable izqon=100 y la movwf izqon ; variable izqoff=3, para modular el ancho movlw .3 ; de los pulsos que regulan a un valor bajo movwf izqoff ; la velocidad a la izquierda del motor bsf flgd,0 ; Se activa bandera “velizq” btfsc flgc,7 ; Checa bandera “IS”. Si esta desactivado se produce salto de instrucción goto síguelo ; Salto a la etiqueta “sigelo” clrf portd ; Limpia puerto D clrf flag ; Limpia registro de banderas flga clrf flgc ; Limpia registro de banderas flgc bsf flgc,2 ; Se activa bandera “sigelo” bsf flgc,7 ; Se activa la bandera “IS” movlw b'10101000' ; Se activa solo la interrupción por cambio de estado del puerto B movwf intcon ; y la interrupción por desbordamiento del tmr0 bsf estado,5 ; Cambio al banco 1 movlw b'10000111' ; Se ajusta divisor de frecuencia de 1:256 y movwf opcion ; se le asigna al tmr0 bcf estado,5 ; Cambio al banco 0 movlw .100 ; Se carga el tmr0 con el mismo valor que movwf tmr0 ; se cargo la variable “izqon” btfsc portb,5 ; Checa interruptor de limite izquierdo. Si esta desactivado se produce salto de instrucción goto sigeis ; Salto a la etiqueta “sigeis” bsf portd,1 ; Se activa giro a la izquierda bsf portd,2 ; se active giro hacia arriba goto síguelo ; Salto a la etiqueta “sigelo” sigeis bcf flgc,7 ; Limpia bandera “IS” movlw b'10001000' ; Se activa solo la interrupcion por cambio de movwf intcon ; estado del puerto B goto ssigelo ; Salto a la etiqueta “sigelo” dersub movlw .100 ; Se carga la variable deron=100 y la movwf deron ; variable deroff=3, para modular el ancho movlw .3 ; de los pulsos que regulan a un valor bajo movwf deroff ; la velocidad a la derecha del motor bcf flgd,0 ; Limpia bandera “veli izq” btfsc flgc,6 ; Checa bandera “DS”. Si esta desactivado se produce salto de instrucción goto ssigelo ; Salto a la etiqueta “ssigelo” clrf portd ; Limpia Puerto D clrf flga ; Limpia registro de banderas flga clrf flgc ; Limpia registro de banderas flgd bsf flgc,2 ; Activa bandera “sigelo” bsf flgc,6 ; Activa bandera “DS” movlw b'10101000' ; Se activan interrupción por cambio de estado en movwf intcon ; puerto B e interrupción por desbordamiento del temporizador tmr0 bsf estado,5 ; Cambio al banco 1 movlw b'10000111' ; Se ajusta divisor de frecuencia de 1:256 y movwf opcion ; se le asigna al tmr0 bcf estado,5 ; Cambio al banco 0 movlw .100 ; Se carga el tmr0 con el mismo valor que movwf tmr0 ; se cargo la variable “deron” btfsc portb,4 ; Checa el interruptor de limite derecho. Si esta desactivado se produce salto de instrucción goto sigeds ; Salto a la etiqueta “sigeds” bsf portd,0 ; Se active giro a la derecha bsf portd,2 ; Se active giro hacia arriba goto ssigelo ; Salto a la etiqueta “ssigelo”
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
135
sigeds bcf flgc,6 ; Limpia bandera “DS” movlw b'10001000' ; Se activa solo la interrupcion por cambio de movwf intcon ; estado del puerto B goto ssigelo ; Salto a la etiqueta “ssigelo” derbaj movlw .100 ; Se carga la variable deron=100 y la movwf deron ; variable deroff=10, para modular el ancho movlw .3 ; de los pulsos que regulan a un valor bajo movwf deroff ; la velocidad a la derecha del motor bcf flgd,0 ; Limpia bandra “vel izq” btfsc flga,4 ; Checa bandera “DB”. Si esta desactivada se produce salto de instrucción goto ssigelo ; Salto a la etiqueta “ssigelo” clrf portd ; Limpia Puerto D clrf flga ; Limpia registro de banderas flga clrf flgc ; Limpia registro de banderas flgc bsf flgc,2 ; Activa bandera “sigelo” bsf flga,4 ; Activa bandera “DB” movlw b'10101000' ; Se activan interrupcion por cambio de estado en movwf intcon ; puerto B e interrupción por desbordamiento del temporizador tmr0 bsf estado,5 ; Cambio al banco 1 movlw b'10000111' ; Se ajusta divisor de frecuencia de 1:256 y movwf opcion ; se le asigna al tmr0 bcf estado,5 ; Cambio al banco 0 movlw .100 ; Se carga el tmr0 con el mismo valor que movwf tmr0 ; se cargo la variable “deron” btfsc portb,4 ; Checa el interruptor de limitederecho. Si esta desactivado se produce salto de instrucción goto sigedb ; Salto a la etiqueta “sigedb” bsf portd,0 ; Se active giro a la derecha bsf portd,3 ; Se active giro hacia abajo goto siguelo ; Salto a la etiqueta “sigelo” sigedb bcf flga,4 ; Limpia bandera “DB” movlw b'10001000' ; Se activa solo la interrupción por cambio de movwf intcon ; estado del puerto B goto ssigelo ; Salto a la etiqueta “ssigelo” tderbaj movlw .100 ; Se carga la variable deron=100 y la movwf deron ; variable deroff=10, para modular el ancho movlw .20 ; de los pulsos que regulan a un valor alto movwf deroff ; la velocidad a la derecha del motor bcf flgd,0 ; Desactiva bandera “vel izq” btfsc flga,6 ; Checa bandera “3DB”. Si esta desactivado se produce salto de instrucción goto síguelo ; Salto a la etiqueta “sigelo” clrf portd ; Limpia puerto D clrf flga ; Limpia registro de banderas flga clrf flgc ; Limpia registro de banderas flgd bsf flgc,2 ; Activa bandera “sigelo” bsf flga,6 ; Activa bandera “3DB” movlw b'10101000' ; Se activan interrupción por cambio de estado en movwf intcon ; puerto B e interrupción por desbordamiento del temporizador tmr0 bsf estado,5 ; Cambio al banco 1 movlw b'10000111' ; Se ajusta divisor de frecuencia de 1:256 y movwf opcion ; se le asigna al tmr0 bcf estado,5 ; Cambio al banco 0 movlw .100 ; Se carga el tmr0 con el mismo valor que movwf tmr0 ; se cargo la variable “deron” btfsc portb,4 ; Checa interruptor de limite derecho. Si esta desactivado se produce salto de instrucción goto sige3db ; Salto a la etiqueta “sige3db” bsf portd,0 ; Se active giro a la derecha bsf portd,3 ; Se active giro hacia abajo goto síguelo ; Salto a la etiqueta “sigelo” sige3db bcf flga,6 ; Limpia bandera “3DB” movlw b'10001000' ; Se activa solo la interrupcion por cambio de movwf intcon ; estado del puerto B goto ssigelo ; Salto a la etiqueta “ssigelo” tizqbaj movlw .100 ; Se carga la variable izqon=100 y la movwf izqon ; variable izqoff=20, para modular el ancho movlw .20 ; de los pulsos que regulan a un valor alto movwf izqoff ; la velocidad a la izquierda del motor bsf flgd,0 ; Activa bandera “vel izq” btfsc flga,7 ; Checa bandera “3IB”. Si esta desactivado se produce salto de instrucción
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
136
goto síguelo ; Salto a la etiqueta “sigelo” clrf portd ; Limpia puerto D clrf flga ; Limpia registro de banderas flga clrf flgc ; Limpia registro de banderas flgc bsf flgc,2 ; Activa bandera “sigelo” bsf flga,7 ; Activa bandera “3IB” movlw b'10101000' ; Se activan interrupción por cambio de estado en movwf intcon ; puerto B e interrupción por desbordamiento del temporizador tmr0 bsf estado,5 ; Cambio al banco 1 movlw b'10000111' ; Se ajusta divisor de frecuencia de 1:256 y movwf opcion ; se le asigna al tmr0 bcf estado,5 ; Cambio al banco 0 movlw .100 ; Se carga el tmr0 con el mismo valor que movwf tmr0 ; se cargo la variable “izqon” btfsc portb,5 ; Checa interruptor de limite izquierdo. Si esta desactivado se produce salto de instrucción goto sige3ib ; Salto a la etiqueta “sige3ib” bsf portd,1 ; Se activa giro a la izquierda bsf portd,3 ; Se activa giro hacia abajo goto siguelo ; Salto a la etiqueta “sigelo” sige3ib bcf flga,7 ; Limpia bandera “3IB” movlw b'10001000' ; Se activa solo la interrupcion por cambio de movwf intcon ; estado del puerto B goto síguelo ; Salto a la etiqueta “sigelo” ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; freno de horizontal y vertical ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ frenohv movlw .2 ; Se carga la variable cont1=2 movwf cont1 ; y la variable cont2=100 ambas c4 movlw .100 ; se emplean para repetir el ciclo movwf cont2 ; de activación alternada de giros c3 movlw b'00000101' ; Se activan simultáneamente giro a movwf portd ; la derecha y giro hacia arriba nop ; No operación nop ; No operación nop ; No operación movlw .80 ; Se carga variable cont3=80 movwf cont3 ; para generan un retardo c1 decfsz cont3,1 ; Retardo por decremento goto c1 ; de la variable cont3 movlw b'00001010' ; Se activan simultáneamente giro a movwf portd ; la izquierda y giro hacia abajo movlw .80 ; Se carga variable cont3=80 movwf cont3 ; para generan un retardo c2 decfsz cont3,1 ; Retardo por decremento goto c2 ; de la variable cont3 decfsz cont2,1 ; Decrementa el valor de la variable “cont2”. Si llega a cero se produce salto de instrucción goto c3 ; Salto a la etiqueta “c3” decfsz cont1,1 ; Decrementa el valor de la variable “cont1”. Si llega a cero se produce salto de instrucción goto c4 ; Salto a la etiqueta “c4” clrf portd ; Limpia Puerto D retlw 0 ; Regreso al programa principal ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; freno horizontal ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ frenoh movlw .20 ; Se carga la variable cont1=2 movwf cont1 ; y la variable cont2=100 ambas c8 movlw .100 ; se emplean para repetir el ciclo movwf cont2 ; de activación alternada de giros c7 movlw b'00000001' ; Se activa giro a movwf portd ;la derecha nop ; No operación nop ; No operación nop ; No operación movlw .80 ; Se carga variable cont3=80 movwf cont3 ; para generan un retardo c5 decfsz cont3,1 ; Retardo por decremento goto c5 ; de la variable cont3 movlw b'00000010' ; Se active giro a movwf portd ; la izquierda
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
137
movlw .80 ; Se carga variable cont3=80 movwf cont3 ; para generan un retardo c6 decfsz cont3,1 ; Retardo por decremento goto c6 ; de la variable cont3 decfsz cont2,1 ; Decrementa el valor de la variable “cont2”. Si llega a cero se produce salto de instrucción goto c7 ; Salto a la etiqueta “c7” decfsz cont1,1 ; Decrementa el valor de la variable “cont2”. Si llega a cero se produce salto de instrucción goto c8 ; Salto a la etiqueta “c8” clrf portd ; Limpia Puerto D retlw 0 ; Retorno a programa principal ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; freno vertical ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ frenov movlw .2 ; Se carga la variable cont1=2 movwf cont1 ; y la variable cont2=100 ambas c12 movlw .100 ; se emplean para repetir el ciclo movwf cont2 ; de activación alternada de giros c11 movlw b'00000100' ; Se active giro movwf portd ; hacia arriba nop ; No operación nop ; No operación nop ; No operación movlw .80 ; Se carga variable cont3=80 movwf cont3 ; para generan un retardo c9 decfsz cont3,1 ; Retardo por decremento goto c9 ; de la variable cont3 movlw b'00001000' ; Se desactiva giro hacia arriba movwf portd ; y se activa giro hacia abajo movlw .80 ; Se carga variable cont3=80 movwf cont3 ; para generan un retardo c10 decfsz cont3,1 ; Retardo por decremento goto c10 ; de la variable cont3 decfsz cont2,1 ; Decrementa el valor de la variable “cont2”. Si llega a cero se produce salto de instrucción goto c11 ; Salto a la etiqueta “c11” decfsz cont1,1 ; Decrementa el valor de la variable “cont1”. Si llega a cero se produce salto de instrucción goto c12 ; Salto a la etiqueta “c12” clrf portd ; Limpia Puerto D retlw 0 ; Retorno a programa principal ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; Rutina antirrebote ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ norebot movlw .2 ; Se cargan las variables conta1=2, canta2=100 y conta3=100 movwf conta1 ; para generar un retardo, mayor al c13 movlw .100 ; tiempo que duran los rebotes movwf conta2 ; mecánicos que se presentan c14 movlw .100 ; en accionamientos de los movwf conta3 ; interruptores de limite c15 decfsz conta3,1 ; Retardo por goto c15 ; decremento de decfsz conta2,1 ; las variables goto c14 ; conta3,conta2 y decfsz conta1,1 ; conta1 goto c13 ; salto a la etiqueta “c13” retlw 0 ; Retorno a programa principal ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; Rutina de retardo de tiempo ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tress movlw .1 ; Se cargan las movwf conta1 ; variables conta1=2 c23 movlw .250 ; canta2=250 y movwf conta2 ; conta3=250 c24 movlw .250 ; para generar movwf conta3 ; un retardo c25 decfsz conta3,1 ; Retardo por goto c25 ; decremento decfsz conta2,1 ; de las variables goto c24 ; conta3 conta2 decfsz conta1,1 ; y conta1
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
138
goto c23 ; retlw 0 ; Retorno al programa principal reposo clrf portd ; Se desactiva el puerto D clrf intcon ; Se limpia el registro “intcon” (de control de interrupciones) goto arranqe ; Salto a la etiqueta arranque (para poder iniciar nuevamente el arranque de la planta) end ; Fin del programa
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
139
Anexo D.5. Diagrama de flujo del programa de control de la cámara térmica con control de temperatura
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
140
Anexo D.6. Documentación del programa de control de la cámara térmica con temperatura controlada //Programa de control de CA del calefactor //Configuración de setpoint, Kp y Ti desde Labview. //Comunicación RS232 con LABVIEW // Conexión de los actuadores a la tarjeta programable // RD0 - Calefactor // RC0 - Inyector // RC1 - Actuador compuerta Inyector // RC2 - Extractor // RC5 - Actuador compuerta Extractor // RA4 - Agitador // // Conexión de los sensores a la tarjeta programable // RA0 - Entrada sensor temperatura // RB0 - Entrada CA // #include <p18f452.h> // Se incluye librería del microcontrolador PIC18F452 #include <delays.h> // Se incluye la librería de las funciones de retardo #include <timers.h> // Se incluye la librería de las funciones de temporizadores #include <stdlib.h> // Se incluye la librería estándar #include <adc.h> // Se incluye la librería del conversor análogo/digital #include <usart.h> // Se incluye la librería del USART #pragma config OSC = HS // Se selecciona modo de oscilador de alta velocidad. #pragma config BOR = OFF // Deshabilita el reinicio por bajo voltaje #pragma config WDT = OFF // Deshabilita el perro guardián #pragma config LVP = OFF // Deshabilita la programación en bajo voltaje int Kp=1,Ti=17,Ts=1,sensor=0, // Define las variables del programa y se les asigna un valor inicial
error=0,entrada=0,setpoint=400, errora=0,contp=0,conti=0,cont=1, limiterrora=50,pwm=0,sp=0;
unsigned int i=0; void enfriar(void) // Subrutina para activar los elementos que disminuyen la temperatura de la // cámara térmica PORTCbits.RC1=1; //Abre la compuerta del soplador PORTCbits.RC5=1; //Abre la compuerta del extractor PORTCbits.RC2=1; //Enciende el extractor PORTCbits.RC0=1; //Enciende el soplador void nenfriar(void) // Subrutina que desactiva los elementos que disminuyen la temperatura de la // cámara térmica PORTCbits.RC0=0; // Apaga el soplador PORTCbits.RC1=0; // Cierra la compuerta del soplador PORTCbits.RC2=0; // Apaga el extractor PORTCbits.RC5=0; // Cierra la compuerta del extractor int adquisicion(void) // Subrutina del conversor AD para la lectura del sensor de temperatura ConvertADC(); // Inicia la conversión while (BusyADC()); // Espera a que la conversión finalice PIR1bits.ADIF = 0; // Limpia la bandera de interrupción del conversor AD sensor = ReadADC(); // El resultado de la conversión se guarda en la variable “sensor” return sensor; // Regresa al programa principal con el valor de la variable “sensor”
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
141
void main (void) // Inicia el programa principal OpenUSART(USART_TX_INT_OFF & //Activa y configure el USART, deshabilita las
USART_RX_INT_OFF & // interrupciones por transmisión y recepción USART_ASYNCH_MODE & // trabaja en modo asíncrono USART_EIGHT_BIT & // dato de 8 bits USART_CONT_RX & // recepción continua USART_BRGH_LOW, 19); // baja velocidad y el valor para velocidad de 9600 baudios
PORTD=0;LATD=0;TRISD=0x00; // Inicializa en 0 el puerto D y se configura como salida PORTB=0;LATB=0;TRISB=0xFF; // Inicializa en 0 el puerto B y se configura como entrada INTCON=0x00; // Deshabilita las interrupciones PORTA=0;LATA=0;TRISA=0xEF; // Inicializa en 0 el puerto A y lo configura como entrada INTCON2=0xC0; // Genera interrupción cada flanco ascendente en RB0 OpenADC(ADC_FOSC_RC & // Selecciona el oscilador interno RC para la conversión
ADC_RIGHT_JUST & // Justifica el resultado a la derecha ADC_5ANA_0REF, // Configura el puerto A para 5 entradas analógicas ADC_CH0 & ADC_INT_OFF); // Selecciona el canal 0 como entrada al conversor y
//deshabilita las interrupciones PORTAbits.RA4=1; // Enciende el agitador de aire Delay10KTCYx(0);Delay10KTCYx(0); // Retardo de tiempo antes de empezar la configuración nenfriar(); // Llamada a la subrutina para desactivar soplador, extractor y compuertas while (!DataRdyUSART()); // Espera la recepción de un dato por RS232 sp=ReadUSART(); // Guarda el dato recibido en la variable “sp” setpoint=10*sp; // Guarda en la variable “setpoint” el valor de 10 veces “sp” while (!DataRdyUSART()); // Espera la recepción de un dato por RS232 Kp=ReadUSART(); // Guarda el dato recibido en la variable “Kp” while (!DataRdyUSART()); // Espera la recepción de un dato por RS232 Ti=ReadUSART(); // Guarda el dato recibido en la variable “Ti” while(1) // Comienza el ciclo infinito de control de la cámara térmica adquisicion(); // Se lee el sensor de temperatura WriteUSART(sensor); // Este valor es enviado a la computadora para graficarlo entrada=5*sensor; // Se multiplica por 5y se guarda en la variable “entrada” if (entrada<setpoint) // Si la variable “entrada” es mayor que el “setpoint”, // se calcula la acción de control error=setpoint-entrada; // Cálculo del error errora=errora+error; // Cálculo del error acumulado if(errora>limiterrora) // Se verifica que el error acumulado no sea demasiado // grande para que la acción integral de control errora=80; // no aumente demasiado después de mucho tiempo if(Ti==0) // Si la variable Ti es cero, no se considera // la parte integral de control y conti=0; // solo funcionara como controlador proporcional Else // en caso contrario que la variable Ti tenga un valor // distinto de cero, se calcula la acción conti=errora/Ti; // integral de control cont=Kp*(error+conti); // Se calcula la señal de control if (cont>225) // y es limitada a un valor máximo cont=225; // para el corte de onda pwm=235-cont; // Se calcula el tiempo de corte de onda según la señal de control nenfriar(); // Se desactivan el soplador, el extractor y las compuertas i=0; // se inicializa la variable I con un valor de 0 while(i<120) // para generar la señal de corte de onda durante un segundo
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
142
while(!INTCONbits.INT0IF); //se espera el flanco de subida del detector de cruce por cero INTCONbits.INT0IF=0; //Se limpia la bandera de interrupción externa Delay100TCYx(15); // Retardo fijo de 0.6 ms Delay100TCYx(pwm); // Se aplica el retardo para el corte del semiciclo PORTDbits.RD0=1; // Se dispara el triac con un Delay10TCYx(68); // ancho de pulso de disparo = 226 useg PORTDbits.RD0=0; i++; // se incrementa el valor de la variable i en 1 INTCONbits.INT0IF=0; //Se limpia la bandera de interrupción externa if (entrada>=setpoint) // Si el valor de la variable “entrada es mayor o igual al // valor de “setpoint” enfriar(); // se activan el soplador, el extractor y las compuertas PORTDbits.RD0=0; // se asegura que no se active el triac Delay10KTCYx(150); // y se espera un segundo para el siguiente Delay10KTCYx(150); // muestreo // Fin del programa
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
143
Anexo D.7. Programa de configuración y monitoreo de la cámara térmica El programa utilizado para la configuración y monitoreo de la cámara térmica esta realizado en LabView. LabView utiliza un lenguaje gráfico de programación. En la figura D.1 se muestra el panel frontal del instrumento virtual.
Figura D.1 Panel frontal.
Los controles e indicadores utilizados en el panel frontal están representados por iconos con los que el programa identifica el tipo de variable de cada uno. En la tabla D.1 se muestran las variables, su icono y tipo de variable.
Tabla D.1 Variables del programa de configuración y monitoreo.
Icono Nombre de la variable Tipo de variable PARO Booleana SETPOINT Entera, sin signo, de 8 bits Kp Entera, sin signo, de 8 bits Ti Entera, sin signo, de 8 bits LISTO Booleana ERROR DE CONFIGURACIÓN Booleana ERROR DE ACCESO DEL PUERTO Booleana Área de gráfica Doble LEYENDO Booleana
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
144
En las siguientes figuras se muestran los bloques que forman el programa de monitoreo y control de la cámara térmica.
Figura D.2 Bloque 1 de 4 del programa de monitoreo y control.
Figura D.3 Bloque 2 de 4 del programa de monitoreo y control.
Figura D.4 Bloque 3 de 4 y sub-bloque 1 de 3 del programa de monitoreo y control.
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
145
Figura D.5 Sub-bloque 2 de 3 del programa de monitoreo y control.
Figura D.6 Sub-bloque 3 de 3 del programa de monitoreo y control.
Figura D.7 Bloque 4 de 4 del programa de monitoreo y control.
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
146
Anexo E. Lista de componentes Los componentes fueron cotizados para compra por mayoreo y menudeo en la tienda electrónica Steren. En las tablas E.1, E.2, E.3 y E.4 se muestra la lista de componentes detallada por cada tarjeta electrónica.
Tabla E.1 Lista de componentes de la tarjeta principal
Cantidad Descripción No. Ref. Especificación P. U. May.
Subtotal May.
P. U. Men.
Subtotal Men.
1 Regulador U9 7805 $2.70 $2.70 $6.00 $6.00 1 Regulador U6 7815 $2.70 $2.70 $6.00 $6.00 1 Regulador U1 7915 $2.90 $2.90 $7.00 $7.00 2 Capacitor electrolítico C33, C35 1000 uF / 50V $3.60 $7.20 $8.00 $16.00
7 Capacitor cerámico C29-C32, C42-C44 100 nF $0.20 $1.40 $2.00 $14.00
6 Capacitor electrolítico C34, C37-C41 100 uF / 50 V $0.55 $3.30 $3.00 $18.00
1 Capacitor electrolítico C36 100 uF / 100 V $0.80 $0.80 $4.00 $4.00 3 LED D6-D8 Rojo $0.30 $0.90 $2.00 $6.00
3 Resistencia R43-R44, R46 470 Ω $0.03 $0.09 $0.50 $1.50
2 Bobina L1, L2 $0.00 $0.00 $0.00 $0.00 1 Fusible F1 $0.00 $0.00 $0.00 $0.00 1 Diodo D4 1N4148 $0.20 $0.20 $1.00 $1.00
1 Tira doble en ángulo (peine) JP4 14 $0.03 $0.42 $0.20 $2.80
1 Tira sencilla en ángulo (peine) J32 2 $0.03 $0.06 $0.20 $0.40
1 Tira sencilla en ángulo (peine) J27 3 $0.03 $0.09 $0.20 $0.60
1 Buffer U2 74HC245 $4.60 $4.60 $10.00 $10.00 1 Base C.I. U2 20 pines $0.45 $0.45 $3.00 $3.00
42 Resistencia R22-R27, R42 47 KΩ $0.03 $1.26 $0.50 $21.00
21 Tira sencilla (peine) J1 – J21 3 $0.03 $1.89 $0.20 $12.60 21 Resistencia R1 – R18 470 Ω $0.03 $0.63 $0.50 $10.50 1 Resistencia R21 10 KΩ $0.03 $0.03 $0.50 $0.50 1 Capacitor cerámico C28 100 nF $0.20 $0.20 $2.00 $2.00 1 Tira sencilla (peine) J26 2 $0.03 $0.06 $0.20 $0.40
8 Tira sencilla en ángulo (peine) J38-J45 4 $0.03 $0.96 $0.20 $6.40
8 Resistencia R47 220 Ω $0.03 $0.24 $0.50 $4.00 1 Amplificador operacional U7 MCP6044 $18.50 $18.50 $18.50 $18.50 1 Base C.I. U7 14 pines $0.30 $0.30 $2.00 $2.00
4 Resistencia R35, R38-R40 470 Ω $0.03 $0.12 $0.50 $2.00
4 Resistencia R41 47 KΩ $0.03 $0.12 $0.50 $2.00
4 Resistencia R29, R31, R36, R37 2.2 KΩ $0.03 $0.12 $0.50 $2.00
2 Capacitor cerámico C21, C25 10 nF $0.15 $0.30 $2.00 $4.00 2 Capacitor cerámico C22, C26 22 nF $0.15 $0.30 $2.00 $4.00
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
147
Cantidad Descripción No. Ref. Especificación P. U. May.
Subtotal May.
P. U. Men.
Subtotal Men.
4 Tira sencilla en ángulo (peine) J22-J25 3 $0.03 $0.36 $0.20 $2.40
1 Tira doble en ángulo (peine) JP5 14 $0.03 $0.42 $0.20 $2.80
1 Resistencia R20 820 Ω $0.03 $0.03 $0.50 $0.50 1 Resistencia R19 10 KΩ $0.03 $0.03 $0.50 $0.50 1 LCD LCD 2x16 $300.00 $300.00 $300.00 $300.00 1 Circuito integrado U3 MAX232 $7.90 $7.90 $15.00 $15.00 1 Base C.I. U3 18 pines $0.40 $0.40 $3.00 $3.00 5 Capacitor de tantalio C1-C5 10 uF / 25 V $4.80 $24.00 $11.00 $55.00 1 Capacitor electrolítico C7 100 uF / 25 V $0.30 $0.30 $2.00 $2.00 1 Diodo D2 1N4148 $0.20 $0.20 $1.00 $1.00 1 Diodo zener D3 5.1 v $0.40 $0.40 $3.00 $3.00
1 Conector DB9 hembra para circuito impreso P1 $2.90 $2.90 $9.00 $9.00
2 Memoria EEPROM U8, U10 24FC512 $42.16 $84.32 $42.16 $84.32 2 Base C.I. U8, U10 8 pines $0.25 $0.50 $2.00 $4.00 2 DIPSwitch SW3, SW5 3 $2.20 $4.40 $5.00 $10.00
10 Resistencia R45, R48 4.7 KΩ $0.03 $0.30 $0.50 $5.00 2 Capacitor cerámico C27, C50 100 nF $0.20 $0.40 $2.00 $4.00 1 Tira sencilla (peine) J47 2 $0.03 $0.06 $0.20 $0.40 2 Tira sencilla (peine) J29, J31 3 $0.03 $0.18 $0.20 $1.20 2 Driver U4, U5 L293D $35.00 $70.00 $35.00 $70.00 2 Base C.I. U4, U5 16 pines $0.35 $0.70 $2.00 $4.00 4 Resistencia R34 10 KΩ $0.03 $0.12 $0.50 $2.00 1 DIPSwitch SW4 4 $2.20 $2.20 $5.00 $5.00
16 Capacitor cerámico C8-C20, C45-C47 100 nF $0.20 $3.20 $2.00 $32.00
2 Capacitor electrolítico C23, C24 100 uF / 25 V $0.30 $0.60 $2.00 $4.00 2 Tira sencilla (peine) J35, J36 3 $0.03 $0.18 $0.20 $1.20 2 Tira sencilla (peine) J33, J34 5 $0.03 $0.30 $0.20 $2.00
1 Tira doble en ángulo (peine) JP1 40 $0.03 $1.20 $0.20 $8.00
1 Tira doble en ángulo (peine) JP2 36 $0.03 $1.08 $0.20 $7.20
1 Tira doble en ángulo (peine) JP4 14 $0.03 $0.42 $0.20 $2.80
1 Placa fenólica doble cara PF 12 cm x 19.5 cm (15x20) $22.00 $22.00 $40.00 $40.00
Subtotal May. $ 581.94 Subtotal
Men. $ 869.52
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
148
Tabla E.2 Lista de componentes de la tarjeta de procesamiento
Cantidad Descripción No. Ref. Especificación P. U. May.
Subtotal May.
P. U. Men.
Subtotal Men.
1 Microcontrolador U1 PIC18F452 $104.00 $104.00 $104.00 $104.00 1 Base C.I. U1 40 pines $0.90 $0.90 $4.00 $4.00 1 Cristal de cuarzo XTL 12 MHz $5.70 $5.70 $13.00 $13.00
1 Pulsador SW1 Normalmente abierto $0.40 $0.40 $3.00 $3.00
1 Resistencia R21 100 Ω $0.03 $0.03 $0.50 $0.50 1 Resistencia R23 10 KΩ $0.03 $0.03 $0.50 $0.50
3 Capacitor cerámico C1-C3 100 nF $0.20 $0.60 $2.00 $6.00
2 Capacitor cerámico C4-C5 22 pF $0.20 $0.40 $2.00 $4.00
1 Capacitor electrolítico C6 10 uF / 25 V $0.25 $0.25 $2.00 $2.00
1 Tira doble en ángulo (peine) JP1 40 $0.03 $1.20 $0.20 $8.00
1 Placa fenólica doble cara PF 5.5 cm x 8 cm
(10x10) $7.10 $7.10 $13.00 $13.00
Subtotal May. $ 113.51 Subtotal
Men. $ 869.52
Tabla E.3 Lista de componentes de la tarjeta de E/S de 4-20 mA
Cantidad Descripción No. Ref. Especificación P. U. May.
Subtotal May.
P. U. Men.
Subtotal Men.
1 Conversor digital-analógico U2 DAC0808 $16.50 $16.50 $29.00 $29.00
1 Base C.I. U2 18 pines $0.40 $0.40 $3.00 $3.00
1 Amplificador operacional U4 LF351 $5.00 $5.00 $5.00 $5.00
1 Base C.I. U4 8 pines $0.25 $0.25 $2.00 $2.00 1 Transmisor 4-20 mA J2 XTR110 $130.00 $130.00 $130.00 $130.00 1 Receptor 4-20 mA J4 RCV420 $78.00 $78.00 $78.00 $78.00 2 Base C.I. J2, J4 16 pines $0.35 $0.70 $2.00 $4.00 1 Transistor FET Q1 MTP2955 $7.80 $7.80 $14.00 $14.00 1 Resistencia R4 1 KΩ $0.03 $0.03 $0.50 $0.50 2 Resistencia R2, R3 3.3 KΩ $0.03 $0.06 $0.50 $1.00 1 Trimpot R6 10 KΩ $17.00 $17.00 $31.00 $31.00
1 Capacitor electrolítico C1 1 uF $0.25 $0.25 $2.00 $2.00
1 Capacitor cerámico C2 33 pF $0.20 $0.20 $2.00 $2.00 2 Tira sencilla (peine) J1, J5 2 $0.03 $0.12 $0.20 $0.80
1 Tira doble en ángulo (peine) J8 14 $0.03 $0.42 $0.20 $2.80
1 Placa fenólica una cara 5.5 cm x 6.5 cm
(10x10) $4.40 $4.40 $10.00 $10.00
Subtotal May. $ 261.13 Subtotal
Men. $ 315.10
Diseño y construcción de una tarjeta programable Anexos de adquisición, procesamiento de datos y control
149
Tabla E.4 Lista de componentes de la tarjeta de aplicación
Cantidad Descripción No. Ref. Especificación P. U. May.
Subtotal May.
P. U. Men.
Subtotal Men.
27 LED D1-D27 Rojo $0.30 $8.10 $2.00 $54.00 18 Botón pulsador SW3-SW20 SW $0.40 $7.20 $3.00 $54.00 1 Circuito integrado U2 74LS48 $9.30 $9.30 $17.00 $17.00 2 Base C.I. U2,U3 16 pines $0.35 $0.70 $2.00 $4.00
5 Pantalla de 7 segmentos JP1-JP5 DC05 $4.00 $20.00 $9.00 $45.00
3 Trimpot R1,R2,R9 10 KΩ $17.00 $51.00 $31.00 $93.00 1 LDR R5 LDR $2.20 $2.20 $2.20 $2.20 1 Sensor LM35 U1 TO92 $25.00 $25.00 $25.00 $25.00 5 Transistor Q1-Q5 2N3904 $0.40 $2.00 $3.00 $15.00
1 Capacitor electrolítico C4 47uF 16V $0.25 $0.25 $2.00 $2.00
2 Capacitor cerámico C3-C5 100 nF $0.20 $0.40 $2.00 $4.00
4 Tira sencilla en ángulo (peine) J1-J4 3 $0.03 $0.36 $0.20 $2.40
1 Tira doble (peine) JP6 36 $0.03 $1.08 $0.20 $7.20
1 Placa fenólica doble cara 9.5 cm x 14.5
cm (10x20) $15.00 $15.00 $27.00 $27.00
Subtotal May. $ 142.59 Subtotal
Men. $ 351.80
En la tabla E.5 se muestra concentrado el subtotal por cada tarjeta y el costo total de los componentes por mayoreo y menudeo.
Tabla E.5 Costo total de la tarjeta programable
Total Mayoreo Menudeo Subtotal tarjeta principal $581.94 $869.52 Subtotal tarjeta procesamiento $113.51 $158.00 Subtotal tarjeta 4-20 mA $261.13 $315.10 Subtotal tarjeta de aplicación $142.59 $351.80 Costo total de componentes $1,099.17 $1,694.42
Top Related