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,resultados y 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 alternativa que
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
00
Q1
VCC
U1
Driver Mosf et
1 2Senal PWM
U2
Driver Mosf et
1 2Senal PWMQ2
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 costo y 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 2Q1
0
Q2
VCC
U1
Driv er Mosf et
1 2Senal PWM 1
M1
U3
Driver Mosf et
12 Senal PWM 4Q3
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ón hacia 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
0VCC
led_potencia3VCC
C1
100n
C2
100n
C3
100n
0
SERVO 2
HEADER 3
123
SERVO 1
SERVO 2
SERVO 3
HEADER 3
123
carro
0
MODULO COMUNICACIONES1HEADER 4
1234
SERVO 1
HEADER 3
123
MCLR
SERVO 3
0%
VCC
0BUS I2C1
HEADER 4
1234
25%50%75%
R21
10kVCC
R24
10k
100%
U2
PIC18F6410
RA024
RA123
RA222
RA321
RA428
RA527
RA640
RA739
RB048
RB147
RB246
RB345
RB444
RB543
RB6 PGC42
RB7 PGD37
RC
030
RC
1
CC
P229
RC
2
CC
P133
RC
3
SCL
34
RC
4
SDA
35
RC
536
RC
6
TX1
31
RC
7
RX1
32
RD
0
carro
58
RD
1
10%
55
RD
2
25%
54
RD
3
50%
53
RD
4
75%
52
RD
5
100%
51
RD
6
atra
s50
RD
7
play
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 RF216
RF3 15
RF4 14
RF5 13
RF612
RF7 11
CC
P3
RG
03
RG
14
RG
25
RG
36
RG
48
MC
LR
RG
57
VSS
9
VSS
25
VSS
41
VSS
56
AVSS
20
VD
D10
VD
D26
VD
D38
VD
D57
AVD
D19
R14
10k
R26
10k
R354.7k
R19
10k
R29
10k
R334.7k
VCC
atras
potencia1R15
10kpotencia2R16
10k
R18
10k
VCC
R28
10k
potencia3
0
R20
10k
0
R32
10k
VCC play
R34
10k
Q1
2N7000
0
SERVO 3R7
10k
R36
10k
D11N4004
SERVO 1
SERVO 3SERVO 2
R310k
R2
100
MOTOR 2
HEADER 4
1234
VCC
VCC
VCC
R6
10k
VCC
VCC
0
R4
1k
motor 1
C5
22p
VCC
C4
22p
00
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
1234VCC
0
play
VCC
VCC
J1
ICD2
123456
R5
1k
atras
0
J4
HEADER 20
123456789
1011121314151617181920
PGC
MOTOR 1
HEADER 4
1234 VCC
0
100%
PGD
75%
VCC
Q3
2N7000
D31N4004
R3110k
R30
100
0
C9
22p
C8
22p
VCC
SDA
led_potencia2
led_potencia1 R10
330R11
330
50%
Q2
2N7000
0
D21N4004
R2510k
R23
100
0
C7
22p
C6
22p
VCC
FUENTE1
HEADER 4
1234
25% led_amarillopotencia3
motor 1led_v erde
motor 3motor 2
potencia1potencia2
led_potencia10%
VCC
carro
CCP1
U1
LM317/SO
VIN1
ADJ4VOUT
2
VOUT 3
VOUT 6
VOUT 7
SERVO 1
CCP2
R8
10k
R221k
R9
10k
PGC
PWM2
J6
HEADER 10
123456789
10
SERVO 2
R271k
PGD
led_potencia3
PWM3
R12
330
FuenteR11k
PWM1
BUS I2C2
HEADER 4
1234
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 se pondrí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 que estaba 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
C110u
J1
HEADER 6
123456
MCLR
VCC 3V
R10
1kR11
1kPGDPGC
Rx
0 Tx
J2
db9
123456789
0
PIN 11 max
PIN 12 max
VCC 5V
0
Rx PC
Tx PC
Rx PCTx PC
C3
1u
1 20
C4
1u
12
C51u
1
2
C61u1
2
0
VCC 3V
J3
RJ11
1234
0
VCC 5V
TX
RX
VCC 5V
VCC 5V
U3
LM317/SO
VIN1
ADJ4VOUT 2
VOUT 3
VOUT 6
VOUT 7
VCC 5V
R8470
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
BO
OT
11
OU
T12
DIR
3
BR
AK
E4
PW
M5
VC
C6
GN
D7
CU
RR
EN
T8
TH
ER
MA
L9
OU
T210
BO
OT
211
J1
FUENTE
12
J2
MOTOR
12
VCC
0
OUT1
OUT2
C1
103
C2
103
PWM
R1
1k VCC
VCCVCC0 0 0
J3
conector
1234
VCC 5VPWM
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
OU
T21
VS
2
OU
T13
BO
OT
14
IN1
5
GN
D6
IN2
7
BO
OT
28
VR
EF
9
SEN
SE10
EN
ABL
E11
RD1
0C1
104
VCC 12V
C2
104
0C3104
0
J1
I2C
1234
SCL
SDAVCC 5V0
U3
PIC18F4221
11
22
33
44
55
66
77
88
99
1010
1111
1212
1313
1414
1515
1616
1717
1818
1919
2020
2121
2222
3333
3232
31 31
30 30
29 29
28 28
27 27
26 26
2525
2424
2323
4444
4343
4242
4141
4040
3939
3838
3737
3636
3535
3434
VCC 5V
0
0
VCC 5V
PGCPGD
MCLR
J2
ICD2
12345
MCLRVCC 5V
PGDPGC
0
P1B
P1A
P1A P1B
out2
out1
J3
I2C
1234
SDA
SCL
0VCC 5V
RD1
J4
Motor
12
J5
Fuente
12
VCC 12V
0
out1out2
J6Analoga
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.
U2PIC18F2221
11
22
33
44
55
66
77
88
99
1010
1111
1212
1313
1414
2828
2727
2626
2525
2424
2323
2222
2121
2020
1919
1818
1717
1616
1515
U1
LCD
11
22
33
44
55
66
77
88
99
1010
1111
1212
1313
1414
1515
1616
R410k 0 SCL
SDA0VCC
0
R21k
VCC
0
R1
330
VCC
R310k
VCC
VCC
J1
I2C
1234 SCL
SDAVCC
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
11
22
33
44
55
66
77
88
99
1010
1111
1212
1313
1414
2828
2727
2626
25 25
2424
23 23
2222
21 21
2020
19 19
1818
17 17
1616
1515
J1
sensor
123
comun
VCC
R1
10k
R2
10k
VCC
0
0
VCC
comun
SCL SDA
0
J2
I2C
1234 SCL
SDAVCC
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 usuario que
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 DC de baja potencia
Prueba 2
Motor DC de baja potencia
Motor DC de baja potencia
Servomotor
Prueba 3
Motor DC de baja potencia
Servomotor
Servomotor
Prueba 4
Servomotor
Servomotor
Servomotor Tabla 12: Conjunto de pruebas PWM.
La prueba 1 y 2 salieron exitosas sin problema alguno ya que las señales que manejan a los
motores respondieron como se había visto en las pruebas anteriores. En la prueba 3 se pudieron
detectar dos resultados en los cuales la señal que maneja al motor de baja potencia era la
esperada.Sin embargo, si se realiza una prueba en donde la señal de control de los dos
servomotores tiene distinto ciclo útil ambos responden correctamente. Sin embargo, si la prueba
consiste en que cada una de la señal de control de los dos servomotores tenga el mismo ciclo útil,
56
se va a presentar un desfase en donde un ciclo útil de las señales va a aumentar en 10
microsegundos.Estos retardos se deben a que el microcontrolador no carga de manera instantánea
el registrorespectivo debido a que debe realizar cálculos lógicos que debe realizar antes de
actualizar cada señal.
5.3 PRUEBA INTERCONEXIÓN
También se realizaron pruebas interconectando los módulos con el módulo maestro.Estas pruebas
consistían en probar el funcionamiento del módulo maestro con un módulo adicional. Una vez
que ya se había probado que todos los módulos funcionaban correctamente con el módulos
maestro, se procedió a ir conectando más de uno.
De las pruebas realizadas se pudo concluir que los módulos que se comunican a través del bus
I2C lograron comunicarse exitosamente cuando el módulo maestro deseaba iniciar con una
comunicación con ellos. La señal de control del módulo puente H tuvo la capacidad de manejar el
dispositivo electrónico seleccionado para que éste genere las señales para menajar el motor. El
módulo comunicación es detectado por el módulo maestro,y envía las señales a través de RS-232
para que el módulo maestro maneje los motores, sin embargo, si se llegan a conectar los
servomotores el microcontrolador se detiene por los picos de corriente de los servomotores.
6 CONCLUSIONES
Como el proyecto involucra varios módulos que se pueden adicionar o remover cuando se desee,
se logró que el módulo maestro tenga la capacidad de poder identificar que módulos están
conectados a él. Para lograr esto se aprovecha las ventajas del bus I2C y se les asigna una
dirección a cada uno de los módulos que van a estar conectados a este bus, y el módulo maestro
hace un barrido de estas direcciónes y si alguna de estas direcciones responde, quiere decir que el
módulo correspondiente a esa dirección está conectado, de lo contrario no.
La escalabilidad del proyecto se logra gracias a que la comunicación con los módulos fue
realizada a partir del protocolo de comunicación I2C ya que este protocolo permite que otros
módulos sean agregados o removidos del sistema sin afectar los demás circuitos en el bus.
57
Solamente es necesario que cada dispositivo conectado al bus tenga una dirección única con la
cual se identifique y logre comunicarse con el maestro.
Se diseñó un módulo capaz de manejar 3 motores que por medio de señales PWM creadas a
partir de dos contadores, uno encargado del periodo de la señal y el otro del ciclo útil de la
misma, de un microcontrolador ya que con una frecuencia de oscilación de 8 Mhz fue inviable
porque no es posible generar señales PWM con periodo de 20ms con ciclos útles entre 370 y
2270 µs. De ser necesario, más señales PWM pueden ser generadas a través de la misma manera
teniendo en cuenta que si se desea crear más de una señal con el mismo ciclo útil se va a
presentar un aumento de 10 µs por cada señal debido a que el microcontrolador tiene que hacer
operaciones lógicas antes de actualizar cada señal.
Dado que los módulo realizados en el software del módulo maestro fueron ejecutados de manera
modular, en donde la comunicación entre ellos se logra por medio de banderas es posible la
reutilización del código en otros proyectos y de esta forma es posible la reducción del tiempo de
desarrollo de los mismos. Gracias a este tipo de programación también resultó más fácil los
diagnósticos de errores ya que cada uno de estos es idependientey por lo tanto se pueden realizar
pruebas aisladas del resto del código. Gracias a este tipo de programación también se lograron
hacer pruebas independientes a cada módulo antes de interconectarlo con el módulo maestro con
otro prototipo cuyo funcionamiento ya estaba verificado.
La realización de dos prototipo permitió que el desarrollador puediera realizar pruebas con ambos
prototipos y tener una referencia con la que se podía comparar el otro conjunto de circuitos y
escoger el mejor diseño.
Tanto el analizador de estados como un programador utilizado como debugger, fueron
herramientas fundamentales para el desarrollo del diseño. A través del analizador de estados era
posible ver los mensajes que se estaban transmitiendo entre microcontroladores y verificar si
estos estaban correctos. El debugger permitió verificar que la programación fue acorde a los
diagramas de flujo, creados en una etapa anterior a la de programación, y ver los datos que los
microcontroladores almacenaban durante la ejecución del programa.
58
En el módulo sensores, se dejó un conector de tres pines (entrada al microcontrolador, tierra y
fuente) con el fin de poder intercambiar el sensor de acuerdo a las necesidades del usuario.
Solamente es necesario que la señal de salida del sensor esté entre 0 y 5V y utilice los niveles de
voltaje CMOS.
Las pruebas confirmaron la necesidad de un antirebotes,que fue implementado en software, para
que el módulo maestro almacenara las instrucciones ingresadas por el usuario de manera correcta;
de lo contrario se almacenarían instrucciones de duración de 0. Almacenar una lista de
instrucciones en una estructura y usar apuntadores a estas estructuras fue una ventaja porque
solamente con un parámetro se pueden modificar varias variables y se disminuye el tiempo y
memoria utilizada en el stack cuando se está guardando el contexto del programa a la hora de
realizar una función.
Como se pudo observar en la Prueba interconexión, es indispensable aislar las tierras y colocar
condensadores de desacople en cada uno de los módulos por los picos de corriente que tanto los
motores como los servomotores exigen para iniciar a rotar. Una evidencia de esto es la
disminución de la intensidad de iluminación que se presenta en la visualización gráfica del
módulo maestro que ocurre cada vez que los servomotores cambian de posición.Es por esto que
de ser posible, sería optimo utilizar 2 fuentes independientes, una para alimentar a los distintos
módulos y otra para alimentar a los motores. Esto se pudo verificar con un prototipo realizado
condos fuentes independientes y funcionó correctamente y el consumo de corriente no afectó al
sistema.
59
7 COSTOS Y FUENTES DE FINANCIACIÓN RECURSOS HUMANOS HORAS HOMBRE CANTIDAD VALOR UNITARIO TOTAL
Desarrolladores 650 1 $ 35,000 $22,750,000
Director 160 1 $ 50,000 $8,000,000
TOTAL RECURSOS HUMANOS $30,750,000
EQUIPOS FTE. FINANCIACIÓN CANTIDAD VALOR UNITARIO TOTAL
Computadores Propia 1 $ 1,650,000 $1,650,000
Conector DB-9 Propia 1 $ 6,000 $6,000
Impresos Propia 6 $ 50,000 $300,000
LED’s Propia 3 $ 500 $1,500
Micro switch Propia 1 $ 1000 $1,000
Elementos discretos Propia - - $ 10,000
Display LCD Propia 1 $ 20,000 $20,000
Max 232 Propia 1 $ 2,500 $ 2,500
Puente H Propia 2 $ 30,000 $60,000
Procesadores Propia 5 $ 5,000 - 9,000 $ 30,000
Programador Arrendamiento 1 $ 400,000 $400,000
Equipos de medición Arrendamiento 4 $ 200,000 $800,000
TOTAL EQUIPOS $ 3,281,000
TOTAL $34,031,000 Tabla 13: Costos y fuentes de financiación del proyecto.
60
8 BIBLIOGRAFÍA Y FUENTES DE INFORMACIÓN
[1] Jingke Yu; Rong Liu; Houxiang Zhang; Jianwei Zhang; , "Design and development of an assisting robotic arm in minimally invasive breast surgery," Robotics and Biomimetics, 2007. ROBIO 2007. IEEE International Conference on , vol., no., pp.349-354, 15-18 Dec. 2007.
[2] E. Ruiz-Velasco Sánchez, Educatrónica: Innovación en el aprendizaje de las Ciencias y la tecnología, Ediciones Díaz de Santos, 2007.
[3] O. Miglino, H. Hautop, M. Cardaci, “La robótica como herramienta para la educación”.ftp://ftp.daimi.au.dk/Staff/hhl/EduRobSp.pdf
[4] F. Eady, Networking and Internetworking with Microcontrollers, Newnes , 2004.
[5] Philips Semiconductors, “The I2C-bus specification,” Jan. 2000. [6] Microchip Technology Inc., “PICmicro® DC Motor Control Tips ‘n Tricks” 2004.
[7] E. Palacios, F. Remiro, and L. Lucas Jose, Microcontrolador PIC16F84 Desarrollo de proyectos, Mexico: Alfaomega Grupo Editar, 2004.
[8] M. Ruff, “AN2396 Servo Motor Control Application on a Local Interconnect Network (LIN) ,” Dec. 2005.
[9] Microchip Technology Inc., “PICmicro® CCP and ECCP Tips ‘n Tricks” 2003. [10] Microchip Technology Inc., “PICmicro™ Mid-Range MCU Family Reference Manual”
1997.
[11] Microchip Technology Inc., “AN736 An I2CTM Network Protocol for Environmental Monitoring” 2000.
[12] Microchip Technology Inc., “PIC18F46J11 Family Data Sheet” 2009. [13] Microchip Technology Inc., “PIC18F4321 Family Data Sheet” 2007.
[14] Microchip Technology Inc., “PIC18F6310/6410/8310/8410 Data Sheet” 2007. [15] Texas Instruments Incorporated, “MAX232, MAX232I Dual EIA-232 Drivers/Receivers”,
March 2004. [16] SGS-THOMSON Microelectronics, “L6201- L6202- L6203 DMOS Full Bridge Driver”,
July 1997. [17] National Semiconductor, “LMD18200 3A, 55V H-Bridge”, April 2005.
[18] Fairchild Semiconductor Corporation, “2N7000 / 2N7002 / NDS7002A N-Channel Enhancement Mode Field Effect Transistor”, November 1995.
Top Related