View
1
Download
0
Category
Preview:
Citation preview
DISEÑO, CONSTRUCION Y PRUEBA DE UNA PLATAFORMA DE PROTOTIPAJE RÁPIDO Y DE BAJO COSTO PARA LA ENSEÑANZA
EXPERIMENTAL DEL CONTROL AUTOMATICO
TRABAJO DE INVESTIGACION QUE PRESENTA: JOSE DE JESUS MEZA SERRANO
PARA LA OBTENER EL
TITULO PROFESIONAL DE:
INGENIERO EN COMUNICACIONES Y ELECTRONICA
ASESORES: DR. ALBERTO SORIA LOPEZ DR. FLORIBERTO ORTIZ RODRIGUEZ M. EN C. ERASMO VALVERDE TRUJILLO
I
AGRADECIMIENTOS
A mi madre Brígida Serrano Romero por su amor infinito.
A mi padre Enrique Meza García† por sus enseñanzas.
A mi esposa Ma. Ricarda Cano Hernández por la gran dedicación a la educación y
cuidado de nuestras hijas.
A mis hijas María Elena y Karla Itzel, lo que más quiero en la vida.
A la pequeña Emma Sofía.
A mi hermano Daniel Javier Meza Serrano por su apoyo en los momentos difíciles.
A toda mi familia.
A los Drs. Rubén Alejandro Garrido Moctezuma y Alberto Soria López por su
apoyo y asesorías.
Al pueblo de México que pagó mi formación académica en una institución como el
Instituto Politécnico Nacional.
Al pueblo de México que ha permitido la creación de instituciones académicas de
alto nivel como el Centro de Investigación y Estudios Avanzados, donde trabajo.
A todos los compañeros que luchan, sin descanso y a fondo, por un futuro mejor.
II
INDICE
AGRADECIMIENTOS: …………………………………………………………………..I INDICE: ……………………………………………………………………………………II CAPITULO I: OBJETIVOS, INTRODUCCION DE TERMINOS, ANTECEDENTES, JUSTIFICACION Y MARCO REFERENCIAL …………………..…………….….......1
I.1.- Objetivos …….……………………………………………………………....1 I.2.- Introducción de términos …………………………………………………..3 I.3.- Antecedentes ……...………………………………………………………..4 I.4.- Justificación …………...………………………………………………….....8 I.5,- Marco referencial …………………………………………………………..11 I.6.- Organización del reporte ………………………………………………….18
CAPITULO II: ELEMENTOS DE LA PLATAFORMA ……………………………….20
II.1.- El puerto paralelo en modo EPP ………………………………………..20 II.2.- El puerto serie RS232C …………………………………………………..25 II.3.- El DSC dsPIC30F4012 …………………………………………………...28 II.4.- Plataforma de programación para control en tiempo real Matlab-Simulink-Ardence RTX-Wincon ……………………………....30 II.5.- Funciones “S” en Simulink …………………………………………….....32 II.6.- El MPLAB IDE y el compilador C30 ……………………………………..32
CAPITULO III: DESARROLLO DE LA PLATAFORMA ……………………………..35 III.1.- Circuitería ………………………………………………………………….35 III.1.1.- Servomotor ……………………………………………………...35
III.1.2.- Electrónica de potencia ………………………………………..36 III.1.3.- Fuentes de alimentación ……………………………………....37 III.1.4.- Trasladador de niveles ………………………………………...38 III.1.5.- Tarjeta principal con el dsPIC30F4012 ……………………...40 III.2.- Programación en código y configuración ……………………………...42 III.2.1.- Programación del dsPIC ………………………………………43
III.2.1.1.- Configuración general ……………………………....45 III.2.1.2.- Comunicación serie ………………………………....46 III.2.1.3.- Generación de la señal de control por modulación en ancho de pulso ……………………….49 III.2.1.4.- Medición de la posición angular …………………...51 III.2.1.5.- Medición de la corriente en el servomotor …….....54 III.2.1.6.- Rutinas de atención a interrupciones ……………...57
III.2.2.- Programación de la función “S” para Simulink …………......58 III.2.3.- Apertura del puerto serie en Windows XP …………………..60
III
CAPITULO IV: MODELADO Y SIMULACION DEL MOTOR DE C.D. …………...62
IV.1.- Generalidades de los motores de corriente directa ………………....62 IV.2.- Modelo matemático de un motor de corriente directa controlado por armadura …………………………………………………………..............64 IV.2.1.- Identificación de los parámetros del motor y del modelo ..............73 IV.2.2.- Modelado en lazo cerrado, con un controlador PID ……………...74 IV.2.3.- Estabilidad del sistema de tercer orden en lazo cerrado ..............76 IV.3.- Simulación ……………………………………………………………….77
CAPITULO V: CONTROL EN TIEMPO REAL ……………………………………..79
V.1.- Control de velocidad en tiempo real del servomecanismo …………79 V.2.- Control de posición en tiempo real del servomecanismo …………..81 V.3.- Control de posición en tiempo real de un brazo robótico …………...84 V.4.- Seguimiento de una trayectoria senoidal ……………………………..86 V.5.- Conclusiones …………………………………………………………….87 V.6.- Trabajo futuro …………………………………………………………....88
BIBLIOGRAFIA Y PAGINAS WEB: ……………………...…………………………..89 ANEXOS: ……………………………………………………………………………….90
a) Diagrama electrónico de la fuente de alimentación …………………….90 b) Diagrama electrónico de la tarjeta principal con el dsPIC30f4012 ……91 c) Circuito impreso de la tarjeta electrónica principal ……………………...92 d) Costos del Software de la plataforma …………………………………….92 e) Características del microcontrolador dsPIC30F4012 …………………..93
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
1
CAPITULO I.- OBJETIVOS, INTRODUCCION DE TERMINOS,
ANTECEDENTES, JUSTIFICACION Y MARCO REFERENCIAL
En este capítulo hablaremos de los objetivos, antecedentes, motivaciones y
justificaciones del trabajo realizado. También definiremos algunas palabras clave
que se usarán en este reporte, lo anterior para su mejor entendimiento. así mismo,
mencionaremos el estado del arte de este tipo de plataformas, y de algunas
parecidas; cuyo conocimiento es necesario para visualizar las tendencias en este
tipo de tecnologías, para poder valorar de manera más objetiva el trabajo que aquí
se presenta.
Para finalizar este capítulo se explica la idea que definió la organización y la
secuencia de todos los capítulos de este manuscrito.
I.3.- Objetivos:
El presente trabajo de tesis tiene como objetivo general contribuir a la solución
de dos problemas fundamentales en la enseñanza del control automático. El
primero se refiere al enfoque puramente abstracto que se le da a dicha enseñanza
en la mayoría de las escuelas de nivel licenciatura y centros de investigación,
donde se estudia el control automático y sus áreas de aplicación. El segundo
problema tiene que ver con la falta de recursos económicos para la instalación de
laboratorios que permitan proporcionar soporte experimental y concreción práctica
a los conceptos teóricos.
Para tal efecto, se pretende diseñar, integrar, construir y probar el equipo que
se reporta en el presente trabajo, este dispositivo ha sido denominado; plataforma
de prototipaje rápido y de bajo costo para la enseñanza experimental del control
automático.
Entenderemos como parte de nuestra plataforma a toda la circuitería y la
programación que nos permita realizar el control en tiempo real de un
servomecanismo de C.D.
En este contexto, el trabajo tiene varios objetivos específicos que se fueron
desarrollando en el orden requerido para cumplir con el objetivo general de este
trabajo.
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
2
1.- Definir los alcances y características que debería tener la plataforma: Para
esto se decidió que sería suficiente, por el momento, con poder cerrar un lazo de
control principal, y poder cerrar un lazo interno de control en corriente para tener la
opción de trabajar el servomecanismo en modo par. También se decidió que la
comunicación entre la tarjeta principal y la computadora personal sería por el
puerto serie. Con estas definiciones se pasó a seleccionar el dsPIC adecuado.
2.- Seleccionar el motor adecuado, en concordancia con las características del
amplificador de potencia: Con estos dos aspectos definidos y con el dsPIC
seleccionado, se procedió a hacer el diseño de circuito electrónico completo de la
tarjeta principal, así como del circuito impreso correspondiente. También se
decidió el montaje mecánico del motor, y que tipo de codificador de posición óptico
sería usado, considerando que este debería ser acoplado a la flecha del motor.
3.- Armar varias tarjetas impresas.
4.- Diseñar y construir las fuentes de alimentación y los trasladadores de nivel
para la comunicación por el puerto serie. Hasta aquí podemos decir que se
cumplió con la etapa de contar con el hardware necesario.
5.- Programar el dsPIC: Esta parte se decidió hacerla en lenguaje “C” y
utilizando las librerías disponibles para cubrir nuestros requerimientos. Esto
implicó la instalación del compilador C30, así como el conocimiento exhaustivo de
los módulos del dsPIC a ser programados, el manejo de interrupciones, y la
depuración de los programas incluidos en el proyecto.
6.- Programar y probar la función “S” o driver para la comunicación entre
Simulink y el dsPIC: Para esto fue necesario conocer que es una función “S” y
manejar a nivel de registros la forma de configurar el puerto serie de la
computadora personal. Además se requirió de abrir el puerto en Windows XP
mediante la aplicación Ardence-RTX.
7.- Programar el modelo del controlador en Simulink y depurarlo.
8.- Integrar todos los elementos de la plataforma y probarlos.
9.- Observar el desempeño de la plataforma controlando diferentes variables y
con distintas leyes de control, para obtener y analizar los resultados y deducir
conclusiones.
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
3
I.1.- Introducción de términos:
En el presente documento expondremos los antecedentes, el diseño,
construcción y prueba del prototipo, al cual hemos denominado, plataforma de
prototipaje rápido y de bajo costo, para la enseñanza experimental del control
automático. Para tal efecto, se hace necesario introducir algunos términos que
consideramos importantes y que podrían no quedar muy claros a lo largo de este
documento.
Adquisición de datos: nos referiremos a esta área, cuando hablamos del
proceso de acondicionamiento, muestreo y conversión de señales analógicas a
digitales, digitales a analógicas, para que puedan ser manipuladas en una
computadora personal, en un procesador de señales o en cualquier
microcontrolador. En este sentido una tarjeta de adquisición de datos es una
interfaz, entre el mundo real y algún tipo de procesador, que sea capaz de llevar a
cabo las funciones indicadas.
Tiempo real en control: en nuestro concepto es el tiempo mínimo requerido
para el muestreo de una señal, la reconstrucción y su procesamiento (control),
según el teorema de muestreo de Nyquist-Shannon.
En el ámbito del Control Automático, hablamos de tiempo real cuando
hacemos alguna simulación en computadora, o cuando controlamos físicamente
algún proceso. En el primer caso, cada uno de los pasos de una simulación se
ejecuta en el momento en que el sistema operativo de la computadora lo permite,
es decir el tiempo de muestreo es el de la computadora y puede ser variable. En el
segundo caso, en el que estemos controlando alguna planta o proceso real, el
muestreo de las señales debe realizarse con un paso fijo, externo al sistema
operativo de la computadora, que reúna los requisitos mencionados para ser
considerado como control en tiempo real.
Servomotor: un motor al cual se le coloca algún dispositivo para conocer y
tener la posibilidad de realimentar su o sus principales variables de salida, es decir
su posición o velocidad angular, es un servomotor.
Sistema embebido: cuando contemos con un equipo, con un procesador digital
de señales o un microcontrolador, el cual tenga programadas una serie de
actividades, las que juntas constituyan un sistema completo; como el muestreo de
señales, el procesamiento de las mismas, la comunicación, el control y la
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
4
generación de señales actuantes, nos estaremos refiriendo a él, como un sistema
embebido.
Prototipo: es una versión previa o preliminar de algún producto. Nosotros nos
referimos a la plataforma desarrollada y reportada en el presente trabajo, como; de
prototipaje rápido, porque consideramos que aún es un prototipo y que en poco
tiempo y con facilidad se puede contar con un sistema servomecánico o
mecatrónico, que le permita al interesado, contar con un kit de prueba, portátil y de
bajo costo, como herramienta didáctica, auxiliar, en la enseñanza del control
automático.
Target (nucleo) de tiempo real: Es un programa de aplicación que nos permite
correr un código en pseudotiempo real en el sistema operativo de la computadora
personal con la que estémos trabajando. En nuestro caso se corre un código de
control respetando el periodo de muestreo que se requiere. Estas aplicaciones son
también llamadas, en programación, kernel, las que actúan como un cliente de
otra aplicación llamada servidor.
I.2.- Antecedentes:
Desde la creación de la Sección de Control Automático del Departamento de
Ingeniería Eléctrica del Centro de Investigación y de Estudios Avanzados del
Instituto Politécnico Nacional (CINVESTAV), hace ya más de 30 años, ésta se
acompañó de un Laboratorio donde se pudieran probar algunas de las diferentes
leyes y estrategias de control que se venían investigando. Para tal efecto fue
indispensable contar con diferentes equipos, tarjetas de adquisición de datos,
plataformas de programación, sensores, etc. para realizar el control en tiempo real
de dichos equipos.
Con el paso del tiempo la Sección de Control Automático se convirtió en
Departamento y su Laboratorio en el Centro de Servicios Experimentales. Con
esta nueva estructura organizativa, se tuvo la acertada idea de contar con un
Laboratorio de Enseñanza, donde los estudiantes de postgrado pudieran recibir la
parte práctica que se requiere como complemento a una necesaria formación
teórica.
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
5
Como resultado de esta iniciativa, desarrollamos una primera versión de la
plataforma servomecánica para la enseñanza del control automático. Nuestro
Laboratorio de Enseñanza cuenta con cuatro plataformas, las que se vienen
utilizando hasta la fecha, con pequeñas modificaciones, para dar atención
simultánea a ocho estudiantes de postgrado en algunos de los cursos de maestría,
y en otros introductorios, así como en diferentes trabajos de tesis de maestría y
doctorado.
A continuación presentamos las generalidades de la primera versión de la
plataforma de enseñanza que se construyó en el CINVESTAV.
En la siguiente figura 1 se muestran esquemáticamente las componentes de la
plataforma original.
Figura 1.- Esquema de la Plataforma de Enseñanza Original.
En la figura 1, el controlador se encuentra dentro del bloque denominado PC
Server (Servidor). De tal manera que definimos que las partes de: generación de
la señal de referencia (consigna o set point), el punto de resta para la obtención de
la señal de error (sumador o restador) y la ley de control, se encuentran dentro de
éste.
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
6
El bloque PC Client (Cliente) es otra computadora que ejecuta un núcleo o
kernel en tiempo real. El programa de usuario que se carga en el Kernel permite la
interacción con el hardware externo a través de una tarjeta de adquisición de
datos para realizar las siguientes funciones; el muestreo periódico de la señal o
señales de salida de la planta, y el envío de la señal de control.
La planta es un motor de corriente directa con escobillas, controlado por
armadura y está representada por el bloque circular. También se consideran como
parte de la planta el bloque ISO124, que es un aislamiento galvánico capacitivo
para señales analógicas, y el bloque CSE, que es un servoamplificador de
potencia con realimentación en corriente y con salida modulada en ancho del
pulso (PWM).
La parte del sensado de las señales de salida en posición y/o en velocidad
angulares, la lleva a cabo el bloque codificador de posición óptico incremental y el
bloque ETACH2 (convertidor de frecuencia a voltaje). El primero mide en pulsos la
posición angular y el segundo nos entrega un voltaje analógico proporcional a la
velocidad del servomecanismo. Como se observa en la figura 1, estas señales son
realimentadas para cerrar el lazo de control.
En cuanto al software para el control en tiempo real, éste se realiza utilizando
la plataforma Matlab-Simulink-Wincon-RTX en el servidor, mientras que el cliente
solo cuenta con el Wincon. Ambas computadoras se comunican por TCP/IP.
La programación de las leyes de control, a ser probadas, se desarrolla en el
servidor, mediante los bloques de Simulink, ahí también se realiza el despliegue y
la visualización de las variables de control, a través de sus interfaces gráficas de
usuario.
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
7
Figura 2.- Imágenes reales de la plataforma de enseñanza original.
Funcionalmente este tipo de plataformas de enseñanza han sido eficientes;
nos han permitido impartir, durante varios años, un curso experimental
cuatrimestral a nivel de maestría, y nos han permitido realizar una gran cantidad
de experimentos necesarios para sustentar varios artículos de investigación. Sin
embargo existen algunos problemas de operación que se presentan con el tiempo
y para algunas aplicaciones. De entre ellos podemos mencionar que las tarjetas
de adquisición de datos, llamadas Servotogo II, además de ser importadas, están
diseñadas para bus ISA, el cual ya no se incluye en la mayoría de las
computadoras personales desde hace varios años.
La solución que se encontró a este problema fue utilizar tarjetas de adquisición
de datos más recientes, para bus PCI, optándose por algunas de los modelos
multiq y Q8 hardware in the loop (H.I.L.) board de Quanser Consulting. Sin
embargo está última tarjeta tiene un costo aproximado de sesenta mil pesos, lo
que ha limitado su compara debido a las restricciones presupuestales que se
tienen hoy en día, ya que solamente esta tarjeta, es más cara que toda la
plataforma de enseñanza original.
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
8
Existen en el mercado otras tarjetas de adquisición de datos. Por ejemplo de
National instruments, pero son caras y la mayoría de ellas no leen codificadores
de posición ópticos en cuadratura, por lo que no son muy adecuadas para hacer
control en posición de servomecanismos.
Estos fueron los problemas principales y los antecedentes que dieron origen a
la plataforma de enseñanza que presentamos en el presente trabajo. Dicha
plataforma tiene una filosofía totalmente diferente en el hardware. Esencialmente
es de bajo costo, ya que prescinde de la tarjeta de adquisición de datos, además
de ser mucho más compacta y portátil.
I.2.- Justificación:
Dado que una de los objetivos del presente trabajo es la reducción del costo
de la plataforma de enseñanza original que se describió en el apartado de
antecedentes, en la siguiente tabla 1 mostramos los costos estimado de las
componentes de la plataforma original mencionada.
No. CANTIDAD DESCRIPCION COSTO
1 1 Tarjeta de adquisición de datos
Servotogo II
15,000.00
2 1 Aislamiento analógico galvánico 2,000.00
3 1 Servo amplificador de potencia
PWM Copley Controls
10,000.00
4 1 Motor de C.D. 2,000.00
5 1 Sensor de posición óptico
incremental
4,000.00
6 1 Convertidor de frecuencia a voltaje 3,500.00
7 2 Computadoras personales 24,000.00
COSTO TOTAL: 60,500.00
Tabla 1.- Costo de las componentes de la Plataforma de Enseñanza Original
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
9
No obstante que la cotización anterior no incluye los costos de desarrollo de la
plataforma, y los componentes indicados ya son de económicos, el costo total de
ésta no es accesible para la mayoría de las escuelas de educación superior
pública ni para los centros de investigación, sobre todo si se considera que en un
laboratorio de enseñanza o experimentación debe contarse con varias plataformas
de este tipo.
Por otra parte, nuestra plataforma de enseñanza está basada en una tarjeta
de circuito impreso que tiene como elemento central al microcontrolador de
señales digitales (DSC) dsPIC30F4012 30I/SP, el cual hace las veces de tarjeta
de adquisición de datos, y actúa como acondicionador de señales e interface de
comunicación entre el controlador y la planta.
Fig. 3.- Plataforma de enseñanza de bajo costo.
La plataforma de enseñanza es completada solamente por una computadora
personal (PC) que actúa como servidor y cliente, y un servomotor pequeño que se
encuentra fijado a un ángulo metálico junto con la tarjeta principal.
El control en tiempo real también se realiza en la PC desde Matlab-Simulink-
Wincon-RTX, al igual que en la plataforma original.
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
10
La planta es un motor de corriente directa con escobillas al que se le ha
acoplado, mecánicamente, en la flecha un codificador de posición óptico
incremental, para habilitarlo como servomotor.
El dsPIC y la computadora personal se transfieren de manera bidireccional las
señales requeridas para cerrar el lazo de control, dicha comunicación se puede
llevar a cabo indistintamente a través del puerto paralelo o del serie; por lo que la
comunicación de datos es alámbrica y digital en forma de bytes.
La salida en posición angular del servomotor es sensada mediante el
codificador de posición óptico incremental y llevada al dsPIC, donde es
decodificada para ser transmitida al controlador; esta señal es realimentada para
cerrar el lazo de control en la PC. Después de ser manipulada por el controlador,
se obtiene la señal de control (u(t)), la cual se envía de regreso al dsPIC en la
tarjeta, para ser convertida a señales eléctrica del tipo PWM, las que excitan al
servomotor, logrando controlar la posición o velocidad según se desee.
La señales de control en forma PWM son optoaisladas y amplificadas en la
misma tarjeta impresa, esto mediante dos circuitos integrados y un amplificador
tipo puente H, antes de ser aplicada al servomotor.
La corriente en el servomotor también es sensada, y puede ser realimentada
para trabajarlo en modo corriente (par) o simplemente para limitarla y proteger al
amplificador.
El costo del hardware de la Plataforma de Enseñanza que hemos descrito y
que fue desarrollada en el presente trabajo, es el siguiente:
No. CANTIDAD DESCRIPCION COSTO
1 1 Motor de CD Dynetic Systems 360.00
2 1 Sensor de posición óptico 720.00
3 1 DsPIC30F4012 50.00
4 1 Amplificador tipo puente H
LMD18200
100.00
5 1 Circuitería electrónica y PCB 400.00
6 1 Computador personal 12,000.00
7 1 Transceptor MAX232 100.00
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
11
COSTO TOTAL: 13,730.00
Tabla 2.- Costo de las componentes de nuestra plataforma de enseñanza de
bajo costo.
Si comparamos funcionalmente nuestra plataforma con la plataforma de
enseñanza original, que se describió en el apartado anterior, podremos notar lo
siguiente: en el caso de la plataforma original, la tarjeta de adquisición de datos
nos proporciona mayor capacidad de manejo de señales analógicas y digitales,
pudiendo controlar sistemas más complejos, con varias entradas y salidas, es
decir; nos permite controlar varios servomecanismos. Por lo que respecta a
nuestra plataforma, ésta, se encuentra limitada al control en lazo cerrado de un
servomotor, pudiendo modificarse únicamente para controlar dos servomotores.
De tal manera que, en este aspecto, la plataforma original es más poderosa.
Donde se nota claramente la diferencia, es en el precio; en este aspecto
observamos una relación casi de 5:1, siendo más cara la plataforma original con
respecto a nuestra Plataforma.
También nuestra plataforma es mucho más compacta y portable,
permitiéndonos el aprendizaje y desarrollo de las diferentes ingenierías
relacionadas, por ser un sistema abierto.
Lo antes expuesto deja claramente manifiestas la motivación y al interés de
desarrollar una plataforma para la enseñanza de bajo costo, y justifica
plenamente el presente trabajo.
El desarrollo del prototipo también se justifica por que ha permitido el trabajo
especializado e interdisciplinario de las ingenierías; electrónica, mecánica, de
control y de programación; contribuyendo por este solo hecho al desarrollo de las
mismas especialidades.
I.2.- Marco referencial:
Actualmente existe una gran tendencia a diseñar tarjetas de desarrollo
basadas en microcontroladores. La mayoría de estas plataformas están ligadas a
algún software en particular, y se usan como plataformas para enseñanza; aunque
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
12
también se pueden usar como kits de desarrollo de sistemas mecatrónicos y como
plataformas de desarrollo de sistemas embebidos. Dado que estos sistemas son
parecidos al que se presenta en esta tesis, consideramos importante describirlos
y analizarlos, con el propósito de contextualizar el preste trabajo y evaluar su
importancia y originalidad.
A continuación presentamos y analizamos, brevemente, algunas de las
plataformas de desarrollo que conocemos.
a ) QET DC Motor Control Trainer ( Quansar Consulting ):
Es un entrenador independiente que está compuesto por dos tarjetas impresas,
así como por el software correspondiente. Sirve para demostrar fundamentos de
control de motores, usando un amplio rango de algoritmos de control, así como
para la sintonización de estos.
También se puede desarrollar modelado, controles de velocidad y posición.
Además es posible experimentar con técnicas de control analógico, digital o
embebido.
Está diseñado para simplificar el desarrollo de controladores embebidos, por lo
que cuenta con comunicación RS-232 ó USB 1.1. Este producto está basado en
el microcontrolador PIC 16F877, el cual se encuentra en la tarjeta principal.
El PIC en el que se basa este equipo es viejo y no especializado para control
de servomotores, es decir, no tiene módulos especializados para lectura de
codificadores de posición ópticos, ni para generar señales PWM; no obstante es
una buena herramienta didáctica orientada a ejemplificar la enseñanza del control
automático.
b ) Microchip Mechatronics Kit:
Es un Kit de demostración que tiene un enfoque práctico para aprender
mecatrónica. Está basado en el microcontrolador PIC16F917 MCU corriendo a 8
Mhz., cuenta con display LCD, puede sensar corriente, temperatura, luz y
velocidad, cuenta con la interface RS-232; entre sus características principales
están, el control de velocidad de motores a pasos y de CD con escobillas.
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
13
El microcontrolador puede ser conectado a varios componentes en la tarjeta,
como son sensores; LEDs, señales del cuerpo humano y drivers para motor. La
tarjeta viene con nueve ejemplos prácticos, y con el firmware correspondiente.
Como se puede concluir de los datos anteriores, el kit es antiguo y limitado.
El microcontrolador en el que está basado no cuenta con características
especiales para control de motores (MC) como son los módulos QEI y PWM,
además es lento y no cuenta con el poder de cálculo de un Controlador de
Señales Digitales (DSC); si algo se pudiera rescatar del kit es la idea de un
producto didáctico con prácticas bien elaboradas.
c) NI EL VIS ( National Instruments ):
La NI EL VIS es una plataforma educativa, y para hacer diseño de prototipos,
está soportado por un conjunto de instrumentos virtuales y un laboratorio basado
en LabVIEW, cuenta entre sus características con un total de 12 instrumentos, con
un factor de forma compacto y es apropiado para el aprendizaje independiente.
Los educadores pueden usarlo para enseñar conceptos de diseño de circuitos,
instrumentación, control, telecomunicaciones y teoría de sistemas embebidos en
MCU, en un salón de clases o en un laboratorio.
Puede utilizarse como una plataforma de aprendizaje a distancia, los temas de
la currícula son libres, los conceptos de diseño del control se implementan
conectándose externamente con los prototipos de Quanser y los de sistemas
embebidos con microcontroladores de la marca freescale.
Esta plataforma permite la experimentación en diversas áreas de la ingeniería
electrónica y mecánica, pero no cuenta con un prototipo propio. Por ejemplo, para
la enseñanza del control, por otra parte está ligada a LabVIEW y a la idea de los
instrumentos virtuales, y es un poco cara.
d ) Mechatronic Control Kit de Mechatronic Systems Inc.:
Hace algunos años, también se utilizó esta plataforma para experimentos de
investigación. Consta de dos tarjetas; la principal provista con el DSP
TMS320C6711 de Texas Instruments corriendo a 150 Mhz., y una segunda tarjeta
pequeña, llamada hija, de adquisición de datos.
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
14
La tarjeta principal está provista de un puerto paralelo para comunicarse con
una computadora personal, aunque también se puede usar de modo
independiente. Se ha probado con varias plantas o experimentos de control; como
simples motores de DC, el péndulo inercial con volante o el Pendubot. Algunos
resultados se reporta en el artículo de investigación13.
La desventaja de esta plataforma es que requiere de una segunda tarjeta hija
de adquisición de datos, la que en nuestro caso queremos evitar por su alto costo.
En cuanto al procesador hay que considerar que es un DSP corriendo a 150 Mhz.,
por lo que es más poderoso pero un poco caro. En nuestro caso, actualmente, el
dsPIC que usamos corre casi a 120Mhz. y es muy barato.
e ) Quick Start board i.MX53 de Freescale:
Existen otro tipo de tarjetas más poderosas, como ésta; es muy práctica y
relativamente barata, maneja VGA, Ethernet, dos puertos USB, puerto serial,
entrada para tarjetas SD y micro SD, SATA, DDR3 SDRAM, cuenta con un
procesador, no microprocesador, corriendo a 1.2Ghz., al cual se le carga el
sistema operativo Linux Ubuntu.
Como se pudo notar, este producto es prácticamente una tarjeta madre de PC;
se utiliza para aplicaciones diversas como el control de brazos robóticos. Cuenta
con la posibilidad y el ambiente de programación, de alto nivel, necesario para
reprogramarla y dejarle código embebido, para diferentes aplicaciones, de manera
muy sencilla.
f ) Hilink Real-time Hardware-in-the-loop Control Platform for Matlab/Simulink
de Zeltom:
La plataforma HILINK es una interfaz entre plantas a controlar y la plataforma
de control de Matlab/Simulink muy interesante, también para la implementación de
control de sistemas en tiempo real mediante hardware-in-the-loop. Está totalmente
integrada a Matlab/Simulink y tiene un amplio rango de entradas y salidas. Permite
pruebas rápidas y conmutación de estrategias de control en tiempo real, con una
planta real en el lazo. La plataforma es un paquete de desarrollo de sistemas de
control en tiempo real, de bajo costo, para aplicaciones industriales y educativas.
La plataforma HILINK consiste de la tarjeta de control en tiempo real
(hardware) y la interfaz asociada de Matlab (software). El hardware de la
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
15
plataforma HILINK tiene 8 entradas analógicas de 12 bits, 2 entradas de módulos
de captura de 16 bits, 2 entradas de encoder de 16 bits, un puerto de entradas
digitales de 8 bits, 2 salidas analógicas de 12 bits, 2 salidas de frecuencia de 16
bits, 2 salidas de pulsos de 16 bits y un puerto de salidas digitales de 8 bits. La
tarjeta además contiene 2 puentes H de 5 amp. de capacidad a 12v. para manejar
cargas externas pesadas. Algunas entradas y salidas están multiplexadas para
simplificar el hardware. La tarjeta se conecta con la computadora anfitrión que
corre Matlab a través de un puerto serie RS232. El software de la plataforma está
totalmente integrado a Matlab/Simulink/Real-Time Windows Target y viene con
bibliotecas de Simulink asociadas con cada hardware de entrada y salida de la
tarjeta; Bloques de Entrada Analógica, Bloques de Entrada de Captura, Bloques
de Entrada de Encoder, Bloques de Entrada Digital, Bloques de Salida Analógica,
Bloques de Salida de Frecuencia, Bloques de Salida Digital y Bloques de Salida
de Pulsos. La plataforma ejecuta operaciones de tiempo real con periodos de
muestreo de hasta 3.8 Khz.
Esta plataforma ha sido desarrollada como una extensión de Matlab/Simulink y
de Real-Time Windows Target para optimizar la operación de entradas y salidas
serie, y para lograr la operación, en tiempo real, en Matlab/Simulink bajo Windows.
No obstante que en el papel esta plataforma parece ser muy buena, completa,
compacta, barata y muy parecida a la nuestra, en la realidad presenta algunos
problemas de funcionamiento, como pérdida de pulsos al leer los encoder, un
ancho de banda muy reducido en sus salidas analógicas y algunos errores en su
documentación, además de que tiene como base al dsPIC30F2012, que no cuenta
con módulos especializados para control de motores.
g ) Arduino MEGA 2560:
El Arduino Mega es una tarjeta basada en el microcontrolador ATmega 2560
de ATMEL AVR. Tiene 54 pines digitales de I/O (14 de los cuales pueden ser
usados como salidas PWM), 16 entradas analógicas, 4 UARTs (puertos serie en
hardware), un cristal oscilador a 16MHz, conexión USB, jack para conexión a la
electricidad, un header ICSP y un botón de reset. Cuenta con todo lo necesario
para dar soporte a este microcontrolador; simplemente se conecta a una
computadora mediante un cable USB, un adaptador AC/DC o una batería y
estará listo para funcionar.
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
16
En cuanto a software es una plataforma de cómputo libre (open-source),
basada en una tarjeta I/O (entradas y salidas), programable en un ambiente con
un lenguaje similar a “C” llamado Processing/Wiring. Arduino puede ser utilizado
para desarrollar prototipos autónomos e interactivos, capaz de comunicarse con
software instalado en una computadora como Flash, Processing, MaxMSP, etc.
Dada su rápida curva de aprendizaje y su bajo precio constituye una herramienta
interesante para estudiantes, maestros, diseñadores y cualquier interesado en
electrónica y robótica. El software para su programación es gratuito y puede ser
descargado para Mac OS X, Windows y Linux.
Adicionalmente a todas las características de la versión previa (Mega) la Uno
Mega 2560 ahora emplea un ATmega8U2 en lugar de un chip FTDI. Esto permite
tasas de transferencia mayores, elimina la necesidad de instalar drivers para Linux
o Mac (un archivo .inf es necesario en Windows) y brinda la capacidad de mostrar
a Uno como un teclado, mouse, joystick, etc., al conectarlo a una computadora.
Aunque el procesador es de 8 bits, la velocidad del reloj es de 16 Mhz., y no
cuenta con módulos especializados para leer codificadores de posición, las
ventajas de esta tarjeta son: el software de desarrollo con que cuenta; el cual es
muy práctico y libre, y la conexión USB.
h ) Tarjetas de Rabbit de rabbit semiconductor Company:
Esta compañía produce varios microprocesadores de 8 bits de alto
desempeño, así como herramientas de desarrollo.
Sus tarjetas de desarrollo proporcionan soluciones embebidas de bajo costo,
con diversos microprocesadores capaces de resolver problemas en la pila TCP/IP,
gracias a las bibliotecas incluidas en su software. Dynamic “C” es la plataforma de
programación que utiliza para resolver proyectos que requieren operación en
tiempo real, Dynamic “C” también permite depurar los programas en tiempo real.
Estas 3 soluciones; software, microcontrolador y depurador facilitan el desarrollo
rápido de dichos proyectos.
Cuentan con varias tarjetas que dan la posibilidad de trabajar de manera
inalámbrica. Por ejemplo, a través de los protocolos Wi-Fi o ZigBee.
Por otra parte permiten la implementación de un servidor HTTP para
monitorear y controlar procesos mediante una página Web.
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
17
i ) Proyecto de adquisición y procesamiento de datos con Matlab mediante usb
2.0 del CYCY Yucatán:
Finalmente hablaremos un poco de este proyecto, el cual solamente se
concentra en la adquisición de datos y su despliegue en ventanas de Matlab o de
algún otro lenguaje de programación visual. No se concibió como una plataforma
de hardware y software para control, ni mucho menos para hacer un producto.
Está basada en los microcontroladores PIC de la serie 18FXX5X, por lo que,
cuando mas, maneja el puerto USB en modo full speed a 12Mhz.; lo cual, en caso
de tratar de hacer control, limitaría la velocidad del periodo de muestreo.
También como desventaja, en este caso no se contaría con módulos
especializados para lectura de codificadores de posición ópticos.
Sin embargo nos parece que la idea de manejar el puerto USB para
plataformas de control, podría tener mucho futuro, sobre todo ahora que se ha
liberado el super speed USB3.0, el cual, teóricamente, maneja velocidades de
transferencias de datos de 5 Gbits/s.
Por otra parte se encuentran algunos robots demostrativos desarrollados con
PICs como sistemas embebidos. Se encuentran también algunos otros robots
móviles ya más formales para investigación, como el Kepera o el Koala, este
último solamente en su tarjeta controladora de cuatro servo motores; para su
sistema de visión estéreo (pan and tilt en cada una de sus cámaras), tiene
embarcados cinco PICs, cuatro para cerrar igual número de lazos de control en
posición y uno dedicado a las comunicaciones con el exterior y con la PC Central.
En el contexto que se ha presentado, y del cual se tiene conocimiento, es
posible intentar ubicar a la plataforma de enseñanza de bajo costo que se
desarrolló en el presente trabajo. Aunque es un prototipo y no un producto
comercial como la mayoría de los que hemos descrito en este apartado; tiene
algunas ventajas significativas sobre las que existen en el mercado y que son más
o menos de su tipo, entre ellas mencionamos por ejemplo, que no se requiere de
otra tarjeta de adquisición de datos para hacer control, la velocidad y capacidad de
cálculo del DSC (dsPIC30F4012) es muy buena, sobre todo si se considera su
precio bajo, es muy eficiente para el control de motores ya que cuenta con
módulos especializados, como el de decodificación de sensor de posición, y varios
módulos de salida PWM.
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
18
Por lo tanto consideramos que hemos desarrollado un prototipo útil y
competitivo, en lo referente a las plataformas de control, de enseñanza del control,
y de investigación, que se conocen. Lo antes expuesto se podrá verificar en los
capítulos finales de este trabajo.
I.3.- Organización del reporte:
El presente trabajo se ha reportado en una secuencia lógica, en lo que se
refiere a sus motivaciones, partes, ideas y conceptos, así como en su fundamento
teórico, y en sus conclusiones. De tal manera que el reporte sea entendible en sus
partes y en su generalidad, quedando organizado de la siguiente manera:
En el presente Capítulo I se presentan aspectos introductorios, motivacionales,
generales, y de contexto del presente trabajo, así como un estudio comparativo de
las plataformas similares, a la que aquí presentamos, que existen en el mercado y
en la bibliografía.
En el Capítulo II nos referimos a los elementos más importantes que componen
la plataforma; los abordamos de manera independiente con el propósito de que se
conozcan a fondo y se tenga una idea de los diferentes aspectos que se deben
manejar para hacer un trabajo de este tipo, y en general para desarrollar cualquier
trabajo de cierta relevancia.
En el Capítulo III presentamos el diseño de la plataforma en cada una de sus
partes, pero ya como parte de un todo. Agrupando dichas partes en circuitería y
programación, en el apartado de programación se incluyen las dos
programaciones; la que se encuentra dentro del dsPIC como firmware y la que se
encuentra en la PC en Matlab-Simulink-Wincon-RTX, como controlador.
En el Capítulo IV exponemos las bases teóricas del control de servo motores
de corriente directa; desde su modelado matemático, las diferentes formas de
conexión, algunos criterios importantes de control, como la estabilidad en lazo
cerrado, la identificación de parámetros, hasta la simulación del controlador con el
servomotor.
Finalmente en el Capítulo V presentamos los resultados experimentales más
importantes que se han obtenido con la plataforma diseñada; realizando el control
Capítulo I: Introducción, Antecedentes, Objetivos, Justificación y Marco referencial
19
en posición y en velocidad del servomotor modelado. También se presentan las
conclusiones y algunas perspectivas de trabajo futuro.
Capítulo II: Elementos de la plataforma
20
CAPÍTULO II.- ELEMENTOS DE LA PLATAFORMA
En el presente capítulo II explicaremos de manera detallada los elementos de
hardware y software, más importantes, que componen la plataforma; los
abordamos de manera independiente y en apartados, con el propósito de que se
conozcan a fondo y queden claros los diferentes aspectos que se debieron
conocer para poder realizar el diseño de la plataforma.
Dichos elementos se abordan de manera aislada en este capítulo II, solo hasta
el siguiente se retoman en forma integral, como componentes interactuantes de un
todo. Que es el prototipo final que presentamos en el presente trabajo.
II.1.- El puerto paralelo en el modo EPP:
El puerto paralelo en el modo mejorado o Enhanced Parallel Port ( EPP ) fue
desarrollado originalmente, de manera conjunta por intel, Xircom y Zenith Data
Sistems, como una manera de obtener un puerto paralelo de alto desempeño; con
un protocolo más sencillo y confiable realizado por hardware. Dicho puerto tendría
que ser totalmente compatible con el puerto paralelo estándar (SPP). El EPP tiene
dos normas, la 1.7 y la 1.9. Existen algunas pequeñas diferencias entre ellas,
coincidiendo la segunda con la norma IEEE1248. Su velocidad de transferencia de
datos se encuentra entre 500 KB/s. y 2 MB/s, es decir, es muy cercana al tiempo
de acceso a una tarjeta colocada directamente en la tarjeta madre de una PC
mediante el bus ISA.
Figura 4.- Conector DB-25 del puerto paralelo
El puerto paralelo en modo EPP es también comúnmente configurado como
modo ECP-EPP, a diferencia del modo ECP solo, con el cual no coincide.
Capítulo II: Elementos de la plataforma
21
Cuando usamos el modo EPP, a diferencias del SPP original, se asigna una
colección de diferentes funciones y direcciones a cada una de las líneas
disponibles del conector estándar DB25, las que se muestran en la siguiente tabla.
LINEA SEÑAL EPP ENTRADA/SALIDA FUNCIÓN
1 Read/Write Salida Un estado bajo en esta línea indica una escritura, un alto una lectura
2-9 Datos 0-7 Ent./Sal. Bus de datos bidireccional
10 Interrupt Entrada Línea de interrupción, ocurre en el flanco positivo (subida)
11 Wait Entrada Usada para protocolo. Un ciclo EPP puede ser iniciado cuando está en bajo, y terminado cuando está en alto
12 Spare In No usada en el modo EPP
13 Spare in No usada en el modo EPP
14 Data Strobe Salida Cuando está en bajo indica transferencia de datos
15 Spare In No usada en el modo EPP
16 Reset Out Activa en bajo
17 Address Strobe
Salida Cuando está en bajo indica transferencia de direcciones
18-25 Ground GND Tierra
Tabla 3.- Asignación de terminales para el conector EPP
Para generar un intercambio de datos válido en el puerto EPP, se debe
seguir el protocolo correctamente. Para iniciar este ciclo el programa en la PC
solamente debe realizar una operación de lectura o escritura al registro adecuado,
de acuerdo con alguno de siguientes cuatro casos. Como se detalla a
continuación15:
Figura 5.- Ciclo de escritura de datos en el EPP
Capítulo II: Elementos de la plataforma
22
1o El programa en la PC ejecuta una escritura al registro de datos del EPP
(dirección base + 4).
2o La línea Read/Write (Write) es bajada indicando una operación de
escritura.
3o Los datos son colocados en las líneas de datos 0-7.
40 Se coloca en nivel bajo la línea Data Strobe, solo si la línea Wait ha sido
colocada en bajo por el periférico (listo para iniciar el ciclo).
5o El anfitrión (PC) espera hasta reconocer que la línea Wait sea
colocada en alto para finalizar el ciclo, esto indica que el periférico ha tomado el
dato.
6o La línea Data Strobe se desactiva.
7o El ciclo EPP de escritura de datos finaliza.
8o La línea Wait debe ser colocada en bajo nuevamente, por el
periférico, para permitir que el próximo ciclo pueda comenzar.
Figura 6.- Ciclo de escritura de direcciones en el EPP
1o El programa en la PC ejecuta una escritura al registro de direcciones
del EPP (dirección base + 3).
2o La línea Read/Write (Write) es bajada indicando una operación de
escritura.
3o Los datos son colocados en las líneas de datos 0-7.
40 Se coloca en nivel bajo la línea Address Strobe, solo si la línea Wait ha
sido colocada en bajo por el periférico (listo para iniciar el ciclo).
Capítulo II: Elementos de la plataforma
23
5o El anfitrión (PC) espera hasta reconocer que la línea Wait sea
colocada en alto para finalizar el ciclo, esto indica que el periférico ha tomado el
dato.
6o La línea Address Strobe se desactiva.
7o El ciclo EPP de escritura de direcciones finaliza.
8o La línea Wait debe ser colocada en bajo nuevamente, por el
periférico, para permitir que el próximo ciclo pueda comenzar.
Figura 7.- Ciclo de lectura de datos en el EPP
1o El programa en la PC debe ejecuta una lectura al registro de datos
del EPP (dirección base + 4).
20 Se coloca en bajo la línea Data Strobe, solo si la línea Wait ha sido
colocada en bajo por el periférico (listo para iniciar el ciclo).
3o El anfitrión (PC) espera hasta reconocer que la línea Wait sea
colocada en alto.
4o El dato es leído automáticamente desde las terminales del puerto
paralelo
5o La línea Data Strobe se desactiva.
6o El ciclo EPP de lectura de datos finaliza.
7o La línea Wait debe ser colocada en bajo nuevamente, por el periférico
para permitir que el próximo ciclo pueda comenzar.
Capítulo II: Elementos de la plataforma
24
Figura 8.- Ciclo de lectura de direcciones en el EPP
1o El programa en la PC debe ejecuta una lectura al registro de
direcciones del EPP (dirección base + 3).
20 Se coloca en bajo la línea Address Strobe, solo si la línea Wait ha sido
colocada en bajo por el periférico (listo para iniciar el ciclo).
3o El anfitrión (PC) espera hasta reconocer que la línea Wait sea
colocada en alto.
4o El dato es leído automáticamente desde las terminales del puerto
paralelo
5o La línea Address Strobe se desactiva.
6o El ciclo EPP de lectura de direcciones finaliza.
7o La línea Wait debe ser colocada en bajo nuevamente, por el periférico
para permitir que el próximo ciclo pueda comenzar.
Si se tiene implementado el protocolo EPP 1.7 en la PC se pueden poner
activas las líneas Data Strobe o Address Strobe sin importar el estado de la línea
wait del periférico, no así en el caso del protocolo EPP 1.9.
La dirección base para acceder al puerto paralelo en la PC es generalmente
y por defecto la 378h, aunque se cuenta con un total de cinco direcciones
consecutivas o registros para su programación; tres de ellas asociadas con el
antiguo SPP. Todas ellas se describen en la siguiente tabla.
Capítulo II: Elementos de la plataforma
25
DIRECCIÓN NOMBRE DEL PUERTO LECTURA / ESCRITURA
Base + 0 Puerto de Dados (SPP) Escritura
Base + 1 Puerto de Estados (SPP) Lectura
Base + 2 Puerto de Control (SPP. EPP)
Escritura
Base + 3 Puerto de Direcciones (EPP)
Lectura / Escritura
Base + 4 Puerto de Datos (EPP) Lectura / Escritura
Tabla 4.- Direcciones del puerto paralelo en modo EPP
II.2.- El puerto serie RS232C:
La comunicación serie comenzó en las computadoras personales con el UART
8250 en la IBM XT. El 16550A apareció poco tiempo después y fue el primer
UART que era capaz de utilizar sus búferes FIFO, esto hizo posible aumentar la
velocidad máxima de una comunicación confiable a 115,200 bauds. El 16550A
es el UART más común en este momento.
El 16550 integra en un solo chip un UART (Universal Asynchronous
Receiver/Transmitter ) y un BRG (Baud Rate Generator); soporta velocidades de
hasta 625,000 baudios, si se usan relojes de 10 MHz. El BRG incorporado divide
la frecuencia base para conseguir las velocidades estándar de la norma RS-232-
C. El UART 16550X es el encargado de la comunicación serie en la mayoría de
las computadoras personales.
La línea que transmite los datos en serie (Tx) está inicialmente en estado alto.
Al comenzar la transferencia, se envía el bit de inicio 0, tras él, irán los 8 bits de
datos a transmitir (en ocasiones son 7, 6 ó 5); estos bits duran un intervalo
temporal fijo y preciso, ligado a la velocidad de transmisión que se esté
empleando. Tras ellos podría venir, o no, un bit de paridad generado
automáticamente por la UART. Al final, aparecerá un bit (a veces un bit y medio
ó dos bits) en 1, que son los bits de paro o bits de stop.
En la siguiente tabla 5 se muestra la función de las terminales del conector
DB9 de una computadora personal.
Capítulo II: Elementos de la plataforma
26
Tabla 5.- Terminales del conector DB9 en la PC.
El conector que se encuentra disponible en las computadoras personales
es el tipo macho DB9.
Figura 9. Conectores DB9.
En comunicaciones se utiliza el término baud o baudrate para hacer
referencia a la velocidad de comunicación de los datos, un baud equivale a un
bit/seg. La presencia de bits de inicio y parada permite sincronizar la estación
emisora con la receptora, haciendo que los relojes de ambas vayan a la par; de tal
manera que la transmisión de los 8 bits de un dato, de un byte, realmente es
síncrona, pero las comunicaciones en serie de este tipo, siempre han sido
consideradas como asíncronas, dado que no se cuenta con una línea de reloj.
Para una transmisión básica en serie bastan tres hilos; Transmisión (Tx),
Recepción (Rx) y Tierra (Gnd). Sin embargo, el software que controla el puerto
serie a través de la interfaz RS-232-C podría requerir, en algunos casos, más
señales de control para establecer la comunicación.
NO.DE TERM. SEÑAL DESCRIPCIÓN
1 DCD (Data Carrier detect)
*2 RX Recepción
*3 TX Transmisión
4 DTR(Data Terminal Ready)
*5 GND Tierra
6 DSR (Data Sheet Ready)
7 RTS (Request to send)
8 CTS (Clear to send)
9 RI (Ring Indicator)
Capítulo II: Elementos de la plataforma
27
Cada UART utiliza un oscilador de 1.8432MHz, esta frecuencia es dividida
entre 16 para generar lo que es la base de tiempo para la comunicación. Por lo
tanto, la velocidad máxima permitida es de 115,200 bps. Los UARTs modernos
como el 16550 son capaces de manejar mayores frecuencias de entrada de hasta
24 MHz, que permitan comunicarse a una velocidad máxima de 1,5 Mbps.
frecuencias en el oscilador más altas que 1.8432MHz son raramente vistas
porque serían incompatibles con la configuración original XT.
La velocidad de comunicación de 115,200 bps no siempre es útil para todas
las aplicaciones. Para obtener un cambio en la velocidad de comunicación, la
frecuencia debe ser decrementada dividiéndola por un valor programable. Para
velocidades muy bajas, este valor puede ser de hasta 255. El mencionado divisor
es guardado en dos bytes por separado, estos registros divisores del Latch se
llaman DLL y DLH, los cuales contienen el byte menos significativo y el byte más
significativo respectivamente16.
Para una comunicación libre de error es necesario que ambos transmisor y
receptor utilicen la misma base de tiempo. La tabla siguiente muestra los valores
más comúnmente usados para ajustar los bytes del divisor del Latch. Hay que
tener en cuenta que estos valores sólo son para un PC compatible con un sistema
en el que la frecuencia de reloj que se utiliza es de 1,8432 MHz.
DLL y DLM: Registros Divisor de Latch.
Velocidad (bps) Divisor DLL DLM
50 2,304 0x00 0x09
300 384 0x80 0x01
1,200 96 0x60 0x00
2,400 48 0x30 0x00
4,800 24 0x18 0x00
9,600 12 0x0C 0x00
19,200 6 0x06 0x00
38,400 3 0x03 0x00
57,600 2 0x02 0x00
Capítulo II: Elementos de la plataforma
28
115,200 1 0x01 0x00
Tabla 6.- Divisor de Latch para el Baude Rate.
La computadora personal utiliza la norma EIA-232, por lo que los niveles de
las señales de transmisión y recepción son de +12 y -12v; por lo tanto es
necesario un circuito que adapte los niveles lógicos de estas señales en el dsPIC.
Esto lo logramos utilizando una etapa de adaptación de niveles, como se
representa en el siguiente esquema.
Figura 10.- Diagrama a bloques del adaptador de nivel para la conexión serie PC-
Microcontrolador.
La dirección base, por defecto, del puerto serie 1 (COM1) en una
computadora personal es la 0x3F8, aunque se utilizan las siguientes direcciones
para configuración, hasta la 0x3FF.
II.3.- El DSC dsPIC30F4012:
Se puede definir un procesador digital de señales (DSP) como un circuito
integrado diseñado para ejecutar un conjunto de operaciones matemáticas para el
análisis, procesamiento y tratamiento, en tiempo real, de una o varias señales
continuas o analógica expresadas digitalmente. El procesador de señales se ha
convertido en una de las herramientas tecnológicas más poderosas en las que se
sustenta la ciencia y la ingeniería del presente siglo[11].
Capítulo II: Elementos de la plataforma
29
Los DSP se asemejan a los clásicos microcontroladores, pero incorporan
arquitecturas y recursos especiales para poder ejecutar en forma óptima los
algoritmos manejados en el procesamiento digital de señales. Algunos de los
recursos especiales que se pueden destacar son:
a) Los procesadores son generalmente de tecnología RISC y sus
instrucciones se ejecutan generalmente en un solo ciclo de máquina.
b) Utilizan la arquitectura Harvard y disponen de dos memorias
independientes, una para datos y otra para instrucciones, haciendo posible el
acceso simultaneo a ambas informaciones.
c) Cuentan con recursos físicos complejos para soportar las operaciones
específicas de los algoritmos DSP, multiplicar, multiplicar y acumular, etc.,
ejecutadas en un solo ciclo de máquina.
d) Los modos de direccionamiento son muy sofisticados, ya que localizan
los datos y almacenan los resultados de forma óptima para ser usados
posteriormente por los algoritmos empleados.
e) Disponen de un conjunto de interrupciones, de hardware y software, muy
amplio y veloz, con niveles de prioridad.
f) En el DSP se integran numerosos recursos y periféricos que minimizan el
tamaño y simplifican el diseño del sistema.
g) Poseen módulos para el control y optimización del consumo de energía.
A principio de la década de los ochentas del siglo pasado ya se
comercializaban varios modelos de DSP, siendo pioneros los fabricantes Texas
Instruments, NEC e Intel. Así comenzó una nueva etapa en el mundo del
procesamiento digital de señales.
Los dispositivos modernos mezclan las funciones típicas del MCU con las
del DSP. Ésta situación impulsó a Microchip a fabricar un circuito híbrido
MCU/DSP, cuyo manejo es similar al de los microcontroladores, pero que incluye
las principales prestaciones de los DSP. Así nació el Controlador Digital de
Señales (DSC), que reúne las características del un microcontrolador PIC de 16
bits y las de un DSP de gama baja, la primera generación de DSC de Microchip,
se denominó dsPIC30F. La intención de estos DSC era facilitar a los usuarios la
transición de los MCU a los DSP.
La segunda generación de DSC fue llamada dsPIC33F, la cual mejoró las
capacidades de memoria, número de periféricos y rendimiento en general.
Capítulo II: Elementos de la plataforma
30
Para la realización del presente trabajo utilizamos el dsPIC30F4012, cuyos
parámetros y características se muestran en el Anexo e), por ahora solo
mencionaremos algunos de los más importantes.
Admite un voltaje de alimentación entre 2.5 y 5.5 v.c.d., la velocidad de
operación es de 30 MIPS cuando el voltaje de alimentación está entre 4.5 y 5.5
v.c.d., dispone de un bus de datos de 16 líneas y otro de instrucciones de 24,
existe un motor DSP que contiene un multiplicador por hardware de 17x17bits, dos
acumuladores de 40 bits, cada localidad de memoria de datos se divide en dos
espacios que pueden ser accesados simultáneamente.
Las secciones MCU y DSP cooperan en el funcionamiento general y
comparten el flujo de instrucciones del DSC, admite 45 fuentes distintas de
petición de interrupción con 8 niveles de prioridad, de las cuales 5 son externas.
En cuanto a los periféricos el dsPIC30F4012, cuenta, entre otros, con un
UART, un canal SPI, uno I2C, un CAN, un puerto paralelo GPIO, seis entradas
A/D, seis salidas PWM para control de motores y una entrada para codificador de
posición en cuadratura QEI. Esta última característica se ajusta al requerimiento
del proyecto de sensar y cerrar un lazo de control en posición.
II.4.- Plataforma de programación para control en tiempo real con Matlab-
Simulink-Ardence RTX-Wincon:
La plataforma de programación para realizar el control en tiempo real del
servomecanismo, está basada en una computadora personal corriendo bajo
Windows XP con Matlab (R2007ª), incluyendo la tollbox de Simulink Control
Design 2.1, además del núcleo o kernel de tiempo real de Ardence RTX 7.0, con
Wincon 5.2.
Con esta plataforma de desarrollo, la programación del controlador del
prototipo ya no se realiza en modo texto, sino de manera gráfica con los bloques
de Simulink.
Ardence RTX y Wincon son en conjunto una aplicación para realizar control
en tiempo real bajo el sistema operativo Windows XP. Nos permiten correr, en
tiempo real y en la misma computadora, o de manera separada, en una
computadora local (servidor) y en una remota (cliente), el código generado por un
diagrama de Simulink. De tal manera que el software Wincon consiste de dos
Capítulo II: Elementos de la plataforma
31
partes, Wincon Servidor y Wincon Cliente, las cuales se comunican mediante el
protocolo TCP/IP.
Wincon Cliente corre la parte del programa que interactúa directamente con
el hardware. Es decir, realiza el sensado y envío de la señal de control, cada
periodo de muestreo. Wincon Servidor es quien enlaza el programa de Simulink
con el software de tiempo real, también le permite al usuario realizar la ejecución y
paro del programa, así como la visualización, en gráficas o en displays digitales,
de las variables de interés.
Al utilizar Simulink en tiempo real podemos seleccionar algunos parámetros
como el periodo de muestreo. Lo anterior tomando en cuenta las limitaciones de la
computadora, de la velocidad de comunicación, así como de la cantidad de datos
transferidos entre la computadora personal y el dsPIC. También tenemos la opción
de elegir entre diferentes métodos de integración en nuestro modelo de control.
II.5.- Funciones “S” en Simulink:
Tomando en cuenta que no estamos realizando simulaciones sino control
en tiempo real de un servomotor a través de un microcontrolador, es necesario
contar con un modo de comunicación entre el programa de Simulink en la PC y el
microcontrolador dsPIC. En el presente trabajo utilizamos para este efecto el
puerto serie RS232C. Es importante mencionar que anteriormente se había venido
trabajando en el CINVESTAV con el puerto paralelo en modo EPP.
No obstante que en las bibliotecas estándar de Simulink no existe un
bloque que nos permita manejar este puerto de comunicaciones, se pueden
realizar nuevos bloques mediante funciones definida por el usuario, las que se
llaman funciones de sistema ó “S” functions.
Una función “S” es la descripción de un bloque de Simulink en un lenguaje
de programación. Las funciones “S” pueden escribirse en diferentes lenguajes,
como Matlab, Ada, Fortran, etc., en nuestro caso la escribimos en lenguaje C.
Las funciones “S” utilizan una sintaxis especial de llamado que nos permite
interactuar a través de ellas con el modelo de Simulink.
Matemáticamente todo bloque de Simulink se conceptualiza como una caja
negra que tiene entadas, estados y salidas, donde las salidas están en función del
periodo de muestreo, de las entradas y de los estados del bloque.
Capítulo II: Elementos de la plataforma
32
Figura 11.- Concepto de Bloque de simulink.
Las siguientes ecuaciones expresan la relación entre las entradas, las
salidas y los estados.
(salidas)
(inicio)
(actualización)
Donde;
Para la realización de las funciones “S” existen varios archivos o plantillas
que nos proporcionan el esqueleto o estructura que deben tener estos programas,
en nuestro caso utilizamos la plantilla para elaborarla en lenguaje C.
Nuestra función “S” contiene las características generales del bloque, así
como la programación para configurar y manejar el protocolo de comunicación a
nivel de hardware; así como las instrucciones para la transferencia de datos sobre
el canal de comunicación seleccionado, es decir el puerto serie RS232C.
Una vez creada la función “S” debe ser compilada como un archivo mex,
para tenerla lista y ser utilizada como un nuevo bloque de Simulink en nuestro
modelo de control. Como sucede con otros archivos mex, estos son encadenadas
y ligadas para la ejecución del modelo.
II.6.- El MPLAB IDE y el compilador C30:
El Ambiente de Desarrollo Integrado (IDE) MPLAB está compuesto de una
serie de herramientas de software para el desarrollo de aplicaciones embebidas,
empleando los microcontroladores de Microchip PIC y dsPIC. El MPLAB IDE
corre como una aplicación de 32 bits sobre Windows MS, es fácil de usar e incluye
una barra de componentes de software libre, para desarrollo rápido de
aplicaciones y depuración súpercargada; además sirve como una sencilla y
Capítulo II: Elementos de la plataforma
33
unificada interface gráfica del usuario para herramientas de desarrollo de
hardware y software de Microchip, y externas. El movimiento entre herramientas
del IDE es seguro. Y la actualización desde el software de simulación, hasta el
hardware de depuración y las herramientas de programación es rápida; porque el
MPLAB IDE tiene la misma interface de usuario para todas las herramientas.
Figura 12.- Pantalla del MPLAB-IDE de Microchip.
Es sencillo crear una aplicación. Esto puede hacerse escribiéndola en
código ensamblador, posteriormente ensamblando el proyecto, probando el código
con el simulador y depurador internos, y cuando esté lista la aplicación se
selecciona un programador/depurador; ya sea el del fabricante u otro, para
programarle el código al microcontrolador.
Para analizar el comportamiento de la aplicación, se puede realizar la
depuración con el programa corriendo en el microcontrolador, esto a través de un
programa gestor que se carga en el PIC al seleccionar la opción de depuración.
De esta manera se trabaja hasta lograr que el proyecto funcione como se desea.
Capítulo II: Elementos de la plataforma
34
También es posible escribir el código en lenguaje “C”, en este caso hay
que bajar un compilador adecuado para el PIC con el que se esté trabajando, ya
sea del fabricante o de algún otro.
Es importante mencionar la conveniencia de programar en “C” y usar todas
las bibliotecas que sean posibles, ahorra mucho tiempo y nos permite una
programación más compacta y estructurada, aunque habría que mencionar, como
desventaja, que en esta forma de programación el código no necesariamente será
optimizado en tamaño.
En nuestro caso el dsPIC30F40127 se programó y depuró con el compilador
C30 cargado en el MPLAB IDE versión 8.02, esto en la parte de software. En la de
hardware se trabajó con el programador/depurador ICD 2 de Microchip.
Hasta aquí presentamos, por separado, los elementos de hardware y
software que fue necesario dominar. Es decir en este capítulo II hemos expuesto
las bases de diseño nuestra plataforma.
Capítulo III: Desarrollo de la plataforma
35
CAPÍTULO III.- DESARROLLO DE LA PLATAFORMA
En este capítulo III se exponen, de manera detallada, el diseño e
integración de casi todos los elementos de circuitería y programación del prototipo.
Solamente se dejó para el capítulo V la parte correspondiente a la programación del
controlador en Simulink, ya que juntos; el prototipo y el controlador, integran la plataforma
de enseñanza que hemos mencionado.
Se incluye también, en el último apartado, la apertura del puerto serie para
trabajar en Windows XP con el software de tiempo real.
III.1.- Circuitería:
III.1.1.- Servomotor:
La parte electromecánica de la circuitería de nuestra plataforma es el
servomotor a ser controlado, o llamado planta en el lenguaje de control.
El servomotor está basado en el motor de corriente directa marca Dynetic
Systems, modelo 509051; el cual funciona con un voltaje de 30v. y una corriente
pico de 1.3 Amp. Es decir, tiene una resistencia de armadura aproximadamente de
22 ohms. El campo es de imán permanente, de tal manera que solo es posible
controlarlo por armadura. En la flecha se le ha acoplado mecánicamente un
codificador de posición óptico de 10,000 pulsos por revolución, además de un
disco metálico como masa o carga inercial, con el propósito de aumentar este
parámetro.
Todos estos dispositivos se han montado en un ángulo de aluminio para
fijarlos y poder anclarlos a alguna mesa de trabajo, para desarrollar los
experimentos ya como servomotor o servomecanismo.
Capítulo III: Desarrollo de la plataforma
36
Figura13.- Servomotor completo.
III.1.2.- Electrónica de potencia:
La parte de electrónica de potencias está basada en el circuito
integrado LMD18200 de National Semiconductor. El cual, es un amplificador del
tipo puente “H” que nos permite incrementar corriente y voltaje, colocándole a la
entrada una señal modulada en ancho de pulso (PWM).
El amplificador cuenta con cuatro transistores MOSFET de potencia,
cada uno con su correspondiente diodo volante, además tiene una parte de lógica
de control y otra de sensado de la corriente a la salida.
A la entrada se le aplica, además de la señal PWM, una señal lógica
llamada signo, que cambia de estado para permitirnos modificar la dirección de
giro del servomotor. Los niveles lógicos 0 y 5v. de la señal PWM son amplificados
a 0 y 30v. respectivamente, y conducidos a la salida para ser aplicados
directamente al servomecanismo. El amplificador nos puede suministrar una
corriente máxima de 3 ampers. A continuación se presenta un diagrama funcional
a bloques del circuito integrado.
Capítulo III: Desarrollo de la plataforma
37
Fig. 14.- Diagrama a bloques del Puente “H” LMD18200.
La inductancia del servomotor realiza la función de integrar la salida PWM
del amplificador, promediando ésta, para obtener en la carga un voltaje de C.D.
cuyo valor depende del ciclo útil del PWM. Estas variaciones de voltaje nos
permiten controlar el servomecanismo.
Además, el puente “H” cuenta con algunas otras señales de entrada y salida,
como thermal flag output, current sense output y breake input. La salida current
sense (terminal 8) nos permite sensar la corriente que está circulando por el
amplificador y por lo tanto por el servomotor. Es importante la utilización de esta
salida para proteger el dispositivo contra daños permanentes, ya que éste soporta
3 amp. continuos como máximo. La corriente sensada también se puede utilizar
para implementar un lazo interno de control en corriente y obtener un servomotor
trabajando en modo corriente o modo par, lo anterior se explica en el siguiente
capítulo IV.
III.1.3.- Fuentes de alimentación:
El prototipo completo requiere de tres fuentes de alimentación, una de 30v.
para el amplificador, otra de 5v. para la lógica, y otra de 5v. para la lógica
conectada a la parte de potencia, estas dos últimas fuentes se encuentran
aisladas eléctricamente para evitar que los picos de voltaje generados por el
servomotor lleguen al microcontrolador y afecten su funcionamiento.
Capítulo III: Desarrollo de la plataforma
38
La fuente de 30v. suministra 2 amp. como máximo; este voltaje no se requiere
regulado. Las otras dos fuentes si son reguladas y proporcionan 500ma. cada una.
A continuación se muestra una vista externa de la fuente de alimentación del
prototipo. En el anexo “A” se muestra el diagrama eléctrico del diseño.
Figura 15.- Fuentes de voltaje de la plataforma.
III.1.4.- Trasladador de niveles:
Para realizar la comunicación serie la PC utiliza la norma EIA-232, por lo que
los niveles de tensión de las señales de transmisión y recepción son
aproximadamente de +12 y -12v., por lo tanto es necesario un circuito que adapte
los niveles lógicos que se manejan en el dsPIC a el voltaje mencionado. Esto lo
logramos utilizando el circuito integrado MAX232.
El MAX232 es un doble transmisor/receptor que incluye un circuito doblador de
voltaje capacitivo, cada receptor convierte las entradas EIA-232 a niveles TTL /
CMOS (5v.), y cada transmisor hace lo inverso. Los receptores tienen un umbral
Capítulo III: Desarrollo de la plataforma
39
típico de 1.3 v y una histéresis típica de de 0.5 v., y puede aceptar ± 30v. en las
entradas. La figura siguiente muestra el diagrama propuesto por el fabricante para
el adaptador de niveles MAX232, dicho diagrama incluye el doblador de voltaje
capacitivo para obtener valores de -10 a 10v. para la comunicación con la PC.
Figura 16.- Diagrama eléctrico del trasladador de niveles MAX232.
A continuación se muestra la imagen del circuito trasladador de nivel
RS232C que hemos elaborado.
Figura 17.- Imagen del trasladador de niveles MAX232.
Capítulo III: Desarrollo de la plataforma
40
III.1.5.- Tarjeta principal con el dsPIC30F4012:
El hardware de la plataforma de control que llamamos prototipo consta de
dos partes, la electromecánica y la electrónica. En este apartado nos referiremos a
tarjeta principal de la parte electrónica.
La tarjeta en circuito impreso que se muestra en la siguiente figura 18 es el
elemento central de hardware del presente trabajo, es la antesala de lo que se
conoce como un sistema embebido para control de servomecanismos. La base de
diseño es el microcontrolador de señales digitales dsPIC30F4012, que es un
circuito integrado de 28 terminales, el cual usa un reloj externo con un cristal de
7.3728 Mhz. con los condensadores correspondientes.
También cuenta con dos conectores para la comunicación con la PC, uno
DB25 para la comunicación paralelo y uno para la comunicación serie en forma de
terminales. A la salida de potencia incluye dos optoaisladores 4N35 para las
señales PWM, las cuales son amplificadas en la misma tarjeta con el puente “H”
LMD18200. Tiene también un conector para el codificador de posición óptico, y
otro para el programador/depurador. Los conectores de las alimentaciones y el de
salida hacia el servomotor son los de color azul.
Se colocaron también, en la alimentación del microcontrolador un capacitor de
desacoplamiento de 0.1 ufd., un resistor para el sensado de corriente y un filtro
para esta misma señal.
Capítulo III: Desarrollo de la plataforma
41
Figura 18.- Imagen de la tarjeta principal con el dsPIC30F4012.
El a bloques de la tarjeta principal se muestra a continuación, y en el Anexo
“B” se muestra el diagrama electrónico completo.
Capítulo III: Desarrollo de la plataforma
42
Figura 19.- Diagrama a bloques de la tarjeta principal.
III.2.- Programación en código y configuración:
Para propósitos de mejor entendimiento de este trabajo se ha considerado
la conveniencia de dividir este apartado de programación en código en tres partes.
La primera parte es la programación del dsPIC. La segunda parte es la
programación de la función “S” para el bloque de comunicación de datos en serie,
que requiere Simulink para poder realizar el control (ambos programas se
realizaron en lenguaje “C”5,6 con diferente compilador). La tercera parte es un
tanto diferente a las dos anteriores y solo se refiere a la apertura del puerto serie
para trabajar con el software de tiempo real bajo Windows XP.
La parte de la programación del controlador, como es común, se realizó a
bloques en Simulink; esta parte se decidió incluirla en el Capítulo V por su
importancia en sí misma, ya que con esta se pone a prueba toda la plataforma,
5VL
GNDL
C122nf
C2
22nf
Title
Size Document Number Rev
Date: Sheet of
José de Jesús Meza Serrano 1.0 D
PLATAFORMA DE ENSEÑANZA serie
A
1 1Friday , May 27, 2011
C I N V E S T A V DCA
5VL
M
GNDL
5VL
5VP
GNDL
GNDL
dsPIC30F4012
Microcontrolador
PWM-RE4(22)
SIGNO-RE5(21)
D0(26)-RE0
D1(25)-RE4
D2(24)-RE2
D3(23)-RE3
D4(4)-RB2
D5(14)-RD1
(11)-
D7(12)-RX
WAIT(3)-RB1
RD/WR(2)-RB0
ADDSTR(15)-RD0
DATASTR(16)-RE8
AN3-RB3-IP(5)
QEA(6)
QEB(5)
MCLR(1)
VD
D(1
3)
VD
D(2
0)
AV
DD
(28)
VS
S(8
)
VS
S(1
9)
AV
SS
(27)
PGD(17)
PGC(18)
LMD18200
Amplif icador Puente H
PWM(5)
SIGNO(3)
BOOTSTRAP1(1)
OUTPUT1(2)
OUTPUT2(10)
BOOTSTRAP2(11)
IP(8)
(6)
GN
D(7
)
BR
AK
E(5
)
TH
ER
MA
L F
LA
G(9
)
4N37
Opto aislador
VDD(5)
GND(2)
PWM-IN(1) PWM-OUT(4)
PROGRAMADOR
Conector
Vpp/MCLR(1)
VDD/5VL(2)
VSS/GNDL(3)
PGD(4)
PGC(5)
ENCODER
Conector
B(1)
5VL(2)
A(3)
GND(5)
NC(4)
30V
R1
1kSW1
SW
PUERTO SERIE
Conector
$PIN0
VDD/5VL(2)
VSS/GNDL(3)
TX(4)
RX(5)
5VL
GNDL
5VL
GNDL
TX
Corriente sensada
GNDL
5VP4N37
Opto aislador
VDD(5)
GND(2)
SIGNO-IN(1) SIGNO-OUT(4)
Capítulo III: Desarrollo de la plataforma
43
incluidas todas las capas de programación de nivel intermedio que se describen
en este capítulo III.
III.2.1.- Programación del dsPIC:
Como ya se mencionó de manera general, esta programación se realizó en
lenguaje “C”, en el ambiente MPLAB IDE y con el compilador C30 de Microchip.
En este trabajo se presenta la comunicación, entre la PC y el dsPIC, a través
del puerto serie RS232C. Sin embargo se había venido trabajando en la
comunicación mediante el puerto paralelo en el modo EPP. Con esta
consideración, pasamos a la explicación el programa principal (main()), y
enseguida explicaremos las definiciones, las funciones y librerías que se utilizan
para realizan las actividades principales de dicho programa.
Antes de iniciar con el código del programa principal propiamente dicho se
realiza la inclusión de algunos archivos de la biblioteca del fabricante del micro
controlador8, y de algunos propios. También se hacen la definiciones de los tipos
de variables, constantes y apuntadores; además se escriben algunas funciones
sencillas que nos permiten configurar y acomodar los bits del puerto paralelo, para
recibir y enviar datos. Adicionalmente se programan las rutinas de retardos, la
inicialización del timer, la obtención y filtrado del voltaje de entrada analógico
proporcional a la corriente que está circulando en el servomotor.
Al inicio del main() se llama a cinco funciones, cuatro de inicialización de los
módulos del dsPIC que utilizamos y una de retardo.
Capítulo III: Desarrollo de la plataforma
44
Figura 20.- Inicio del programa principal main() del dsPIC, llamando a cuatro
funciones para inicializar los módulos utilizados.
La primera función es IniPWM(), con ella configuramos la salida PWM, le
deshabilitamos interrupciones, fijamos la frecuencia de la señal PWM,
seleccionamos el modo de operación, habilitamos el puerto, y enviamos un
comando de prueba para que se mueva el servomotor un tiempo pequeño en
ambos sentidos.
Después se llama a la función de retardo MsDelay(700), la cual no es tan
importante.
La tercera función IniADC4012Old() nos permite configurar la terminal 5 del
dsPIC como entrada analógica(AN3). Esta entrada se utiliza para sensar la
corriente en el servomotor. Primero de define la línea I/O como entrada, se apaga
el convertidor, se definen las entradas negativas y positivas para las entradas A y
B que se van a muestrear; ya que están multiplexadas seis entradas en cuatro
canales muestreadores-retenedores, con un solo convertidor A/D. Se deshabilitan
las interrupciones, se selecciona la línea como entrada analógica, también se
seleccionan el formato como se entregará la palabra digital de 10 bits (que es el
resultado de la conversión), el voltaje de referencia, el reloj de disparo de la
conversión, el tipo de muestreo, el reloj de la conversión.
Capítulo III: Desarrollo de la plataforma
45
La cuarta función es IniSerial4012(), la cual nos permitirá inicializar y configurar
el UART1, que es quién maneja la comunicación por el puerto serie.
Con la quinta función llamada, IniQEI(), configuramos como entradas las líneas
para el módulo de lectura del codificador de posición óptico, seleccionamos el
valor máximo a contar, habilitamos la interrupción por sobre flujo en la cuenta, y la
prioridad de ésta, seleccionamos también el modo X4, y finalmente inicializamos
en cero el registro de conteo de la posición del servomotor.
Después el programa entra en un lazo de espera. En esta parte, básicamente
se realiza el sensado de la posición y envío de la señal de control al servomotor,
este lazo solamente es interrumpido por la presencia de alguna de las
interrupciones para la transferencia de dato entre la PC y el dsPIC, esto sucede
cada periodo de muestreo del controlador. En el caso de la comunicación serie es
de 2ms.
En este lazo también se acondicionan la señal sensada de la posición y la
señal de control enviada en formato PWM. El registro que entrega el valor de la
posición es de 16 bits, y dado que estamos trabajando con un codificador de
posición de cuadratura de 10,000 pulsos por revolución, este se desbordaría
fácilmente, por lo cual se implementó en código el incremento del tamaño del
registro a 32 bits. Adicionalmente la posición es convertida de formato entero a
punto flotante, que es como la maneja simulink. En contrapartida la señal de
control que viene de la PC en dos bytes separados, es unida para tener una
palabra de 16 bit. Se pregunta si ésta es negativa o positiva, para hacer girar el
motor en un sentido u otro, después se le obtiene el valor absoluto, y es recortada
hasta un valor UMAX. Finalmente este valor digital es cargado en el registro
correspondiente para que la señal de control PWM sea generada.
III.2.1.1.- Configuración general:
La configuración de los bits que definen el funcionamiento general del dsPIC
(también llamados fusibles) la realizamos mediante un archivo de la biblioteca al
que denominamos configbits.h. Este archivo se encuentra incluido en el proyecto.
La primera selección corresponde al tipo de oscilador que usaremos, en
este caso un oscilador externo de alta frecuencia con un multiplicador por 16, esto
Capítulo III: Desarrollo de la plataforma
46
se logra con la siguiente selección _FOSC( CSW_FSCM_OFF & XT_PLL16 ). El
cristal externo nos permite mayor precisión en el reloj, lo cual, entre otras cosas,
redunda en una mayor integridad de los datos en la comunicación serie.
Para la implementación exacta del reloj del sistema usamos un cristal de
7.3728 Mhz., el cual se multiplica por 16 para obtener 117.96 Mhz. Dividiendo este
valor entre 4 se obtiene la frecuencia a la que se ejecuta una instrucción, es decir
estamos trabajando a 29.49 MIPS. Como sabemos, el dsPIC que estamos usando
puede correr a 30 MIPS máximo.
La siguiente selección corresponde al Watchdog timer, en nuestro caso lo
deshabilitamos mediante la macro instrucción _FWDT(WDT_OFF).
Posteriormente tenemos la selección que se refiere a los tipos de reset. En
este caso solo habilitamos el brown on reset y el master clear, mediante la
siguiente macro instrucción _FBORPOR(PBOR_ON & MCLR_EN ). Lo hacemos
de esta manera porque solo deseamos que se presente el reset, por una baja en
el voltaje de alimentación o al ser accionado el interruptor correspondiente.
Finalmente tenemos la opción de proteger el código programado. En este
caso dicha opción es deshabilitada con la macro _FGS(CODE_PROT_OFF).
III.2.1.2.- Comunicación serie:
Para realizar la comunicación de datos por el puerto serie, se requiere de la
inicialización y configuración del UART tanto en el dsPIC como en la PC. En el
dsPIC se realiza de la siguiente manera.
Inicialmente es llamada la función IniSerial4012(), donde se definen algunas
constantes para el cálculo y la configuración del baud rate. En nuestro caso
usamos la velocidad más alta, es decir 115,200 bauds, posteriormente se cierra el
UART, se configuran sus líneas digitales I/O, Tx como salida y Rx como entrada,
se deshabilita el UART, se selecciona el formato de comunicación 8N1, se habilita
la interrupción al recibir un dato, y se configura la prioridad de ésta en 4, se habilita
la interrupción para cuando se reciba un caracter, se selecciona el uso de las
terminales alternas, se habilita el UART, y finalmente se habilita la transmisión.
Capítulo III: Desarrollo de la plataforma
47
Figura 21.- Función IniSerial4012() para inicializar y configurar el módulo serie.
De manera detallada el módulo UART es habilitado colocando un „1‟ en el bit
UARTEN del registro U1MODE10. Una vez habilitado, los pines UxTX y UxRX se
configuran como salida y entrada, respectivamente, lo anterior colocando en cero
en el bit correspondiente en el registro TRIS para salida y en uno para entrada.
El pin UxTX se encuentra en estado lógico "1" cuando ninguna transmisión se
lleva a cabo.
El módulo UART es desactivado al limpiar el bit UARTEN en el registro
U1MODE. Este es el estado predeterminado después de cualquier reset. Si el
UART está desactivado las dos terminales del puerto serie operan como
terminales de I / O, bajo el control de los bits de los registros correspondientes
LATCH y TRIS.
El modo de terminales alternas es habilitado por el cambio a alto del bit ALTIO
(U1MODE <10>). Si ALTIO = 1, las terminales U1ATX y U1ARX son utilizados
por el módulo UART en lugar de las terminales U1TX y U1RX. Si ALTIO = 0, las
terminales U1TX y U1RX son utilizados por el modulo UART.
Capítulo III: Desarrollo de la plataforma
48
Los bits de control PDSEL <1:0> en el registro U1MODE son utilizados para
seleccionar la longitud de los datos y la paridad utilizada en la transmisión, la
longitud de los datos puede ser de 8 bits con paridad par, impar o sin paridad, o 9
bits sin paridad. El bit STSEL determina si se utilizarán uno o dos bits de paro
durante la transmisión de datos. Estos valor por defecto ( Power-on ) del UART
son: 8 bits, sin paridad, 1 bit de parada ( normalmente representado como 8,N,1).
La bandera de interrupción por recepción (U1RXIF) puede ser leída en el
registro correspondiente. La condición para recibir la interrupción depende de la
configuración especificada en los bits de control UR1ISEL <1:0> (U1STA <7:6>).
Si URXISEL <1:0> = 00 o 01, una interrupción es generada cada vez que una
palabra de datos se transfiere desde el registro de movimiento de recepción
(U1RSR) al bufer de recepción. Puede haber uno o más caracteres en el bufer de
recepción.
El UART tiene un generador de baud rate de 16 bits para permitir una
flexibilidad máxima en la generación de la velocidad de comunicación, el registro
generador de la tasa de baudios (U1BRG) es de lectura y de escritura, la
velocidad de comunicación se calcula como sigue:
La velocidad en baudios está dada por la siguiente ecuación.
Por lo tanto, la máxima velocidad en baudios posible es (si = 0), y
la mínima velocidad posible en baudios es .
Despejando y calculando para un .
Capítulo III: Desarrollo de la plataforma
49
Este es el dato que se carga en el registro .
III.2.1.3.- Generación de la señal de control por Modulación en Ancho del Pulso:
La segunda función del programa cargado en el dsPIC es IniPWM4012(). Con
la cual configuramos la salida PWM, le deshabilitamos interrupciones, fijamos el
periodo de ésta, seleccionamos el modo de operación, habilitamos el canal, y
enviamos un comando de prueba para que se mueva el servomotor un tiempo
pequeño en un sentido y en otro.
Figura 22.- Función IniPWM4012() para inicializar y configurar el módulo PWM.
La configuración del módulo PWM se realiza utilizando los programas o
funciones de biblioteca de 16 bits, para el lenguaje “C”, los cuales nos permiten
asignar a los registros internos los valores necesarios, sin tener que hacerlo
directamente; de tal manera que dichas funciones simplifican la tarea de
configuración, la que sería más complicada si se realizara sin ellas, o aún más si
se realizara en ensamblador.
La primera función de biblioteca usada es ConfigIntMCPWM(config), esta
Capítulo III: Desarrollo de la plataforma
50
función se utiliza para configurar las interrupciones del modulo PWM, el parámetro
config puede tomar el valor de una serie de etiquetas correspondientes a bits; con
los cuales, en nuestro caso, deshabilitamos las interrupciones del módulo PWM ya
que no serán utilizadas, ni la normal ni la de bit de falla, también les asignamos
una prioridad de 0, la cual es la menos importante. Esto último es necesario
realizarlo ya que el espacio no puede quedar vacío en la función.
Posteriormente se usa la función de biblioteca OpenMCPWM(), la cual
inicializa el módulo y es la encargada de escribir los valores a los registros de
configuración PTPER , SEVTCMP, PTCON, PWMCON1 y PWMCON2.
Para el caso en que trabajemos en el modo de corrida libre, el primer valor nos
permite definir la base de tiempo de la señal PWM, la cual, en términos del periodo
del PWM se calcula con la siguiente fórmula.
Despejando y calculando el valor a cargar en el registro , para una
frecuencia deseada del de 20 Khz., y para un valor del preescalador de 1.
Tenemos:
El segundo dato es el disparo por algún valor o evento especial, este dato no
lo utilizamos, por lo que se coloca en cero.
El siguiente parámetro de esta función es Config1, este contiene los datos que
serán cargados en el registro PTCON; los que realizan varias funciones, habilitan
la base de tiempo del PWM, definen que siga funcionando el PWM cuando el
dsPIC entre en modo de espera. El preescalador y el postescalador se colocan en
1:1, con lo cual quedan prácticamente deshabilitados. Al final definimos que el
modulo PWM esté trabajando en el modo de corrida libre.
El siguiente parámetro es config2, este contiene los datos que serán cargados
en el registro PWMCON, con este configuramos el modulo 3 PWM bajo para que
trabaje de manera independiente, deshabilitamos los módulos 1 y 2, altos y bajos,
y el modulo 3 alto. Es decir solamente habilitamos el modulo 3 bajo, para obtener
Capítulo III: Desarrollo de la plataforma
51
la señal PWM a través de esta terminal.
El parámetro config3 Contiene los datos que serán cargados en el registro
PWMCON2, con ellos colocamos el postescalador de eventos especiales en 1, ya
que no lo utilizaremos, sincronizamos la salida PWM con el Tcy, y seleccionamos
que la actualización del flanco de salida de la señal PWM se realice en sincronía
con la base de tiempo del módulo.
Posteriormente utilizamos la función SetDCMCPWM(); con ella configuramos
los registros para el ciclo útil del PWM. En el parámetro dutycyclereg se coloca el
valor del apuntador al registro a configurar, en nuestro caso el modulo 3. El dato
siguiente es el llamado iref, este es el valor del ciclo útil a cargar, y el dato final es
updatedisable, este valor se coloca en cero para deshabilitar la actualización
inmediata de valores, ya que ésta se realiza de otra manera; sincronizada con la
base de tiempo del modulo PWM.
Posteriormente con iref se hace una pequeña rutina para probar que está
función esté trabajando, consiste en mover el servomotor por corto tiempo hacia
un lado y hacia el otro. Estos valores de ciclo útil son solo de prueba, ya que la
variable iref se irá modificando de acuerdo a las necesidades de la señal de
control en el lazo.
III.2.1.4.- Medición de la posición angular:
El modulo QEI del dsPIC es la interface entre el codificador de posición óptico
incremental en cuadratura y el lazo de control, este módulo realiza la tarea de
decodificar las señales enviadas por el sensor. Estas señales son llamadas fase
A, fase B, e Index. Las fases A y B se utilizan para determinar la posición del rotor
incluyendo su sentido de giro, mientras que el Index se utiliza para medir cantidad
de revoluciones. En la siguiente figura se muestra el principio de funcionamiento
de un sensor de posición óptico.
Capítulo III: Desarrollo de la plataforma
52
Figura 23.- Funcionamiento de un sensor de posición óptico incremental.
El contador del modulo QEI deja el dato de la posición en un registro de 16 bits
llamado POSCNT.
Si el servomotor está girando en dirección positiva y el valor en el registro
POSCNT coincide con el valor en el registro MAXCNT, entonces este registro se
reiniciará a cero en el siguiente flanco de bajada y una interrupción será generada.
A este evento se le llama sobreflujo.
Si el servomotor está girando en dirección negativa y el valor en el registro
POSCNT llega a cero, entonces este registro será cargado con el valor en el
MAXCNT y en el siguiente flanco que decremente al registro POSCNT, también
será generada una interrupción.
Cuando alguna de estas interrupciones ocurre, la bandera QEIIF
correspondiente se pone en “1” indicando el evento, y se salta a la rutina de
servicio de interrupción. En esta rutina podremos observar el valor que tenía el
contador de posición al ocurrir el evento, si el valor es el máximo, entonces
incrementaremos una variable entera que cuente los sobreflujos. Por el contrario si
el valor es cero entonces se decrementará esta variable. Con esto obtendremos
un valor de 32 bits para el contador de posición, y nos permitirá un mayor rango de
sensado de la posición para nuestro control, es decir el motor podrá dar más
vueltas sin problemas en el conteo.
El modulo QEI permite una frecuencia de las señales de entrada A y B hasta
de , en nuestro caso la frecuencia de estas señales debe de ser máximo de:
Capítulo III: Desarrollo de la plataforma
53
La inicialización y configuración del modulo QEI se realiza con la rutina
IniQEI4012() de la siguiente manera:
Figura 24.- Función IniQEI4012() para inicializar y configurar el módulo QEI
para el sensado de la posición angular.
Primero se inicializan las líneas QEA y QEB como entradas, como cualquier
líneas digital de I/O, posteriormente llamamos ordenadamente a las siguientes
funciones preprogramadas.
La función WriteQEI(), la cual establece el valor máximo para el contador de
posición, en nuestro caso 0xFFFF; este valor es guardado en el registro MAXCNT.
En seguida la función ConfigIntQEI(), la que configura la interrupción para este
módulo, después habilitaremos la interrupción y le asignaremos una prioridad de
3, es decir una intermedia.
Posteriormente la función OpenQEI(), esta función abre el módulo
seleccionando la fase con la cual se incrementa el contador; para este caso
Capítulo III: Desarrollo de la plataforma
54
utilizamos la fase B. También se configura que las entradas no sean
intercambiables y la resolución de del modulo sea X4, se coloca el modulo en
modo de trabajo match, esto para que se genere una interrupción por sobreflujo y
bajoflujo del contador.
Finalmente se inicializa con cero el registro POSCNT, que es donde se
guardará el conteo de la posición.
III.2.1.5.- Medición de la corriente en el servomotor:
El amplificador tipo puente “H” LMD18200 cuenta con una terminal que nos
permite sensar la corriente que circula por éste y por lo tanto por el servomotor,
dicha salida se encuentra en la terminal 8 y se llama current sense. Esta señal de
corriente nos entrega 377ua. por amper a la salida.
Como podrá observarse es necesario colocar un resistor de carga a tierra, de
valor apropiado para obtener un voltaje proporcional a la corriente, y llevar este a
una entrada A/D del dsPIC, esto para poder manipularla digitalmente y realizar la
acción correspondiente cuando se desee. El rango de voltaje analógico permitido
en cualquier entrada A/D es de 0-5v.
A continuación se muestra el cálculo del resistor; por ley de Ohm.
Proponiendo y calculando tenemos:
Lo cual es adecuado ya que deseamos sensar como máximo 2 ampers a
través de la entrada AN3 del dsPIC, y en este caso tendremos como límite 4.22 v.
Dado que esta señal contiene demasiado ruido, se requirió pasarla por un filtro
pasa bajas, este se implementó por hardware con una red RC, eligiendo una
frecuencia de corte de 4 Khz. para conservar un ancho de banda suficiente para el
lazo de control. El diseñó se realizó de la siguiente manera.
Capítulo III: Desarrollo de la plataforma
55
Si proponemos; , y despejamos el cálculo del capacitor es el
siguiente:
Por razones de valores comerciales del capacitor, se colocó de 47nfd., por lo
que la frecuencia de corte real es
La parte de programación e inicializar de la entrada analógica del dsPIC para la
lectura de este voltaje filtrado, que es proporcional a la corriente en el servo, fue
realizada mediante la rutina IniADC4012Old(), la cual desarrolla las siguientes
tareas.
Capítulo III: Desarrollo de la plataforma
56
Figura 24.- Función IniADC4012Old() para inicializar y configurar el módulo de
entradas analógicas.
Primero, se programa como entrada la terminal 5 (AN3) del dsPIC, y se apaga
el convertidor, posteriormente se usan las siguientes funciones preprogramadas.
Iniciamos con SetChanADC10(Channel). Esta función selecciona las entradas
multiplexadas, positiva y negativa que van a los muestreadores-retenedores A y
B, las que son cargadas al registro ADCHS, se elije que la entrada AN3 pase a la
entrada positiva del muestreador A y después al canal cero, y que el Vref- pase a
la entrada negativa del muestreador A y después al canal cero.
Posteriormente se utiliza la función ConfigIntADC10(), la cual deshabilita la
interrupción del convertidor, y en este caso ya no se fija la prioridad.
Finalmente se usa la función OpenADC10(). La que, entre otras cosas, nos
permite escribir en los tres registros ADCON1. En el primero, habilitamos el
módulo ADC, habilitamos que el módulo de conversión siga trabajando aunque el
dispositivo entre en modo ocupado, después seleccionamos que el formato de los
bits de salida del dato sea entero sin signo, posteriormente elegimos que la fuente
de reloj que dispare la conversión sea automática, en seguida seleccionamos que
se puedan muestrear varios canales simultáneamente, luego que el muestreo
Capítulo III: Desarrollo de la plataforma
57
empiece inmediatamente después que la última conversión sea completada, y por
último que al menos un muestreador-retenedor esté trabajando.
En el segundo registro ADCON2 configuramos en principio que los voltajes de
referencia del convertidor sean AVdd y AVss, en seguida que no revise las
entradas para el CH0+, después se deshabilita el modo alterno del bufer del dato
de salida, posteriormente se deshabilitan las entradas alternas del multiplexor; es
decir siempre se usa el MUX A, más adelante se selecciona el CH0 como el
utilizado, y finalmente se selecciona no permitir interrupciones.
El tercer registro ADCON3 se configura de la siguiente manera; primero el
tiempo de muestreo automático en 10 veces el periodo de conversión
enseguida que la fuente de reloj de muestreo sea la del sistema, y finalmente que
el reloj de conversión sea . Enseguida se muestra el cálculo para
este dato de seis bit que se carga en La variable del registro ADCON3.
.
III.2.1.6.- Rutinas de atención a interrupciones:
Cada que un byte completo se ha recibido en el puerto serie del dsPIC, el
programa principal del DSpic se abandona temporalmente para ejecutar esta
rutina de atención a interrupciones.
Esto quiere decir que la iniciativa de la comunicación, con el dsPIC, la tiene el
programa de control que está corriendo en la computadora personal. Esta
comunicación debe realizarse cada que se cumpla el periodo muestreo fijado en el
controlador, en nuestro caso cada 2 mseg.
En esta rutina se ejecutan las dos tareas fundamentales en el muestreo de
todo controlador; la actualización de la señal de salida sensada y la aplicación de
la señal de control.
La computadora primero envía un comando para indicarle al dsPIC que desea
que le envíe la nueva posición angular, la rutina pregunta por él, y de estar
presente, le contesta enviándole, por el mismo puerto serie, los cuatro bytes de la
posición. La rutina borra la bandera de interrupciones, para que pueda entrar otra,
Capítulo III: Desarrollo de la plataforma
58
y termina.
En el mismo periodo de muestreo, la computadora envía ahora otro comando,
lo cual hace que se ejecute nuevamente la rutina de atención a interrupciones,
indicándole que le va a enviar la señal de control en dos bytes, el dsPIC los lee,
borra la bandera de interrupciones y termina.
De antemano, en la configuración del puerto serie se programó la interrupción
por recepción de un byte y se le fijó una prioridad intermedia (4).
Como se explicó en los apartados anteriores, existen otra fuente de
interrupción; la de sobreflujo o bajoflujo en el conteo de pulsos del sensor de
posición. Para este caso, se programó la rutina de atención correspondiente.
III.2.2.- Programación de la función “S” para Simulink:
En nuestro caso, la función “S” es el driver requerido para manejar el puerto
serie de la PC desde Simulink. Para facilitar dicha programación se utilizó la
plantilla de programa, en lenguaje “C”, que viene incluida con Matlab. Para este
caso en particular se utilizó la plantilla de nivel 1. A continuación se explica la
programación de dicha función.
Al archivo lo llamamos serxp_1.c. En su interior Inicialmente se define el nombre
de la función “S”, que debe ser el mismo que el del programa, sin la extensión, y el mismo
que llevará el nombre del bloque en Simulink, es decir serxp_1. Posteriormente se
incluyen algunos archivos de la biblioteca, se hacen algunas definiciones y se
etiqueta la dirección base del puerto serie COM1 (0x3F8) de la PC, se define
también que el bloque tenga solamente una entrada y una salida.
Después, se llama a la primera rutina mdlInitializeSizes(S), la cual define el
tamaño de algunas variables, vectores, y compara el número de argumentos que
se le pasan a la función “S” con los seleccionados.
En seguida se llama a la rutina mdlInitializeSampleTimes(S), en la cual solo se
toma el argumento del periodo de muestreo que se selecciona en Simulink,
posteriormente se llama a la función mdlInitializeConditions(x0, S); en esta rutina
se realiza la configuración del puerto serie de la PC, se habilita el bit del divisor de
Capítulo III: Desarrollo de la plataforma
59
latch DLAB en el registro de control de línea, después se configura la velocidad
de comunicación a 1151,200 bauds, el tipo de dato a 8N1, en el registro de control
del FIFO (FCR) se configura la máxima capacidad, se limpia y se habilita, y
finalmente se activan las líneas DTR, RTS y OUT2 en el registro de control del
modem.
Posteriormente tenemos programadas dos funciones propias; la primera para
leer un byte llamada GetByte() y la segunda para reunir dos bytes y obtener una
word entera, esta última se llama GetVal().
En seguida está la rutina mdlOutputs(). Esta es la más importante ya que aquí
se programa el código que se ejecutará cada periodo de muestreo durante todo el
tiempo que esté corriendo el programa de control. En esta parte, esencialmente se
realiza la comunicación con el dsPIC para la lectura de la posición angular (salida
del lazo de control) y el envío de la señal de control PWM, todo esto por el puerto
serie.
En el caso de la posición angular, esta se transfiere en 32 bits, y dado que se
lee byte por byte, esto se hace con apuntadores para posteriormente juntarlos y
obtener el dato en tipo flotante, ya que este formato es el que maneja Simulink.
Por otra parte la señal de control PWM es de 11.9 bits, por lo que se transmite
en dos bytes, pero antes se normaliza para hacer coincidir el máximo valor en
digital que es 3998, con el máximo que se maneja en el lazo de control de
Simulink, que es de 5v.
A continuación se muestra el cálculo de la resolución de la señal PWM a la
frecuencia indicada.
Finalmente se llama a las rutinas mdlDerivatives() y mdlTerminate(), esta
última solo se ejecuta una sola vez, al apagar la simulación, en ella se envía un
comando para reconfigurar el dsPIC, el cual tiene el efecto de un reset.
Capítulo III: Desarrollo de la plataforma
60
Esta función “S”, una vez compilada dentro de Matlab, podrá usarse como un
bloque mas en el modelo de control de Simulink, permitiéndonos el contacto con el
servomotor, a través del puerto serie y del dsPIC.
III.2.3.- Apertura del puerto serie en Windows XP:
Trabajando bajo el sistema operativo Windows XP los puertos de
comunicaciones de una computadora personal se encuentran cerrados. Es decir
no se pueden utilizar aunque hayan sido configurados. Por lo tanto el programa de
aplicación que se esté utilizando para trabajar debe abrirlos.
En el caso del puerto serie. Por ejemplo, el COM1, éste se puede utilizar solo
por la Hiperterminal sin la necesidad de ser abierto por alguna aplicación, Para
nuestro caso, que deseamos usarlo desde Simulink con el Kernell de tiempo real
Ardence RTX, este puerto se abre desde esta aplicación, de la siguiente manera:
1.- Se ejecuta la aplicación Ardence RTX Properties
2.- Dentro de esta ventana se va a la pestaña de Harware, en el recuadro RTX
Devices presionar el botón de setings
3.- Buscar y seleccionar el puerto COM1, después presionar ok (o enter)
4.- Reinstalar el Driver del puerto y reiniciar la computadora
5.- Revisar que el puerto esté soportado por el Driver de RTX. Si es así, como
en la siguiente Figura 21 el puerto está abierto y listo para trabajar desde esta
aplicación.
Capítulo III: Desarrollo de la plataforma
61
Figura 25.- Pantalla mostrando al puerto COM1 abierto por la aplicación
Ardence RTX.
Capítulo IV: Modelado y simulación del motor de c.d.
62
CAPITULO IV.- MODELADO Y SIMULACION DEL SERVOMOTOR DE C.D.
IV.1.- Generalidades de los motores de corriente directa:
Los motores de Corriente Directa (C.D.) convierten la energía eléctrica en
energía mecánica. Una gran parte de esta energía llamada par (torque), que es
generada en el rotor (armadura o inducido) del motor, está disponible para
manejar una carga mecánica externa. El motor de CD es probablemente el
primero de los motores eléctricos.
El principio de operación de un motor de CD es el de un conductor eléctrico
colocado dentro de un campo magnético constante, perpendicular a la dirección
del campo. La Densidad del Flujo Magnético es también asumida como
constante. Si una corriente directa se hace pasar a través del conductor, el flujo
magnético debido a la corriente rodeará al conductor. Si consideramos un plano a
través del conductor, paralelo a la dirección del flujo magnético del campo, en un
lado de este plano el flujo debido a la corriente y el flujo debido al campo se
suman. En el lado opuesto, los flujos se oponen; como resultado se genera una
fuerza de desequilibrio magnético (normal al plano) sobre el conductor. Esta
fuerza está dada por la ecuación siguiente:
IV.1.1
Donde es la densidad de flujo magnético, la longitud del conductor, la
corriente a través del conductor, el par de fuerzas y es la constante
mecánica del motor o constante de par.
Note que si el flujo del campo no es perpendicular a lo largo del conductor, este
puede generar una componente perpendicular que genere una fuerza y una
componente paralela que será inactiva. Las componentes activas de son
mutuamente perpendiculares y forman la regla de la mano derecha. También en la
representación vectorial de estas tres cantidades, el vector puede ser
representado como el producto cruz de los vectores .
Si el conductor está libre para moverse, la fuerza moverá éste en la dirección
de la misma.
Capítulo IV: Modelado y simulación del motor de c.d.
63
Considerando la necesidad de mantener la dirección del par, en cada
enrollamiento o grupo conductor de la armadura, la dirección de la corriente
cambiará cuando el conductor cruce el plano llamado de conmutación.
Físicamente esto es realizado usando un anillo contactor con hendiduras o
separaciones aislantes y un par de escobillas conductoras (carbones) que realizan
la conmutación. Esto es, cuando un voltaje de armadura es aplicado a través de
las escobillas de carbón, se genera un pequeño giro de la armadura del motor
logrando la conmutación requerida para mantener girando permanentemente el
motor en una dirección.
Figura 26.- Imagen interna de un motor de C.D. con escobillas.
Como resultado de este movimiento dentro del campo magnético un voltaje
será inducido en el conductor. Este es conocido como la fuerza contra
electromotriz (FCEM) o y está dada por:
IV.1.2
Donde: es la velocidad angular y la constante eléctrica del motor.
En consecuencia, por la ley de Lenz, el flujo debido a la FCEM se opondrá al
flujo debido a la corriente original a través del conductor, de tal manera que
Capítulo IV: Modelado y simulación del motor de c.d.
64
tenderá a detener el movimiento. Esta es la causa del amortiguamiento eléctrico
(efecto derivativo) en los motores eléctricos.
A este tipo de motores se les conoce como motores con escobillas o carbones,
uno de los cuales analizamos y utilizamos en el presente trabajo.
IV.2.- Modelo matemático de un motor de corriente directa controlado por
armadura:
El modelado matemático es una técnica que consiste en describir, de la
manera más apegada a la realidad que sea posible, la estructura y características
de un sistema, en términos de ecuaciones. Los sistemas pueden ser, eléctricos,
biológicos, químicos, físicos, económicos, sociales, financieros, etc.
El análisis de los modelos matemáticos y la simulación de estos son
herramientas indispensables tanto para la comprensión y entendimiento del
sistema en particular, como para el posible diseño de algún controlador que
eventualmente se requiera.
Muchos sistemas dinámicos ya sean mecánicos, eléctricos, térmicos,
hidráulicos, económicos, biológicos, etc., pueden ser descritos por ecuaciones
diferenciales. Se puede obtener la respuesta de un sistema dinámico a una cierta
entrada, si se resuelven esas ecuaciones diferenciales.
Para obtener las ecuaciones se utilizan las leyes que gobiernan un sistema en
particular. Por ejemplo, las leyes de Newton para sistemas mecánicos.
Considerando el motor de C.D. que deseamos controlar en posición, sabemos
que el campo está elaborado con un imán permanente, de tal manera que el
control se hace por armadura, para lo que partimos del siguiente circuito
electromecánico para realizar el modelado matemático.
Capítulo IV: Modelado y simulación del motor de c.d.
65
Figura 27.- Circuito electromecánico de un motor de CD con campo de imán
permanente.
Donde: es el voltaje de armadura, la corriente de armadura,
la fuerza contraelectromotriz, la resistencia de armadura, la
inductancia de armadura, la constante eléctrica, el par eléctrico
desarrollado, la posición angular, el momento de inercia del motor,
la constante de par, la fricción viscosa total, la velocidad angular,
la inductancia mutua, y el par de la carga.
Detallando la ecuación para el voltaje generado dentro de una máquina de
C.D. o fuerza contra electromotriz1,2 , tenemos:
Donde: es el número de conductores de la armadura, el número de polos, es
el número de líneas de flujo por polo, es el número de rutas paralelas a través
de la armadura.
De tal manera que la constante eléctrica de la fuerza contra electromotriz es:
Por lo tanto:
Capítulo IV: Modelado y simulación del motor de c.d.
66
Por otra parte la ecuación para el par desarrollado por la máquina de C.D. es:
Donde la constante del par desarrollado es:
De tal manera que:
También se puede calcular una constante a partir de la otra, si se usan las
unidades indicadas, a partir de la siguiente relación:
Para iniciar de manera más estructurada el modelado del motor aplicamos
la ley de Kirchoff para mallas al circuito de armadura, obteniendo la siguiente
ecuación diferencial:
Sustituyendo de la ecuación , tenemos:
Por otra parte. A partir de la segunda ley de Newton del equilibrio de
fuerzas, obtenemos la ecuación de movimiento de la parte mecánica del sistema.
Sustituyendo de la ecuación , nos queda:
Capítulo IV: Modelado y simulación del motor de c.d.
67
Aplicando la transformada de Laplace a las ecuaciones y , nos
quedan de la siguiente manera:
Despejando en ambas ecuaciones para igualar y eliminarla, obtenemos:
Encontrando la función de transferencia en lazo abierto para una salida en
posición angular respecto a una entrada de voltaje de armadura, obtenemos el
sistema de tercer orden siguiente:
Si consideramos que la inductancia de la armadura es pequeña, el
polo eléctrico se hace más grande y su desempeño es rápido a bajas
frecuencias, por lo que se puede despreciar. Quedando de la ecuación el
siguiente sistema de segundo orden:
Capítulo IV: Modelado y simulación del motor de c.d.
68
El supuesto anterior se logró de manera más eficiente implementando un lazo
interno de control de la corriente de armadura, lo cual reduce la constante de
tiempo eléctrica y hace el polo eléctrico aún más rápido. Este parte se considera
posteriormente en el modelo.
Continuando con la agrupación de términos, nos queda la siguiente función de
transferencia en lazo abierto:
Al servomotor se le agregó como carga un disco de latón, el cual se comporta
como una masa inercial , de tal manera que la inercia total será:
Considerando ahora el lazo interno de control en corriente con un controlador
proporcional integral (PI), mas una ganancia debida al sensado y conversión de la
corriente en voltaje , además de la ganancia debida al amplificador
tenemos el siguiente diagrama a bloques:
Figura 28.- Modelo del servomotor en lazo abierto, solo con un lazo interno
de control en corriente.
lazo interno PI en corriente
Va
T
Ia
w
Servo motor de corriente directa
Ø
1
Ka
Kc
KiI
s
KpI
Km
Ke
1
s
1
Jt.s+Bm
1
La .s+Ra
Capítulo IV: Modelado y simulación del motor de c.d.
69
Donde; son, respectivamente, las ganancias proporcional e integral del
lazo interno de corriente.
Mediante álgebra de bloques pasamos el punto de resta al inicio y sumamos
las acciones proporcional e integral del lazo de corriente de armadura,
quedándonos lo siguiente:
Figura 29.- Primera simplificación del modelo del servomotor en lazo abierto,
con un lazo interno de control en corriente.
Normalmente el valor del polo , del lazo de retroalimentación, es
mucho mayor que el polo . Es decir, está más alejado del origen del
plano complejo, o sea, es más rápido; por lo que el término
puede aproximarse a bajas frecuencias por , quedando12.
Lazo PI en corriente
T
Ia
Va w
Servo motor de corriente directa
ØKaKpI .s+KaKiI
s
s
KaKpI .s+KaKiI
Kc
Km
Ke
1
s
1
Jt.s+Bm
1
La .s+Ra
Capítulo IV: Modelado y simulación del motor de c.d.
70
Figura 30.- Segunda simplificación del modelo del servomotor en lazo abierto,
solo con un lazo interno de control en corriente.
Resolviendo primero la parte del lazo interno de corriente y denominándolo
como tenemos:
Como los polos de normalmente están más alejados del
origen del plano complejo que el polo , la función de transferencia
anterior se puede aproximar a bajas frecuencia como12:
Quedándonos ahora los siguientes diagramas a bloques:
Lazo PI en corriente
T
Ia
w
Servo motor de corriente directa
Ø
VaKaKpI .s+KaKiI
s
s
KiI
Kc
Km
Ke
1
s
1
Jt.s+Bm
1
La .s+Ra
Capítulo IV: Modelado y simulación del motor de c.d.
71
Figura 31.- Tercera simplificación del modelo del servomotor en lazo abierto,
solo con un lazo interno de control en corriente.
Figura 32.- Cuarta simplificación del modelo del servomotor en lazo abierto,
solo con un lazo interno de control en corriente.
Resolviendo ahora el modelo hasta la salida en velocidad y denominando a la
función de transferencia como , nos queda:
TIaVa w Ø
s
KiIKe
1
s
1
Jt .s+Bm
1
Kc
IaVa w Ø
s
KiIKe
1
s
1
KcJt.s+KcBm
Capítulo IV: Modelado y simulación del motor de c.d.
72
Considerando que es mucho menor que , el término
podemos aproximarlo a: .
La función de transferencia de la posición angular, a la salida, entre el voltaje
de armadura, a la entrada, se obtiene multiplicando por , y nos queda de la
siguiente manera:
Finalmente tenemos un sistema de segundo orden, del cual podemos definir
las siguientes constantes:
Dichas constantes son claramente positivas, muy similares a las obtenidas
anteriormente en el modelo del servomotor sin realimentación en corriente.
La función de transferencia del sistema en lazo abierto, con un lazo de control
interno en corriente se puede reducir al siguiente bloque:
Figura 33.- Simplificación final del modelo del servomotor en lazo abierto, solo
con un lazo interno de control en corriente.
Representando el modelo obtenido en ecuaciones diferenciales tenemos:
Va Øb
s(s + a )
Capítulo IV: Modelado y simulación del motor de c.d.
73
Se observa también que el sistema tiene dos polos, uno en el origen del plano
complejo y otro del lado izquierdo, por lo que es marginalmente estable debido al
polo que se encuentra en el origen. La demostración se puede realizar, de manera
detallada, utilizando algún método como el de Routh-Hurwitz2 o el de Nyquist3, sin
embargo, por el momento, no es el objetivo.
IV.2.1.- Identificación de los parámetros del motor y del modelo:
Los parámetros más importantes del motor son: resistencia de armadura,
inductancia de armadura, fuerza contraelectromotriz, constante eléctrica,
momento de inercia del motor, la constante de par, fricción viscosa del
motor. En algunos casos el fabricante los proporciona, pero la mayoría de las
veces no los conocemos.
Todos los parámetros nos son indispensables, tanto para la simulación, como
para todo el análisis teórico que se presente del sistema, el cual debe coincidir con
los resultados experimentales.
Algunos de los parámetros mencionados en este apartado son fácilmente
medibles; pero otros no, como o . Por otra parte se podrías
calcular de la ecuación , sin embargo el problema de conocer estos
parámetros persiste.
Existen varios trabajos reportados donde se intentan estimar estos
parámetros14, ya sea en caso de modelado para realizar la simulación y el
control, o para propósitos de control de calidad, sin embargo la estimación de la
fricción viscosa se omite en la mayoría de ellos.
Por lo que respecta a los parámetros incluidos por el lazo interno de corriente,
algunos son definidos por nosotros y otros pueden ser calculados, sin embargo,
aún no conoceríamos la totalidad de ellos.
En nuestro caso la opción utilizada fue la identificación indirecta de todos estos
parámetros, a través del conocimiento de las constantes y Dado que son las
Capítulo IV: Modelado y simulación del motor de c.d.
74
únicas que necesitamos obtener para conocer completamente el sistema. Estas
constantes fueron definidas en las ecuaciones y
La identificaron de estas constantes se realizó en el laboratorio, con la misma
plataforma, y se encuentra reportada en el artículo de investigación4, obteniéndose
los siguientes valores estimados: y .
IV.2.2.- Modelado en lazo cerrado, con un controlador PID:
En principio, si cerráramos el lazo de control en posición con un controlador
PD, el error en estado estacionario no se hace cero. Se obtuvieron mejores
resultados con un controlador PID, por lo que este último controlador fue el
utilizado, quedando el modelo del sistema de la siguiente manera:
Figura 34.- Modelo del servomotor en lazo cerrado con un controlador PID, y
con un lazo interno de control de corriente.
Resolviendo el lazo interno tenemos que:
Multiplicando por nos queda:
Va Øw
Kd
Ki
Kp
1
s
1
s
b
s+a
Capítulo IV: Modelado y simulación del motor de c.d.
75
Figura 35.- Primera simplificación del modelo del servomotor en lazo cerrado
con un controlador PID, y con un lazo interno de control en corriente.
Continuando con la simplificación de los bloques del controlador PI, junto con
el bloque . Nos queda el denominamos .
Figura 36.- Segunda simplificación del modelo del servomotor en lazo
cerrado con un controlador PID, y con un lazo interno de control de corriente.
Finalmente tenemos que la función de transferencia del sistema completo
en lazo cerrado, con un controlador PID en posición y con un lazo interno de
corriente es de tercer orden, y es la siguiente:
Va Ø
Ki
Kp
1
s
b
s +(a+bKd )s2
Va ØbKp .s+(bKi )
s +(a+bKd)s 3 2
Capítulo IV: Modelado y simulación del motor de c.d.
76
IV.2.3.- Estabilidad del sistema de tercer orden en lazo cerrado:
Uno de los requerimientos más importantes de los sistemas de control
lineales, cuando se hace control en lazo cerrado, es garantizar su estabilidad o
precisar en qué condiciones no es estable.
De tal manera que se han desarrollado una gran cantidad de métodos para
comprobar la estabilidad de los diferentes sistema.
Para este propósito, y en nuestro caso, nosotros escogimos el criterio de
estabilidad de Hurwitz3.
Este análisis de estabilidad del sistema en lazo cerrado se realiza de una
manera simple, comparamos el polinomio característico del denominador de
nuestra función de transferencia final, dada por la ecuación , con el
polinomio característico del denominador de los sistemas de tercer orden en
general, a saber:
La condición necesaria según el criterio de estabilidad de Routh3 es que
todos los coeficientes sean positivos, por lo tanto tendrán raíces con partes reales
negativas. La condición de suficiencia para la estabilidad se da si .
Capítulo IV: Modelado y simulación del motor de c.d.
77
En nuestro caso debe cumplirse que: , lo cual es
perfectamente posible, a menos que seleccionemos a casi infinitamente grande
con respecto a las demás constantes y parámetros.
El criterio de estabilidad de Hurwitz se extiende para sistemas de orden
mediante el planteamiento del determinante de un arreglo de los coeficientes, y el
análisis de los determinantes menores.
IV.3.- Simulación:
En el siguiente apartado se presenta la simulación del modelo matemático
encontrado para el sistema del servomecanismo. Para esto se utilizó Matlab-
Simulink y se procedió de la siguiente manera.
Los valores de las constantes y , se sustituyeron en el modelo, por los
identificados y estimados y y se procedió a hacer la simulación,
cerrando el lazo con un controlador PID, para una entrada de referencia tipo
escalón positivo y negativo.
El control en esta simulación se llevó a cabo en posición a la salida contra
voltaje de entrada en la armadura del servomotor, tal como se realizó el modelo.
La sintonización de las ganancias del controlador que proporcionó una mejor
respuesta fue con: .
Figura 37.- Modelo del servomotor en lazo cerrado con un controlador PID, y
con un lazo interno de control en corriente, para simulación.
VaØw
Signal
Generator
Ref /Sal
Kp
7
Kd
0.5
0.11
s
1
s
100
s+2.5
Capítulo IV: Modelado y simulación del motor de c.d.
78
En el diagrama anterior se muestra una salida en velocidad solamente para
efectos de simplificación, sin embargo en el experimento verdadero no contamos
con un sensor de velocidad. Por lo que en realidad la velocidad fue estimada en
Simulink a partir de la derivada de la posición filtrada.
La respuesta del sistema simulado con la sintonización indicada es muy buena,
se podría decir que estamos en el caso críticamente amortiguado para un sistema
de tercer orden, la gráfica de la referencia en posición contra la salida es la
siguiente:
Figura 38.- Gráfica de simulación del modelo del servomotor en lazo cerrado
con un controlador PID en posición, y con un lazo interno de control en corriente.
2988 2990 2992 2994 2996 2998 3000 3002 3004 3006 3008
-1
-0.5
0
0.5
1
Am
plitu
d (v
olts
)
Tiempo
Capítulo V: Control en tiempo real
79
CAPITULO V.- CONTROL EN TIEMPO REAL
En este último capítulo presentamos los resultados experimentales
obtenidos con nuestra plataforma de enseñanza controlando diferentes variables y
utilizando diferentes leyes de control, también se exponen los resultados obtenidos
en el seguimiento de una trayectoria senoidal. Así mismo anotamos las
conclusiones y las perspectivas de trabajo futuro, que percibimos, del trabajo
reportado.
De manera más precisa mencionaremos que se realiza el control en
velocidad y en posición del servomecanismo con controladores PI y PID,
respectivamente.
El software para el control en tiempo real que se carga en la Computadora
Personal se explicó ya en los capítulos anteriores, en esta parte solamente
recordaremos que la plataforma de programación está basada en Matlab 2007ª, la
programación de los controladores se lleva a cabo con los bloques de Simulink, el
cual se encuentra trabajando bajo la aplicación de tiempo real Ardence RTX 7.0-
WinCon 5.2.
V.1.- Control de velocidad en tiempo real del servomecanismo:
El modelo de Simulink utilizado, en este caso, está basado en un controlador
PI, con una velocidad de referencia de 10, lo cual equivale, en la realidad, a
aproximadamente 300 rpm.
Dado que nuestra plataforma no cuenta con un sensor de velocidad, ésta es
estimada a partir de la posición, lo anterior mediante un derivador con un filtro
pasa bajas, mas otro filtro pasa bajas. Se requirieron los filtros mencionados dado
que la señal de posición, para esta tarea, presenta mucho ruido, y la derivada
amplifica las altas frecuencia.
Para este experimento, la sintonización se llevó a cabo de manera empírica,
dado que no se realizó el modelo en lazo cerrado considerando a la velocidad
como la variable a controlar. Los valores de las ganancias que nos permitieron el
mejor desempeño del controlador, son: y
En la siguiente figura 33 se presenta la pantalla completa de la Computadora
Personal al momento de estar realizando el control de velocidad, en ella se
observan varias ventanas; la de los bloques del controlador en Simulink, la de
Capítulo V: Control en tiempo real
80
Wincon para el arranque y paro del programa, las de las ganancias y del
controlador, y la de la gráfica de las señales de referencia contra la salida en
velocidad.
Como lo explicamos con anticipación, el puerto serie de la PC pude manejar
una velocidad de comunicación máxima de 115,200 bauds, ésta velocidad es la
que estamos usando para la comunicación con el dsPIC de nuestra plataforma, de
tal manera que considerando además el número de datos que se transfieren; el
máximo periodo de muestreo que podemos utilizar, en nuestro controlador de
Simulink, es de 2 mseg.
Figura 39.- Pantalla completa de la computadora personal para el control de
velocidad, incluyendo todas las ventanas.
De manera más detallada, en la siguiente figura 34 se muestra la gráfica de
las señales de interés, es decir, de la referencia contra la salida en velocidad. En
esta figura se pueden apreciar pequeñas oscilaciones en el seguimiento que se
hace de la velocidad de referencia, lo anterior es debido a las variaciones que se
tienen en la estimación de la velocidad, ya que no la estamos sensando. No
obstante podemos observar que el control de velocidad se realiza correctamente.
Capítulo V: Control en tiempo real
81
Figura 40.- Gráfica en tiempo real de la referencia contra la salida en velocidad,
utilizando un controlador PI.
V.2.- Control de posición en tiempo real del servomecanismo:
El modelo de Simulink utilizado en este segundo caso, está basado en un
controlador PID, utilizando como referencia, en posición, una señal cuadrada de
amplitud +1, lo cual equivale a una vuelta, y con una frecuencia de 2 mseg.
La parte derivativa del controlador se implementa con un derivador junto con
un filtro pasa bajas, mas otro filtro pasa bajas, de la siguiente manera:
Figura 41.- Implementación de la parte deriva del controlador a partir de una
salida en posición.
Los valores de las ganancias que nos permitieron el mejor desempeño del
controlador son: y Si comparamos estas ganancias
yp1
300
s+300
300s
s+300y
1
Capítulo V: Control en tiempo real
82
con las utilizadas en la simulación llevada a cabo en el capítulo anterior, podemos
comprobar que son muy parecidas. A saber: .
Consideramos que las pequeñas diferencias que se observan son debidas a
varios factores; a las dinámicas no modeladas del servomotor que se está
controlado, a las desviaciones que existen entre los parámetros reales de la planta
y los estimados, y a las diferencias que siempre se presentan entre una simulación
y un control en tiempo real.
En la siguiente figura 36 se presenta la pantalla completa de la Computadora
Personal al momento de estar realizando el control de posición en tiempo real, en
ella se observan varias ventanas; la de los bloques del controlador en Simulink, la
de Wincon para el arranque y paro del programa, las de las ganancias y
del controlador, y la de la gráfica de las señales de referencia contra la salida
en posición.
Figura 42.- Pantalla completa de la computadora personal con el control de
posición, incluyendo todas las ventanas.
De manera más detallada, siguiente figura 37 nos muestra la gráfica de las
señales de interés, es decir, de la referencia contra la salida en posición. En esta
figura se puede apreciar la respuesta críticamente amortiguada de nuestro sistema
de segundo orden respecto a una entrada escalón. Es decir podemos observar
que el control se realiza correctamente.
Capítulo V: Control en tiempo real
83
Figura 43.- Gráfica en tiempo real de la referencia contra la salida en posición,
utilizando un controlador PID.
También de manera detallada, en la siguiente figura 38 se muestra la
gráfica del error entre la señal deseada en posición y la salida real del sistema,
aquí se observa que prácticamente solo existe error cuando cambia la señal de
referencia, es decir en el estado transitorio, y que en el estado estacionario es
error es prácticamente cero.
Figura 44.- Gráfica de la señal de error para el control de posición.
Capítulo V: Control en tiempo real
84
V.3.- Control en posición en tiempo real de un brazo robótico:
De manera similar al trabajo presentado en el inciso anterior, en este
apartado se presentan los resultados experimentales del control en posición con
un controlador PID. Solo que en esta parte se le agregó al servomecanismo un
pequeño brazo robótico.
No es el objetivo de esta tesis presentar el modelo matemático del brazo.
No obstante se consideró importante probar nuestra plataforma con un mecanismo
de este tipo. Al respecto, puede observar que fue posible controlarlo muy bien con
un controlador PID.
En este caso los valores de las ganancias que nos permitieron el mejor
desempeño del controlador son: y las que no
parecidas a las utilizadas en la simulación llevada a cabo en el capítulo anterior,
dado que en este caso estamos controlando un bracito robótico.
Lo anterior se puede verificar en la siguiente pantalla de la computadora
personal corriendo en tiempo real.
Figura 45.- Pantalla completa de la computadora personal con el control de
posición de un brazo robótico.
En la siguiente figura 40 se muestra la gráfica de las señales de interés, es
decir, de la referencia contra la salida en posición del brazo. En esta figura se
Capítulo V: Control en tiempo real
85
puede apreciar la respuesta críticamente amortiguada de nuestro sistema de
segundo orden respecto a una entrada escalón.
Figura 46.- Gráfica en tiempo real de la referencia contra la salida en posición del
brazo robótico, utilizando un controlador PID.
También de manera detallada, en la siguiente figura 41 se muestra la
gráfica del error entre la señal deseada en posición y la salida real del sistema,
aquí se observa que prácticamente solo existe error cuando cambia la señal de
referencia, es decir en el estado transitorio, y que en el estado estacionario el error
es prácticamente cero.
Figura 47.- Gráfica de la señal de error para el control de posición para un
brazo robótico.
Capítulo V: Control en tiempo real
86
V.4.- Seguimiento de una trayectoria senoidal:
Existen dos problemas fundamentales en el Control Automático; la
regulación y el seguimiento de una trayectoria. La regulación la podemos
entender como el sostenimiento de una señal en determinado punto por un lapso
de tiempo determinado. Es decir como el control en posición. El seguimiento de
una señal no requiere mayor explicación.
En este apartado presentamos los resultados experimentales del
desempeño de nuestra plataforma realizando el seguimiento de una señal de
referencia senoidal. El experimento fue realizado con el brazo robótico.
La siguiente figura 42 nos muestra el desempeño de nuestra plataforma
tratando de seguir una señal senoidal de amplitud 1 (una vuelta), con un
controlador PID. Se observa un buen desempeño de la señal de salida, solamente
que con un pequeño desfasamiento. La sintonización del controlador utilizada en
este caso es : .
Figura 48.- Grafica del seguimiento de una señal senoidal con un controlador PID.
Se puede verificar también el desempeño de la plataforma y del controlador
en la siguiente figura 43, donde se muestra el error en el seguimiento.
Capítulo V: Control en tiempo real
87
Figura 49.- Error de seguimiento de una señal senoidal.
V.5.- Conclusiones:
En la parte de hardware de la plataforma de enseñanza podemos concluir
que la utilización del DSC (dsPIC30F4012) nos permite reducir la cantidad de
circuitos y por lo tanto el tamaño de la tarjeta electrónica principal. De esta manera
el problema de diseño de la plataforma se traslada a un problema de
programación, como es la tendencia en la actualidad y debemos tenerlo presente.
La plataforma tiene integrado también, en un espacio muy reducido, el
servomotor y el amplificador de potencia para moverlo, así como los aislamientos
de la etapa digital del microcontrolador con la etapa de potencia, lo cual la hace
ver como un producto muy pequeño, modular y completo.
Este DSC es además de la serie motor control (MC), por lo que cuenta con
módulos especializados para el control de motores, como el lector de
codificadores de posición ópticos y las salidas de control PWM, lo cual le permite
hacer las veces de una mini tarjeta de adquisición de datos, permitiéndonos
prescindir de ella para poder realizar el control en tiempo real, como lo podemos
constatar a partir de los resultados mostrados en el capítulo anterior.
Se comprobó también que el DSC corriendo a 29.49 MIPS realiza de
manera holgada y sin ningún problema todas las tareas que se le han
programado, cumpliendo con el periodo de muestreo que el controlador le
requiere. La limitación que se tendría en este sentido, sería debida a la velocidad
máxima de comunicación del puerto serie de la computadora personal.
Capítulo V: Control en tiempo real
88
Actualmente el DSC dsPIC30F4012 utilizado tiene un costo de 5.87 USD.
Lo anterior nos permite contar con una plataforma de control de bajo costo, como
lo planteamos en los objetivos de este trabajo.
Mediante el estudio de los resultados del trabajo precedente, se ha
comprobado también que es posible enlazar el software de tiempo real de
Simulink con nuestra plataforma y realizar control, sin que se presente problema
alguno.
En consecuencia se puede programar cualquier ley de control que Simulink
permita, probarla con nuestra plataforma de enseñanza y desarrollar diferentes
dispositivos mecatrónicos.
Finalmente podemos decir que los objetivos de la tesis fueron cumplidos, ya
que en es posible desarrollar este tipo de plataformas de bajo costo, para
contribuir a una mejor enseñanza práctica del control automático,
V.6.- Trabajo futuro:
Como trabajo futuro se propone, antes que todo, que la plataforma pueda
ampliarse para controlar varios servomecanismos a la vez, es decir que pueda
cerrar varios lazos de control. Para esto se requeriría utilizar algún dsPIC de la
segunda generación, como el dsPIC33FJ128MC804; el cual cuenta con dos
módulos para lectura de codificadores de posición ópticos, dos salidas analógicas,
varias salidas PWM, y varias entradas analógicas.
También es importante utilizar en la plataforma algún puerto de
comunicación alámbrico más rápido y más actual, dado que el puerto serie que
utilizamos en este trabajo, están empezando a dejar de ser incluido en algunas de
las computadoras personales más actuales. Para resolver este problema a futuro,
proponemos que se rediseñe la plataforma con el puerto de comunicación USB
2.0 en el modo high speed o con el USB 3.0.
En el aspecto del control, sería importante probar el desempeño de la
plataforma con algunas otras leyes de control.
La plataforma también podría ser habilitada para comunicarse con la
computadora personal de modo inalámbrico. Por ejemplo, agregándole un módulo
bluetooth, ampliando de esta manera su campo de aplicación.
Capítulo V: Control en tiempo real
89
Se puede utilizar un microcontrolador con puerto Ethernet para entrar a los
campos de la telepresencia o telecontrol, lo cual nos permitiría controlar algún
servomecanismo a distancia o desde una página web.
El dsPIC que estamos usando también cuenta con del puerto CAN, el cual
nos permitiría hacer aplicaciones de control de servomotores en ambientes de
mucho ruido eléctrico, como en automóviles, ya que canal CAN trabaja la
comunicación en modo diferencial.
Es también evidente que el prototipo de la plataforma puede utilizarse para
el diseño de los diferentes servomecanismos que se requieran como productos
finales.
Por otra parte, todas las tareas que se realizan fuera del DSC, como el
controlador completo, el cálculo de la velocidad, etc. pueden ser discretizadas y
embebido en el dsPIC. En este caso trabajaría como un módulo de control
completo e independiente de la computadora personal, o usar ésta solo para la
sintonización del controlador y el despliegue de las variables de control.
En la parte de programación se podría desarrollar la plataforma para
trabajar con software libre. Por ejemplo Linux, lo cual eliminaría los costos de las
licencias.
En este mismo sentido, sería conveniente utilizar otro software para el
control de tiempo real, esto en sustitución del Ardence-Wincon, ya que este
paquete tiene un costo más o menos elevado y es un tanto inaccesible para las
escuelas públicas de educación superior del ramo. Proponemos algunos de los
targets que vienen incluidos como toolbox de Matlab, por ejemplo el xPC Target o
Real-Time Windows Target.
Bibliografía, páginas web y apéndices
90
Bibliografía y Páginas Web:
[1].- Eugene B. Canfield, Electromechanical control systems and devices, Ed.
Krieger ,1987.
[2].- Benjamin C. Kuo, Automatic Control Systems, Eigth Edition, Edit. Adison Wiley
[3].- Katsuhiko Ogata, Ingeniería de Control Moderno 4ª. Edición, Edit. Pearson,
Prentice Hall.
[4].- SORIA A.; GARRIDO, R. & CONCHA A.- “Low Cost Closed loop Identification of a DC Motor”. International Conference on Electrical Engineering, Computing Science and Automatic Control (CCE 2010). Del 8-10 de septiembre de 2010. Tuxtla Gutiérrez, Mexico.
[5].- C++ Programing Languaje, Bjarne Stroustrup, 1981
[6].- The C Programing Languaje, Brian W. Kernighan
[7].- dsPIC30F4011/4012 Data Sheet, Microchip
[8].- dsPIC Language Tools Libraries, Microchip
[9].- Family Reference Manual dsPIC30, Microchip
[10].- dsPIC30F/33F Programer`s Reference Manual, Microchip
[11].- dsPIC Diseño práctico de aplicaciones, José María Angulo Usategui, Aritza Etxebarría Ruiz, Ignacio Angulo Martínez, Iván Trueba Parra, Mc Graw Hill 2008.
[12].- Estudio comparativo de métodos de identificación en lazo cerrado para un
servomecanismo, Antonio Concha Sánchez, Tesis de Maestría, CINVESTAV,
2009.
[13].- The Mechatronics Control Kit for education and control, Mark W. Spong,
Daniel J. Block and Karl Åström, IEEE International Conference on Control
Aplications 2001.
[14].- Control en posición de servomecanismos de corriente directa, José Luis
López Mercado, Tesis de Maestría, CINVESTAV, 2005.
[15].- http://www.beyondlogic.org/epp/epp.htm
[16].- http://www.beyondlogic.org/serial/serial.htm#14
Bibliografía, páginas web y apéndices
91
Anexo A:
Diagrama eléctrico de la fuente de alimentación:
Title
Size Document Number Rev
Date: Sheet of
José de Jesús Meza Serrano 1.0
FUENTES para la ENTREFAZ EPP-dsPIC-PUENTE "H"
A
1 1Tuesday , June 07, 2011
J3
5v . Puente "H"
12
J2
5v . dsPIC
12
J1
32V. SERVOMOTOR
12
+
C30.1 uF
U5LM7805/TO
VIN1
GN
D3
VOUT2
U4LM7805/TO
VIN1
GN
D3
VOUT2
35v . 35v .
+
C62200 uF
+-
D11
PUENTE DE DIODOS
4
1
2
3
T1
TRANSFORMADOR
1 5
6
4 8
JP1SWITCH 127VAC 10 amp.
.1
.2
.3
.4
J1CONECTOR AC
12
3
SI1
FUSIBLE 250VCA 3amp.
+
C20.1 uF+
C15000 uF
35v
+
C30.1 uF
+
C30.1 uF35v .
35v .
2W005M
2W005M
C I N V E S T A V
R13.3k. 1/4w.
R2470 1/4w.
R1470 1/4w.
127VCA - 24VCA, 2 amp.
D16
LED
D15
LED
D14
LED
1
0
CP1004
50v .
+-
D12
PUENTE DE DIODOS
41
23
T2
TRANSFORMADOR
1 5
6
4 8
+
C42200 uF
127VCA - 9VCA, 300 mamp.
+
C50.1 uF
+-
D13
PUENTE DE DIODOS
4
1
2
3
T3
TRANSFORMADOR
1 5
6
4 8
35v
127VCA - 9VCA, 300 mamp.
50v .
Bibliografía, páginas web y apéndices
92
Anexo B:
Diagrama electrónico de la tarjeta principal con el dsPIC30F4012:
JP3PUERTO SERIE
1 2 3 4 5
Title
Size Document Number Rev
Date: Sheet of
José de Jesús Meza Serrano 1.0 D
ENTREFAZ SERIAL dsPIC-PC con Puente H para Plataforma de Eseñanza
A
1 1Tuesday , June 07, 2011
5 V
5 V
5 V
JP1CODIFICADOR DE POS.
1 2 3 4 5
5 V
SW1
JP2DEPURADOR
1 2 3 4 5
R2
4.7K.
U2
PUENTE "H" LMD18200
BOOTSTRAP 11
OUTPUT 12
BRAKE INPUT4
PWM INPUT5
DIR. INPUT3
Vs POWER S.6
GROUND7
CURRENT SENSE OUT.8
THERMAL FLAG OUT.9
OUTPUT 210
BOOTSTRAP 211
C510nf .
C41200 uf .
R31K.
C610nf .
C3 0.1 uf .
C7
4 uf .
C I N V E S T A V
U3
dsPIC30F4012
MCLR/Vpp1
EMUD32
EMUC33
AN24
AN35
AN46
AN57
Vss8
OSC19
OSC210
U1ATX11
U1ARX12
Vdd13
EMUD214
EMUC215
FLTA16
PGD17
PGC18
Vss19
Vdd20
PWM3H21
PWM3L22
PWM2H23
PWM2L24
PWM1H25
PWM1L26
AVss27
AVdd28
C8
0.1 uf .
7.37MHz
C233 pf .
C1
33 pf .
J1GND, 5v . PIC
12
J2GND, 30v . POT
12
R1 10K.
5 V
5 V
PGC
J3
SALIDA MOTOR
12
Bibliografía, páginas web y apéndices
93
Anexo C:
Circuito impreso de la tarjeta electrónica principal, lado componentes.
Anexo D:
Costos del Software de la plataforma:
Los precios de las licencias que se presentan a continuación son grupales y
para uso académico, el grupo es de 25 usuarios. Exceptuando la de Visual Studio
que es por máquina.
PARTIDA PRODUCTO TERMINO PRECIO ($USD)
1 Suite Matlab,Simulink, Symbolic Math Toolbox
Perpetua 1,375
2 Real-Time Workshop Perpetua 750
3 WinCon 5.2 Perpetua 500
4 Ardence 7.0 Perpetua 500
5 Visual Studio 2008 Anual 38
Total 3,163
Bibliografía, páginas web y apéndices
94
Anexo E:
Parámetros y características del DSC dsPIC30F4012:
Parameter Name Value
Architecture 16-bit
CPU Speed (MIPS) 30
Memory Type Flash
Program Memory (KB) 48
RAM Bytes 2,048
Temperature Range C -40 to 125
Operating Voltage Range (V) 2.5 to 5.5
I/O Pins 20
Pin Count 28
System Management Features PBOR, LVD
Internal Oscillator 7.37 MHz, 512 kHz
nanoWatt Features Fast Wake/Fast Control
Digital Communication Peripherals 1-UART, 1-SPI, 1-I2C
Analog Peripherals 1-A/D 6x10-bit @ 1000(ksps)
CAN (#, type) 1 CAN
Capture/Compare/PWM Peripherals 4/2
Motor Control PWM Channels 6
Quatrature Encoder Interface (QEI) 1
Timers 5 x 16-bit 2 x 32-bit
Parallel Port GPIO
Hardware RTCC No
DMA 0
Features:
High-Performance Modified RISC CPU:
Modified Harvard architecture
C compiler optimized instruction set architecture
84 base instructions with flexible addressing modes
24-bit wide instructions, 16-bit wide data path
16 x 16-bit working register array
Up to 30 MIPs operation:
- DC to 40 MHz external clock input
- 4 MHz-10 MHz oscillator input with PLL active (4x,
8x, 16x)
Peripheral and External interrupt sources
8 user selectable priority levels for each interrupt
Bibliografía, páginas web y apéndices
95
4 processor exceptions and software traps
Primary and Alternate interrupt Vector Tables
DSP Engine Features:
Modulo and Bit-Reversed Addressing modes
Two, 40-bit wide accumulators with optional saturation
logic
17-bit x 17-bit single cycle hardware fractional/ integer
multiplier
Single cycle Multiply-Accumulate (MAC) operation
40-stage Barrel Shifter
Dual data fetch
Peripheral Features:
High current sink/source I/O pins: 25 mA/25 mA
Optionally pair up 16-bit timers into 32-bit timer modules
3-wire SPI™ modules (supports 4 Frame modes)
I2C™ module supports Multi-Master/Slave mode and 7-bit/10-
bit addressing
Addressable UART modules with FIFO buffers
Motor Control PWM Module Features:
Complementary or Independent Output modes
Edge and Center Aligned modes
Multiple duty cycle generators
Dedicated time base with 4 modes
Programmable output polarity
Dead time control for Complementary mode
Manual output control
Trigger for synchronized A/D conversions
Quadrature Encoder Interface Module Features:
Phase A, Phase B and Index Pulse input
16-bit up/down position counter
Count direction status
Position Measurement (x2 and x4) mode
Programmable digital noise filters on inputs
Alternate 16-bit Timer/Counter mode
Interrupt on position counter rollover/underflow
Analog Features:
10-bit 1 Msps Analog-to-Digital Converter (A/D)
A/D Conversion available during Sleep and Idle
4 Sample/Hold Channels
Multiple Conversion Sequencing Options
Special Microcontroller Features:
Enhanced Flash program memory:
- 10,000 erase/write cycle (min.) for industrial
temperature range, 100K (typical)
Data EEPROM memory:
- 100,000 erase/write cycle (min.) for industrial
temperature range, 1M (typical)
Self-reprogrammable under software control
Power-on Reset (POR), Power-up Timer (PWRT) and Oscillator
Start-up Timer (OST)
Flexible Watchdog Timer (WDT) with on-chip low power RC
Bibliografía, páginas web y apéndices
96
oscillator for reliable operation
Fail-Safe clock monitor operation
Detects clock failure and switches to on-chip low power RC
oscillator
Programmable code protection
In-Circuit Serial Programming™ (ICSP™)
Programmable Brown-out Detection and Reset generation
Selectable Power Management modes
- Sleep, Idle and Alternate Clock modes
CMOS Technology:
Low power, high speed Flash technology
Wide operating voltage range (2.5V to 5.5V)
Industrial and Extended temperature ranges
Low power consumption
Recommended