Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
CONJUNTO DE CIRCUITOS ELECTRÓNICOS PARA PLATAFORMA ROBÓTICA Trabajo de Grado Número 0958 Andrés Felipe González Cardona PROYECTO DE GRADO PRESENTADO PARA OPTAR EL TÍTULO DE INGENIERO ELECTRÓNICO DIRECTOR: INGENIERO KAMILO ANDRÉS MELO BECERRA M.Sc. PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERÍA CARRERA DE INGENIERÍA ELECTRÓNICA BOGOTA D.C JUNIO DE 2010 1 PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA ELECTRÓNICA RECTOR MAGNÍFICO: R. P. JOAQUÍN SÁNCHEZ S.J DECANO ACADÉMICO: ING. FRANCISCO JAVIER REBOLLEDO MUÑOZ DECANO DEL MEDIO UNIVERSITARIO: R.P. SERGIO BERNAL S.J. DIRECTOR DE DEPARTAMENTO: ING. JORGE LUIS SÁNCHEZ DIRECTOR DE CARRERA: ING. JUAN MANUEL CRUZ DIRECTOR DEL PROYECTO: ING. KAMILO ANDRÉS MELO BECERRA M.Sc. 2 ARTÍCULO 23 DE LA RESOLUCIÓN No. 13 DE JUNIO DE 1946 “La Universidad no se hace responsable de los conceptos emitidos por sus alumnos en sus proyectos de grado. Sólo velará porque no se publique nada contrario al dogma y la moral católica y porque los trabajos no contengan ataques o polémicas puramente personales. Antes bien, que se vea en ellos el anhelo de buscar la verdad y la justicia”. 3 TABLA DE CONTENIDO 1 Introducción ................................................................................................................................ 7 2 Marco Teórico ............................................................................................................................. 9 2.1 Estado del Arte de las plataformas robóticas educacionales...................................................... 9 2.2 Drivers para motores dc con escobillas .................................................................................... 9 2.3 Servomotores ........................................................................................................................ 12 3 Especificaciones ........................................................................................................................ 14 3.1 Especificaciones Eléctricas del Sistema ................................................................................. 14 3.2 Diagrama en bloques ............................................................................................................. 14 4 Desarrollo ................................................................................................................................. 15 4.1 Módulo Maestro .................................................................................................................... 17 4.1.1 Descripción General ......................................................................................... 17 4.1.2 Especificaciones ............................................................................................... 19 4.1.3 Hardware ......................................................................................................... 19 4.1.4 Software ........................................................................................................... 21 4.1.4.1 Timer ......................................................................................................... 21 4.1.4.2 UART ........................................................................................................ 24 4.1.4.3 I2C ............................................................................................................. 25 4.1.4.4 Maquina ..................................................................................................... 28 4.2 Módulo Comunicación .......................................................................................................... 31 4.2.1 Descripción general .......................................................................................... 31 4.2.2 Especificaciones ............................................................................................... 32 4.2.3 Hardware ......................................................................................................... 33 4.2.4 Software ........................................................................................................... 34 4.3 Módulo Puente H .................................................................................................................. 37 4.3.1 Descripción general .......................................................................................... 37 4.3.2 Especificaciones ............................................................................................... 37 4.3.3 Hardware ......................................................................................................... 38 4.4 Módulo Puente H Microcontrolado ........................................................................................ 40 4.4.1 Descripcion general .......................................................................................... 40 4.4.2 Especificaciones ............................................................................................... 41 4 4.4.3 Hardware ......................................................................................................... 41 4.4.4 Software ........................................................................................................... 43 4.5 Módulo display ..................................................................................................................... 43 4.5.1 Descripción general .......................................................................................... 44 4.5.2 Especificaciones ............................................................................................... 44 4.5.3 Hardware ......................................................................................................... 45 4.5.4 Software ........................................................................................................... 45 4.6 Módulo Sensor ...................................................................................................................... 46 4.6.1 Descripción general .......................................................................................... 47 4.6.2 Especificaciones ............................................................................................... 47 4.6.3 hardware .......................................................................................................... 48 4.6.4 software ........................................................................................................... 48 4.7 Variables de entrada .............................................................................................................. 48 4.7.1 Datos a través de Rs-232 .................................................................................. 48 4.7.2 Sensor de contacto............................................................................................ 49 4.7.3 Botones módulo Maestro .................................................................................. 49 4.7.4 Programación Puente H .................................................................................... 49 4.8 Variables de salida ................................................................................................................ 49 4.8.1 Visualización gráfica ........................................................................................ 49 4.8.2 Señales pwm .................................................................................................... 50 4.8.3 Salida puente h y puente h microcontrolado...................................................... 50 4.8.4 Entrada análoga en el puente H micro............................................................... 50 5 Pruebas,resultadosy análisis de los mismos ............................................................................... 50 5.1 Prueba de almacenamiento .................................................................................................... 51 5.2 Prueba PWM’s ................................................................................................................... 53 5.3 Prueba interconexión ............................................................................................................. 56 6 Conclusiones ............................................................................................................................. 56 7 Costos y fuentes de financiación ................................................................................................ 59 8 Bibliografía y fuentes de información ........................................................................................ 60 5 TABLA DE FIGURAS Figura1: Driver tipoHigh Side. .................................................................................................. 10 Figura2: Driver tipoLow Side. ................................................................................................... 10 Figura 3: Señal del driver de velocidad de un motor de corriente continua................................. 11 Figura 4: Driver tipo Puente H. ................................................................................................. 12 Figura 5: Diagrama en bloques general. .................................................................................... 14 Figura 6: Diagrama en bloques específico. ................................................................................ 15 Figura 7: Módulo maestro. ........................................................................................................ 17 Figura 8: Máquina de estados módulo Maestro.......................................................................... 18 Figura 9: Control unidireccional para los motores DC. .............................................................. 20 Figura 10: Esquemático módulo maestro. .................................................................................. 21 Figura 11: Diagrama de flujo módulo de software timer. ........................................................... 23 Figura 12: Diagrama de flujo módulo de software UART. ......................................................... 25 Figura 13: Diagrama de flujo módulo de software I2C. ............................................................. 27 Figura 14: Módulo comunicación. ............................................................................................. 31 Figura 15: Máquina de estados del módulo comunicación. ........................................................ 32 Figura 16: Funcionamiento teclado. .......................................................................................... 33 Figura 17: Esquemático módulo comunicaciones. ..................................................................... 34 Figura 18: Estructura de un comando codificado por el módulo comunicaciones. ...................... 35 Figura 19: Diagrama de flujo módulo comunicaciones. ............................................................. 36 Figura 20: Módulo puente h. ..................................................................................................... 37 Figura 21: Diagrama de bloques funcional del LMD18200. ...................................................... 38 Figura 22: Señal de control aplicada al pin de direccción del puente h. ...................................... 39 Figura 23: Esquemático módulo puente H. ................................................................................ 39 Figura 24: Módulo puente h microcontrolado. ........................................................................... 40 Figura 25: Máquina de estados módulo puente H microncontrolado. ......................................... 40 Figura 26: Diagrama de bloques funcional del L6203. ............................................................... 41 Figura 27: Esquemático módulo puente H microcontrolado....................................................... 42 Figura 28: Diagrama de flujo módulo puente h microcontrolado. .............................................. 43 Figura 29: Módulo display. ....................................................................................................... 43 Figura 30: Máquina de estados módulo display. ........................................................................ 44 Figura 31: Esquemático módulo display. ................................................................................... 45 6 Figura 32: Diagrama de flujo del módulo display. ..................................................................... 46 Figura 33: Módulo sensor.......................................................................................................... 46 Figura 34: Máquina de estados módulo sensores. ...................................................................... 47 Figura 35: Esquemático módulo sensores. ................................................................................. 48 Figura 36: Comunicación bajo el protocolo I2C entre 2 microcontroladores............................... 51 LISTA DE TABLAS Tabla 1: Características eléctricas del sistema. .......................................................................... 14 Tabla 2: Especificaciones módulo maestro. ............................................................................... 19 Tabla 3: Especificaciones módulo comunicaciones. .................................................................. 32 Tabla 4: Especificaciones módulo puente h. .............................................................................. 37 Tabla 5: Especificaciones módulo puente h microcontrolado. .................................................... 41 Tabla 6: Especificaciones módulo display. ................................................................................ 44 Tabla 7: Especificaciones módulo sensores. .............................................................................. 47 Tabla 8: Valores de equivalencia del tiempo en valores numéricos ............................................ 52 Tabla 9: Resultado prueba almacenamiento. .............................................................................. 53 Tabla 10: Resultado configuración CCP. ................................................................................... 54 Tabla 11: Resultado prueba verificación ciclos útiles. ............................................................... 55 Tabla 12: Conjunto de pruebas PWM. ....................................................................................... 55 Tabla 13: Costos y fuentes de financiación del proyecto. ........................................................... 59 7 1 INTRODUCCIÓN Con el pasar de los años, la robótica se ha introducido en diversas áreas y disciplinas para aportar sus beneficios. Hoy en día, este tipo de tecnología se ha vuelto indispensable para el desarrollo de áreas como la industria y la medicina. Por ejemplo, en el campo de la medicina se puede pensar en prótesis que están provistas de actuadores y controladores, así como en brazos mecánicos para realizar alguna operación delicada [1]. Debido a las grandes ventajas que la robótica presenta para los seres humanos, el campo de aplicación de este tipo de tecnología se ha extendido considerablemente, englobando una gran gama de disciplinas. De hecho, la robótica ha desbordado el cuadro tradicional de la fabricación automatizada, para dirigirse al campo de la educación, en donde se aprovechan las bondades que ésta ofrece como medio de enseñanza [2]. En este orden de ideas, la creación de plataformas robóticas surge como una alternativaque permite penetrar de una manera sencilla el aula de clase, haciendo que los alumnos puedan usarlas para la construcción de un robot con alguna tarea específica. Así, este tipo de tecnología se ha convertido en una herramienta pedagógica a través de la cual se estimula a los alumnos a aprender distintas áreas del conocimiento, llevando un proceso interactivo entre la teoría y la práctica.De esta manera, durante las últimas dos décadas, investigadores e industrias han diseñado y puesto en práctica cierto número de kits para la construcción de robots para estimular el aprendizaje de estudiantes en áreas como las matemáticas, la física, la informática y la mecánica. Estos kits incluyen motores, poleas, censores y otro tipo de objetos para su construcción; es decir, todo tipo de elementos que permiten al estudiante construir un robot [3]. El aumento de la demanda de este tipo de plataformas robóticas hace que exista la necesidad de crear prototipos de bajo costo, sin perder las capacidades y robustez de otra plataforma más compleja. Por lo tanto, se considera importante la implementación de la electrónica en módulos de herramientas de control de robots simples y más económicos, para usar la robótica como medio para la adquisición de nociones científicas y motivar a los estudiantes sobre la ciencia y la tecnología. Con este propósito en mente, en este proyecto se diseñó un módulo maestro capaz de realizar las siguientes operaciones: 1) manejar tres motores de corriente continua o servomotores a través de señales de un PWM, 2) realizar ciertas rutinas preestablecidas, 3) guardar un conjunto limitado de 8 estas instrucciones para luego ser ejecutadas de manera secuencial y 4) manejar los motores en tiempo real, según las necesidades del usuario. Asimismo, el modelo incluye el diseño de módulos adicionales que, aunque no son indispensables para el correcto funcionamiento del sistema, agregan capacidades al módulo maestro. Entre estos módulos adicionales se encuentra el módulo de comunicaciones, que permite la comunicación entre el módulo maestro y el computador, el módulo display, que le informa al usuario el estado en el cual el sistema está operando, el módulo censores, el módulo puente H y el modulo puente H microcontrolado. Para poder realizar una exposición adecuada del proyecto, se empezará haciendo un marco teórico en el cual se expondrán las bases tóricas mínimas para la adecuada comprensión de los circuitos. Posteriormente, se expondrán las especificaciones de cada uno de los módulos de la plataforma, así como sus diagramas en bloques. Partiendo de lo anterior, se procederá a explicar el desarrollo del trabajo de grado, en el cual se incluirá una descripción de cada uno de los módulos que componen el proyecto, así como la tecnología utilizada y los diseños realizados. Por último, se expondrán los resultados de las pruebas realizadas para comprobar el correcto funcionamiento del proyecto y se relacionaran los puntos concluyentes del trabajo realizado. 9 2 MARCO TEÓRICO 2.1 ESTADO DEL ARTE DE LAS PLATAFORMAS ROBÓTICAS EDUCACIONALES En este momento en la industria se pueden conseguir distintos kits de robótica con los que se pueden diseñar, construir y operar robots. Unas de estas plataformas son LEGO Mindstorms, VEX y Parallax, las cuales pueden ser programadas para realizar tareas específicas con servomotores para que los robots se muevan con presición y sensores de distancia, color, visión, etc. para que los robots interactuen con el medio. Estas plataformas vienen con ejemplos de como crear y programar un robot que realice una tarea simple para que el usuario después construya y programe sus propios robots según sus necesidades. Aunque se programen de maneras distintas y no contengan las mismas piezas, el objetivo es el mismo, crear robots y estimular a los usuarios a desarrollar robots llevando un proceso interactivo entre la teoría y la práctica. 2.2 DRIVERS PARA MOTORES DC CON ESCOBILLAS1 Cada circuito para el control de motores puede dividirse en el manejo de la electrónica y del software de control. Estas dos piezas pueden ser simples o extremadamente complicadas dependiendo del motor que se vaya a utilizar y los requerimientos del sistema. Generalmente, sistemas con un mejor desempeño requiere hardware más complicado. A continuación se explicarán algunos circuitos básicos involucrados en el manejo de motores de corriente continua con escobillas, que son el tipo de motor usado en el proyecto debido al costo, al manejo y a la disponibilidad de los mismos. Todos los motores requieren circuitos que controlan el flujo de la corriente a través de sus enbobinados,esto incluye la dirección y la magnitud del flujo de la corriente. Los motores de corriente continua con escobillas son fáciles de controlar porque la velocidad y el torque son proporcionales al voltage o corriente aplicada. 1 Toda la información de esta sección hace referencia a 60[6] 10 Figura1: Driver tipoHigh Side. En la Figura1 se puede ver un driver con la capacidad de manejar un motor dc con escobillas en una dirección. Este tipo de driver es usado principalmente en aplicaciones en donde la seguridad es crítica por el hecho de que un corto no puede poner en rotación al motor. El driver tipo LowSide, como el de la Figura2, es el más económico por la simplicidad con la que se maneja el MOSFET. En la mayoría de las apliacaciones se puede usar un pin de salida de un microcontrolador que produzca un señal PWM para encender y apagar el MOSFET, en donde el ciclo útil de la señal es el encargado de la velocidad de rotación del motor ya que ésta es proporcional al ciclo útil de la señal generada. Figura2: Driver tipoLow Side. La velocidad de un motor de corriente continua es el promedio de la señal aplicada al mismo. Una de las técnicas más utilizadas es el PWM, en donde se mantiene el periodo de una señal cuadrada en un valor constante, pero se varía el ciclo útil de ésta; cambiando el valor promedio de la señal de salida del PWM afectando la velocidad de rotación del eje del motor. M1 D1 0 0 Q1 VCC U1 Driver Mosf et 1 2Senal PWM U2 Driver Mosf et 1 2Senal PWM Q2 D2 M2 VCC 0 11 Si el ciclo útil es del 70% del periodo, el motor es abastecido con 70% del voltaje máximo, y luego el ciclo útil es modificado al 40% del periodo, en donde el motor es abastecido con 40% del voltaje máximo, el motor disminuye la velocidad de rotación del eje. En la Figura 3 hay un dibujo que explica el principio de un driver de velocidad de un motor de corriente continua a partir de la señal de un PWM. Figura 3: Señal del driver de velocidad de un motor de corriente continua. Para lograr el control del sentido de la rotación del eje de los motores de corriente continua depende de la polaridad aplicada a las terminales del mismo. El puente H, ver Figura 4, es un circuito con 4 transistores que logra cambiar la polaridad de los terminales del motor a través de la conmutación de estos. Cuando hay un valor bajo en la señal PWM1 yseñal PWM2 y un valor alto en señal PWM3 y señal PWM4, los transistores Q3 y Q2 permiten el flujo de corriente a través de ellos, mientras que Q1 y Q4 van a estar en corte, causando que el eje del motor gira en un sentido. Si ahora existe un valor alto en la señal PWM1 y señal PWM2 y un valor bajo en señal PWM3 y señal PWM4, los transitores Q1 y Q4 permitirán el flujo de corriente a través de ellos y el motor girará en sentido contrario a la condición previamente explicada. 12 Figura 4: Driver tipo Puente H. Como se mencionó anteriormente, las señales PWM son una solución para manejar la velocidad de los motores. Algunos microcontroladores de Microchip, es el fabricante de los microcontroladores escogidos para el proyecto por su costoy sus diversas formas de programación, tienen periféricos PWM incorporados; estos periféricos son el CCP (Capture/Compare/PWM) y el ECCP (Enhanced CCP). El CCP tiene la intención de generar una señal PWM mientras que el ECCP está diseñado para producir las señales necesarias para controlar un puente h. Si los costos son un punto crítico para el diseño, puede que un microcontrolador con estos módulos no esté disponible, por lo que la generación de de señales PWM a través de software es una buena alternativa. 2.3 SERVOMOTORES2 Los motores vienen en diferentes variedades para distintas aplicaciones. El término “servomotor” no aplica realmente al motor como tal sino a la forma en que el motor es utilizado y controlado. En aplicaciones en donde se requiera el uso de servomotores, la idea es mantener la carga, que está unida al eje del motor a través de una serie de engranajes para un ajuste del torque y la velocidad, en una posición específica. Para lograr esto, es necesario obtener información de la posición de la salida del motor para proveer de retroalimentación al sistema de control. La información de la posición se adquiere a través de un potenciometro unido a los engranajes, un sensor de efecto hall que monitorea el paso 2 Toda la información de esta sección hace referencia a [8]. U2 Driv er Mosf et 1 2Senal PWM 2 Q1 0 Q2 VCC U1 Driv er Mosf et 1 2Senal PWM 1 M1 U3 Driver Mosf et 12 Senal PWM 4 Q3 0 Q4 VCC U4 Driver Mosf et 12 Senal PWM 3 13 de unos “dientes” sobre un engranaje metálico, un “encoder” montado directamente en el motor, o cualquier otro sensor que pueda proveer información de la posición del eje del motor. Debido a que los tiempos de respuesta en aplicaciones que involucran el uso de servomotores son medidos en segundos, se puede decir que el lazo de control no es muy exigente. Por lo tanto, se usa un algorítmo sencillo y si es necesario, se le agrega complejidad. En el caso de un servomotor de posición, a medida que el eje del motor rota, se obtiene el valor de la posición del eje y el motor es apagado cuando llega a la posición deseada; se asume que la velocidad de la adquisición de la posición es lo suficientemente rápida para evitar el sobrepaso del valor de posición deseado El cable de control de los servomotores es usado para indicar la posición o el ángulo deseado, el cual está determinado una señal cuadrada que es sometida a variaciones en su ciclo útil. A pesar que tanto el periodo de la señal como las variaciones del ciclo útil dependen del modelo y de cada fabricante, el principio de operación siempre es el mismo. 14 3 ESPECIFICACIONES 3.1 ESPECIFICACIONES ELÉCTRICAS DEL SISTEMA CARACTERÍSITCA VALOR Fuente de alimentación 12 V Tasa de transmisión entre los módulos conectados a través del protocolo de comunicación RS-232 9600 bps Tasa de transmisión entre los módulos conectados a través del protocolo de comunicación I2C 100k bps Número máximo de módulos conectados 7 Número máximo de motores conectados 3 Número máximo de instrucciones almacenadas por motor 15 Tabla 1: Características eléctricas del sistema. 3.2 DIAGRAMA EN BLOQUES Figura 5: Diagrama en bloques general. 15 Figura 6: Diagrama en bloques específico. 4 DESARROLLO Dado que se pretende crear un conjunto de circuitos para una posible plataforma robótica, se decidió realizar un módulo maestro, independiente de los demás módulos, capaz de ejecutar un listado de 15 instrucciones de 3 señales pwm y otros 5 módulos que necesitan de éste para poder ser manejados. Esto se hizo con el fin de que estos 5 módulos sean kits independientes que aumenten las características del módulo maestro y el usuario escoja cuáles desea comprar y/o instalar para realizar la tarea. Cada módulo fue diseñado con el criterio de las necesidades típicas de los usuarios y de las características de las plataformas existentes. Para conectar los módulos al maestro sólo es necesario conectarlos al bus I2C y el maestro detecta automáticamente qué módulo tiene conectado y cambia su manera de controlar las señales PWM si se requiere. Este bus no fue diseñado para ser multi-maestro, y es por esto que el módulo maestro es el único de iniciar y parar una comunicación en este bus. Para comunicarse con el módulo comunicaciones se utiliza el bus RS-232 y esta comunicación se puede iniciar desde cualquiera de los dos módulos; ademas, como en el bus de comunicaciones anterior, es una comunicación half-duplex. Se decidió utilizar motores de corriente continua con escobillas por su alta disponibilidad y mayor economía por si se ve la necesidad de reemplazar alguno de estos, específicamente se usan motores dc con escobillas OT-FF-M10SA/ PA de la compañía Once Top. De la hoja de 16 especificaciones del motor se observa que sus aplicaciones típicas son para juguetes y aero modelos y que maneja una corriente máxima de 0.58 A y un voltaje nominal de 4.8 V. Es por esto que los transistores de salida se escogieron con la corriente máxima para un un torque de stall máximo, en donde se presenta el mayor consumo de corriente. Se escogió el puente H LMD18200 para manejar motores con corrientes de 2 A con voltajes de 24 V ya que este dispositivo electrónico tiene la capacidad de manejar corrientes de 3 A y voltajes hasta de 55 V y está diseñado idealmente para manejar motores de corriente continua. Además de esto, este puente H tiene la característica de poder ser controlado a partir de una sola señal de control, ver sección Módulo Puente H para mayor información acerca de la señal de control. El puente H L6203 tambíen fue escogido para manejar corrientes de 2 A con voltajes de 24 V ya que este dispositivo tiene la capacidad de manejar corrientes de 4 Ay voltajes hasta 48 V. Hay que tener en cuenta que este proyecto es un kit educacional para ser manipulado por niños, razón por la cual no debería ser usado en aplicaciones que demanden corrientes mayores a las ya mencionadas. De esta forma, el uso de estos circuitos en aplicaciones diferentes a las educativas, están bajo la responsabilidad del usuario. El uso de los puentes H se limita al uso de un motor extra, el cual no se provee, pero hay que tener en cuenta las limitaciones dadas por los puentes en voltaje y corriente. Debido a que el prototipo consiste en módulos removibles conforme a las necesidades del usuario, a continuación se explicarán todos los módulos del sistema así estos no estén conectados con el módulo maestro. 17 4.1 MÓDULO MAESTRO Figura 7: Módulo maestro. 4.1.1 DESCRIPCIÓN GENERAL Este bloque microcontrolado tiene la habilidad de identificar qué módulos tiene conectados, crear un listado limitado de instrucciones y ejecutarlas de manera secuencial o en tiempo real. Además tiene la capacidad de manejar 3 motores a partir de PWM's y de comunicarse con otros módulos adicionales mediante I2C o USART. Se usó el microcontrolador PIC18F6410 como el control de este módulo y se implementó una máquina de estados por software para garantizar el correcto funcionamiento del sistema, ver Figura 8. 18 Figura 8: Máquina de estados módulo Maestro. En la Figura 8 se muestra la máquina de estados del módulo maestro. En el lugar “Inicialización” se programan los pines de entrada y de salida del microcontrolador, se habilitan los periféricos que se van a utilizar y se espera un tiempo para que los demás módulos se inicialicen. Una vez se ha realizado lo anterior, la variable estado toma el valor de identificar para poder llegar al lugar “Identificar”, en donde se verifica los módulos que están activos. Si el módulo comunicación está activo hay una transición hacia el lugar “Tiempo Real”, en donde las instrucciones a realizar llegan a través de la UART, de lo contrario hay una transiciónhacia el lugar “Reposo” y se espera a que el usuario presione algún botón del tipo programacióndel módulo (ver sección Botones módulo Maestro). Si estando en “Reposo” el usuario presiona alguno de estos botones, 19 se llega al lugar “Programación” en donde se almacenan las instrucciones ingresadas por el usuario a través de los botones del módulo maestro. Cuando se presione el botón Play hay una transición hacia “Ejecución”, en donde se espera un tiempo para darle tiempo al usuario para alejarse del prototipo y éste pueda realizar las acciones almacenadas de manera secuencial hasta que se realice la última instrucción y pase nuevamente al lugar “Reposo” para esperar nuevas instrucciones del usuario. 4.1.2 ESPECIFICACIONES CARACTERÍSITCA VALOR Fuente de alimentación 5 V Tasa de transmisión entre los módulos conectados a través del protocolo de comunicación RS-232 9600 bps Tasa de transmisión entre los módulos conectados a través del protocolo de comunicación I2C 100k bps Número máximo de motores conectados 3 Número máximo de instrucciones almacenadas por señal PWM 15 Periodo de la señal PWM de los motores 50 us Periodo de la señal PWM de los servomotores 20 ms Valor mínimo del ciclo útil para controlar un Servomotor 370 us Valor máximo del ciclo útil para controlar un Servomotor 2200 µs Memoria de programación usada 13978 bytes Tabla 2: Especificaciones módulo maestro. Este módulo es capaz de controlar motores 4.1.3 HARDWARE El control del módulo maestro fue implementado en elmicrocontrolador de Microchip PIC18F6410, el cual posee un oscilador interno con frecuencia hasta 8 Mhz, cuatro contadores internos (timer0 hasta timer3), tres módulos CCP, memoria flash de 16k byte y soporta los protocolos de comunicación I2C y RS-232. 20 Figura 9: Control unidireccional para los motores DC. También se usa un control de velocidad unidireccional para controlar la velocidad de los tres motores como el que se ve en laFigura 9, en donde la velocidad del motor es proporcional al ciclo útil de la señal PWM generada por el microcontrolador. Como se usa el mismo módulo CCP para controlar tanto los motores DC como los servomotores, se adicionó una resistencia de pull up en paralelo al diodo para que la señal de control del servomotor pueda ser el drain del mosfet con la particularidad que la señal en este punto sería la versión negada de la salida del módulo CCP del microcontrolador. A continuación se muestra el esquemático del módulo maestro. 21 Figura 10: Esquemático módulo maestro. 4.1.4 SOFTWARE Dada la complejidad del software del módulo maestro, éste se desarrolló de manera modular para realizar pruebas independientes a cada uno de estos, lo cual permitió que la detección de fallas fuera más fácil porque éstas son rastreables con este tipo de programación. De acuerdo con lo anterior, el software contiene 4 módulos que se comunican entre ellos a través de banderas. A continuación se exponen las características de cada uno de estos módulos, así como las funciones que estos implementan. 4.1.4.1 Timer Este módulo se encarga del manejo del timer0del microcontrolador a través de la estructura tipo Timer_control, ver anexo código módulo maestro, la cual consta de los siguientes elementos: estado:Variable de ocho bits encargada de indicar en qué estado está el módulo timer 0 VCC led_potencia3 VCC C1 100n C2 100n C3 100n 0 SERVO 2 HEADER 3 1 2 3 SERVO 1 SERVO 2 SERVO 3 HEADER 3 1 2 3 carro 0 MODULO COMUNICACIONES1 HEADER 4 1234 SERVO 1 HEADER 3 1 2 3 MCLR SERVO 3 0% VCC 0 BUS I2C1 HEADER 4 1 2 3 4 25% 50% 75% R21 10kVCC R24 10k 100% U2 PIC18F6410 RA024 RA123 RA2 22 RA321 RA428 RA527 RA6 40 RA739 RB048 RB147 RB246 RB345 RB444 RB543 RB6 PGC42 RB7 PGD37 R C 0 30 R C 1 C C P2 29 R C 2 C C P1 33 R C 3 SC L 34 R C 4 SD A 35 R C 5 36 R C 6 TX 1 31 R C 7 R X1 32 R D 0 ca rro 58 R D 1 1 0% 55 R D 2 25 % 54 R D 3 50 % 53 R D 4 75 % 52 R D 5 10 0% 51 R D 6 at ra s 50 R D 7 pl ay 49 RE0 2 motor1 RE1 1 motor2 RE2 64 motor3 RE3 63 LED ama RE4 62 LED v er RE5 61 LED rojo RE6 60 RE7 59 serv o1 RF0 18 serv o2 RF1 17 serv o3 RF2 16 RF3 15 RF4 14 RF5 13 RF6 12 RF7 11 C C P3 R G 0 3 R G 1 4 R G 2 5 R G 3 6 R G 4 8 M C LR R G 5 7 VS S 9 VS S 25 VS S 41 VS S 56 AV SS 20 V D D 10 V D D 26 V D D 38 V D D 57 AV D D 19 R14 10k R26 10k R35 4.7k R19 10k R29 10k R33 4.7k VCC atras potencia1 R15 10kpotencia2 R16 10k R18 10k VCC R28 10k potencia3 0 R20 10k 0 R32 10k VCC play R34 10k Q1 2N7000 0 SERVO 3 R7 10k R36 10k D1 1N4004 SERVO 1 SERVO 3 SERVO 2 R3 10k R2 100 MOTOR 2 HEADER 4 1 2 3 4 VCC VCC VCC R6 10k VCC VCC 0 R4 1k motor 1 C5 22p VCC C4 22p 0 0 motor 2 SCL led_amarillo 0 CCP3 motor 3 led_v erde VCC VCC VCC VCC VCC VCC VCC VCC R13 330 R17 330 MOTOR 3 HEADER 4 1 2 3 4VCC 0 play VCC VCC J1 ICD2 1 2 3 4 5 6 R5 1k atras 0 J4 HEADER 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PGC MOTOR 1 HEADER 4 1 2 3 4 VCC 0 100% PGD 75% VCC Q3 2N7000 D3 1N4004 R31 10k R30 100 0 C9 22p C8 22p VCC SDA led_potencia2 led_potencia1 R10 330R11 330 50% Q2 2N7000 0 D2 1N4004 R25 10k R23 100 0 C7 22p C6 22p VCC FUENTE1 HEADER 4 1 2 3 4 25% led_amarillo potencia3 motor 1 led_v erde motor 3 motor 2 potencia1 potencia2 led_potencia10% VCC carro CCP1 U1 LM317/SO VIN 1 ADJ4 VOUT 2 VOUT 3 VOUT 6 VOUT 7 SERVO 1 CCP2 R8 10k R22 1k R9 10k PGC PWM2 J6 HEADER 10 1 2 3 4 5 6 7 8 9 10 SERVO 2 R27 1k PGD led_potencia3 PWM3 R12 330 Fuente R1 1k PWM1 BUS I2C2 HEADER 4 1 2 3 4 led_potencia2 22 hasta_cuando_cuento: Valor hasta el cual la variable tiempo_transcurrido tiene que aumentar para activar la bandera tiempo_superado. tiempo_transcurrido: Variable de 8 bits que indica el tiempo transcurrido desde que se ha activado el contador. tiempo_superado:Bandera que indica que la variable tiempo_transcurrido es igual o mayor a la variable hasta_cuando_cuento. El contador es configurado como un contador de 16 bits que utiliza el reloj interno, 8Mhz, y un prescaler de 8, por lo que cada vez que se desborde el módulo habrán pasado alrededor de 0.262 segundos, ver Ecuación 1, y por lo tanto ese tiempo sería la resolución del contador. ó݊݅ܿݑ݈ݏܴ݁ = ݕܿݐ × 2#ௗ ௧௦ ௗ ௧ௗ × ݎ݈݁ܽܿݏ݁ݎ Ecuación 1: Resolución del Timer0. Cada vez que éste se desborde aumenta en uno una variable de un byte llamada tiempo_transcurrido, por lo tanto el tiempo máximo que se puede medir sería de 67.108 segundos. Por medio de la implementación de una máquina de estados se garantizó el control del contador y poder satisfacer las necesidades del proyecto. Esta máquina de estados posee los siguientes estados: OFF:Se deshabilita el contador y se bajan las banderas de tiempo_superado y hasta_cuando_cuento para que no estén activas cuando se desee reinicar el contador. ON: Se habilita el contador y se borra el valor de la variable de ocho bitstiempo_transcurrido. Se borra en este estado y no en el estado OFFpor si se necesita este valor durante la ejecución del programa. overflow: Se baja la bandera de desbordamiento del contador y se aumenta en 1 tiempo_transcurrido, cuando esta variable es igual a la variablehasta_cuando_cuento se apaga el contador y se le avisa a los demás módulos de este evento por medio de la bandera tiempo_superado. En la Figura 11 se puede observar la representación de la máquina de estados a través del diagrama de flujo del módulo de software. 23 Figura 11: Diagrama de flujo módulo de software timer.24 4.1.4.2 UART Este módulo se encarga del manejo de la USART del microcontrolador a través de la estructura tipo Uart_control, ver anexo código modulo maestro, la cual consta de los siguientes elementos: estado: Variable que indica el estado en el que está el módulo UART acuse_de_recibo: Indica que se ha recibo un byte a los demás módulos para que estos puedan usarla. registro: Variable de 8 bits usada para almacenar el byte recibido en la recepción y el dato enviado en la transmisión de datos a través del protocolo de comunicación RS-232. Solamente en los lugares “Identificar” y “Tiempo Real” de la Máquina de estados módulo Maestro.se usa este módulo. En el lugar “Identificar” se usa para verificar si el módulo comunicaciones está conectado con el módulo maestro y en el lugar “Tiempo Real” es usado para recibir la instrucción que el usuario ha ingresado a través del teclado de un computador del módulo comunicaciones. La implementación de la máquina de estados usada para controlar el módulo de software se puede ver en la Figura 12, y se logró por medio de los siguientes tres estados: uart_recepcion: En este estado se espera a que la bandera de recepción de la UART del microcontrolador esté activa para luego guardar el byte en la variable registro, y avisarle a los demás módulos por medio de la bandera acuse_de_recibo que ya se ha recibido el dato. uart_enviar: Se espera a que la bandera de transmisión este activa para cargar la USART con el dato almacenado en la variable registro. uart_reposo: En este estado se deshabilita el módulo. El objetivo de la función “Identificación” es lograr que el Módulo Maestro identifique cuáles módulos están conectados a él, por lo que se creó una variable de 8 bits en donde los 7 bits más significativos fueron asignados a cada módulo y el valor de cada uno indicaría si el módulo está conectado o no. 25 Figura 12: Diagrama de flujo módulo de software UART. 4.1.4.3 I2C Se va a implementar una comunicación a través del protocolo I2C con un maestro y varios esclavos, y el módulo maestro será el maestro, como su nombre lo indica, dentro de la comunicación, por lo tanto es el encargado de manejar la comunicación con los demás módulos. Para esto se utiliza el periférico interno MSSP (Master Synchronous Serial Port) del microcontrolador y una estructura del tipo I2c_control, la cual consta de los siguientes elementos: dato: Es un apuntador a la variable en donde se almacena el dato del bus. direccion: Es la dirección del esclavo con el cual se desea comunicar. numero_bytes: Número de bytes involucrados en la comunicación. estado: Es una variable de 8 bits en donde cada uno de ellos representa alguno de los estados en los que puede estar el módulo. exito: Es una variable de 8 bits la cual almacena en cada uno de sus bits el éxito de la comunicación con los esclavos en cada uno de los estados del módulo. 26 En la Figura 13 se muestra la representación de la implementación del módulo y su máquina de estados que contiene los siguientes estados: i2c_start: En este estado se espera a que se detecte la secuencia start iniciada por le microcontrolador y luego se inicia la comunicación con el esclavo con la dirección correspondiente a la variable de 8 bits de la estructura tipo I2c_control y se espera el 9 pulso de reloj para verificar si hubo un ACK. Este estado solamente es usado en el lugar “Identificar” para verificar qué módulos están conectados. i2c_rx:En este estado se desea recibir un dato del módulo sensores para luego ser usado por el programa. i2c_lcd:En este estado se envía un mensaje al módulo display para que éste se actualice. i2c_uh1:En este estado se envía un mensaje al módulo uh1 para que éste ejecute la instrucción ingresada por el usuario, ya sea por medio del teclado del computador o por medio del teclado del mismo módulo maestro. i2c_uh2:En este estado se envía un mensaje al módulo uh2 para que éste ejecute la instrucción ingresada por el usuario, ya sea por medio del teclado del computador o por medio del teclado del mismo módulo maestro. i2c_uh3:En este estado se envía un mensaje al módulo uh3 para que éste ejecute la instrucción ingresada por el usuario, ya sea por medio del teclado del computador o por medio del teclado del mismo módulo maestro. 27 Figura 13: Diagrama de flujo módulo de software I2C. 28 4.1.4.4 Maquina Este módulo de software es el encargado de seguir el diagrama de flujo, ver anexo código modulo maestro, a través de una máquina de estados y, debido a que es un diseño modular, se comunica con los demás módulos por medio de banderas y por esta misma razón se crearon algunas variables estáticas. El módulo posee 5 estados principales como los de la Figura 8: identificacion: Se verifican los módulos que están conectados al módulo maestro a través comunicación serial por medio de los protocolos I2C y RS-232. El resultadoes almacenado en la variable modulo, en donde cada bit representa un móduloy su estado. Dependiendo del resultado del MSB cambia de estado a reposo o a tiempo_real ya que este bit representa el módulo “tiempo real”, ver. reposo: En este estado, el control espera a que el usuario presione uno de losbotones del tipo programación del módulo maestro. Una vez lo haga, cambia deestado a programacion. programacion:En este estado se almacenan tanto las instrucciones ingresadas por elusuario como la duración de las mismas en bytes independientes en una estructura tipo Instruccion. Para lograr esto se dividió en tres estados adicionales: o programacion_inicio: En este estado, el usuario ha presionado un botón del tipo programación del módulo maestro y se estáa la espera que el usuario presione un botón deltipo axn. o programacion_tiempo: En este estado, el usuario está presionando un botóndel tipo axn y se está a la espera que el usuariodeje de presionar el botón. Este tiempo está siendomedido por un contador con una resolución de 0.262 segundos, ver sección correspondiente al módulo Timer. o programacion_guardar: Durante este estado se almacena la instrucción y laduración de la misma en la estructura respectiva. ejecucion: En este estado se ejecuta la lista de instrucciones que el usuario ha almacenadoy se ha dividido en dos estados. o ejecución_inicio: Se carga la variable de la estructura tipo Timer_control,hasta_cuando_cuento, con la mayor duración de las tres señales pwm y se ejecutan las primeras instrucciones almacenadas. 29 o ejecución_nueva: En este estado se actualiza la instrucción de acuerdo a la lista de instrucciones almacenada y al valor de la variable de la estructura tipo Timer_control, tiempo_transcurrido. tiempo_real:Durante este estado se revisa la UART por instrucciones enviadas por el módulo comunicaciones para que éste las ejecute, u ordene a los demás módulo a ejecutarlas de ser necesario. Para lograr la identificación de los módulos conectado al Módulo Maestro, éste está conectado con los demás módulos y se comunica a través de los protocolos de comunicación I2C y RS-232. Todos aquellos que estuvieran conectados al Maestro a través de I2C, se les fue asignada una dirección y durante este estado, el Maestro iniciaba la comunicación con cada una de estas direcciones, si recibía un ACK en el noveno pulso de reloj, quiere decir que el módulo con respectiva dirección estaba conectado y el bit de de la variable se pondría en 1, de lo contrario se pondría un 0 indicando que no ha sido conectado el módulo con dicha dirección. Para lograr la identificación del módulo conectado a través de RS-232, el Maestro envía un mensaje a éste y esperaba una respuesta. Si el Maestro no ha recibido alguna respuesta en un determinado tiempo, quiere decir que el módulo no está conectado y el bit de la variable que lo representa sepondría en 0, de lo contrario, estaría conectado y el bit se pondría en 1. Para manejar los motores DC de baja potencia se usaron los módulos CCP (Compare/Capture/PWM) que vienen integrados en el microcontrolador y se configuraron para tener una señal PWM con un periodo de 20k Hz para que estuviera fuera del espectro auditivo. Como el módulo maestro también tiene la capacidad de controlar un servomotor, si el usuario deseaba manejar un servo motor y se utilizan las fórmulas del fabricante para configurar el módulo CCP, sería necesario guardar en el registro PR2 el número 1000 si se usa una frecuencia de oscilación interna de 8 Mhz, lo cual es inviable porque es un registro de 8 bits. ݀݅ݎ݁ܲ = [ܴܲ2 + 1] × 4 × ܿݏܶ × 2ܴܯܶ ݈݁ܽܿݏ݁ݎܲ Ecuación 2: Ecuación usada para calcular el periodo de la señal de salida del CCP. Debido a las limitaciones del módulo, no fue posible generar una señal PWM con ciclos útiles entre 370us y 2ms con un periodo de 20 ms. Teniendo en cuenta que la precisión y la exactitud eran indispensables para el correcto funcionamiento del circuito, se utilizaron los módulos 30 Timerrestantes del microcontrolador y, a partir de las interrupciones de estos, se pudieronobtener las señales PWM deseadas. Como solamente estaban disponibles 2 timers (los módulos Timer3 y Timer1) y no 4, 1 para el periodo de la señal PWM y los otros 3 para la generación del ciclo útil de cada motor, uno de los timerses el responsable del periodo de la señal PWM, es decir 20ms, y el otro es el encargado de los ciclos útiles. Se realizó una tabla con los valores desde los cuales el timer encargado del ciclo útil debía empezar a contar para obtener el ciclo útil deseado una vez se haya desbordado el timer. Cuando el usuario deseaba manejar más de un servo motor, se usa la misma tabla pero de una manera diferente. Como un módulo era el responsable de los ciclos útiles de tres señales PWM diferentes, y cualquiera de ellas podría tener el ciclo útil menor, era necesario organizar de menor a mayor los ciclos útiles. Una vez hecho esto, se carga el timer responsable de los ciclos útiles con el valor de la tabla correspondiente al menor ciclo útil. Cuando se desborde, se apaga el ciclo útil de la señal que debería apagarse y el timer se carga con la diferencia entre el siguiente ciclo útil y el anterior, para que de esta forma sea posible manejar tres señales PWM con 2 timers. Para crear el listado de instrucciones, se utiliza un vector de estructuras de 15 posiciones en donde cada posición almacena la acción que el usuario desea realizar, la duración de ésta y si es la última instrucción ingresada por el usuario. Para la medición de la duración de la acción se utiliza el modulo interno del microcontroladorTimer0 que es configurado como un contador de 16 bits que utiliza el reloj interno, 8Mhz, y un prescaler de 8, por lo que cada vez que se desborde el módulo habrán pasado 0.262 segundos, ver Ecuación 3, y por lo tanto ese tiempo sería la resolución del contador. ó݊݅ܿݑ݈ݏܴ݁ = ݕܿݐ × 2#ௗ ௧௦ ௗ ௧ௗ × ݎ݈݁ܽܿݏ݁ݎ Ecuación 3: Resolución del Timer0. Cada vez que éste se desborde aumenta en uno una variable de un byte llamada tiempo_transcurrido, por lo tanto el tiempo máximo que se puede almacenar sin perder la información correcta sería de 66 segundos aproximadamente. 31 Se tiene un contador para cada señal pwm de salida llamado contador_motorX, donde X es un valor entero entre 1 y 3, el cual es el encargado de llevar la cuenta del número de instrucciones que el usuario ha ingresado pero cuando llega a un valor de 15 instrucciones almacenadas, deja de incrementar. Cuando se presiona el botón Play para cambiar al estado Transición, el programa revisa esta variable y dependiendo del valor de ésta, la última instrucción almacenada se actualiza y carga en uno el valor correspondiente de la estructura. Si el usuario ingresa más de quince instrucciones, el programa está diseñado para protegerse sobrescribiendo la última instrucción. 4.2 MÓDULO COMUNICACIÓN Figura 14: Módulo comunicación. 4.2.1 DESCRIPCIÓN GENERAL Este bloque posee un control hecho por unmicrocontrolador y está encargado de la comunicación entre el computador y el módulo maestro por medio de la USART interna, agregándole la capacidad al modulo maestro de ejecutar ordenes en tiempo real. La señal com_in es serial y tiene las instrucciones que el usuario ha ingresado para su ejecución. Datos es una señal serial que le indica a los motores las acciones que deben realizar. 32 Figura 15: Máquina de estados del módulo comunicación. En la Figura 15 está la máquina de estados del módulo comunicación. En el lugar “Inicialización” se programan los pines de entrada y de salida del microcontrolador, se habilitan los periféricos que se van a utilizar y la variable estado toma el valor de identificar para poder llegar al lugar “Identificar”. En ese lugar se espera a que el módulo maestro envíe un comando a través de la USART para responderle y de esta manera se le está avisando al módulo maestro que el módulo comunicación está activo. En el lugar “Recepción” el programa espera a que el usuario ingrese una instrucción a través del teclado del computador para que ésta sea enviada al módulo maestro y pueda ser ejecutada. 4.2.2 ESPECIFICACIONES CARACTERÍSITCA VALOR Fuente de alimentación 5 V Tasa de transmisión entre PC-módulo comunicaciones Módulo comunicaciones – módulo maestro. 9600 bps Fuente alimentación microcontrolador 3.2 V Memoria de programación usada 934 bytes Tabla 3: Especificaciones módulo comunicaciones. Teniendo en cuenta que existen 10 posiciones o velocidades por cada motor, el usuario deberá utilizar el teclado con el fin de ingresar la velocidad deseada. La primera fila con letras del teclado, desde la letra “q” hasta la “t”, sirve para seleccionar 5 de las 10 velocidades o posiciones del motor controlado por la señal pwm1_out. La segunda fila, desde la letra “a” hasta la “g”,sirve para seleccionar 5 de las 10 velocidades o posiciones del motor controlado por la señal 33 pwm2_out. Por último, la tercera fila, desde la letra “z” hasta la “b”,sirve para seleccionar 5 de las 10 velocidades o posiciones del motor controlado por la señal pwm3_out. Dado que los teclados pueden ser distintos y para facilitar el uso del prototipo, las otras 5 posiciones o velocidades de cada uno de los motores se dan por medio de las mayúsculas de las teclas ya mencionadas. Figura 16: Funcionamiento teclado. 4.2.3 HARDWARE Se uso el microcontrolador PIC18F24J11 como el control de este módulo por el hecho de tener dos periféricos USART. Uno de ellos se usa para recibir la información ingresada por el usuario a través del teclado del computador, y el otro es usado para comunicarse con el módulo maestro para que este ejecute éstas instrucciones. Dado que el microcontrolador requiere una fuente de alimentación de entre 2 y 3.6 V, se utilizó un regulador para garantizar un voltaje en este rango a partir de una fuente de 5 V. También se utilizó el integrado MAX232 para adecuar los niveles de voltaje y poder comunicarse con el computador a partir de una fuente de alimentación de 5 V. A continuación se muestra el esquemático del módulo comunicaciones. 34 Figura 17: Esquemático módulo comunicaciones. 4.2.4 SOFTWARE Dado que la duración de la ejecución de la instrucción depende del tiempo que el usuario mantenga presionado el teclado, y durante este tiempo el computador estará enviando varias veces el mismo comando, el módulo comunicaciones se encarga de detectar este evento y solamente le envía al módulo maestro el primero de la repetición. El módulo también tiene la capacidad de detectar cuando el usuario ha dejado de presionar el teclado y le informa al módulo maestro que tiene que dejar de realizar la instrucción queestaba ejecutando. Esto se hace con el fin de liberar al módulo maestro de realizar operaciones y para disminuir el tamaño de la programación en el módulo maestro. En la Figura 19 se puede observar el diagrama de flujo del programa del módulo comunicaciones Como se mencionó anteriormente una de las UART es utilizada para recibir el comando que el usuario ha ingresado a través del teclado y esta instrucción es codificada en un byte en donde los 4 bits menos significativos (LSB) son la acción que se desea realizar y los 4 bits más significativos (MSB) corresponden al motor encargado de realizar la acción. Una vez se haya U1 PIC18F24J11 11 22 33 44 55 66 77 88 99 1010 1111 1212 1313 1414 28 28 27 27 26 26 25 25 24 24 23 23 22 22 21 21 20 20 19 19 18 18 17 17 16 16 15 15 R1 10k 0 PGD PGC R6 1k R7 1k VCC 5V PIN 12 max VCC 5V PIN 11 max U4 MAX232 11 22 33 44 55 66 77 88 16 16 15 15 14 14 13 13 12 12 11 11 10 10 9 9 0 C1 10u J1 HEADER 6 1 2 3 4 5 6 MCLR VCC 3V R10 1kR11 1k PGD PGC Rx 0 Tx J2 db9 1 2 3 4 5 6 7 8 9 0 PIN 11 max PIN 12 max VCC 5V 0 Rx PC Tx PC Rx PC Tx PC C3 1u 1 20 C4 1u 12 C5 1u 1 2 C6 1u1 2 0 VCC 3V J3 RJ11 1 2 3 4 0 VCC 5V TX RX VCC 5V VCC 5V U3 LM317/SO VIN1 ADJ4 VOUT 2 VOUT 3 VOUT 6 VOUT 7 VCC 5V R8 470 0 R9 1k VCC 3V 35 codificado, se utiliza el otro módulo USART se para transmitirle al módulo maestro esta información mientras se permite la recepción y la codificación de otro comando ingresado por el usuario. Figura 18: Estructura de un comando codificado por el módulo comunicaciones. Hay que resaltar que una vez este módulo sea identificado por el módulo maestro, el sistema trabajará en “Tiempo Real” y a diferencia del estado “Ejecución” del módulo maestro, las acciones solamente se realizan cuando el usuario oprime el teclado. La plataforma está diseñada para que al trabajar en tiempo real con un servomotor, éste mantenga su posición hasta que una nueva instrucción sea ingresada a través del teclado. Al contrario del servomotor, con los motores de corriente continua ellos dejan de girar una vez el usuario ha dejado de presionar el teclado. 36 Figura 19: Diagrama de flujo módulo comunicaciones. 37 4.3 MÓDULO PUENTE H Figura 20: Módulo puente h. 4.3.1 DESCRIPCIÓN GENERAL El módulo puente H es el encargado de la interfaz eléctrica para el control de motores de corriente continua a través de la señal p_out. Cualquiera de las señales PWM del módulo maestro pueden ser las entradas a éste y a partir de ellas se logra el control de los motores. Este módulo utiliza un puente H (LMD18200) diseñado para aplicaciones en donde se desee controlar el movimiento a partir de una señal PWM, permitiendo así manejar el motor de corriente continua del usuario. A diferencia de los demás módulos, el módulo puente H no contiene un microcontrolador y es alimentado a partir de una fuente de 12V externa debido a los requerimientos de los componentes. 4.3.2 ESPECIFICACIONES CARACTERÍSITCA VALOR Fuente de alimentación 12 V Tasa de transmisión entre PC-módulo comunicaciones Módulo comunicaciones – módulo maestro. 9600 bps Consumo de corriente de fuente de alimentación 13 mA Tabla 4: Especificaciones módulo puente h. 38 Si el usuario desea utilizar este módulo, debe conectar los jumpers de potencia ubicados en el teclado del módulo maestro correspondiente a la señal pwm a la cual se le vaya a conectar el módulo.De haberlo hecho correctamente, el LED de potencia de la señal respectiva se encenderá. Si se conecta un servomotor cuando se conecta el jumper indicando que se desea utilizar el módulo puente H,el motor no va a responder como lo desee el usuario debido a la programación 4.3.3 HARDWARE En la Figura 21 se observa el Pin3, Pin4 y Pin5, que son las entradas de control del componente y corresponden a la dirección, freno y señal PWM, respectivamente. Para lograr manejar bidireccionalmente el motor de corriente continua, el Pin 5, que corresponde a la señal PWM, va atado a un uno lógico. Por su parte, el Pin3, señal de dirección del bloque de control del componente, va conectado a una señal con ciclo útil variable en la que está codificada tanto la información de la dirección como la de la amplitud. Figura 21: Diagrama de bloques funcional del LMD18200.3 Como se puede ver en laFigura 22, una señal PWM con ciclo útil del 50% no representa control alguno sobre el movimiento, debido a que el valor promedio entregado a la carga es 0. Por el 3 Imagen tomada de [17]. 39 contrario, unas señales PWM con un ciclo útil del 75% y del 25% representan movimiento hacia direcciones opuestas pero con la misma magnitud. Figura 22: Señal de control aplicada al pin de direccción del puente h. En la figura a continuación se muestra el esquemático del módulo puente H. Figura 23: Esquemático módulo puente H. U1 LMD18200 B O O T 1 1 O U T1 2 D IR 3 B R A K E 4 P W M 5 V C C 6 G N D 7 C U R R E N T 8 T H E R M A L 9 O U T2 10 B O O T 2 11 J1 FUENTE 1 2 J2 MOTOR 1 2 VCC 0 OUT1 OUT2 C1 103 C2 103 PWM R1 1k VCC VCC VCC0 0 0 J3 conector 1 2 3 4 VCC 5V PWM 0 0 OUT1 OUT2 C3 1n 40 4.4 MÓDULO PUENTE H MICROCONTROLADO Figura 24: Módulo puente h microcontrolado. 4.4.1 DESCRIPCION GENERAL El módulo puente H microcontrolado es el encargado de la interfaz eléctrica para el control de motores de corriente continua a través de la señal h_out. A diferencia del módulo descrito anteriormente, éste se comunica con el módulo maestro por medio del protocolo I2C y a partir de esta comunicación se generan las señales necesarias para lograr el control de los motores. Este módulo también posee al menos una entrada análoga para la futura implementación de un control de posición o de velocidad. Figura 25: Máquina de estados módulo puente H microncontrolado. 41 En la Figura 25se muestra la máquina de estados del módulo puente H microcontrolado. En el lugar “Inicialización” se programan los pines de entrada y de salida del microcontrolador, se habilitan los periféricos que se van a utilizar y la variable empezar toma el valor de 0 para poder avanzar al lugar “Reposo”. En ese lugar, se espera hasta que el valor de la variable empezar cambie a ON o a OFF, y dependiendo del valor, habilita o deshabilita el periférico encargado de generar las señales necesarias para que el puente H maneje el motor según lo haya requerido el usuario. 4.4.2 ESPECIFICACIONES CARACTERÍSITCA VALOR Fuente de alimentación puente H 12 V Fuente alimentación microcontrolador 5 V Tasa de transmisión con el módulo maestro 100 kbps Consumo de corriente del microcontrolador 5 mA Consumo de corriente del puente H 45 mA Memoria de programación usada 717 bytes Tabla 5: Especificaciones módulo puente h microcontrolado. 4.4.3 HARDWARE Figura 26: Diagrama de bloques funcional del L6203.4 4 Imagen tomada de [16]. 42 Se utilizó el puente H L6203 en este módulo para manejar los motores del usuario y, como se puede ver en la Figura 26, este puente H posee tres señales de control (Enable, IN1 e IN2). Este componente fue controlado a través del microcontrolador PIC18F4221 ya que éste tiene un periférico, “Enhanced Capture/Compare/PWM”, con la habilidad de generar estas tres señales y lograr el manejo del puente H. En la figura a continuación se muestra el esquemático del módulo puente H microcontrolado. Figura 27: Esquemático módulo puente H microcontrolado. SCLSDA U2 L6203 O U T2 1 V S 2 O U T1 3 B O O T 1 4 IN 1 5 G N D 6 IN 2 7 B O O T 2 8 V R E F 9 S EN SE 10 E N A BL E 11 RD1 0 C1 104 VCC 12V C2 104 0 C3 104 0 J1 I2C1 2 3 4 SCL SDA VCC 5V 0 U3 PIC18F4221 1 1 2 2 33 44 55 66 77 88 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 33 33 32 32 31 31 30 30 29 29 28 28 27 27 26 26 25 25 24 24 23 23 44 44 43 43 42 42 41 41 40 40 39 39 38 38 37 37 36 36 35 35 34 34 VCC 5V 0 0 VCC 5V PGCPGD MCLR J2 ICD2 1 2 3 4 5 MCLR VCC 5V PGD PGC 0 P1B P1A P1A P1B out2 out1 J3 I2C 1 2 3 4 SDA SCL 0 VCC 5V RD1 J4 Motor 1 2 J5 Fuente 1 2 VCC 12V 0 out1 out2 J6 Analoga 1 43 4.4.4 SOFTWARE Se utilizó el MSSP del microcontrolador para comunicarse con el módulo maestro y se configuró para que a través de interrupciones se logre la comunicación entre ellos. Como se puede ver en la Figura 28, cuando el microcontrolador tenga que atender la interrupción, el valor de la variable empezar cambia, y dependiendo del valor se habilita o deshabilita el ECCP. Figura 28: Diagrama de flujo módulo puente h microcontrolado. 4.5 MÓDULO DISPLAY Figura 29: Módulo display. 44 4.5.1 DESCRIPCIÓN GENERAL Es el módulo microcontrolado que por medio de la conexión con el módulo maestro, a través de I2C, permite la visualización del estado en el cual el sistema está operando. En la Figura 30se muestra la máquina de estados del módulo display. En el lugar “Inicialización” se programan los pines de entrada y de salida del microcontrolador, se habilitan los periféricos que se van a utilizar y la variable estado toma el valor de actualizar para poder avanzar al lugar “Actualizar”. Como su nombre lo indica, en este lugar se actualiza el display dependiendo el estado en el que se está operando. En el lugar “Tiempo” se espera el tiempo para luego volver a actualizar el display. Figura 30: Máquina de estados módulo display. 4.5.2 ESPECIFICACIONES CARACTERÍSITCA VALOR Fuente alimentación 5 V Tasa de transmisión con el módulo maestro 100 kbps Consumo de corriente 7 mA Memoria de programación usada 2128 bytes Tabla 6: Especificaciones módulo display. 45 4.5.3 HARDWARE Se utilizó un LCD que contiene un controlador Hitachi HDD44780 para mostrarle al usuario el estado en el cual ésta el módulo maestro. A este controlador se le enviaron las instrucciones a través del microcontrolador PIC18F2221 que fue escogido para controlar el módulo display. En la figura a continuación se muestra el esquemático del módulo display. Figura 31: Esquemático módulo display. 4.5.4 SOFTWARE Para controlar el LCD se utiliza la libreria XLCD de Microchip y se crearon funciones para actualizar el display y simular una animación en el LCD. En la se muestra la implementación de la máquina de estados del módulo display. U2 PIC18F2221 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 28 28 27 27 26 26 25 25 24 24 23 23 22 22 21 21 20 20 19 19 18 18 17 17 16 16 15 15 U1 LCD 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 R4 10k 0 SCL SDA0VCC 0 R2 1k VCC 0 R1 330 VCC R3 10k VCC VCC J1 I2C 1 2 3 4 SCL SDA VCC 0 46 Figura 32: Diagrama de flujo del módulo display. 4.6 MÓDULO SENSOR Figura 33: Módulo sensor. 47 4.6.1 DESCRIPCIÓN GENERAL Este módulo microcontrolado está conformado por un sensor de contactoon/off que por medio de I2C tiene la capacidad de entregar los datos obtenidos al módulo maestro cuando éste los necesite para detener la ejecución de las instrucciones. Hay que recalcar que el sensor de contacto no está soldado en el circuito impreso debido a la futura implementación de otro sensor. En la Figura 34 se muestra la máquina de estados del módulo sensores. En el lugar “Inicialización” se programan los pines de entrada y de salida del microcontrolador, se habilitan los periféricos que se van a utilizar y la variable estado toma el valor de identificar para poder avanzar al lugar “Sensado”. En ese lugar, se espera hasta que la dirección enviada a través del bus I2C coincida con la dirección del módulo para enviar enviar a través del bus I2C el estado del sensor, y dependiendo de este valor, el módulo maestro decide si es necesario detener o seguir ejecutando la lista de instruciones ingresada por el usuario. Figura 34: Máquina de estados módulo sensores. 4.6.2 ESPECIFICACIONES CARACTERÍSITCA VALOR Fuente alimentación 5 V Tasa de transmisión con el módulo maestro 100 kbps Consumo de corriente 7 mA Memoria de programación usada 529 bytes Tabla 7: Especificaciones módulo sensores. 48 4.6.3 HARDWARE Se utilizó un microswitch como un sensor de contacto tipo on/off. Sin embargo el usuario tiene la capacidad de cambiar el sensor y utilizar otro que utilice niveles de voltaje CMOS. En la figura a continuación se muestra el esquemático del módulo sensores. Figura 35: Esquemático módulo sensores. 4.6.4 SOFTWARE Por medio de interrupciones de periférico MSSP el módulo sensor se comunica con el módulo maestro. Éste es el único módulo que durante la comunicación a través del bus I2C actua como un esclavo transmisor. 4.7 VARIABLES DE ENTRADA 4.7.1 DATOS A TRAVÉS DE RS-232 Cuando el usuario desea manejar el módulo en tiempo real, lo hará desde un computador a través de un programa que permita la transmisión de datos del puerto serial del computador a una velocidad de 9600 bits por segundo. Debido a que la finalidad del proyecto es la realización de un prototipo y no incluye el diseño de una aplicación con las características ya mencionadas, se U1 PIC18F2221 1 1 2 2 3 3 44 5 5 66 7 7 88 9 9 1010 11 11 1212 13 13 14 14 28 28 27 27 26 26 25 25 24 24 23 23 22 22 21 21 20 20 19 19 18 18 17 17 16 16 15 15 J1 sensor 1 2 3 comun VCC R1 10k R2 10k VCC 0 0 VCC comun SCL SDA 0 J2 I2C 1 2 3 4 SCL SDA VCC 0 49 utilizará Terminal para llevar a cabo esta tarea. Dependiendo de la información introducida desde el teclado, el módulo maestro se encarga de realizar las acciones pertinentes. 4.7.2 SENSOR DE CONTACTO El módulo de sensores es un sensor de contacto que indica si ha habido contacto o no con algún objeto. Si se está trabajando en tiempo real, el módulo maestro ignora esta señal y realiza las instrucciones que el usuario le esté enviando a través del computador. Sin embargo si el sistema está en modo ejecución, el módulo maestro va a revisar está variable y cuando ésta indique que ha habido contacto con algún objeto, el módulo maestro deja de ejecutar instrucciones y pasa inmediatamente a modo reposo. 4.7.3 BOTONES MÓDULO MAESTRO Estos botones están ubicados en el módulo maestro y están clasificados en dos grupos: Programación Rutinas preestablecidas En el grupo de rutinas preestablecidas hay botones en donde cada uno corresponde a una rutina para los motoresysólo se usan una vez el botón de programación ha sido pulsado.En el grupo de programación hay un botón para cada motor para indicarle al módulo maestro a cúal de estos se le va a crear una lista de instrucciones para ser ejecutada cuando el usuario lo determine.Hay que aclarar que estos son ignorados si el sistema está trabajando en modo tiempo real. 4.7.4 PROGRAMACIÓN PUENTE H A través de la señal Potencia [1:3] y de un‘jumper’ para cada motor el usuario tiene la capacidad de indicarle al módulo Maestro que se va a conectar un módulo Puente H para que este pueda manejar correctamente este módulo. 4.8 VARIABLES DE SALIDA 4.8.1 VISUALIZACIÓN GRÁFICA A través de un diplay LCD manejado por un microcontrolador, se le indicará a un usuario el modo de operación, o estado, en el cual está el sistema. Independientemente si se tiene conectado el display LCD, el módulo maestro tendrá 2 tipos deLED’s. El primer tipo consiste en 3 50 LED’srojos, uno para cada motor, que sirven como una advertencia para indicarle al usuarioque ha decidido conectar un módulo Puente H. El segundo tipo consiste en 2 LED’s que le indican al usuario el estado del sistema a través de un LED verde, que le indicaal usuario que sistema está operando en el modo Tiempo Real o si está ejecutando las instrucciones almacenadas por el usuario, y un LED amarillo,el cual es el encargado de avisarle al usuario que el prototipo está en modo programación. 4.8.2 SEÑALES PWM El módulo maestro tiene la capacidad manejar tres motores a partir de 3 PWMs que hacen parte de los periféricos internos del microcontrolador que controla este módulo. Cada una de éstas es una señal cuadrada que es sometida a cambios en el ciclo útil dependiendo de las instrucciones del usuario. Como se desea controlar tanto motores DC como servomotores, estas señales van a ir conectadas a una etapa de salida que le proporcione la corriente que requieran los motores de corriente continua. 4.8.3 SALIDA PUENTE H Y PUENTE H MICROCONTROLADO La salida del puente H y del puente H microcontroladoes una señal que le indica al motor la velocidad y la dirección a la cual debe girar, avance o retroceso. La diferencia entre estas dos señales es que el puente H está conectado directamente al módulo maestro mientras que el puente H microcontrolado se comunica con el módulo maestro a través del bus I2C. 4.8.4 ENTRADA ANÁLOGA EN EL PUENTE H MICRO Es una entrada análoga para la futura implementación de un control de posición o de velocidad. 5 PRUEBAS,RESULTADOS Y ANÁLISIS DE LOS MISMOS El proyecto se pensó para que la programación estuviera libre de interrupciones para no tener problema con las “zonas críticas” del programa y tener completo control sobre el flujo de programación, sin embargo, como los microcontroladores usados en el prototipo tienen incorporadola interfaz MSSP, Master Synchronous Serial Port, (la cual implementa todas las funciones del Maestro y del Esclavo en un bus I2C por hardware y permite detectar las condiciones y los estados de la comunicación a través de interrupciones o de registros 51 internos).Una vez lograda la configuración del módulo, se procedió a realizar una prueba de comunicación con un esclavo con dirección 0x02. Figura 36: Comunicación bajo el protocolo I2C entre 2 microcontroladores. LaFigura 36fue tomada del analizador de estados lógicos LA-5000 a una rata de muestreo de 500k por segundo, y en ésta se pueden ver los distintos estados de una comunicación de un byte bajo el protocolo I2C entre dos microcontroladores. 5.1 PRUEBA DE ALMACENAMIENTO Como el módulo maestro tiene la capacidad de almacenar 15 estructuras de instrucciones, en donde cada una de éstas está compuesta por un byte que representa la acción que debe realizar el motor y otro byte que representa la duración de la misma, es fundamental que el programa almacene los datos correctos. Para la verificación de esto, se utiliza el programador de Microchip en modo debugger para confirmar que éste esté almacenando los datos correctos. La prueba consistía en ir aumentado en 5 segundos hasta llegar a un minuto la duración de la instrucción que iba ir rotando a medida que iba aumentando el tiempo. Como se explicó en la sección Módulo Maestro, con 8 Mhz como frecuencia de oscilación interna, se genera una resolución de de 0,262 segundos por cada desbordamiento del timer0 aproximadamente. En la Tabla 8 se pueden observar el número de veces que el contador debe desbordarse para poder reproducir la instrucción durante el mismo transcurso de tiempo. 52 Segundos Valor decimal Valor hexadecimal 5 19.0729043 13 10 38.1458085 26 15 57.2187128 39 20 76.2916171 4C 25 95.3645213 5F 30 114.437426 72 35 133.51033 85 40 152.583234 98 45 171.656138 AB 50 190.729043 BE 55 209.801947 D1 60 228.874851 E4 Tabla 8: Valores de equivalencia del tiempo en valores numéricos La Tabla 9muestra a la izquierda las instrucciones ingresadas y su duración y a la derecha de la tabla se encuentran los valores que el microcontrolador almacenó. De las casillas del tiempo almacenado se puede observar que aquellas que contienen 0, es debido al rebote del teclado, por lo que se implemento un anti-rebotes por medio de software el cual consiste en realizar una un delay una vez se haya detectado que el usuario ha dejado de presionar el botón. El resto de las casillas confirman que el módulo maestro está almacenando correctamente la duración con un error de ± 0.262 segundos. De las acciones almacenadas se puede concluir que el microcontrolador está funcionando correctamente porque guarda el valor en hexadecimal de la acción ingresada por el usuario. Una vez se implemento el anti rebotes, el control del módulo maestro fue capaz de almacenar correctamente tanto las instrucciones como el tiempo de duración de éstas. 53 Instrucción Ingresada Almacenada Posición Tiempo Acción Tiempo Acción 0 5 0% 0 8 1 10 25% 13 8 2 15 50% 26 9 3 20 75% 3A A 4 25 100% 0 A 5 30 0% 4C B 6 35 25% 5F C 7 40 50% 73 8 8 45 75% 85 9 9 50 100% 98 A 10 55 0% 0 A 11 60 25% AC B 12 BE C 13 D1 8 14 0 8 Tabla 9: Resultado prueba almacenamiento. 5.2 PRUEBA PWM’S Se diseñó una serie de pruebascuyo fin consistía en la detección de alguna señal PWM con ciclo útil erróneo. La primera parte de la prueba consistía en la verificación de la configuración del módulo CCP del microcontrolador. Para obtener una señal de 20kHz con una frecuencia de oscilación interna de 8Mhz, se cargó el registro PR2 con 99 y que el valor del prescaler sea la unidad. Luego, con la ayuda de un osciloscopio se midieron los tiempos de duración de los distintos ciclos útiles para verificar la correcta configuración del módulo. La Tabla 10 muestra los resultados y confirma que el módulo CCP está bien configurado y listo para ser usado por los motores de corriente continua. 54 Velocidad CCPRxL % de PR2 Tiempo [s] Medido [µs] 1 0 0 0 0 2 40 0.4040404 2.0202E-05 20 3 45 0.45454545 2.2727E-05 22 4 52 0.52525253 2.6263E-05 26 5 60 0.60606061 3.0303E-05 30 6 68 0.68686869 3.4343E-05 34 7 75 0.75757576 3.7879E-05 37 8 83 0.83838384 4.1919E-05 41 9 91 0.91919192 4.596E-05 45 10 99 1 0.00005 Tabla 10: Resultado configuración CCP. Las siguiente parte constaba en la medición de los ciclos útiles de las señales PWM creadas a partir de las interrupciones de los periféricos del microcontrolador del módulo maestro. La prueba consistió en la medición de los ciclos útiles de las señales cuando éstas eran la menor, la intermedia y la de mayor duración. En la Tabla 11 se puede ver el valor de estas señales en cualquiera de los tres casos mencionados, el valor promedio de los tres casos y la diferencia entre el valor esperado y el valor medido con el analizador de estados lógicos. De esta tabla se puede concluir que los resultados obtenidos concuerdan con los esperados. Como ya se confirmó que tanto las señales pwm generadas por el CCP como las generadas a partir de interrupciones responden como debería, la última parte de la prueba trataba en probar las tres señales pwm generadas por el módulo maestro al tiempo con valores aleatorios. La Tabla 12 resume las cuatro pruebas que se realizaron 55 Prueba Acción # 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 PROMEDIO [us] DATO ESPERADO [us] DELTA [us] 0 372 372 370 2 1 574 572 573 570 3 2 772 774 772 772.667 770 2.667 3 972 974 972 972.667 970 2.667 4 1172 1176 1172 1173.333 1170 3.333 8 1374 1374 1372 1373.333 1370 3.333 9 1572 1576 1572 1573.333 1570 3.333 10 1774 1776 1772 1774 1770 4 11 1972 1976 1974 1970 4 12 2174 2174 2170 4 Tabla 11: Resultado prueba verificación ciclos útiles. Prueba 1 Motor DC de baja potencia Motor DC de baja potencia Motor
Compartir