escuela superior de ingenierÍa …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfiv resumen en...

121
INSTITUTO POLITÉCNICO NACIONAL SECCIÓN DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD ZACATENCO SISTEMA DE CONTROL DE POSICIÓN CON ACELERACIÓN PARA MOTORES DE PASOS CON UN MICROCONTROLADOR MCF51QE128 TESIS PARA OBTENER EL GRADO DE MAESTRÍA EN CIENCIAS EN INGENIERÍA ELECTRÓNICA PRESENTA ING. ROCÍO GABRIELA VARGAS VÁZQUEZ DIRECTORES DE TESIS DR. JOSÉ HIRAM ESPINA HERNÁNDEZ DR. JOSÉ ALBERTO PÉREZ BENÍTEZ MÉXICO, D. F., JUNIO 2014

Upload: tranthu

Post on 27-Sep-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

INSTITUTO POLITÉCNICO NACIONAL

SECCIÓN DE ESTUDIOS DE POSGRADO E INVESTIGACIÓN

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA

UNIDAD ZACATENCO

SISTEMA DE CONTROL DE POSICIÓN CON

ACELERACIÓN PARA MOTORES DE PASOS CON UN

MICROCONTROLADOR MCF51QE128

TESIS PARA OBTENER EL GRADO DE

MAESTRÍA EN CIENCIAS EN INGENIERÍA ELECTRÓNICA

PRESENTA

ING. ROCÍO GABRIELA VARGAS VÁZQUEZ

DIRECTORES DE TESIS

DR. JOSÉ HIRAM ESPINA HERNÁNDEZ

DR. JOSÉ ALBERTO PÉREZ BENÍTEZ

MÉXICO, D. F., JUNIO 2014

Page 2: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

I

Page 3: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

II

Page 4: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

III

A Dios,

a mi esposo,

a mi mamá y hermanos,

a mis abuelitos, tios y primos

a mis suegros y mi nueva familia.

Page 5: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

IV

Resumen

En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para motores

de pasos basado en el microcontrolador MCF51QE128. El sistema de control está formado

por una tarjeta de control y tres tarjetas de accionamiento de motores de pasos que se

interconectan entre sí mediante una quinta tarjeta que establece el bus de comunicación. Estas

cinco tarjetas se ensamblaron en un chasis en forma de rack para contar con un módulo de

control portable con la finalidad de ser utilizado en cualquier sistema mecánico accionado

por motores de pasos. El algoritmo desarrollado en el microcontrolador permite generar un

perfil de velocidad de tipo trapezoidal en base a las características del motor de pasos - carga.

El sistema de control a lazo abierto permite el control de hasta tres motores de pasos de forma

simultánea gracias a la utilización de los tres temporizadores independientes con que cuenta

el microcontrolador. Se establecieron en el sistema implementado dieciocho comandos

divididos en dos grupos, uno para la caracterización del mecanismo y el otro para la

caracterización de la trayectoria. Estos comandos se introducen a través de una interfaz RS-

232. Los perfiles de velocidad generados por cada temporizador del microcontrolador fueron

analizados mediante un programa desarrollado en Matlab que permitió validar los perfiles de

velocidad. El sistema de control desarrollado se acopló a un sistema mecánico comercial de

tipo cartesiano. Los resultados obtenidos con el sistema cartesiano avalan que el sistema de

control propuesto permite un correcto posicionamiento del cabezal del sistema cartesiano en

un tiempo relativamente pequeño. Este trabajo permitirá que los sistemas experimentales

desarrollados en el Laboratorio de Evaluación No Destructiva Electromagnética reduzcan el

tiempo total de medición y además permitirá la generación de trayectorias diferentes.

Page 6: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

V

Abstract

This work presents the development of an open loop control system for stepper motors based

on the microcontroller MCF51QE128. The control system is composed of a control card and

three drive cards which are interconnected by the communication bus using a fifth card.

These five cards are assembled in a rack to have a portable control module that can be

attached to in any mechanical system driven by stepper motors. The algorithm implemented

in the microcontroller generates a trapezoidal velocity profile according to the characteristics

of the stepper motor load combination. The control system allows controlling three stepper

motors simultaneously, by using the three independent timers of the microcontroller.

Eighteen commands were established and divided in two groups, one for the characterization

of the mechanism and the second one for the characterization of trajectories. The commands

are introduced through the RS-232 serial interface. The velocity profiles generated by each

timer of the microcontroller were analyzed using a program developed in Matlab, which

helped validate the trapezoidal velocity profile. The designed control system was connected

to a commercial XYZ table. The results using the designed control system with the XYZ

table allowed a good performance positioning along the three axes. This work will help to

optimize the experimental systems developed at the Laboratory of Electromagnetic

Nondestructive Evaluation.

Page 7: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

VI

Acronimos y Abreviatura

A Ampere

BKGD Depuración en segundo plano (Background Debug)

BDC Control de depuración en segundo plano (Background Debug Controller)

CI Circuito Integrado

DSP Procesador Digital de Señales (Digital Signal Processor)

f.e.m Fuerza Electromotriz

f.m.m Fuerza Magnetomotriz

FPGA Dispositivo basado en una matriz de bloques lógicos configurable

(Field Programmable Gate Array)

ICS Fuente de Reloj Interno (Internal Clock Source)

IDE Entorno Integrado de Desarrollo (Integrated Development Enviroment)

IRQ Solicitud de Interrupción (Interrupt Request)

Kbps Kilo bits por segundo

MB Mega Bytes

MIPS Millones de Instrucciones Por Segundo

NRZ Sin retorno a cero

PC Computadora Personal (Personal Computer)

PPG Generador de Pulsos Programable (Programmable Pulse Generator)

PWM Modurlación por ancho de pulso (pulse width modulation)

RAM Memoria de Acceso Aleatorio (Random Acces Memory)

RGPIO Puertos Generales de Entrada Salida (Rapid General Purpose Input Output)

RS232 Estandar Recomendado 232 (Recommended Standard 232)

SCI Interfaz de Comunicación Serial (Serial Communication Interface)

SCARA Brazo robótico articulado seleccionador

(Selective Compliant Articulated Robot Arm)

TMP Temporizador

USB Bus Universal Serie (Universal Serie Bus)

V Voltaje

Page 8: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

VII

�⃗⃗� Fuerza electromagnética

𝑞 Carga eléctrica

�⃗⃗� Velocidad de una carga eléctrica

�⃗⃗� Campo magnético

J Densidad de corriente

𝑣𝑑 velocidad de deriva

I Corriente eléctrica

𝜏 Par de torsión

𝐹𝑛 Componente normal del vector Fuerza electromagnética

𝐹𝑡 Componente tangencial del vector Fuerza electromagnética

N Numero de vueltas del inducido

A Área del inducido

J Inercia

Page 9: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

VIII

Índice General

Justificación ............................................................................................................................ 1

Introducción ............................................................................................................................ 2

Objetivo General................................................................................................................. 3

Objetivos Particulares ......................................................................................................... 3

Organización del trabajo de tesis ........................................................................................ 3

Capítulo 1. Revisión bibliográfica y estado del arte ............................................................... 5

1.1 Introducción ............................................................................................................. 5

1.2 Motores eléctricos .................................................................................................... 5

1.3 Funcionamiento de los motores de paso .................................................................. 8

1.3.1 El motor de pasos de reluctancia variable ............................................................ 9

1.3.2 Motor de pasos de Imán Permanente ................................................................. 11

1.3.3 Motor de pasos Híbrido ...................................................................................... 11

1.4 Características de los motores de pasos ................................................................. 14

1.4.1 Perfiles de velocidad .......................................................................................... 17

1.5 Sistemas de Control de motores de pasos .............................................................. 18

1.5.1 Sistema de control a lazo abierto........................................................................ 19

1.5.2 Sistema de control a lazo cerrado ....................................................................... 20

1.6 Sistemas mecánicos ............................................................................................... 21

Page 10: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

IX

1.6.1 Sistema mecánico cartesiano .............................................................................. 21

1.6.2 Sistema mecánico Cilíndrico .............................................................................. 22

1.6.3 Sistema mecánico esférico ................................................................................. 23

1.6.4 Sistema mecánico articulado .............................................................................. 23

1.6.5 Sistema mecánico SCARA................................................................................. 24

1.7 Estado del arte de los sistemas de control de motores de pasos ............................ 24

Capítulo 2. Descripción e implementación del hardware para el sistema de control ........... 29

2.1 Introducción ........................................................................................................... 29

2.2 Características del sistema ..................................................................................... 29

2.3 Sistema de control .................................................................................................. 30

2.3.1 Tarjeta de Control............................................................................................... 31

2.3.1.1 Microcontrolador MCF51QE128 ................................................................... 32

2.3.1.2 El circuito integrado MAX232 ....................................................................... 35

2.3.2 Tarjetas de Accionamiento ................................................................................. 38

2.3.2.1 El CI L297 ...................................................................................................... 38

2.3.2.2 El CI L298 ...................................................................................................... 40

2.3.3 Tarjeta del Bus de Comunicación ...................................................................... 44

2.3.4 Rack y conectores............................................................................................... 47

2.4 Resultados del Capítulo ......................................................................................... 48

Page 11: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

X

Capítulo 3. Diseño e implementación del algoritmo para el sistema de control .................. 49

3.1 Introducción ........................................................................................................... 49

3.2 Los comandos de control implementados .............................................................. 49

3.3 Algoritmo de control .............................................................................................. 52

3.3.1 Perfil de velocidad de tipo trapezoidal alterno ................................................... 56

3.4 Funciones Específicas del MCF51QE12 ............................................................... 58

3.4.1 Comunicación serie ............................................................................................ 59

3.4.2 Generador de Pulso Programable (GPP) ............................................................ 60

3.4.3 Excepciones, interrupciones y prioridades ......................................................... 61

3.5 Resultados del Capítulo ......................................................................................... 63

Capítulo 4. Mediciones y evaluación del sistema de control ............................................... 65

4.1 Introducción ........................................................................................................... 65

4.2 Evaluación de la tarjeta de control del sistema de control propuesto .................... 65

4.3 Evaluación del sistema de control con un sistema mecánico de tipo cartesiano ... 69

4.3.1 Caracterización experimental del sistema mecánico .......................................... 71

4.4 Resultados del Capítulo ......................................................................................... 73

Conclusiones ......................................................................................................................... 74

Trabajo a Futuro ................................................................................................................... 76

Apéndice A ........................................................................................................................... 78

Page 12: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

XI

Apéndice B ........................................................................................................................... 99

Bibliografía ......................................................................................................................... 101

Agradecimientos ................................................................................................................. 103

Page 13: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

XII

Índice de Figuras

Figura 1.1 Fuerza sobre una carga móvil en un conductor que transporta corriente. ............. 5

Figura 1.2 Espira rectangular por la que circula una corriente y está inmersa en un campo

magnético uniforme. ............................................................................................................... 7

Figura 1.3 Elementos de un motor de corriente continua. ...................................................... 8

Figura 1.4 Componentes de las fuerzas entre los dientes del estator y del rotor de un motor

de pasos. ................................................................................................................................. 9

Figura 1.5 Diagrama y principio de operación de un motor de pasos de reluctancia variable

de 30° por paso. .................................................................................................................... 10

Figura 1.6 Motor de pasos de imán permanente. .................................................................. 11

Figura 1.7 Motor de pasos Híbrido de 200 pasos por vuelta. El detalle muestra la alineación

de los polos del rotor y el estator indicando el ángulo de 1.8° por paso. ............................. 12

Figura 1.8 Comparación del devanado convencional vs bifilar. .......................................... 13

Figura 1.9 Circuito para conexión (a) unipolar y (b) bipolar .............................................. 13

Figura 1.10 Curva de Par de torsión vs Posición angular del rotor de un motor de pasos ideal.

.............................................................................................................................................. 14

Figura 1.11 Formas de onda típicas de la corriente que circula a velocidad a) Baja b) Media

c) Alta ................................................................................................................................... 16

Figura 1.12 Curvas típicas de arranque y máximas mostrando los efectos del momento de

inercia de la carga para el par de arranque (JL=Inercia del motor; JM=Inercia de la carga) . 17

Figura 1.13 Perfil de velocidad de tipo trapezoidal. ............................................................. 18

Figura 1.14 Perfil de velocidad de tipo parabólico. .............................................................. 18

Page 14: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

XIII

Figura 1.15 Diagrama de bloques de un sistema de control automático. ............................. 19

Figura 1.16 Diagrama en bloques de un sistema de control de posición a lazo abierto. ...... 20

Figura 1.17 Diagrama de bloques de un sistema de control de posición a lazo cerrado. ..... 21

Figura 1.18 Espacio de trabajo de un sistema mecánico de tipo cartesiano. ........................ 22

Figura 1.19 Espacio de trabajo de un sistema mecánico tipo cilíndrico............................... 22

Figura 1.20 Área de trabajo de un sistema mecánico tipo esférico. ..................................... 23

Figura 1.21 Espacio de trabajo de un sistema mecánico tipo articulado. ............................. 23

Figura 1.22 Espacio de trabajo de un sistema mecánico tipo SCARA................................. 24

Figura 1.23 Circuito propuesto en [10]. ............................................................................... 25

Figura 2.1 Sistema de medición experimental con el sistema de control actual. ................. 29

Figura 2.2 Diagrama de bloques del sistema de medición experimental con el sistema de

control propuesto. ................................................................................................................. 30

Figura 2.3 Diagrama en bloques del sistema de control propuesto. ..................................... 31

Figura 2.4 Diagrama de bloques del microcontrolador MCF51QE128. .............................. 32

Figura 2.5 Sistema básico de conexión del MCF51QE128. ................................................. 35

Figura 2.6 Diagrama esquemático de la tarjeta de control. .................................................. 37

Figura 2.7 Diagrama de bloques del CI L297. ..................................................................... 38

Figura 2.8 Secuencia a medio paso basada en el código Gray. ............................................ 39

Figura 2.9 Secuencia a paso completo a) una fase activa b) dos fases activas ..................... 39

Page 15: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

XIV

Figura 2.10 Diagrama de bloques del CI L298. ................................................................... 41

Figura 2.11 Diagrama de bloques de la interconexión de los circuitos L297 y L298. ........ 42

Figura 2.12 Esquema de conexión para el conector DB9 hembra........................................ 42

Figura 2.13 Diagrama esquemático de la tarjeta de accionamiento. .................................... 43

Figura 2.14 Diagrama esquemático de la tarjeta del bus de comunicación. ......................... 46

Figura 2.15 Rack del sistema de control............................................................................... 47

Figura 2.16 Carátula de la tarjeta de accionamiento con indicadores LED. ........................ 47

Figura 3.1 Interfaz gráfica del puerto serie CuteCom para Opensuse de Linux. ................. 52

Figura 3.2 Diagrama de flujo del programa principal. ......................................................... 53

Figura 3.3 Diagrama de flujo de la interrupción por comunicación serial. .......................... 54

Figura 3.4 Diagrama de flujo de la función que calcula la generación de perfil de velocidad.

.............................................................................................................................................. 55

Figura 3.5 Análisis de la gráfica del perfil de velocidad. ..................................................... 55

Figura 3.6 Perfil de velocidad de tipo trapezoidal alterno debido al criterio de xa. ............. 57

Figura 3.7 Diagrama de flujo del generador de pulsos programable 1................................. 57

Figura 3.8 Asignación de interrupciones por niveles y prioridades en el controlador de

interrupciones del MCF51QE128. ........................................................................................ 62

Figura 4.1 Tren de pulsos par un desplazamiento de 24 pasos a una frecuencia de 100 Hz.65

Figura 4.2 Tren de pulsos con variación de frecuencia en función de un perfil de velocidad

de tipo trapezoidal. ............................................................................................................... 66

Page 16: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

XV

Figura 4.3 Tren de 100 pulsos con frecuencia inicial de 100 Hz con incremento lineal de

10Hz hasta una frecuencia máxima de 500 Hz..................................................................... 67

Figura 4.4 Diagrama de flujo para la gráfica de las frecuencias del tren de pulsos en Matlab.

.............................................................................................................................................. 68

Figura 4.5 Perfil de velocidad obtenido a partir del programa implementado en Matlab para

un tren de 100 pulsos con una frecuencia inicial de 100 Hz y una frecuencia máxima de 500

Hz. ........................................................................................................................................ 69

Figura 4.6 Husillo SFU1610-C7 con sistema Anti-backlash. .............................................. 70

Figura 4.7 Asignación de ejes al CNC KL4350. .................................................................. 70

Page 17: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

XVI

Indice de Tablas

Tabla 2.1 Relación de conexiones de la tarjeta del bus de comunicación. ........................... 45

Tabla 3.1. Comandos de control del mecanismo. ................................................................. 50

Tabla 3.2 Comandos para sistema mecánico con sensores de fin de curso. ......................... 50

Tabla 3.3 Comandos de control de trayectoria. .................................................................... 51

Tabla 3.4 Configuración para la comunicación serial PC - µC. ........................................... 51

Tabla 4.1 Valores obtenidos de caracterización experimental. ............................................ 71

Tabla 4.2 Valores del contador absoluto de cada eje. .......................................................... 71

Tabla 4.3 Comparativa de los tiempos de posicionamiento. ................................................ 72

Tabla 4.4 Resolución obtenida mediante la relación del número de pasos con la distancia de

la trayectoria para el eje x, y, z. ............................................................................................. 72

Page 18: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

1

Justificación

En el Laboratorio de Evaluación No Destructiva Electromagnética se desarrollan sistemas

para la detección y caracterización de defectos en placas metálicas por pérdidas de flujo

magnético o por corrientes de remolino. Los módulos de medición de estos sistemas son

desplazados a lo largo de las placas metálicas mediante sistemas mecánicos accionados por

motores de pasos, que debido a su principio de funcionamiento, permite contar con un

sistema de control en lazo abierto. Sin embargo el sistema de control no permite la variación

de la velocidad lo que evita la optimización del tiempo de posicionamiento. Además los

sistemas mecánicos son adaptaciones de escáneres o plotters y sólo cuentan con un eje de

desplazamiento, lo que no permite la variación de las trayectorias

En este trabajo se desarrolla un sistema de control a lazo abierto basado en el

microcontrolador MCF51QE128 para el posicionamiento del módulo de medición ubicado

en el último enlace de un sistema mecánico de tipo cartesiano con los tres ejes accionados

por motores de pasos. Para optimizar el tiempo de posicionamiento se hace uso de un perfil

de velocidad de tipo trapezoidal. Con la aplicación del sistema de control implementado en

este trabajo se podrá incrementar el número de mediciones obtenidas en el mismo lapso de

tiempo y mejorar la resolución espacial de los sistemas de medición antes mencionados.

Page 19: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

2

Introducción

Los sistemas de control se caracterizan por contar con una serie de elementos o entradas que

permiten influir en el funcionamiento de un sistema dinámico con la finalidad de tener un

dominio sobre las variables de salida de modo que alcancen valores prestablecidos o de

consigna. El uso de motores de pasos en sistemas dinámicos para el posicionamiento de una

carga constante permite establecer la estrategia de control en lazo abierto debido a que son

máquinas electromecánicas que convierten una señal digital en incrementos mecánicos

precisos y bien definidos de la posición del rotor. Los sistemas de control en lazo abierto para

motores de pasos están basados en un controlador digital que genera una señal de reloj la cual

determina la velocidad de giro del rotor. Sin embargo el incremento de la frecuencia de la

señal de reloj reduce la corriente que circula en cada fase, con lo que el campo generado es

menor y por consiguiente el par del motor se reduce. La reducción del par puede ser tal que

no sea capaz de contrarrestar el par generado por la carga acoplada, lo que produciría perdida

de pasos. Para evitar este efecto en sistemas de control en lazo abierto se evita la variación

de la frecuencia estableciendo una velocidad constante que asegure el par de acuerdo a la

carga acoplada. Esta técnica si bien permite la utilización de un sistema de control en lazo

abierto, ya que evita la pérdida de pasos, establece un tiempo de posicionamiento mayor al

que se podría obtener al alcanzar la velocidad máxima posible con la carga correspondiente.

Por ello se hace usos de perfiles de velocidad que establecen la variación de la velocidad en

las tres etapas del desplazamiento: aceleración, velocidad constante y desaceleración.

Además al permanecer dentro del rango de valores de frecuencia de la señal de reloj es

posible evitar la pérdida de pasos, lo que permite el uso de sistemas de control en lazo abierto.

Y así es posible contar con las ventajas del uso de un sistema de control a lazo abierto con la

optimización del tiempo de posicionamiento.

Se han presentado propuestas de sistemas de control basados en FPGA´s, DSP´s y

microcontroladores ya sea en lazo abierto o en lazo cerrado. Dichas propuestas dependen de

la estructura del sistema de mecánico, lo recursos de software o hardware que se quieran

manejar e incluso de los recursos económicos ya que un sensor de retroalimentación

Page 20: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

3

incrementa sustancialmente el costo de implementación además de incrementar la

complejidad de diseño.

Objetivo General

Desarrollar un sistema de control de posición con perfil de velocidad tipo trapezoidal para

motores de pasos con un microcontrolador MCF51QE128.

Objetivos Particulares

Diseñar la tarjeta de control que permita la comunicación serie PC - Microcontrolador

Diseñar la tarjeta de accionamiento que permita el manejo de motores de pasos

bipolares y unipolares

Diseñar un algoritmo de control que genere los perfiles de velocidad para cada motor

de pasos

Validar el funcionamiento del sistema con un programa de diseñado en Matlab y el

control de un sistema mecánico de tipo cartesiano

Organización del trabajo de tesis

Este trabajo de tesis se divide en cuatro capítulos, a continuación se presenta una descripción

de cada uno.

El Capítulo 1 presenta las características y funcionamiento de los motores eléctricos

particularizando en los motores de pasos. Además se presenta una breve descripción de los

sistemas mecánicos que comúnmente son accionados con motores de pasos. Se presenta el

estado del arte de los sistemas de control para motores de pasos, tanto en lazo abierto como

en lazo cerrado.

El Capítulo 2 presenta la implementación del hardware del sistema de control así como la

descripción detallada de los elementos que lo componen.

El Capítulo 3 se presenta los comandos, su implementación y el algoritmo de control utilizado

para la generación de perfiles de velocidad de tipo trapezoidal así como el control de hasta

tres motores de pasos mediante temporizadores independientes del microcontrolador

MCF51QE128.

Page 21: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

4

En el Capítulo 4 se muestra la validación del algoritmo de control mediante el programa

diseñado en Matlab y la evaluación del sistema control a lazo abierto con un sistema de

control de tipo cartesiano, y el análisis de la precisión y la resolución obtenida con el sistema

propuesto.

Por último se presentan las conclusiones obtenidas y las recomendaciones para la

continuación de este trabajo.

Page 22: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

5

Capítulo 1. Revisión bibliográfica y estado del arte

1.1 Introducción

En este capítulo se presenta el funcionamiento de los motores de pasos y sus características

así como su empleo en sistemas mecánicos. Además se presenta el estado del arte de los

sistemas mecánicos accionados por motores de pasos con sus respectivos sistemas de control.

1.2 Motores eléctricos

Los motores eléctricos utilizan los principios de electromagnetismo para su funcionamiento.

Considerando que las fuerzas magnéticas sobre cargas en movimiento en el interior de un

conductor se transmiten al material, el cual en conjunto experimenta una fuerza distribuida

en toda su longitud [1]. La fuerza sobre un conductor que transporta corriente se puede

obtener considerando la fuerza magnética sobre una sola carga en movimiento con la

ecuación 1.1

�⃗⃗� = 𝑞�⃗⃗� × �⃗⃗� (1.1)

La figura 1.1 muestra un segmento rectilíneo de un alambre conductor, con longitud l y área

de sección transversal A; la corriente fluye de abajo hacia arriba. El conductor está en un

campo magnético uniforme �⃗⃗� perpendicular al plano de la figura y dirigido hacia el plano.

Figura 1.1 Fuerza sobre una carga móvil en un conductor que transporta corriente.

Tomado de [1].

Page 23: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

6 Capítulo 1.

La velocidad de deriva �⃗⃗� 𝑑 es perpendicular a �⃗⃗� por lo que la magnitud de la fuerza es

F=qvdB.

Es posible deducir una expresión para la fuerza total que actúa sobre el conductor

considerando que el número de cargas por unidad de volumen es n; un segmento de conductor

con longitud l tiene un volumen Al por lo que contiene un numero de cargas igual a nAl. La

fuerza total en este segmento tiene una magnitud igual a

𝐹 = (𝑛𝐴𝑙)(𝑞𝑣𝑑𝐵) = (𝑛𝑞𝑣𝑑𝐴)(𝑙𝐵) (1.2)

La densidad de corriente es J=nqvd y el producto de JA es la corriente total, por lo que la

ecuación 1.2 se reescribe como

𝐹 = 𝐼𝑙𝐵 (1.3)

Si el campo �⃗⃗� no es perpendicular al alambre sino que forma un ángulo θ con él, sólo la

componente de �⃗⃗� perpendicular al alambre ejerce una fuerza, tal componente es 𝐵⊥ =

𝐵𝑠𝑒𝑛 𝜃. Entonces, la fuerza magnética sobre el segmento de alambre es

𝐹 = 𝐼𝑙𝐵⊥ = 𝐼𝑙𝐵𝑠𝑒𝑛𝜃 (1.4)

El análisis de una espira rectangular de corriente en un campo magnético uniforme se puede

representar como una serie de segmentos rectilíneos de alambre conductor. La fuerza total

que actúa sobre la espira es igual a cero, pero puede presentarse un par de torsión que actúe

sobre la espira [2]. En la figura 1.2 se muestra una espira rectangular con su eje perpendicular

a un campo uniforme �⃗⃗� . La corriente I que circula por el conductor de longitud l produce un

par en la espira, que tiende a girarla en el sentido horario para el sentido del campo �⃗⃗�

indicado.

Page 24: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Revisión bibliográfica y estado del arte 7

Figura 1.2 Espira rectangular por la que circula una corriente y está inmersa en un campo magnético uniforme.

Tomado de [2].

El par de torsión se define como la fuerza por la distancia con respecto al centro de masas a

la que actúa esa fuerza (a ésta distancia también se le llama brazo), donde el brazo del par es

d/2 y la fuerza es Fn=Fsen ϕ, por lo tanto la magnitud del par de torsión es:

𝜏 = 2𝐹𝑛 (𝑑

2) = 𝐼𝐵𝑙𝑑𝑠𝑒𝑛 𝜙 (1.5)

Si el área de la espira es A=ld podemos escribir la ecuación 1.5 como:

𝜏 = 𝐼𝐵𝐴𝑠𝑒𝑛 𝜙 (1.6)

El par de torsión es máximo cuando la normal al plano de la espira es perpendicular a la

dirección del campo magnético �⃗⃗� (𝜙 = 90°). El par de torsión es cero cuando la normal de

la espira es paralela a la dirección del campo magnético �⃗⃗� (cuando ϕ es 0° o 180°).

En la figura 1.3 se muestran los elementos de un motor de corriente continua [2] que consta

de una espira, generalmente de varias vueltas de alambre conductor, llamada inducido,

situada en el campo magnético uniforme de un imán. En la práctica los motores pequeños

usan un imán permanente, mientras que en los grandes se usa un electroimán para establecer

el campo magnético constante �⃗⃗� . El inducido está conectado a un conmutador que es un

anillo deslizante dividido. El propósito del conmutador es invertir la corriente para que el par

de torsión en el inducido actúe en el mismo sentido. La corriente es suministrada por una

fuente de voltaje de corriente continua a través de un par de muelles o escobillas que reposan

contra el conmutador.

Page 25: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

8 Capítulo 1.

Figura 1.3 Elementos de un motor de corriente continua.

Tomado de [2].

El par de torsión del motor de corriente directa, usando la ecuación 1.6, es:

𝜏 = 𝑁𝐼𝐵𝐴𝑠𝑒𝑛 𝜙 (1.6)

Donde N y A son las vueltas y el área de inducido respectivamente. Cuando 𝜙 = 0 no circula

corriente por el inducido, ya que el conmutador está a punto de invertir la corriente. Sin

embargo la inercia de rotación permite el giro continuo.

1.3 Funcionamiento de los motores de paso

El funcionamiento de los motores de pasos es muy similar al de los motores de corriente

directa, la diferencia radica en que el par de torsión está basado en la tendencia que tienen

las piezas ferromagnéticas a alinearse con la dirección del campo magnético [1]. Por

consiguiente, el rotor y estator de los motores de pasos están construidos de materiales

ferromagnéticos y cuentan con polos que se alinean debido al campo magnético producido

por los devanados del estator.

En la Figura 1.4 se muestra como ejemplo la acción de la fuerza entre los polos del estator y

el rotor en un motor de pasos [3]. La componente normal de la fuerza (Fn) tiende a reducir el

espacio de separación entre los polos del rotor y del estator, mientras que la componente

tangencial de la fuerza (Ft) permite la rotación del rotor para alinearlo con los dientes del

estator.

Page 26: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Revisión bibliográfica y estado del arte 9

Figura 1.4 Componentes de las fuerzas entre los dientes del estator y del rotor de un motor de pasos.

Los motores de pasos se clasifican en base a la forma en que los rotores se alineen con el

campo magnético generado, como:

de Reluctancia Variable,

con Imán Permanente, o

Híbridos

1.3.1 El motor de pasos de reluctancia variable

Utilizando la analogía entre el circuito eléctrico y el circuito magnético podemos observar

que la corriente es proporcional a la fuerza electromotriz (f. e. m.) tal como el flujo magnético

es proporcional a la fuerza magnetomotriz (f. m.m.). La f. m. m. cuantifica la capacidad de

una bobina para producir el flujo necesario para la generación del par de torsión y se obtiene

del número de vueltas por la cantidad de corriente circundante, por lo que esta expresada en

A·vuelta. La f.e.m. (V) y la corriente (A) se encuentran relacionados por la Ley de Ohm, la

cual nos muestra que dependen de la resistencia del circuito, entonces para obtener más

corriente es necesario reducir la resistencia. En el caso magnético el análogo a ésta resistencia

se denomina reluctancia la cual es la medida que cuantifica la dificultad que presenta el flujo

magnético para completar su circuito. Entonces para poder incrementar la f.m.m. es necesario

reducir la reluctancia del circuito magnético. Esto significa reducir el espacio ocupado por

aire entre los polos del rotor y del estator, el cual tiene un alto valor en reluctancia, y

sustituirlo por material magnético como el hierro que cuenta con una reluctancia muy baja

[4].

Page 27: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

10 Capítulo 1.

El motor de pasos de reluctancia variable se basa en esta sencilla analogía por lo que se

considera como el tipo más básico entre los diferentes tipos de motores de pasos. La figura

1.5 muestra un diagrama simplificado de un motor de pasos de reluctancia variable con una

resolución de 30° por paso. El estator cuenta con seis polos, igualmente espaciados entre sí.

Cada polo del estator cuenta con una bobina enrollada en él, y las bobinas de los polos

opuestos conectadas en serie. El rotor del motor mostrado en la figura 1.5 tiene cuatro polos

del mismo ancho que los polos del estator. Entre los polos del estator y el rotor existe un

espacio de aire, típicamente entre 0.02 y 0.2 mm. El rotor puede girar libremente cuando no

circula corriente por las bobinas del estator. En el motor mostrado en la figura 1.5 hay tres

circuitos electromagnéticos o fases independientes en el estator y cada uno de ellos puede ser

alimentado con corriente continua desde un circuito de accionamiento.

Figura 1.5 Diagrama y principio de operación de un motor de pasos de reluctancia variable de 30° por paso.

Tomado de [4].

Cuando la fase A se activa (bobinas en negro en la figura 1.5(a)) se genera un campo

magnético y con esto se ejerce un par de torsión que logra que el par de polos del rotor más

cercano a los polos del estator de la fase A se alineen entre sí. De esta manera el rotor se

posiciona de forma tal que un par de polos, distinguidos por una flecha apuntando hacia

arriba, se alinean con los polos del estator. En esta posición la reluctancia magnética se reduce

al mínimo y el flujo magnético es máximo, por lo que se considera que el motor se encuentra

en estado de equilibrio. Una vez que la excitación pasa de la fase A a la fase B la otra pareja

de polos del rotor es atraída y alineada con los polos del estator de esta fase, con lo que se

ejecuta un giro del rotor de 30°. Se logrará un paso más de 30° si la excitación cambia de la

Page 28: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Revisión bibliográfica y estado del arte 11

fase B a la C. Al cambiar repetidamente la excitación en las fases del estator en la secuencia

A-B-C-A el rotor girará en sentido horario, mientras que si la secuencia es A-C-B-A el rotor

girará en sentido antihorario. Este modo de operación se conoce como de “una fase activa”

y es la forma más simple de obtener un giro continuo del rotor [4]. Hay que tomar en cuenta

que el sentido en que circula la corriente de excitación no es relevante ya que el rotor se

alineará de igual forma independientemente de la dirección de la corriente y a este tipo

accionamiento se le conoce como unipolar.

1.3.2 Motor de pasos de Imán Permanente

El motor de pasos de imán permanente tiene un estator de construcción similar al motor de

reluctancia variable. Sin embargo, como su nombre lo sugiere, un imán permanente de forma

cilíndrica es empleado como rotor. Este rotor se alinea con los dientes del estator de acuerdo

a los polos que genera la excitación de sus fases como se muestra en la figura 1.6.

Figura 1.6 Motor de pasos de imán permanente.

Tomado de [3].

1.3.3 Motor de pasos Híbrido

El motor de pasos híbrido como su nombre lo indica es una combinación de las estructuras

de los motores de pasos anteriores. En la figura 1.7 se muestra la sección transversal de un

motor de pasos híbrido típico con resolución de 1.8° por paso. El estator tiene ocho polos con

cinco dientes en cada uno, el cual tiene enrollado una bobina. El rotor está formado por un

imán permanente cilíndrico que está magnetizado axialmente y en él se encuentra montada

una estructura de acero que contiene 50 polos en cada extremo.

Page 29: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

12 Capítulo 1.

Figura 1.7 Motor de pasos Híbrido de 200 pasos por vuelta. El detalle muestra la alineación de los polos del rotor y

el estator indicando el ángulo de 1.8° por paso.

Cuando no circula corriente por los devanados, la única fuente de flujo magnético en el motor

es el imán permanente. El flujo magnético cruza el espacio de aire desde el polo N, fluye

axialmente a lo largo del cuerpo del estator y vuelve al imán cruzando por el otro espacio de

aire del espaciamiento con el polo S. En este motor existe un pequeño torque de retención

cuando la bobina no está excitada debido a que los polos se mantienen polarizados por el

imán permanente.

Las ocho bobinas están conectadas de manera tal que se tienen solo 2 fases. Las bobinas en

los polos 1, 3, 5, 7 forman la fase A mientras que las de los polos 2, 4, 6, 8 forman la fase B.

Cuando la fase A conduce una corriente en un sentido los polos del estator 1 y 5 se

magnetizan como un polo magnético y los polos 3 y 7 se magnetizan como el polo magnético

opuesto. Para que el rotor gire un paso es necesario desactivar la fase A y activar la fase B

con una corriente en un sentido u otro, según el sentido de giro requerido.

Si las fases del motor son excitadas continuamente con la secuencia +A, -B, -A, +B, +A se

obtendrá un giro del rotor en sentido horario, o si la secuencia se invierte tal que +A, +B, -

A, -B el sentido de giro será antihorario. Cuando el motor opera de esta forma es conocido

como “excitación de dos fases” con accionamiento bipolar [4].

Page 30: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Revisión bibliográfica y estado del arte 13

Los fabricantes también introdujeron los motores híbridos con enrollamiento bifilar lo que

permite activar el motor de forma unipolar. Con los devanados bifilares se puede lograr que

se generen flujos magnéticos en diferente sentido aunque la corriente solo circule en un solo

sentido en el circuito de accionamiento ya que se tienen dos devanados enrollados en sentidos

opuestos sobre un mismo polo, como se muestra en la Figura 1.8.

Figura 1.8 Comparación del devanado convencional vs bifilar.

Tomado de [3].

Los circuitos para la excitación de las fases en conexión bipolar y unipolar se muestran en la

figura 1.9. En la figura 1.9(a) la fase es excitada cuando el transistor funciona como un

interruptor ON/OFF pasando de región de saturación a corte. Para la conexión bipolar es

necesario recurrir a una configuración de transistores denominada puente H, figura 1.9 (b),

en la cual los transistores son conmutados en pares de acuerdo con la polaridad requerida.

Figura 1.9 Circuito para conexión (a) unipolar y (b) bipolar

Page 31: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

14 Capítulo 1.

1.4 Características de los motores de pasos

Las características de funcionamiento de los motores de pasos dependen del diseño

electromagnético interno del motor. La estructura tanto del rotor como del estator y la

distribución de las bobinas del estator deben ser optimizadas para obtener el par de torsión

máximo [4]. En los motores de pasos el par de torsión se genera cuando los polos del rotor y

del estator se desalinean. Por ello se establece la curva de Par de torsión vs Posición angular

del rotor, la cual relaciona el desplazamiento angular del rotor con el par de torsión que se le

aplica al eje del rotor cuando la fase del motor de pasos es activada con el voltaje y corriente

nominal. La curva de Par de torsión vs Posición angular del rotor de un motor de pasos ideal

es de forma sinusoidal como la mostrada en la figura 1.10

Figura 1.10 Curva de Par de torsión vs Posición angular del rotor de un motor de pasos ideal.

En la figura 1.10 se puede observar que hay dos posiciones de equilibrio estables en 0° y

90°, ya que cualquier intento de mover el rotor a otra posición generará un par torsión en

dirección opuesta llamado par de restauración. Estos puntos corresponden a la posición de

los polos del rotor completamente alineados con los polos del estator. Así mismo hay una

posición de equilibrio inestable en 45°, donde el par también es cero. Estos corresponden a

posiciones del rotor donde los polos del estator están a medio camino entre dos polos del

estator y se consideran inestables porque si el rotor se desvía ligeramente en cualquier

dirección se acelerará hasta la siguiente posición estable [4].

Page 32: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Revisión bibliográfica y estado del arte 15

El par de torsión máximo obtenido con el voltaje y corriente nominal en el rotor en estado

estacionario se conoce como par estático máximo (PH). Con el par estático máximo los polos

del rotor se alinean de forma exacta con los polos del estator. Sin embargo al existir una carga

acoplada el rotor no se alinea completamente, lo que significa un desplazamiento por paso

(θa) diferente a lo esperado. A este desplazamiento se le conoce como error de posición

estático [1] pero es independiente del número de pasos ejecutados previamente, es decir, el

error de posición no es acumulativo [4]. Un método para reducir este error es excitar varias

fases simultáneamente para incrementar el par de torsión que produce el motor, a lo que

previamente se mencionó como “excitación de dos fases”. El desarrollo en el diseño de

engranes y husillos ha permitido que sea otra forma para minimizar este error de posición. [3]

El par de torsión necesario para mantener la posición de equilibrio con la carga acoplada se

le conoce como par de retención (Pa). Si el par de retención llega a ser igual o mayor al par

estático máximo el motor se encontrara en la región inestable y el rotor pasará al siguiente

punto estable.

Por otra parte, el circuito de excitación es el que activa las fases proporcionando la corriente

necesaria para generar el campo magnético con el cual se alineará el rotor. El par de torsión

máximo dependerá de la cantidad de campo magnético generado por las fases ubicadas en

los polos del estator. Por ello suponiendo que el circuito de excitación es ideal, es decir, que

en cada pulso la energía almacenada se descargue instantáneamente del circuito bobina -

resistencia que forma la fase, que la corriente mantenga su valor nominal durante todo el

estado de encendido el rotor girará a una velocidad constante que corresponderá exactamente

al número de pulsos y la frecuencia a la que se generen los pulsos.

Sin embargo debido a que no existe un circuito de excitación ideal se puede proporcionar una

aproximación razonable a la onda de corriente rectangular ideal si la frecuencia a la que se

genera el tren de pulsos de las secuencia de pasos es baja, como se muestra en la figura 1.11

(a). A una alta frecuencia, o sea donde el periodo es corto en comparación con la constante

de tiempo del sistema bobina-resistencia, la forma de onda de la corriente de excitación se

deforma como se muestra en la figura 1.11 (c). Por ello la corriente no llega a su valor

nominal lo que reduce el campo magnético generado y por consiguiente el par de torsión

máximo. Si el rotor se encuentra en una de sus posiciones inestables controlado a una

Page 33: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

16 Capítulo 1.

frecuencia alta, la fuerza del campo no será suficiente para llegar a la siguiente posición

estable.

Figura 1.11 Formas de onda típicas de la corriente que circula a velocidad a) Baja b) Media c) Alta

Tomado de [3].

Cuando el motor tiene que desplazar una carga desde el reposo la frecuencia a la que se

genera el tren de pulsos de control debe ser tal que permita producir un par de torsión que

venza el momento de inercia de la carga. Al par de torsión se le conoce como par de arranque/

parada (pull in) y al valor de frecuencia máximo para iniciar o detener el desplazamiento de

una carga si pérdida de pasos se le conoce como frecuencia de arranque/parada (pull in). Una

vez que la carga se encuentra en movimiento el par generado se incrementa tal que es posible

incrementar la frecuencia hasta una frecuencia máxima (pull out) la cual permite generar la

velocidad máxima del motor.

Los valores de frecuencia y de par de torsión dependen de la estructura del motor y de la

inercia de la carga, por lo que los fabricantes proporcionan esta información en forma de

gráficas como la mostrada en la figura 1.12. En la gráfica se muestran las curvas del par de

arranque/parada (pull in) vs velocidad para varios valores de momento de inercias de la carga,

ya que la velocidad inicial se reduce en función del incremento del momento de inercia de la

carga. Se puede observar que solo se muestra una curva para el par máximo (pull out) y para

varios valores de momento de inercia.

Page 34: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Revisión bibliográfica y estado del arte 17

Figura 1.12 Curvas típicas de arranque y máximas mostrando los efectos del momento de inercia de la carga para

el par de arranque (JL=Inercia del motor; JM=Inercia de la carga)

Tomado de [4].

1.4.1 Perfiles de velocidad

En muchas aplicaciones se requieren motores de pasos que generen el máximo par posible

en un amplio rango de frecuencias del tren de pulsos de control, esto con el propósito de

reducir el tiempo de posicionamiento de la carga. Los perfiles de velocidad definen la

velocidad en función del tiempo y surgen de la necesidad de asegurar que las aceleraciones

impuestas al conjunto motor-carga exijan un par de carga menor que el par máximo del

motor.

Las etapas de un perfil de velocidad son: aceleración, velocidad constante y desaceleración,

sabiendo que la velocidad de arranque es menor a la velocidad máxima del rotor. Por ello el

tiempo de posicionamiento puede ser reducido sustancialmente con una aceleración continua

del motor, desde la velocidad de arranque, a lo largo de varios pasos hasta llegar a la

velocidad máxima. En cuanto se vaya aproximando a la posición de destino la velocidad de

paso se debe reducir hasta que sea igual a la de arranque nuevamente, esto con el propósito

de evitar detener el motor abruptamente y que la carga no se desplace más de lo considerado.

Existen dos tipos de perfiles de velocidad básicos: lineales y curvilíneos. Los perfiles lineales

no requieren de un cálculo complejo. Sin embargo, las discontinuidades en la aceleración

pueden causar una reducción en la vida útil del sistema mecánico [7] [8] [9]. En la figura 1.13

se muestra la gráfica del perfil de velocidad de tipo trapezoidal y en la parte inferior de la

gráfica se muestra como debe variar la frecuencia del tren de pulsos para poder generarlo [8].

Page 35: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

18 Capítulo 1.

Figura 1.13 Perfil de velocidad de tipo trapezoidal.

Para evitar el desgaste mecánico y las vibraciones en el sistema se puede recurrir a la

implementación de los perfiles con curvas suaves como el tipo curva S o el tipo parabólico,

mostrado en la figura 1.14. Este tipo de perfil tiene como desventajas que se requiere de una

mayor cantidad de recursos computacionales debido a los cálculos matemáticos asociados

con ellos, lo que hace más difícil su implementación [7] [8] [9] [15].

Figura 1.14 Perfil de velocidad de tipo parabólico.

1.5 Sistemas de Control de motores de pasos

Los sistemas de control se diseñan para realizar tareas específicas como lo es el control de

posición con aceleración. Este requiere de un controlador automático, un actuador, una planta

y un sensor, como se muestra en la figura 1.15.

Page 36: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Revisión bibliográfica y estado del arte 19

Figura 1.15 Diagrama de bloques de un sistema de control automático.

El controlador automático compara el valor real de la salida de la planta con la entrada de

referencia o el valor deseado, determina la desviación y produce una señal de control que

reduce la desviación teóricamente a cero o a un valor pequeño. La manera en la cual el

controlador automático produce la señal de control se denomina acción de control y su salida

es amplificada para poder alimentar al actuador. El actuador produce la entrada para la planta

de acuerdo a la señal de control para que la señal de salida se aproxime a la señal de entrada

de referencia. El sensor convierte la variable de salida en otra variable que pueda usarse para

comparar la salida con la señal de entrada de referencia. Este elemento está en la trayectoria

de retroalimentación del sistema a lazo cerrado. El punto de ajuste del controlador debe

convertirse en una entrada de referencia con las mismas unidades que la señal de

retroalimentación del sensor o del elemento de medición [6].

1.5.1 Sistema de control a lazo abierto

En la sección anterior se observó que los motores de pasos son máquinas electromecánicas

que convierten una señal digital eléctrica en movimiento mecánicos discretos y precisos. Esta

característica aunada al bajo consumo, la alta confiabilidad, un error de posición pequeño y

el par de retención después de desenergizado es lo que ha motivado que estos motores se

hayan popularizado y su aplicación en equipos industriales siga en aumento. La precisión y

repetitividad en la posición del rotor de estos motores hace posible controlar a lazo abierto

un sistema de posicionamiento, con la reducción de costos asociada a ello.

En la figura 1.16 se muestra un sistema básico de control de posición a lazo abierto para

motores de pasos, en el cual la salida es la posición angular del eje del motor mientras que la

entrada consiste en dos señales digitales de baja potencia. Para el acondicionamiento de las

Page 37: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

20 Capítulo 1.

señales se cuenta con un sistema de accionamiento que además contiene los circuitos

electrónicos para la conmutación de las fases del motor.

Figura 1.16 Diagrama en bloques de un sistema de control de posición a lazo abierto.

Cada vez que se genera un pulso, en la línea de entrada de la señal de pulsos, el rotor gira el

ángulo correspondiente a un paso y el eje permanece en su nueva posición hasta que se

produce el siguiente pulso. Esta correspondencia uno a uno entre los pulsos y los pasos es lo

que proporciona una baja certidumbre de la posición angular del eje del motor es por lo que

generalmente este tipo de motores forman parte de sistemas de control a lazo abierto.

La señal de pulsos puede provenir de un controlador digital o un microprocesador, el cual

genera los pulsos en base a un temporizador y cuando es necesario realizar un desplazamiento

correspondiente a una cantidad de pasos conocido es capaz de contabilizar el número de

pulsos enviados para detener el envío de pulsos una vez que sea igual al número de pasos

solicitados. Por ello la velocidad a la que gire el rotor depende de la frecuencia del tren de

pulsos generados por el temporizador.

1.5.2 Sistema de control a lazo cerrado

Cuando se requiere minimizar el tiempo de posicionamiento es necesario conocer los valores

de frecuencia de arranque y máxima de las curvas par – velocidad de los motores de pasos.

Si el valor de la carga es constante a lo largo del desplazamiento la implementación de un

sistema de control a lazo abierto es factible. Por el contrario, si la carga varía a lo largo del

desplazamiento es esencial un sistema de control a lazo cerrado el cual requiere de un

transductor montado sobre el eje del motor, como el que se muestra en la figura 1.17, el

Page 38: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Revisión bibliográfica y estado del arte 21

transductor asegura que no haya perdida de pasos en la trayectoria debido a la utilización de

un circuito complejo de control.

Figura 1.17 Diagrama de bloques de un sistema de control de posición a lazo cerrado.

1.6 Sistemas mecánicos

Los sistemas mecánicos son aquellos que están constituidos fundamentalmente por

elementos que tienen como función específica transmitir el movimiento desde las fuentes que

lo generan a los elementos actuadores mediante la transformación de distintos tipos de

energía. La mayoría de los sistemas mecánicos usan motores que cuentan con un eje que

genera movimiento de rotación, por lo que los elementos mecánicos generalmente lo

transforman en movimiento de translación. Las principales aplicaciones de los sistemas

mecánicos se pueden encontrar en la robótica, las impresoras, los escáneres, y en la

manipulación y posicionamiento de herramientas y piezas en general.

Los sistemas mecánicos pueden clasificarse como:

Cartesiano

Cilíndrico

Esférico

Articulado

1.6.1 Sistema mecánico cartesiano

En la figura 1.18 se muestra como el sistema mecánico cartesiano desarrolla el

posicionamiento a través de tres ejes lineales perpendiculares entre sí que corresponden a los

Page 39: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

22 Capítulo 1.

ejes cartesianos x,y,z, por lo que el espacio de trabajo tiene forma de cubo. La ventaja de esta

estructura es que posee una alta rigidez por lo que es capaz manejar cargas pesadas. En

términos de repetitividad de movimiento, el sistema de tipo cartesiano puede desplazarse a

un punto determinado del espacio de trabajo con la posibilidad de obtener un error pequeño

en la posición deseada. La desventaja de este sistema es que no es conveniente su utilización

para aplicaciones donde existen limitaciones del espacio de operación.

Figura 1.18 Espacio de trabajo de un sistema mecánico de tipo cartesiano.

1.6.2 Sistema mecánico Cilíndrico

Los sistemas mecánicos de tipo cilíndrico, como el mostrado en la figura 1.19, cuentan con

dos ejes lineales y uno rotacional. Es posible montarlos sobre una plataforma móvil para

cubrir más espacio de trabajo el cual es la región rectangular formada por los ejes y la rotación

alrededor del tercer eje de manera tal que se obtiene un espacio de trabajo en forma de

cilindro. La ventaja de esta estructura es que tiene un eje de libertad de 360 ° lo que le permite

posicionar la carga en cualquier lugar alrededor del eje lineal de la base. La desventaja es que

necesita mayor número de cálculos para el cálculo de coordenadas, además de que la

capacidad de carga depende de la distancia máxima de la articulación telescópica.

Figura 1.19 Espacio de trabajo de un sistema mecánico tipo cilíndrico.

Page 40: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Revisión bibliográfica y estado del arte 23

1.6.3 Sistema mecánico esférico

El sistema mecánico de tipo esférico también se le conoce como configuración polar, ya que

utiliza un eje con desplazamiento lineal y dos ejes rotacionales de manera tal que el espacio

de trabajo describe una semiesfera, como el mostrado en la figura 1.20. La ventaja que

presenta es el rango de alcance para el posicionamiento. La desventaja es que la inercia es

variable debido al extremo final del eje lineal.

Figura 1.20 Área de trabajo de un sistema mecánico tipo esférico.

1.6.4 Sistema mecánico articulado

El sistema mecánico articulado cuenta con tres ejes rotacionales y su configuración, mostrada

en la figura 1.21, es similar a la del brazo humano. Este sistema está constituido por dos

componentes rectos que corresponden al brazo y al antebrazo humano, montados sobre un

pedestal vertical. Dos componentes están conectados por una articulación giratoria que

corresponde al codo y el componente que corresponde al antebrazo tiene en su otro extremo

una articulación similar que corresponde al hombro. Las ventajas son gran versatilidad en el

espacio de trabajo y las tareas que puede desarrollar. La desventaja es la complejidad en el

control de los movimientos lineales.

Figura 1.21 Espacio de trabajo de un sistema mecánico tipo articulado.

Page 41: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

24 Capítulo 1.

1.6.5 Sistema mecánico SCARA

EL sistema mecánico SCARA, mostrado en la figura1.22, es una versión alterna del sistema

articulado donde las articulaciones correspondientes al hombro y al codo humano giran

alrededor de dos ejes verticales, lo que proporciona al sistema rigidez en el plano vertical

pero elasticidad en el plano horizontal. Esta combinación convierte al sistema SCARA en el

más utilizado para tareas de montaje.

Figura 1.22 Espacio de trabajo de un sistema mecánico tipo SCARA.

1.7 Estado del arte de los sistemas de control de motores de pasos

La utilización de motores de pasos en sistemas de control de posición presenta diversos

problemas tecnológicos a resolver. Las principales problemáticas son:

Los sistemas de accionamiento para la activación de las fases

La pérdida de pasos

El cálculo en tiempo real de los perfiles de velocidad

Algunas de las propuestas más recientes para resolver alguno o todos los problemas antes

mencionados se presentan a continuación.

Li y Chen [10] diseñaron el circuito de accionamiento para motores de pasos de tipo unipolar,

mostrado en la figura 1.23. El circuito propuesto presenta una nueva topología del circuito

convencional, mostrado en la figura 1.9 a), además de un par de inductores que aceleran el

establecimiento de la corriente de las fases lo que proporciona suficiente par de torsión

dinámico en un amplio rango de frecuencias

Page 42: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Revisión bibliográfica y estado del arte 25

Figura 1.23 Circuito propuesto en [10].

Zhihuang, Lin y Donghui [11] implementaron un sistema de accionamiento para un sistema

automático de posicionamiento de un microscopio, accionado por un motor de pasos de tipo

híbrido. El sistema de accionamiento original era susceptible al ruido lo que generaba una

variación del par de torsión y de la velocidad. El nuevo diseño está basado en un circuito

integrado denominado L6506 que en base a dos choppers PWM controla la corriente en cada

fase, y que en conjunto con el circuito integrado L298 mejora la precisión en el

posicionamiento, eliminando el rizado a velocidades bajas lo que permite un movimiento

más suave del sistema.

Weiwei y Jianjing [12] diseñaron un sistema de control de alta precisión para un sistema

mecánico accionado por motores de pasos que permite el muestro de líquidos. Este sistema

está basado en el microcontrolador S3C44B0 y un sistema de accionamiento formado por los

circuitos integrados L297 y L298. Además de una interfaz diseñada en LabVIEW que envía

al microcontrolador la acción de inicio de la rutina mediante comunicación serial. La rutina

consiste en accionar un motor que posiciona un plato giratorio con 16 tubos de ensayo para

luego activar un segundo motor que los levanta uno a uno para el muestreo de su contenido.

Este sistema utiliza dispositivos fotoeléctricos como sensores para la retroalimentación que

corrigen la posición si se genera pérdida de pasos.

Sung-Wook, Young-Jin, Yoon-Taek y Dong Hwan [13] proponen un detector de pérdida de

pasos sin el uso de un encoder al medir la corriente de retroalimentación utilizada para la

generación de micropasos. Esta implementación tiene como principal ventaja que reduce los

costos del sistema al eliminar el encoder. Para ello las corrientes de las fases deben tener un

Page 43: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

26 Capítulo 1.

comportamiento sinusoidal, y esto se logra midiendo el voltaje de unos resistores conectados

en serie con las fases del motor. Estos voltajes se inyectan a un amplificador diferencial con

lo que se obtiene la corriente de la fase. En este artículo se demostró que si ocurre la pérdida

de un paso, la corriente se incrementa instantáneamente dando como resultado picos de

corriente. Con este sistema se puede contabilizar los pasos perdidos y corregir el contador de

pasos.

Huan, Jianxun y Wenqin [14] proponen el diseño de un controlador para un sistema robótico

asistente en microcirugía (RAMS). Este sistema utiliza el DSP TMS320LF2407A como

núcleo del controlador donde se generan las secuencias para micropasos. Este sistema es

capaz de controlar los tres motores simultáneamente. Se utiliza el circuito integrado L298

como módulo de amplificación, y el sistema usa las corrientes de fase como

retroalimentación. Se demostró que el controlador es efectivo y que permite que el robot

despliegue una velocidad de desplazamiento de 1µm/s con una precisión lineal en la posición

de ±2µm.

Wei y Zhongwei [15] diseñaron un algoritmo para la aceleración lineal mediante un perfil de

velocidad de tipo trapezoidal que asegura la estabilidad y la precisión del posicionamiento

además de prevenir la perdida de pasos de una maquina ensambladora de bolsas accionada

por motores de pasos. El perfil es generado variando la frecuencia de pulso de un

temporizador de un microcontrolador. La frecuencia de los pulsos se varía en función de la

frecuencia de la interrupción del temporizador. Se considera que se previene la perdida de

sincronía porque el algoritmo permite modificar la frecuencia máxima del pulso del

temporizador para que sea menor que la frecuencia pull out del motor que se esté utilizando.

Martínez y Vera [12] construyeron un sistema mecánico de tres ejes de tipo cartesiano

accionado por motores de pasos para analizar efectos ultrasónicos sobre tejidos biológicos y

mimetizados. El sistema de control está basado en el microcontrolador PIC18F4550 que

acciona tres motores simultáneamente mediante una interfaz en LabVIEW para establecer

una velocidad constante de desplazamiento. El resultado reportado es un sistema mecánico

que tiene una resolución de 0.1 mm tanto para el eje x como para el eje y. Sin embargo el

Page 44: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Revisión bibliográfica y estado del arte 27

porcentaje de error del eje x y del eje y son del 10% y 20% respectivamente. El eje z no

aparece reportado debido a que requiere modificaciones para realizar las mediciones

correspondientes.

Espina-Hernández [13] automatizó las mediciones de figuras de polos en materiales

policristalinos mediante el uso de un goniómetro de textura comercial TZ6, diseñando una

tarjeta de control y las tarjetas de accionamiento para sus tres motores de pasos, además de

una interfaz de usuario en lenguaje C. La precisión y exactitud en el posicionamiento con el

sistema de control propuesto en este trabajo de tesis se logró conforme a lo especificado por

el fabricante del goniómetro TZ6.

Espina-Hernández [14] presentó posteriormente un trabajo en el que se diseñó un sistema de

control basado en el microcontrolador 8051 el cual genera un perfil de velocidad de tipo

trapezoidal para motores de pasos. Los valores de frecuencia del temporizador se establecen

mediante una tabla de consulta (lookup table). Los valores como la aceleración, la velocidad

inicial y la velocidad máxima son introducidos mediante comandos enviados por

comunicación serial desde un PC. Para evaluar el sistema de control se midió la variación en

la posición al ejecutar 20 veces el desplazamiento de 1mm en ambos sentidos, obteniendo un

error de ±0.1µm. Las mismas mediciones se realizaron para 5 mm y 10 mm obteniendo el

mismo resultado.

Page 45: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

28 Capítulo 1.

Esta página se dejó en blanco intencionalmente.

Page 46: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

29

Capítulo 2. Descripción e implementación del hardware para el

sistema de control

2.1 Introducción

En este capítulo se presenta y describe los componentes diseñados para la implementación

del sistema de control a lazo abierto. El sistema de control está basado en el microcontrolador

MCF51QE128 con comunicación serial lo que permite la generación de perfiles de velocidad

de tipo trapezoidal para hasta tres motores de pasos de forma simultánea.

2.2 Características del sistema

En la figura 2.1 se muestra el diagrama de bloques del sistema de medición experimental con

el que se cuenta actualmente en el Laboratorio de Evaluación No Destructiva

Electromagnética (LENDE). El sistema mecánico cuenta con un eje de desplazamiento

accionado por un motor de pasos, por lo que el sistema de control a lazo abierto solo requiere

de un temporizador para activarlo. Debido a que el motor de pasos no está caracterizado, la

frecuencia del tren de pulsos generado por el temporizador se mantiene constante sin alcanzar

velocidades que permitan reducir el tiempo de posicionamiento del módulo de medición.

Además el sistema de control se debe activar y desactivar de forma manual ya que no se

encuentra vinculado con la PC que es utilizada para la adquisición de datos de los equipos de

medición.

Figura 2.1 Sistema de medición experimental con el sistema de control actual.

Page 47: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

30 Capítulo 2.

En la figura 2.2 se muestra el diagrama de bloques del sistema de medición experimental con

el sistema de control propuesto basado en el microcontrolador MCF51QE128. La PC

mediante la cual se adquieren los datos de los equipo de medición es utilizada para poder

activar y desactivar el sistema de control mediante comandos enviados por comunicación

serie. El sistema de control debe ser capaz de activar hasta tres motores de forma simultánea,

tanto bipolares como unipolares. El sistema mecánico debe contar con sensores de fin de

curso para la localización del cero mecánico y los límites de desplazamiento de cada eje del

sistema.

Figura 2.2 Diagrama de bloques del sistema de medición experimental con el sistema de control propuesto.

2.3 Sistema de control

El sistema de control que se propone en este trabajo está basado en el microcontrolador

MCF51QE128 que calcula el perfil de velocidad de tipo trapezoidal para cada eje de acuerdo

con los valores de frecuencia de arranque y frecuencia máxima obtenidos mediante la

caracterización previa de cada motor. Los valores de frecuencia de cada eje así como las

características de desplazamiento son introducidos al algoritmo del microcontrolador

mediante comandos enviados desde cualquier PC por comunicación serial. El perfil de

velocidad se genera con la variación de la frecuencia del tren de pulsos de control, por lo que

para la generación de tres perfiles de velocidad para el accionamiento de tres motores de

pasos de forma simultánea es necesario que el microcontrolador cuente con tres

temporizadores independientes. La parte de accionamiento del sistema de control está basada

Page 48: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Descripción e implementación del hardware para el sistema de control 31

en los circuitos integrados L297 y L298 que contribuyen a la reducción de la carga

computacional del microcontrolador generando las secuencias de excitación para el sentido

de giro (horario o antihorario) así como el tipo de paso (completo o medio paso) y

acondicionándolas para motores tanto de tipo bipolar como unipolar con tan solo 4 señales

(CLK, H/F, CW/CWW, EN) por motor.

En la Figura 2.3 se muestra el diagrama de bloques del sistema de control propuesto.

Figura 2.3 Diagrama en bloques del sistema de control propuesto.

La implementación del hardware del sistema de control requirió del diseño de tres tarjetas de

circuito impreso:

Una Tarjeta de control

Tres Tarjetas de Accionamiento

Una Tarjeta para la Comunicación Control - Accionamiento

2.3.1 Tarjeta de Control

La tarjeta de control se encarga de la comunicación serie con la PC además del cálculo y

generación de los perfiles de velocidad de tipo trapezoidal para cada motor activo. Los

elementos principales para desarrollar estas tareas son:

El microcontrolador MCF51QE128

El circuito integrado MAX232

Page 49: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

32 Capítulo 2.

2.3.1.1 Microcontrolador MCF51QE128

El microcontrolador MCF51QE128 es de 32 bits y pertenece a la familia Freescale y

proporciona herramientas de desarrollo potentes pero fáciles de usar y avanzadas facilidades

para el depurado del programa. En la Figura 2.4 se muestra el diagrama de bloques del

microcontrolador MCF51QE128, donde se puede distinguir el núcleo, la memoria (Flash y

RAM), los módulos de entrada/salida y el control del sistema.

Figura 2.4 Diagrama de bloques del microcontrolador MCF51QE128.

Page 50: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Descripción e implementación del hardware para el sistema de control 33

El núcleo del MCF51QE128 está compuesto por un procesador denominado ColdFire V1, la

frecuencia de trabajo es configurable hasta 50.33 MHz con lo que se puede contar con 2.1

MIPS (Millones de Instrucciones Por Segundo) por cada MHz que se incremente la

frecuencia de trabajo. Además cuenta con un pin para la interfaz de depuración (BKGD/MS),

control para la depuración (BDC, Background Debugger Control) y un controlador para el

bus.

El pin para la interfaz del depurado permite el acceso al emulador externo y la programación

de la memoria Flash del microcontrolador, mientras que el controlador del depurado permite

analizar las operaciones programadas por el usuario en segundo plano (modo background) o

en tiempo real; para esto último dispone de un conjunto de registros y de puntos de ruptura

con respuestas de disparo programables [15].

El microcontrolador tiene una memoria flash de 128 KB y una memoria RAM de 8 KB tanto

para código, datos y registros (control, estado y E/S).

Los módulos de entrada/salida cuentan con un controlador de bus que está formado por dos

buses, uno de alta velocidad para las memorias (Flash y RAM) y puertos especiales de

entrada/salida (RGPIO, Rapid General Purpose Input Output), y otro de baja velocidad para

los módulos de entrada/salida restantes.

El control del sistema del MCF51QE128 tiene las siguientes funciones:

Selector de modos de operación: El microcontrolador cuenta con varios modos de

ejecución, espera y parada para el ahorro de energía. Así como de un modo de

depuración para el desarrollo del software.

Protección: Incluye un temporizador Watchdog, un detector de bajo voltaje y

detectores de código o direcciones ilegales.

Controlador de Interrupciones: Soporta hasta 30 solicitudes de interrupción de

periféricos y 7 interrupciones por software.

El MCF51QE128 cuenta con un módulo de reloj interno (ICS, Internal Clock Source) que

tiene entradas de relojes internos y externos e integra divisores y multiplicadores de

frecuencia para diferentes propósitos. Todas estas opciones permiten definir hasta 6 modos

de trabajo de los relojes. Además el microcontrolador cuenta con tres módulos

temporizadores independientes, de los cuales dos de ellos (TPM1 y TPM2) tienen tres canales

Page 51: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

34 Capítulo 2.

y el tercero (TPM3) tiene seis. Esto permite la generación simultánea de trenes de pulsos de

control a diferentes frecuencias en función del cálculo del perfil de velocidad para tres

motores de pasos.

En la figura 2.5 se muestra la conexión recomendada en la hoja de especificaciones de

componentes pasivos a los pines del microcontrolador, donde VSS y VDD corresponde a los

pines para la alimentación primaria del microcontrolador que debe ser de 3 V. Los

componentes pasivos como el capacitor CBLK es utilizado para almacenar energía para el

sistema mientras que el resto de los capacitores deben ser colocados lo más cercano a los

pines correspondientes para una mejor supresión del ruido. Tambien se muestran conexiones

opcionales para un reset manual, un filtro RC recomendado para ambientes ruidosos,

oscilador externo y el conector para programación y depuración del software.

El MCF51QE128 también cuenta con dos módulos denominados SCI (Serial Communication

Interface) que facilitan la implementación de interfaces de comunicaciones series asíncronas

y ofrecen soporte para los protocolos y modos de operación. Ambos módulos SCI son iguales

y pueden ser utilizados de manera independiente uno de otro, disponiendo cada uno de ellos

de un conjunto separado de registros operacionales para su control y configuración. Las

principales características de los módulos SCI son las siguientes:

Soporte de comunicaciones asíncronas full-duplex en formato NRZ estándar.

Transmisor y receptor con doble buffer y con habilitación independiente.

Velocidad de transmisión de datos programable.

Generación de interrupciones asociadas al transmisor, al receptor o a errores.

Longitud de dato programable.

Polaridad del transmisor programable.

Page 52: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Descripción e implementación del hardware para el sistema de control 35

Figura 2.5 Sistema básico de conexión del MCF51QE128.

2.3.1.2 El circuito integrado MAX232

El circuito integrado MAX232 convierte las señales de un puerto serie RS-232 a señales

compatibles con los niveles de voltaje lógicos. El protocolo RS-232 especifica la manera de

establecer una comunicación entre un equipo terminal de datos, como una PC, y un equipo

de comunicación de datos, como un modem. Los niveles de tensión del RS-232 son distintos

a los utilizados en los sistemas digitales; un 0 lógico es una señal comprendida entre los +3

Page 53: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

36 Capítulo 2.

V y +15 V, mientras que un 1 lógico es una señal comprendida entre -3 V y -15 V. Por ello

se requiere de un conversor de nivel, en el caso de microcontroladores se suele utilizar el

circuito integrado MAX232, que mediante una serie de condensadores externos consiguen

suministrar niveles compatibles con RS-232 y solo requiere un voltaje de alimentación de

5V.

El MAX232 proporciona a la tarjeta de control un transmisor, un receptor, generadores de

reloj, formato del paquete de datos, velocidad de transmisión y recepción que permite

establecer una comunicación serial con la PC mediante un puerto serial RS-232. Sin embargo

debido a la versatilidad del puerto de comunicación USB se ha sustituido el puerto RS-232

en los equipos. No obstante la comunicación serie sigue siendo una forma eficiente de

interconectar dos equipos cuando los requisitos de ancho de banda no son superiores a los

110 Kbps, contando con la ventaja de no requerir una gran complejidad en el software para

la gestión de la comunicación en ninguno de los dos extremos. Por ello existen soluciones

comerciales que permiten utilizar un puerto USB como RS232. Por ello el Conector DB9

hembra con el que cuenta la tarjeta de control es utilizado para la interconexión con la PC

mediante un cable comercial USB-Serial.

En la figura 2.6 se muestra el diagrama esquemático de la tarjeta de control donde se observa

el CI MAX232 con los componentes pasivos (capacitores y resistores) para su correcto

funcionamiento. La fuente de alimentación general se conecta mediante el Power jack y debe

ser de +5V de corriente directa. En caso de contar con un eliminador como fuente de

alimentación que proporcione un voltaje mayor a los +5V se implementó un jumper que

habilita al regulador de voltaje LM7805, ya que este voltaje se distribuirá a las demás tarjetas

del sistema de control para la alimentación de sus circuitos lógicos. El regulador de voltaje

LF33CV proporciona un voltaje de +3.3V a su salida, este voltaje alimenta exclusivamente

al MCF51QE128, el cual también requiérelos de componentes pasivos para la conexión

recomendada de la figura 2.5.

Page 54: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Descripción e implementación del hardware para el sistema de control 37

Figura 2.6 Diagrama esquemático de la tarjeta de control.

Page 55: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

38 Capítulo 2.

2.3.2 Tarjetas de Accionamiento

La tarjeta de accionamiento está basada en el uso de dos circuitos integrados, L297 y L298,

diseñados por STMicroelectronics para trabajar en conjunto para el control de motores de

pasos. Esto con el objetivo de equilibrar el uso de recursos de software y hardware en el

sistema de control, ya que el CI L297 genera la secuencia de excitación para el tipo de paso

y sentido de giro de los motores de pasos tanto de tipo bipolar como unipolar. Las ventajas

de utilizar esta combinación son que requiere de pocos componentes básicos para su

funcionamiento y que con el uso de estos dos CI el desarrollo de software para el control de

motores de pasos se simplifica.

2.3.2.1 El CI L297

En la figura 2.7 se muestra el diagrama de bloques del CI L297 que integra la lógica para la

generación de señales, que se acondicionarán en la etapa de potencia, para el control de

motores de tipo bipolar y unipolar. Además de contar con dos circuitos chopper basados en

PWM para regular la corriente que circula por las fases del motor.

Figura 2.7 Diagrama de bloques del CI L297.

Page 56: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Descripción e implementación del hardware para el sistema de control 39

La parte fundamental del L297 es el bloque llamado TRANSLATOR el cual genera la

secuencia de excitación de las fases y está controlado por señales provenientes del

microcontrolador. Estas señales se identifican como HALF/𝐹𝑈𝐿𝐿̅̅ ̅̅ ̅̅ ̅ STEP y DIRECTION

CW/𝐶𝐶𝑊̅̅ ̅̅ ̅̅ ̅ , con lo que se selecciona el tipo de giro (medio paso o paso completo) y la

dirección del giro (horario o anti horario) respectivamente. El bloque TRANSLATOR requiere

además de una señal de reloj 𝐶𝐿𝑂𝐶𝐾̅̅ ̅̅ ̅̅ ̅̅ ̅̅ para que la secuencia avance de un estado al siguiente.

La señal es generada por el temporizador correspondiente del microcontrolador.

Internamente el TRANSLATOR consiste en un contador de 3 bits que genera una combinación

lógica basada en el Código Gray con la cual se obtiene una secuencia de 8 estados que

corresponden a los 8 pasos necesarios para la obtención de la secuencia de medio paso, como

la que se muestra en la Figura 2.8.

Figura 2.8 Secuencia a medio paso basada en el código Gray.

Con esta misma secuencia es posible obtener la secuencia de paso completo con una fase

activa seleccionando los estados pares de la secuencia, como se muestra en la Figura 2.9 (a),

o de paso completo con dos fases activas si se selecciona los estados impares de la secuencia,

como se muestra en la Figura 2.9 (b).

Figura 2.9 Secuencia a paso completo a) una fase activa b) dos fases activas

Page 57: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

40 Capítulo 2.

La señal de entrada RESET reestablece de forma asíncrona la salida del TRANSLATOR al

valor de la posición 1 de la secuencia.

La señal de salida HOME se establece el valor que será considerado como la posición 1 de

la secuencia.

La señal de entrada ENABLE requiere de un estado lógico para la habilitar o deshabilitar las

señales a la salida del bloque OUTPUT LOGIC. Esta señal se establece a partir de un pin del

microcontrolador y de esta forma se evita la disipación de energía en forma de calor debido

a la excitación de fases de motores inactivos.

La señal de entrada CONTROL inhibe la función de chopper deshabilitando las señales 𝐼𝑁𝐻1̅̅ ̅̅ ̅̅ ̅

y 𝐼𝑁𝐻2̅̅ ̅̅ ̅̅ ̅ mediante un nivel lógico alto para permitir el control de motores unipolares, por el

contrario un nivel lógico bajo corresponderá al control de un motor de tipo bipolar.

La señal SYNC se utiliza si se requiere sincronizar el desplazamiento de varios motores de

pasos controlados por el CI L297.

La señal de un oscilador externo se conecta a la entrada OSC y se utiliza para ajustar los flip

flops para habilitar la salida del bloque OUTPUT LOGIC con lo que se comienza a detectar

el incremento de la corriente en carga. Cuando se incrementa la corriente en la carga, el

voltaje en las resistencias conectadas a SENS1 y SENS2 se incrementa. Si este voltaje es igual

al voltaje de referencia establecido en la entrada Vref, el flip flop recibe una señal de reset con

lo cual se deshabilita hasta el siguiente pulso del oscilador. Hay que tomar en cuenta que

entonces el voltaje de referencia determinará la corriente pico que puede circular por la carga.

Las señales A, B, C y D a la salida del bloque OUTPUT LOGIC son acondicionadas mediante

el CI L298 para la excitación de las fases del motor correspondiente.

2.3.2.2 El CI L298

El CI L298 permite controlar cargas inductivas como relevadores, solenoides y motores tanto

de corriente directa como de pasos ya que está compuesto por dos circuitos puente H

Page 58: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Descripción e implementación del hardware para el sistema de control 41

completos. Cada puente H es una configuración de cuatro transistores que son conmutados

en pares para que la corriente pueda fluir en ambos sentidos de acuerdo a las señales lógicas

a la entrada. Los emisores de cada puente son conectados y corresponden a una terminal

externa como se muestra en el diagrama de boques de la figura 2.10.

Figura 2.10 Diagrama de bloques del CI L298.

Por lo tanto el CI L298 permite acondicionar las señales digitales provenientes del CI L297

hasta 46 V y hasta 2 A por fase mediante la fuente conectada a través de +Vs de acuerdo con

las especificaciones del motor. El CI L298 también cuenta con dos entradas (EnA y EnB)

para habilitar o deshabilitar de forma independiente las señales de entrada de cada puente y

que corresponden a las salidas 𝐼𝑁𝐻1̅̅ ̅̅ ̅̅ ̅ y 𝐼𝑁𝐻2̅̅ ̅̅ ̅̅ ̅ del L297. La corriente que fluye a través de la

carga puede ser medida utilizando las salidas de sensado SENSE A y SENSE B, en las cuales

se conectan una resistencia por cada puente (RSA y RSB) que se comparten con el L297 para

detectar la intensidad de esta corriente.

En la figura 2.11 se muestra el diagrama de bloques de la interconexión de los circuitos L297

y L298, además de un puente de diodos a la salida del L298 que permite la rápida

recuperación de la corriente que circula por cargas inductivas como son las fases de los

motores de pasos

Page 59: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

42 Capítulo 2.

Figura 2.11 Diagrama de bloques de la interconexión de los circuitos L297 y L298.

La tarjeta de accionamiento además de contar con los elementos para la interconexión

mostrada en la figura 2.11 se le implementaron indicadores LED para que el usuario pueda

conocer de forma rápida el sentido de giro y el tipo de paso configurado en cada motor activo.

También se cuenta con el puerto PS2 que envía señales al microcontrolador para la

generación de pulsos si se requiere el posicionamiento de la carga de forma manual. La fuente

de voltaje para el motor se conecta al jack Vmotor que cuenta con un fusible de 2 A como

protección adicional. El conector DB9 hembra es utilizado para la conexión de las fases del

motor y de los sensores de curso correspondientes. El esquema de conexión es el mostrado

en la figura 2.12

Figura 2.12 Esquema de conexión para el conector DB9 hembra.

El diagrama esquemático de la tarjeta que se utilizó para el accionamiento de los motores de

pasos es el que se muestra en la Figura 2.13.

Page 60: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Descripción e implementación del hardware para el sistema de control 43

Figura 2.13 Diagrama esquemático de la tarjeta de accionamiento.

Page 61: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

44 Capítulo 2.

2.3.3 Tarjeta del Bus de Comunicación

Se diseñó un tarjeta que permitiera la interconexión entre las tarjetas de accionamiento con

la tarjeta de control, la comunicación entre estas tarjetas es de tipo paralelo. El uso de la

comunicación en forma paralela se estableció debido a que la información para la activación

o desactivación de los motores se debe realizar de forma simultánea, por lo que cada línea de

conexión tiene una función fija. La relación de las conexiones entre los puertos del

microcontrolador de la tarjeta de control y las señales de las tarjetas de accionamiento, así

como su función es la que se muestra en la tabla 2.1.

Otra de las funciones de esta tarjeta es distribuir la alimentación de +5 V a todas las tarjetas,

regulada desde la tarjeta de control, para el funcionamiento de los circuitos integrados

lógicos. Así mismo cuenta con un jumper que habilita el voltaje máximo (+5V) como el

voltaje de referencia (Vref) que necesita cada tarjeta de accionamiento para el control de la

corriente o la variación del mismo mediante un potenciómetro.

El diseño de la tarjeta permite una disposición física tal que las tarjetas se pueden alinear en

un módulo portable en forma de rack. La figura 2.14 muestra el diagrama esquemático de la

tarjeta del bus de comunicación.

Page 62: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Descripción e implementación del hardware para el sistema de control 45

Tarjeta de Control Tarjeta de Función

Accionamiento 1

TMP1 CLK Señal de reloj del Temporizador 1

PTD1 H/F Selección del tipo de paso del motor 1

PTD0 CW/CWW Selección de sentido de giro de motor 1

PTH7 ENABLE Habilitar el motor 1

PTH6 FDCA Detección de sensor de fin de cuso A1

PTE7 FDCB Detección de sensor de fin de cuso B1

PTH1 PaP Selección de generación de pulsos manuales

PTH0 CWm Pulsos manuales en sentido horario

PTE6 CWWm Pulsos manuales en sentido antihorario

Accionamiento 2

TMP2 CLK Señal de reloj del Temporizador 2

PTE5 H/F Selección del tipo de paso del motor 2

PTB5 CW/CWW Selección de sentido de giro de motor 2

PTB4 ENABLE Habilitar el motor 2

PTC3 FDCA Detección de sensor de fin de cuso A2

PTC2 FDCB Detección de sensor de fin de cuso B2

PTD7 PaP Selección de generación de pulsos manuales

PTD6 CWm Pulsos manuales en sentido horario

PTD5 CWWm Pulsos manuales en sentido antihorario

Accionamiento 3

TMP3 CLK Señal de reloj del Temporizador 3

PTC1 H/F Selección del tipo de paso del motor 3

PTF7 CW/CWW Selección de sentido de giro de motor 3

PTF6 ENABLE Habilitar el motor 3

PTF5 FDCA Detección de sensor de fin de cuso A3

PTF4 FDCB Detección de sensor de fin de cuso B3

PTB3 PaP Selección de generación de pulsos manuales

PTB2 CWm Pulsos manuales en sentido horario

PTF3 CWWm Pulsos manuales en sentido antihorario

Alimentación

+5V +5V Voltaje para circuitos lógicos

GND GND Tierra común

Tabla 2.1 Relación de conexiones de la tarjeta del bus de comunicación.

Page 63: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

46 Capítulo 2.

Figura 2.14 Diagrama esquemático de la tarjeta del bus de comunicación.

Page 64: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Descripción e implementación del hardware para el sistema de control 47

2.3.2 Rack y conectores

Para poder contar con un sistema de control portátil, el sistema obtenido de la interconexión

de las tarjetas electrónicas fue incorporado a una estructura en forma de rack vertical como

se muestra en la Figura 2.15.

a) b)

Figura 2.15 Rack del sistema de control.

En la figura 2.15 a), la tarjeta localizada en la primera posición (en orden descendente) es la

tarjeta de control y posteriormente se ubican las tres tarjetas de accionamiento de los motores.

Esta estructura cuenta con ventilador que permite la mejor circulación de aire interna que

permite la disipación del calor generado en el circuito L298. El switch lateral interrumpe el

suministro de voltaje lógico a todo el sistema. Las fuentes de voltaje para los motores de

pasos deben ser independientes y contar con un conector tipo jack para la conexión con la

tarjeta de accionamiento correspondiente.

Los indicadores LED se ubicaron en la carátula de cada tarjeta de accionamiento, como se

muestra en la figura 2.15 b), y se interpretan como se observa en la figura 2.16.

Figura 2.16 Carátula de la tarjeta de accionamiento con indicadores LED.

Page 65: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

48 Capítulo 2.

2.4 Resultados del Capítulo

Se establecieron las características del sistema de control actual y las características que debe

cumplir el sistema de control propuesto.

Se diseñó el circuito de la tarjeta de control basada en el microcontrolador MCF51QE128

que permite la comunicación serie PC – Microcontrolador. El MCF51QE128 cuenta con tres

temporizadores independientes necesarios para la activación de hasta tres motores de pasos

de forma simultánea.

Se diseñó el circuito de la tarjeta de accionamiento en base al funcionamiento conjunto de

los circuitos integrados L297 y L298. En ésta tarjeta se generan las secuencias de excitación

en base al temporizador correspondiente de la tarjeta de control, además de acondicionar las

señales para la excitación de motores de tipo bipolar o unipolar.

El diseño de la tarjeta de control y la tarjeta de accionamiento dan cumplimiento a los dos

primeros objetivos particulares del este trabajo de tesis.

Page 66: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

49

Capítulo 3. Diseño e implementación del algoritmo para el

sistema de control

3.1 Introducción

El algoritmo para el control de motores de pasos se ha implementado utilizando el

microcontrolador MC51QE128. El funcionamiento del sistema depende de los parámetros

que sean enviados a través del puerto serie. Estos parámetros fijan los valores de las

frecuencias para la velocidad de arranque y velocidad máxima, así como el incremento en la

frecuencia para la aceleración del motor dependiendo del sistema mecánico en que se

encuentre funcionando. En este capítulo se presentan los comandos implementados así como

una descripción de los mismos y su sintaxis. Posteriormente se explica de manera más

detallada el algoritmo de control. Finalmente se muestran las funciones específicas del

microcontrolador MC51QE128 que permiten el cálculo del perfil de aceleración en tiempo

de ejecución.

3.2 Los comandos de control implementados

Los comandos de control permiten el almacenamiento de los parámetros relacionados con el

sistema y su funcionamiento en el microcontrolador. Los comandos de control se clasificaron

en dos grupos: del mecanismo y de la trayectoria. Esta clasificación se basa en que los

comandos del mecanismo se utilizan para almacenar los parámetros y características del

sistema mecánico y una vez establecidos no es necesario utilizarlos de nuevo. Por el contrario

los comandos de control de la trayectoria son los más utilizados ya que establecen el tipo de

trayectoria y el número de pasos para que el sistema mecánico accionado por los motores de

pasos posicione el módulo de medición de los sistemas experimentales.

En la tabla 3.1 se muestran los comandos de control del mecanismo, la sintaxis, así como su

descripción. Para evitar confusión y redundancia los comandos que requieren valores

numéricos asociados a cada uno de los tres ejes (denotados con el subíndice x y z como le

corresponda) se introducen en una sola instrucción, separando los valores por un punto y

coma (;). Si no se cuenta con un sistema mecánico con tres ejes, basta colocar un cero en el

Page 67: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

50 Capítulo 3.

lugar del valor correspondiente al eje con lo que se evitan errores de funcionamiento del

sistema.

Comando Sintaxis Descripción

fmin fmin=fminx;fminy;fminz Almacena la frecuencia, en Hz, de

arranque/parada del motor de cada eje.

fmax fmax=fmaxx;fmaxy;fmaxz Almacena la frecuencia, en Hz, para la

velocidad máxima del motor de cada eje.

df df=dfx;dfy;dfz Incremento lineal de la frecuencia, en Hz,

para la aceleración de los motores.

Tabla 3.1. Comandos de control del mecanismo.

La tabla 3.2 muestra los comandos que se implementaron para el caso que el sistema

mecánico a controlar disponga de sensores de fin de curso. El comando Z activa los tres

motores en el sentido de giro establecido para desplazar la carga hacia el cero mecánico. Una

vez en esa posición se introduce el comando xi para reiniciar el contador absoluto y luego se

hace uso del comando E para que los motores de pasos se activen en sentido opuesto al

establecido para el cero mecánico y así desplacen la carga hacia el final de cada eje. Cuando

la carga llegue al final de cada eje se establece el desplazamiento máximo en número de

pasos con el comando xf que será igual al valor del contador absoluto. El contador absoluto

asociado a cada eje evitará generar perfiles de velocidad para trayectorias imposibles.

Comando Sintaxis Descripción

Z cw Z= cwx;cwy;cwz Establece el sentido de giro de cada motor para llegar al

cero mecánico cww

E E Activa los motores para desplazar la carga hacia el final de

cada eje

xi xi Reinicia el contador absoluto

xf xf Establece el desplazamiento máximo en número de pasos

valor que se le asigna al contador absoluto

Tabla 3.2 Comandos para sistema mecánico con sensores de fin de curso.

En la tabla 3.3 se muestran los comandos de control de la trayectoria, la sintaxis así como su

descripción. Así mismo en el los comando que requieran valores numéricos es necesario

introducir los valores para tres ejes en una sola instrucción y en el caso de no requerirse el

desplazamiento de algún eje se debe colocar un cero en el lugar y así se deshabilitará el motor

correspondiente. La sintaxis de los comandos que requieren de comandos complementarios

como son el sentido de giro y el tipo de paso es un ejemplo en el que los tres ejes giran en un

Page 68: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Diseño e implementación del algoritmo para el sistema de control 51

mismo sentido o que el tipo de pasos es el mismo, sin embargo es posible establecer los

comandos complementarios en cualquier combinación que se requiera por cada eje.

Comando Sintaxis Descripción

xs xs=xsx;xsy;xsz Número de pasos de desplazamiento para cada eje

paso h paso=hx;hy;hz Medio paso para todos los ejes

f paso=fx;fy;fz Paso completo para todos los ejes

giro cw giro=cwx;cwy;cwz Giro horario para todos los ejes

ww giro=wwx;wwy;wwz Giro antihorario para todos los ejes

go go Inicia el desplazamiento de los ejes configurados

s s Detiene el desplazamiento con desaceleración

k k Cancela el desplazamiento de todo los ejes

p p Solicita la información de la posición de los ejes

Tabla 3.3 Comandos de control de trayectoria.

Los comandos listados en las tablas 3.1, 3.2, y 3.3 son enviados desde la PC al

microcontrolador a través del puerto serie. La interfaz gráfica del puerto serie más conocida

para el sistema operativo Windows es Hyperterminal o CuteCom para Opensuse de Linux

que es el utilizado en esta propuesta. La interfaz de puerto serie CuteCom requiere que se

establezca el nombre del puerto virtual habilitado para el envío de datos para ello es necesario

que la ejecutemos con acceso de superusuario. En la tabla 3.4 se enlista los datos de

configuración necesarios para establecer la comunicación serial que corresponde a los valores

configurado en el módulo de comunicación serial del microcontrolador.

Velocidad de Transmisión 9600 Baudios

Longitud de Dato 8 bits con un bit de parada

Bit de Paridad No

Tabla 3.4 Configuración para la comunicación serial PC - µC.

En la figura 3.1 se muestra la interfaz gráfica del puerto serie CuteCom con la configuración

que se requiere para poder establecer la comunicación con el microcontrolador. Esta interfaz

cuenta con dos ventanas, la superior para la recepción de datos provenientes del

microcontrolador y la inferior para el envío de datos al microcontrolador. En esta última se

puede observar un ejemplo del uso de comandos de control.

Page 69: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

52 Capítulo 3.

Figura 3.1 Interfaz gráfica del puerto serie CuteCom para Opensuse de Linux.

3.3 Algoritmo de control

El algoritmo de control está basado en interrupciones para evitar la técnica de encuesta

(polling, por su traducción en inglés) para la atención de eventos. La técnica de encuesta

consiste en comprobar cada cierto tiempo el estado de un determinado evento o periférico, lo

que la convierte en una técnica que puede ser ineficiente en determinados casos ya que el

microprocesador consume recursos continuamente para realizar todas las instrucciones del

proceso de encuesta.

El algoritmo es programado en lenguaje C, el cual se ha convertido en un lenguaje común

para el desarrollo de programas en sistemas embebidos. El microcontrolador posee un set de

instrucciones en ensamblador que puede utilizarse también para la programación del

algoritmo. En nuestro caso, consideramos que es una opción poco práctica debido a la

complejidad interna del microcontrolador para controlar todos los recursos con los que

cuenta. El uso del lenguaje C además de ayudar a gestionar mejor programas complejos que

Page 70: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Diseño e implementación del algoritmo para el sistema de control 53

el ensamblador, también permite contar con una estructura estándar que puede ser analizada

y modificada más fácilmente por cualquiera persona que maneje este lenguaje aunque no

cuente con gran dominio del set de instrucciones del microcontrolador MC51QE128.

El desarrollo del software en el entorno de desarrollo del MCF51QE128 se estructura en base

a proyectos que agrupan varios módulos (ficheros) que se compilan y enlazan para formar

un programa ejecutable. El fichero principal es donde se encuentra la función main() está

basada en un bucle infinito en espera de una interrupción por comunicación serial. El

programa principal también tiene como función el control del envío de datos mediante la

comunicación serie establecida con la PC, así como el sensado de los fines de curso para la

desactivación oportuna de los temporizadores. En la figura 3.2 se muestra el diagrama de

flujo del programa principal del algoritmo de control.

Figura 3.2 Diagrama de flujo del programa principal.

En la figura 3.3 se muestra el diagrama de flujo de la interrupción una vez que se recibe una

cadena de caracteres.

Main Loop

FDCA1 o FDCB1 == 1 Si Desactiva Temporizador 1

Recepción de datos

Envía datosLimpiar buffer de

envío de datos

FDCA2 o FDCB2 == 1 Si Desactiva Temporizador 2

FDCA3 o FDCB3 == 1 Si Desactiva Temporizador 3

No

No

Envío de datos

No

Si

No

Interrupción por recepción de datos

Si

Page 71: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

54 Capítulo 3.

Figura 3.3 Diagrama de flujo de la interrupción por comunicación serial.

El almacenamiento o modificación de los valores de los comandos requieren de una

metodología para la correcta caracterización y funcionamiento del sistema mecánico. La

metodología consiste en introducir la frecuencia mínima de cada motor con el comando fmin,

esta frecuencia será a la que gire el rotor de cada eje para ubicarse en la posición de cero

mecánico mediante el comando Z. Una vez que los ejes se encuentren en la posición del cero

mecánico se inicializa los contadores absolutos de cada eje con el comando xi. En este punto

se introduce el comando E para que los rotores giren en sentido opuesto al cero mecánico

hasta el desplazamiento máximo de cada eje, mientras el contador se incrementa en cada

pulso enviado por cada temporizador. Al final de esta rutina se conocerá el desplazamiento

máximo en número de pasos que se requiere por cada eje y se establecerá el valor de cada

contador absoluto con el comando xf. Cuando se haya realizado esta rutina se tiene que

introducir el valor de la frecuencia máxima con el comando fmax y el incremento lineal para

el perfil de velocidad de tipo trapezoidal con el comando df. Los valores de los comandos de

la caracterización del sistema y de los comandos de la caracterización de la trayectoria deben

ser diferentes de cero para que la función calculo(), que forma parte del fichero eventos,

calcule los valores necesarios para la generación del perfil de velocidad. La figura 3.4

muestra en diagrama de flujo de la función calculo().

Interrupción por recepción de datos

Almacena la cadena en el arreglo *recibida

Compara la cadena *recibida con los comandos establecidos en al

función comparaCadena(recibida)

cadena recibida == comando

Main Loop

Almacena o modifica los valores obtenidos

Si

No

Page 72: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Diseño e implementación del algoritmo para el sistema de control 55

Figura 3.4 Diagrama de flujo de la función que calcula la generación de perfil de velocidad.

La función calculo() se basa en el análisis de la gráfica de la figura 3.5 para calcular el número

de pasos necesarios para la parte de la aceleración del perfil de velocidad de tipo trapezoidal

utilizando la ecuación de la pendiente.

Figura 3.5 Análisis de la gráfica del perfil de velocidad.

Para ello se consideró que el número de pasos corresponde al eje de las abscisas y la

frecuencia del temporizador al eje de las ordenadas, las coordenadas del punto inicial será (0,

Si xa < xs/2

Calculo de xd

Asignar a xa=x’= xs/4Limitar la frecuencia máxima a f ’(alterno)

Caso Especial

Perfil Trapezoidal

Comando ‘go’

Inicializa x = 0

f = fmin

Si

Si

No

Calculo()

xa = fmax – fmin df

Main Loop

Activa GPP

No

Page 73: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

56 Capítulo 3.

fmin). Para lograr que la frecuencia al inicio del desplazamiento sea igual al valor de la

frecuencia asociada a la velocidad máxima del sistema motor-carga es necesario incrementar

de forma lineal la frecuencia un número de pasos igual a xa. El incremento será igual al valor

introducido por el usuario a través del comando de incremento df, por lo que la ecuación de

la pendiente entre dos puntos queda como se muestra en la ecuación 3.1.

𝑚 =𝑦2−𝑦1

𝑥2−𝑥1 𝑑𝑓 =

𝑓𝑚𝑎𝑥−𝑓𝑚𝑖𝑛

𝑥𝑎−0 (3.1)

Despejando xa de la ecuación 3.1 se tiene la ecuación 3.2,

𝑥𝑎 =𝑓𝑚𝑎𝑥 − 𝑓𝑚𝑖𝑛

𝑑𝑓 (3.2)

Debido a que el perfil de velocidad de tipo trapezoidal tiene la característica de ser simétrico

el número de pasos necesarios para la aceleración (xa) será el mismo para la desaceleración

(xd).

Si el valor de xa es mayor que la mitad del total de pasos del desplazamiento xs el perfil de

velocidad de tipo trapezoidal no es realizable por lo que se diseñó una alternativa para ésta

condición.

3.3.1 Perfil de velocidad de tipo trapezoidal alterno

Cuando el número de pasos calculado para la aceleración xa es mayor que la mitad del

número de pasos totales xs es posible que la frecuencia se pueda incrementar hasta su valor

máximo. Sin embargo el número de pasos restantes del desplazamiento no serán suficientes

para la etapa de la desaceleración, lo que producirá un frenado abrupto que generará pérdida

de pasos. Para evitar este comportamiento se estableció que cuando exista esta condición se

le asigne a xa un valor alterno igual a 1/3 del número de pasos totales del desplazamiento xs.

Con estos nuevos valores se asegura que el incremento de la frecuencia en la etapa de la

aceleración solo llegue a un valor menor al de la frecuencia máxima, como se muestra en la

gráfica de la figura 3.6, pero se logrará la realización completa de un perfil de velocidad de

tipo trapezoidal que evitará la pérdida de pasos.

Page 74: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Diseño e implementación del algoritmo para el sistema de control 57

Figura 3.6 Perfil de velocidad de tipo trapezoidal alterno debido al criterio de xa.

Cuando ya se cuenta con los valores para la generación del perfil de velocidad para todos los

ejes activos, el algoritmo espera el comando go. Este comando inicializa la frecuencia de los

temporizadores con el valor de frecuencia mínima correspondiente, además inicializa un

contador local x para el control de pulsos generados por el temporizador. Finalmente habilita

los temporizadores y sus interrupciones para la atención del generador de pulsos programable

(PPG) del microcontrolador. El generador de pulsos programable habilita una interrupción

cada vez que se genere un pulso y atiende una función en la que el contador local x se

incrementa y con ello se establezcan las condiciones para el incremento o decremento de la

frecuencia para la generación del perfil de velocidad en tiempo de ejecución. En la figura 3.7

se muestra el diagrama de flujo de la función de pulsos programable de un temporizador que

varía la frecuencia en tiempo de ejecución.

Figura 3.7 Diagrama de flujo del generador de pulsos programable 1.

GPP1

x1==xs1?

Desactiva GPP1

Si

x1 < xa1 ? xa1 < x1 < xd1?

Velocidad ConstanteMantener la frecuencia

del pulso igual a la fmax1

xd1 < x1 < xs1?

AceleraciónIncrementa en df1 la frecuencia del pulso

Si

No No

Si

DesaceleraciónDisminuir en df1 la

frecuencia del pulso

Si

x++

Comando ‘k’?No

Si

Main Loop

Comando ‘s’?

x1==xd1

No

Si

No No

Page 75: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

58 Capítulo 3.

Se incluyó la detección del comando k en el generador de pulsos programable para establecer

una parada de emergencia y el comando s para detener el desplazamiento con desaceleración

para evitar la pérdida de pasos que genera el comando k.

3.4 Funciones Específicas del MCF51QE12

La mayoría de los microcontroladores utilizan un entorno integrado de desarrollo o IDE

(Integrated Development Enviroment) que incluye el compilador, el depurador y otras

utilidades que pueden variar desde los más simple como un editor de texto, hasta lo más

complejo como una herramienta de generación automática de código fuente que permita el

desarrollo rápido de aplicaciones.

El IDE del MCF51QE128 es el Codewarrior el cual cuenta con varias versiones dependiendo

de las familias dentro de los microcontroladores de Freescale. El microcontrolador

MCF51QE128 pertenece a la familia Cold Fire V1 por lo que la versión utilizada de

Codewarrior es la 6.2. Esta versión incluye herramientas tales como: editor, compilador,

enlazador, cargador, depurador y simulador.

El Codewarrior clasifica los recursos del microcontrolador en módulos que encapsulan la

funcionalidad en componentes a los cuales se pueden configurar sus propiedades, métodos y

eventos mediante una ventana denominada inspector de componentes. Las propiedades son

los parámetros del componente donde se define cuales periféricos internos serán utilizados

así como la inicialización y el comportamiento en tiempo de ejecución. Los métodos son

funciones o subrutinas prediseñadas por lo que generan el código según como sean

habilitadas. Los eventos son una ocurrencia que afecta al funcionamiento y son utilizados

para el procesamiento de eventos relacionados con las subrutinas (errores, interrupciones,

desbordamiento del buffer, etc).

La arquitectura del Codewarrior cuenta con plugins que permite la generación automática de

código en un entorno gráfico denominado Procesador Experto. Este plugin mantiene una

relación exacta entre los periféricos del microcontrolador seleccionado y los componentes

con los que cuenta. Las ventajas de contar con el Procesador Experto son:

Page 76: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Diseño e implementación del algoritmo para el sistema de control 59

Se puede modificar el tipo de inicialización del componente.

Asegura que la configuración de los componentes corresponde a los parámetros de

los periféricos.

Se pueden seleccionar solo los métodos que se van a utilizar para evitar la generación

de código innecesario, así mismo se pueden seleccionar solo los eventos que se

requieren para el código en particular.

Las funciones generadas de cualquier periférico pueden ser modificadas en cualquier

momento.

Genera la cantidad de código óptimo para cada componente.

Todo esto permite la fácil y rápida configuración de los periféricos del microcontrolador.

3.4.1 Comunicación serie

El MCF51QE128 está dotado de dos módulos denominados SCI (Serial Communication

Interface) que facilitan la implementación de interfaces de comunicación serie asíncrona.

Ambos módulos SCI son iguales y pueden ser utilizados de manera independiente,

disponiendo cada uno de ellos de un conjunto separado de registros operacionales para su

control y configuración. Cada bloque está constituido por tres bloques, el bloque transmisor,

el bloque receptor y el bloque generador de baudios. Tanto el transmisor como el receptor

pueden operar de forma independiente uno del otro, pero comparten el mismo generador de

baudios, por lo que la velocidad será la misma tanto para la transmisión como para la

recepción.

En Codewarrior cada módulo SCI dispone de un Componente, con métodos y eventos para

la comunicación serial asíncrono, el Componente se puede configurar para atender los

eventos mediante encuesta o por interrupciones. Sin embargo, debido a que es posible la

activación simultánea de los tres módulos de temporización a diferentes frecuencias se acude

a la atención de eventos mediante interrupción. Para ello se cuenta con vectores de

interrupción que facilitan la implementación de rutinas cortas y eficientes que permitan aislar

la fuente de interrupción. Uno de los vectores de interrupción está asignado a eventos

asociados con el receptor, otro está asignado a eventos asociados con el transmisor y, por

último, existe un vector asociado a fuentes de error en la comunicación.

Page 77: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

60 Capítulo 3.

Cuando existe un evento asociado a la recepción la interrupción generada atiende una

subrutina la cual solo almacena un carácter a la vez. Siendo necesario el almacenamiento de

la cadena de caracteres enviada desde la PC fue necesario complementar la función para que

almacenara la cadena de caracteres y se asociara a un apuntador, para su posterior

comparación con los comandos establecidos.

3.4.2 Generador de Pulso Programable (GPP)

El Componente para el generador de pulsos programable se encuentra asociado a un

temporizador, por ello se consideran los tres módulos temporizadores para la activación

simultanea de hasta tres motores de pasos. Dentro de sus propiedades se considera:

Asignación del módulo temporizador correspondiente

Asignación del canal del temporizador por el cual se obtendrá el tren de pulsos

Habilita/Deshabilita la interrupción

Asignación de la prioridad de la interrupción

Asignación del periodo inicial del pulso

Asignación de la duración de la parte activa del pulso

Asignación de la polaridad inicial

Inicializar el componente y/o los eventos

Los métodos de este Componente permiten:

Habilitar/Deshabilitar la generación del pulso

Habilitar/Deshabilitar los eventos

Modificar la duración de la parte activa del pulso

Modificar el periodo o la frecuencia del pulso

Los eventos de este Componente es una llamada a una función que se atiende cada vez que

termina el periodo de un pulso. En esta función se hace el uso del método que modifica el

periodo o la frecuencia del pulso. Debido a que los valores introducidos por el usuario para

la generación del perfil de velocidad se encuentran en Hz, se configuró el método para variar

Page 78: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Diseño e implementación del algoritmo para el sistema de control 61

la frecuencia del pulso. Sin embargo, lo más importante de este método es que la

modificación de la frecuencia se puede realizar en tiempo de ejecución, por lo que cada vez

que se atiende la función se verifica que la frecuencia corresponda al número del pulso que

se está ejecutando lo que es equivalente al número de pasos generados para la trayectoria

solicitada.

3.4.3 Excepciones, interrupciones y prioridades

El MCF51QE128 maneja una tabla de vectores de excepción en un espacio de memoria de

1MB y contiene 256 vectores de los cuales 64 están definidos por el núcleo del

microcontrolador y los 192 restantes son para interrupciones de dispositivos externos. El

microcontrolador puede manejar tanto excepciones internas como externas. Las excepciones

internas consideran 12 fuentes internas de excepción, aunque hay espacio en la tabla de

vectores para albergar hasta 6. Además las excepciones internas no pueden ser enmascaradas

de modo que han de ser procesadas en cuanto se producen. Esto haría necesario programar

todas las rutinas de tratamiento de excepción para todas y cada una de las fuentes de

excepción internas. Sin embargo el núcleo del microcontrolador facilita esta labor al

proporcionar un tratamiento por defecto (reset) para las excepciones internas más comunes,

como son:

Error de acceso a memoria

Error de dirección

Instrucción ilegal

Dividir entre cero

Error de formato

Por otra parte las excepciones externas, también conocidas como interrupciones,

provenientes de periféricos tales como temporizadores, puertos de entrada/salida, o

conversores analógico/digitales activan señales en respuesta a diferentes eventos. Para

gestionar todas las diferentes fuentes de interrupción el MCF51QE128 incorpora un módulo

controlador de interrupciones llamado CF1_INTC que aunque permite poca programabilidad

ofrece la funcionalidad requerida para esta tarea. Al generarse una interrupción este módulo

informa tanto del número del vector como de su nivel de prioridad. El nivel de interrupción

Page 79: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

62 Capítulo 3.

se codifica en tres bits por lo que se pueden definir siete niveles de prioridad en las

interrupciones, siendo el nivel siete el de mayor prioridad. Las interrupciones de nivel 7 se

activan por flanco y no son enmascarables, el resto de las interrupciones funcionan por nivel

y pueden ser enmascarables. Además de estos siete niveles de prioridad, el controlador

CF1_INTC distinguen nueve prioridades dentro de cada nivel, siendo el nivel nueve el de

mayor prioridad. Por lo tanto se disponen de 63 fuentes de interrupción distintas, siete niveles

con nueve prioridades en cada nivel.

La figura 3.8 muestra la tabla ordenada con las diferentes fuentes de interrupción que gestiona

el controlador CF1_INCT. La distribución dispersa obedece a razones de compatibilidad con

microcontroladores anteriores. Para cada fuente de interrupción se indica, en el recuadro

inferior izquierdo el número de fuente de interrupción. Por otro lado, en el recuadro inferior

derecho se indica el vector de excepción asociado a cada interrupción. Tanto los niveles como

las prioridades siguen un orden descendente, de modo que el nivel 7 es más prioritario que

el nivel 3, del mismo modo que dentro de un mismo nivel la prioridad 9 es más prioritaria

que la 4.

Figura 3.8 Asignación de interrupciones por niveles y prioridades en el controlador de interrupciones del

MCF51QE128.

Tomado de [19].

Page 80: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Diseño e implementación del algoritmo para el sistema de control 63

Las dos interrupciones no enmascarables del nivel 7 son las del pin IRQ y el de detección de

nivel bajo de tensión, sus niveles son fijos por lo que no pueden ser modificadas de ninguna

manera. Las fuentes de interrupción restantes pueden ser reasignadas a otros niveles de

interrupción. Esta operación solo modifica el comportamiento interno del controlador

CF1_INTC pero no cambia el número del vector de excepción asociado a la fuente de

interrupción. Por ello para establecer la prioridad máxima (nivel 6, prioridad7) a la recepción

de comandos de la comunicación serie para que al recibir el comando de parada de

emergencia inhabilite inmediatamente el proceso. Por consiguiente los temporizadores se

ubicaron en orden con nivel de prioridad media: temporizador 1 (nivel 5), temporizador 2

(nivel 4) y temporizador 3 (nivel 3).

3.5 Resultados del Capítulo

Se implementaron y describieron los comandos utilizados para la comunicación serie entre

el microcontrolador y la PC.

Se diseñó el algoritmo de control para el cálculo y generación de perfiles de velocidad de

tipo trapezoidal en base a la información adquirida mediante los comandos introducidos.

Se explicaron las características con las que cuenta el MCF51QE128 que facilitaron la

implementación del algoritmo de control.

El diseño del algoritmo de control para la generación de perfiles de velocidad de tipo

trapezoidal de forma simultánea da cumplimiento al tercer objetivo particular de este trabajo

de tesis.

Page 81: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

64 Capítulo 3.

Esta página se dejó en blanco intencionalmente.

Page 82: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

65

Capítulo 4. Mediciones y evaluación del sistema de control

4.1 Introducción

En este capítulo se presentan una serie de pruebas y mediciones que se realizaron

inicialmente solo a la tarjeta de control para comprobar que el algoritmo de control diseñado

calculará y generará el perfil de velocidad de tipo trapezoidal. Posteriormente se evaluó el

sistema de control completo aplicado a un sistema mecánico comercial de tipo cartesiano.

4.2 Evaluación de la tarjeta de control del sistema de control propuesto

La evaluación de la tarjeta de control consistió en el análisis del tren de pulsos generado para

un perfil de velocidad de tipo trapezoidal a la salida de cada temporizador del

microcontrolador MCF51QE128. El tren de pulsos generado por cada temporizador se

adquirió con el osciloscopio DSO1460A de Agilent. Al inicio se generaron trenes de pulsos

a una frecuencia constante con un número de pulsos conocido para comprobar que el número

del pulsos del contador absoluto correspondieran al número de pulsos generados. En la figura

4.1 se muestra un tren de pulsos programado para generar 24 pulsos a una frecuencia

constante de 100 Hz. Las líneas auxiliares del osciloscopio contribuyen a establecer el tiempo

que le tomaría a un motor de pasos posicionar una carga con el número de pulsos, equivalente

al número de pasos, a la frecuencia establecida, el cual correspondería a 227 ms.

Figura 4.1 Tren de pulsos par un desplazamiento de 24 pasos a una frecuencia de 100 Hz.

Page 83: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

66 Capítulo 4.

Posteriormente se programaron perfiles de velocidad para desplazamientos muy cortos a

frecuencias bajas para poder evaluar el tren de pulsos de forma directa en la pantalla del

osciloscopio con la ayuda de las líneas auxiliares. En la figura 4.2 se muestra el tren de pulsos

obtenido de la generación de un perfil de velocidad de tipo trapezoidal para un

desplazamiento de 24 pasos con una frecuencia de arranque/parada igual a 100 Hz, una

frecuencia máxima igual a 200 Hz y un incremento lineal de 12.5 Hz.

Figura 4.2 Tren de pulsos con variación de frecuencia en función de un perfil de velocidad de tipo trapezoidal.

El análisis visual demostró que en la etapa de aceleración y en la de desaceleración la

frecuencia de los pulsos correspondían a los valores esperados para el desarrollo de un perfil

de velocidad de tipo trapezoidal. También se comprobó que el contador concordaba con los

pulsos generados aun con la variación de la frecuencia. Además al comparar el tiempo en el

que se generó este tren de pulsos (81.6 ms) con el tiempo del tren de pulsos de la figura 4.1,

se demuestra la reducción del tiempo necesario para el posicionamiento de una carga

mediante el uso de perfil de velocidad.

Para poder hacer un análisis con una mayor cantidad de número de pasos y con valores

mayores tanto de frecuencias de arranque/parada como de frecuencia máxima, se recurrió a

una función del osciloscopio que genera una tabla de dos columnas y diez mil filas en un

archivo con extensión .xls de la señal obtenida en la pantalla. Las columnas de la tabla

almacenan el nivel de voltaje por unidad de tiempo en diez mil puntos de la señal guardada.

Page 84: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Mediciones y evaluación del sistema de control 67

De tal forma que al graficar estos valores con programas de gestión de tablas, como Excel o

Matlab, se pueda obtener nuevamente la señal medida en el osciloscopio. En la figura 4.3 se

muestra el tren de pulsos, graficado en Matlab con los valores de la tabla del archivo .xls

generada por el osciloscopio, de la tarjeta de control para la generación de un perfil de

velocidad de tipo trapezoidal para un desplazamiento de 100 pasos con frecuencia de

arranque/parada de 100 Hz y una frecuencia máxima de 500 Hz con incremento lineal de 10

Hz.

Figura 4.3 Tren de 100 pulsos con frecuencia inicial de 100 Hz con incremento lineal de 10Hz hasta una frecuencia

máxima de 500 Hz.

La tabla del archivo .xls se utilizó para analizar la variación de la frecuencia de los pulsos

con un programa desarrollado en Matlab. Este programa divide la tabla asignado la columna

del tiempo a un arreglo Dt[10000] y la columna de voltaje al arreglo DA[1000]. Analizando

cada elemento del arreglo DA para la detección de los flancos de subida se obtiene la

diferencia de tiempo entre los flancos de subida consecutivos del tren de pulsos. La diferencia

de tiempo corresponde al periodo de cada pulso, por lo que se almacenan en un arreglo

llamado Periodo[10000] para obtener el valor de la frecuencia que se almacena en el arreglo

Frecuencia[10000]. En la figura 4.4 se muestra el diagrama de flujo de este algoritmo.

Page 85: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

68 Capítulo 4.

Figura 4.4 Diagrama de flujo para la gráfica de las frecuencias del tren de pulsos en Matlab.

Los valores obtenidos en el arreglo Frecuencia[10000] del tren de pulsos de la figura 4.3 se

graficaron en función del tiempo con lo que obtuvo la gráfica mostrada en la figura 4.5.

Inicio

Cargar archivo .xls

Almacena columnas en arreglosColumna de tiempo -> Dt[10000]

Columna de amplitud -> DA[10000]

Crea dos arreglosPeriodo[10000]

Frecuencia[10000]

Inicializa dos contadores, i=0 y j=0, la bandera que señala los flancos

de subida flag = 0

Si DA[i] > 2.5V

flag = 0

No

Si i < 10000

Si flag = 0 SiAlmacena en

Periodo[j] = Dt[i]flag = 1

No

Inicializa k=0

No

j++

Frecuencia [k]=1/(Periodo[k+1]-Periodo[k])

Si k < j

Grafica (Dt,Frecuencia)

No

Fin

i++

k++

Page 86: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Mediciones y evaluación del sistema de control 69

Figura 4.5 Perfil de velocidad obtenido a partir del programa implementado en Matlab para un tren de 100 pulsos

con una frecuencia inicial de 100 Hz y una frecuencia máxima de 500 Hz.

El resultado obtenido de esta gráfica valida de forma cuantitativa que el algoritmo del

microcontrolador calcula y genera el tren de pulsos de los temporizadores de forma que los

motores desplacen la carga a una velocidad que corresponda a la de un perfil de velocidad de

tipo trapezoidal.

4.3 Evaluación del sistema de control con un sistema mecánico de tipo cartesiano

Una vez que se aseguró la generación del perfil de tipo trapezoidal por parte de la tarjeta de

control se procedió a la evaluación del sistema de control completo aplicado a un sistema

mecánico comercial de tipo cartesiano.

El sistema mecánico de tipo cartesiano utilizado para la evaluación del sistema de control es

el KL4350 que cuenta con las siguientes características:

Dimensiones del Área de trabajo 432.8mm x 317.5mm x 58.4 mm (12.7”x 12.5” x

2.3”)

Velocidad máxima de desplazamiento sin carga de 5080 mm/min (200 in/min)

Tres motores de pasos 57BYGH78 de la marca Fenghe

Torque 2 N·m (282 oz·in, 20 Kg·cm)

Estructura de aluminio y área de trabajo de aluminio ranurado extruido

Eje X y Y de acero cromado de 20 mm HRC62-65

Eje Z de acero cromado de 12 mm HRC62-65

Husillos SFU1610-C7 de alta precisión y Anti-backlash

Page 87: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

70 Capítulo 4.

El backlash, también conocido como juego, es la libertad o pérdida de movimiento en un

mecanismo causado por espacios entre las partes que lo componen. Se puede observar cuando

la dirección del movimiento se invierte, por lo que es necesario hacer alguna corrección

después de varios cambios de dirección. Esto afectaría al contador relativo del algoritmo y

por lo tanto al control en lazo abierto, por ello se requirió que el husillo contara con el sistema

Anti-backlash como el que se muestra en la figura 4.6.

Figura 4.6 Husillo SFU1610-C7 con sistema Anti-backlash.

Los ejes del KL4350 se asignaron como lo muestra la figura 4.7.

Figura 4.7 Asignación de ejes al CNC KL4350.

El fabricante de los motores 57BYGH78 solo proporciona las siguientes características:

Motor de pasos Hibrido de dos fases

Corriente por fase de 2.8 A

Angulo de paso de 1.8°

Par de retención mayor a 1.8 N·m

Debido a que no se proporciona información de las curvas de par vs velocidad para conocer

la frecuencia de arranque/parada y frecuencia máxima de los motores de pasos con su

respectiva carga, es necesario realizar una caracterización experimental.

Page 88: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Mediciones y evaluación del sistema de control 71

4.3.1 Caracterización experimental del sistema mecánico

Para la obtención de la frecuencia de arranque/parada se generaron trayectorias de

desplazamiento a frecuencia constante que fueran de un sensor de fin de curso a otro.

Inicialmente la frecuencia constante se estableció en 10 Hz y se desplazó la carga de cada eje

de un sensor de fin de curso a otro del eje correspondiente para conocer el número de pasos

del desplazamiento máximo. Este proceso se repitió solo 10 veces debido a que no se

presentaron variaciones en los valores obtenidos. Posteriormente se fue incrementando la

frecuencia constante de tal forma que el contador no reflejara una pérdida de pasos en el

desplazamiento. La frecuencia constante con la se perdieron pasos para el eje x fue de 210

Hz y para el eje y y z de 260 Hz, por lo que se estableció que la frecuencia mínima de

arranque/parada debía ser 10 Hz menor para evitar la pérdida de pasos al inicio o al final del

desplazamiento. En el caso de la frecuencia máxima se generaron los perfiles de velocidad

considerando el valor de la frecuencia de arranque/parada que ya se había obtenido pero

variando el valor de la frecuencia máxima en cada desplazamiento de un sensor de fin de

curso a otro hasta que se detectaron pérdida de pasos en el contador absoluto. Los valores

obtenidos de esta caracterización experimental son los mostrados en la tabla 4.1.

Eje Fmin (Hz) Fmax (Hz)

x 200 600

y 250 700

z 250 700

Tabla 4.1 Valores obtenidos de caracterización experimental.

El desplazamiento máximo por cada eje del sistema mecánico en número de pasos

establecido por el contador absoluto son los mostrados en la tabla 4.2

Eje Número de pasos

Paso Completo Medio Paso

x 15622 31244

y 12048 24096

z 3121 6242

Tabla 4.2 Valores del contador absoluto de cada eje.

En la tabla 4.3 se muestra el tiempo requerido para el desplazamiento máximo de cada eje a

frecuencia constante, igual a la frecuencia de arranque/parada, y tiempo requerido al utilizar

el perfil de velocidad de tipo trapezoidal establecido con los valores obtenidos de la

caracterización experimental.

Page 89: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

72 Capítulo 4.

Eje Frecuencia Constante

(segundos)

Perfil Trapezoidal

(segundos)

x 75 23

y 57 20

z 15 5

Tabla 4.3 Comparativa de los tiempos de posicionamiento.

El tiempo para el desplazamiento de cada eje a la frecuencia arranque/parada de cada eje

corresponde al menor tiempo posible que tardaría un sistema de control convencional en

posicionar la carga de este sistema mecánico sin pérdida de pasos.

Finalmente se generaron trayectorias de desplazamiento desde 100 hasta 1000 pasos con

incrementos de 100 pasos, a frecuencia constante igual a la frecuencia arranque/parada.

Utilizando un vernier digital marca SURTEK con resolución de 0.01mm se midió el

desplazamiento que generaron las trayectorias en cada eje y se relacionó con el número de

pasos establecido, como se muestra en la tabla 4.4, obteniendo así una resolución de 0.03

mm por paso.

Trayectoria

Numero

de

pasos

Distancia

media sobre el

eje x (mm)

Distancia

media sobre el

eje y(mm)

Distancia

media sobre el

eje z(mm)

Resolución

1 100 3±0.02 3±0.02 3±0.02 0.03

2 200 6±0.02 6±0.02 6±0.02 0.03

3 300 9±0.02 9±0.02 9±0.02 0.03

4 400 12±0.02 12±0.02 12±0.02 0.03 5 500 15±0.02 15±0.02 15±0.02 0.03

6 600 18±0.02 18±0.02 18±0.02 0.03

7 700 21±0.02 21±0.02 21±0.02 0.03 8 800 24±0.02 24±0.02 24±0.02 0.03

9 900 27±0.02 27±0.02 27±0.02 0.03

10 1000 30±0.02 30±0.02 30±0.02 0.03

Tabla 4.4 Resolución obtenida mediante la relación del número de pasos con la distancia de la trayectoria para el

eje x, y, z.

Page 90: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Mediciones y evaluación del sistema de control 73

4.4 Resultados del Capítulo

Se diseñó un programa en Matlab para la evaluación de la generación de trenes de pulsos

correspondientes a perfiles de velocidad de tipo trapezoidal a través de los temporizadores

del microcontrolador de la tarjeta de control.

Se evaluó el sistema de control mediante un sistema mecánico comercial de tipo cartesiano.

Se caracterizó de forma experimental el sistema mecánico con lo que se obtuvieron los

valores de frecuencia de arranque y frecuencia máxima.

Se determinó que el sistema mecánico de tipo cartesiano tiene una resolución de 0.03 mm

por paso.

La evaluación del sistema de control aplicado a un sistema mecánico comercial de tipo

cartesiano da complimiento al último objetivo particular de este trabajo de tesis.

Page 91: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para
Page 92: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

74

Conclusiones

Se diseñó una tarjeta de control basada en el microcontrolador MCF51QE128 para la

comunicación serial con la PC mediante comandos, para la caracterización de

sistemas mecánicos accionados por motores de pasos, así como el establecimiento de

sus trayectorias.

Se diseñó una tarjeta de accionamiento basada en los circuitos integrados L297 y

L298, que genera la secuencias de excitación de las fases de motores bipolares y

unipolares, lo que además contribuyó a la reducción significativa del algoritmo de

control

Se diseñó un algoritmo de control que calcula y genera perfiles de velocidad de tipo

trapezoidal para tres motores de pasos de forma simultánea en base a los tres

temporizadores independientes con los que cuenta el MCF51QE128. Además el uso

de la función del generador de pulsos programable hizo posible generar los perfiles

de velocidad en tiempo de ejecución.

Se evaluó la generación del tren de pulsos para el perfil de velocidad de tipo

trapezoidal mediante un programa diseñado en Matlab. El sistema de control en lazo

abierto se utilizó en un sistema mecánico de tipo cartesiano, el cual se caracterizó de

forma experimental, con lo que se obtuvo una resolución de 0.03 mm por paso.

Page 93: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

75

Esta página se dejó en blanco intencionalmente

Page 94: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

76

Trabajo a Futuro

Este trabajo cumplió con los objetivos propuestos sin embargo existen mejoras que debido

al límite de tiempo no pudieron ser realizadas. A continuación se enlistan algunas de ellas:

Inclusión de rutinas para la realización de barridos continuos.

Mejorar la tarjeta de accionamiento para controlar motores que requieran más de 2A

por fase.

La implementación de una función que genere un perfil de velocidad de tipo

parabólico.

Un arreglo que permita el control de un mayor número de motores de pasos.

Page 95: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

77

Esta página se dejó en blanco intencionalmente.

Page 96: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

78

Apéndice A /** ###################################################################

** Filename : Control de Posición.c

** Project : ProcessorExpert

** Processor : MCF51QE128CLH

** Version : Driver 01.00

** Compiler : CodeWarrior ColdFireV1 C Compiler

** Date/Time : 2013-10-01, 16:59, # CodeGen: 0

** Abstract :

** Main module.

** This module contains user's application code.

** Settings :

** Contents :

** ###################################################################*/

/* MODULE ProcessorExpert */

/* Including needed modules to compile this module/procedure */

#include "Cpu.h"

#include "Events.h"

#include "AS1.h"

#include "CLK1.h"

#include "CwCww1.h"

#include "HalfFull1.h"

#include "Enable1.h"

#include "FDCA1.h"

#include "FDCB1.h"

#include "PaP1.h"

#include "CWm1.h"

#include "CWWm1.h"

#include "CLK2.h"

#include "HalfFull2.h"

#include "Bit1.h"

#include "CwCww2.h"

#include "Enable2.h"

#include "FDCA2.h"

#include "FDCB2.h"

#include "PaP2.h"

#include "CWm2.h"

#include "CWWm2.h"

#include "CLK3.h"

#include "HalfFull3.h"

#include "CwCww3.h"

#include "Enable3.h"

#include "FDCB3.h"

#include "FDCA3.h"

#include "PaP3.h"

#include "CWm3.h"

#include "CWWm3.h"

#include "PE_Types.h"

#include "PE_Error.h"

#include "PE_Const.h"

#include "IO_Map.h"

Page 97: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

79

//Complemento de las variables para el control de la transmisión del

reporte de posición

extern int flag,giro[4];

int p=0;

void main(void)

{

// Processor Expert internal initialization.

PE_low_level_init();

//End of Processor Expert internal initialization.

for(;;){

//Control de tiempo para la transmisión de caracteres

if(flag==1){

if(p==500){

AS1_OnTxChar();

p=0;

}else{

p++;

}

}

//Verifica los sensores de fin de curso y deshabilita de ser necesario

if((FDCA1_GetVal())){

if((giro[1]==1)||(giro[1]==4)){

Enable1_ClrVal();

CLK1_Disable();

}

}

if((FDCB1_GetVal())){

if((giro[1]==2)||(giro[1]==3)){

Enable1_ClrVal();

CLK1_Disable();

}

}

if((FDCA2_GetVal())){

if((giro[2]==1)||(giro[2]==4)){

Enable2_ClrVal();

CLK2_Disable();

}

}

if((FDCB2_GetVal())){

if((giro[2]==2)||(giro[2]==3)){

Enable2_ClrVal();

CLK2_Disable();

}

}

if((FDCA3_GetVal())){

if((giro[3]==1)||(giro[3]==4)){

Enable3_ClrVal();

CLK3_Disable();

}

Page 98: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

80

}

if((FDCB3_GetVal())){

if((giro[3]==2)||(giro[3]==3)){

Enable3_ClrVal();

CLK3_Disable();

}

}

}

} //End of main routine.

/** ###################################################################

** Filename : Events.c

** Project : ProcessorExpert

** Processor : MCF51QE128CLH

** Component : Events

** Version : Driver 01.02

** Compiler : CodeWarrior ColdFireV1 C Compiler

** Date/Time : 2012-08-13, 16:25, # CodeGen: 0

** Abstract :

** This is user's event module.

** Put your event handler code here.

** Settings :

** Contents :

** ###################################################################*/

/* MODULE Events */

#include "Cpu.h"

#include "Events.h"

#include <stdlib.h> //Librería necesaria para la función itoa()

#include <math.h> //Librería necesaria para la función pow()

//Se establecen las cadenas identificadoras de los comandos

char *strPaso="paso=", *strHalf="h", *strFull="f";

char *strGiro="giro=",*strCw="cw", *strCww="ww";

char *strFmin="fmin=",*strZero="Z=",*strXi="Xi",*strEnd="E",*strXf="Xf";

char *strFmax="fmax=",*strDf="df=", *strXs="xs=";

char *strGo="go=",*strKill="k",*strStop="s",*strPos="p",*strReset="r";

//Se inicializan los arreglos en los que se almacenarán los valores

//enteros de los comandos

//Para todos los arreglos se consideró que

//El elemento [1] corresponde al eje X

//El elemento [2] corresponde al eje Y

//El elemento [3] corresponde al eje Z

int Fmax[4]={0x00};

int Fmin[4]={0x00};

int Df[4]={0x00};

int Xs[4]={0x00};

int giro[4]={0x00};

Page 99: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

81

//Se inicializan los arreglos en los que se almacenarán los valores

//enteros calculados para la generación del perfil de velocidad

int f[4]={0x00};

int xs[4]={0x00};

int cntAbs[4]={0x00};

int cntRel[4]={0x00};

int giroZero[4]={0x00};

int Xa[8]={0x00};

int Xd[8]={0x00};

int eventFlag[4]={0x00};

//Se inicializan los arreglos que almacenarán la cadena de caracteres de

//los valores que se soliciten para el reporte de posición

char strPasoXYZ[20]={0x00};

char strGiroXYZ[20]={0x00};

char strFminXYZ[20]={0x00};

char strCeroXYZ[20]={0x00};

char strFmaxXYZ[20]={0x00};

char strDfXYZ[20]={0x00};

char strXsXYZ[20]={0x00};

char strCntAbsX[20]={0x00};

char strCntAbsY[20]={0x00};

char strCntAbsZ[20]={0x00};

char strCntRelX[20]={0x00};

char strCntRelY[20]={0x00};

char strCntRelZ[20]={0x00};

char report[300]={0x00};

//para condicionar el comando stop

int m=0;

/*

** ===================================================================

** Event : AS1_OnRxChar (module Events)

** Component : AS1 [AsynchroSerial]

** Description : Este evento se active despues de que un character

** es recibido.

** Parameters : None

** Returns : Nothing

** ===================================================================

*/

//Inicializaciónn de variable y arreglo para la recepción de la

//comunicación serial

int numCharReceived = 0;

char received[20] = {0x00};

void AS1_OnRxChar(void)

{

AS1_TComData ch;//TComData type is defined in the AS1.h header file

byte err;

err = AS1_RecvChar(&ch);

Page 100: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

82

//Si hubo una interrupción por recepción en la comunicación serial

if((err == ERR_OK) && (ch != '\n')){ //y no es un Enter ('\n')

if((ch>'/')&&(ch<'{')){ //verificar que los caracteres

sean solo alfanuméricos

received[numCharReceived]= ch;//almacena el caracter en

//un arreglo

numCharReceived++; //contabiliza el número de

//caracteres recibidos

}

}

if((err == ERR_OK) && (ch == '\n')){ //Cuando se detecta un Enter

received[numCharReceived]= ch; //También se almacena

numCharReceived++; // se borra cualquier dato que

//no pertenezca al la cadena

//actual

for(numCharReceived; numCharReceived < 20; numCharReceived++)

received[numCharReceived] = 0x00;

numCharReceived = 0;

comparaCadena(received); //Se envía a la función para

//comparar la cadena con los comandos

//establecidos

}

}

/*

** ===================================================================

** Event : AS1_OnTxChar (module Events)

**

** Component : AS1 [AsynchroSerial]

** Description : Este evento se active cuando un caracter es enviado

** Parameters : None

** Returns : Nothing

** ===================================================================

*/

//Se inicializan las variables para el control de la transmición de datos

unsigned long len=0;

int n=0,flag=0;

void AS1_OnTxChar(void)

{

AS1_TComData ch;

len=strlen(report); //Se cuenta el número de caracteres a transmitir

ch=report[n]; //Se establece el caracter que corresponda para la

//transmisión

if(n<len){ //Si el caracter no es el último de la cadena

AS1_SendChar(ch); // Se transmite

n++;

AS1_OnRxChar();

}else{

AS1_OnRxChar(); //Si es el último deja de transmitir

len=0; //reiniciando la bandera

flag=0;

Page 101: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

83

}

}

/*

** ===================================================================

** Función : void comparaCadena(char *received)

** Descripción : Compara la cadena de caracteres recibida con

** las cadenas establecidas para los comandos

** Parametros : apuntador del arreglo received

** Retorno : Ninguno

** ===================================================================

*/

void comparaCadena(char *received){

unsigned short l;

//Comando "paso=" para establecer el tipo de paso de los motores x,y,z

if(!(strncmp(strPaso,received,5))){

l=0;

while(strPasoXYZ[l]!= 0x00){ //Limpia el arreglo

strPasoXYZ[l]=0x00;

l++;

}

while(*received != 0x00){ //recorre el arreglo para

++received; // analizarlo de atrás hacia adelante

}

while(*received != ';'){//busca caracter antes del primer ";"

--received;

if(*received == 'h'){

HalfFull3_SetVal();//establece el tipo de paso en

//medio paso para el eje z

}

if(*received == 'f'){

HalfFull3_ClrVal();//establece el tipo de paso

//completo para el eje z

}

}

--received;

while(*received != ';'){

if(*received == 'h'){

HalfFull2_SetVal();//establece el tipo de paso en

//medio paso para el eje y

}

if(*received == 'f'){

HalfFull2_ClrVal();//establece el tipo de paso

//completo para el eje y

}

--received;

}

while(*received != '='){

--received;

if(*received == 'h'){

HalfFull1_SetVal();//establece el tipo de paso en

//medio paso para el eje x

}

Page 102: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

84

if(*received == 'f'){

HalfFull1_ClrVal();//establece el tipo de paso

//completo para el eje x

}

}

strcat(strPasoXYZ,(++received)); //almacena la cadena para el

//reporte de posición

}

//Comando "fmin=" para introducir en Hz la frecuencia de arranque de los

//motores x,y,z

if(!(strncmp(strFmin,received,5))){

l=0;

while(strFminXYZ[l]!= 0x00){

strFminXYZ[l]=0x00;

l++;

}

while(*received != 0x00){

++received;

}

while(*received != ';'){

Fmin[3] = atoi(received); //Convierte el valor ASCII en

f[3]=Fmin[3]; //entero y lo almacena en el elemento [3]

--received; //que corresponde a eje z

}

--received;

while(*received != ';'){

Fmin[2] = atoi(received);//Convierte el valor ASCII en

f[2]=Fmin[2];//entero y lo almacena en el elemento [2]

--received; //que corresponde a eje y

}

while(*received != '='){

Fmin[1] = atoi(received);//Convierte el valor ASCII en

f[1]=Fmin[1];//entero y lo almacena en el elemento [1]

--received; //que corresponde a eje x

}

CLK1_SetFreqHz((unsigned short)f[1]); //Se establece el valor

CLK2_SetFreqHz((unsigned short)f[2]); //de la frecuencia de

CLK3_SetFreqHz((unsigned short)f[3]); //arranque en cada

//temporizador

strcat(strFminXYZ,(++received)); //almacena la cadena para el

//reporte de posición

Calculo(); //La función Calculo() calcula los valores para la

//generación del perfil si todos los valores

//necesarios han sido introducidos por el usuario

}

//Comando "Z=" para posicionar en cero mecánico los ejes x,y,z

if(!(strncmp(strZero,received,2))){

eventFlag[1]=1; //Se establece el inicio de la localización

eventFlag[2]=1; //del cero mecánico mediante la bandera

eventFlag[3]=1; //eventFlag igual a 1 para todos los ejes

Page 103: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

85

l=0;

while(strCeroXYZ[l]!= 0x00){

strCeroXYZ[l]=0x00;

l++;

}

while(*received != 0x00){

++received;

}

while(*received != ';'){

received=received-3;

if(*received == 'c'){ //Se almacena el sentido de giro

received=received+2;// seleccionado para cada eje

giro[3]=1;

}

if(*received == 'w'){

received=received+2;

giro[3]=2;

}

}

--received;

while(*received != ';'){

--received;

if(*received == 'c'){

giro[2]=1;

}

if(*received == 'w'){

giro[2]=2;

}

}

--received;

while(*received != '='){

--received;

if(*received == 'c'){

giro[1]=1;

}

if(*received == 'w'){

giro[1]=2;

}

}

SelectGiro();

if(!(((FDCA1_GetVal())&&(giro[1]==1))^((FDCB1_GetVal())&&(giro[1]==2)))){

Enable1_SetVal(); //Habilitan los motores y los

CLK1_Enable(); //temporizadores así como los

CLK1_EnableEvent();//eventos asociados para la

//detección del sensor de fin de curso

// y el control de los contadores

}

if(!(((FDCA2_GetVal())&&(giro[2]==1))^((FDCB2_GetVal())&&(giro[2]==2)))){

Enable2_SetVal();

CLK2_Enable();

CLK2_EnableEvent();

}

Page 104: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

86

if(!(((FDCA3_GetVal())&&(giro[3]==1))^((FDCB3_GetVal())&&(giro[3]==2)))){

Enable3_SetVal();

CLK3_Enable();

CLK3_EnableEvent();

}

}

//Comando "k" para generar una parada de emergencia o detener el

//desplazamiento de los motores para establecer el cero mecánico y el

//desplazamiento máximo de forma manual si no se cuenta con sensores de

//fin de curso

if(!(strncmp(strKill,received,1))){

Enable1_ClrVal(); //Deshabilita todos los motores y sus

Enable2_ClrVal(); // temporizadores

Enable3_ClrVal();

CLK1_Disable();

CLK2_Disable();

CLK3_Disable();

}

//Comando "Xi" para establecer el cero mecánico ya sea con o sin sensores

//de fin de curso

if(!(strncmp(strXi,received,2))){

giroZero[1]=giro[1]; //Se almacena el sentido de giro con el

giroZero[2]=giro[2]; //que se consiguió llegar al cero

giroZero[3]=giro[3]; //mecánico de cada eje

cntAbs[1]=0; //Se inicializa el contador absoluto de

cntAbs[2]=0; //todos los ejes

cntAbs[3]=0;

eventFlag[1]=2; //Se establece la bandera para la

eventFlag[2]=2; //localización del desplazamiento máximo

eventFlag[3]=2;

}

//Comando "E" para posicionar en fin mecánico los ejes x,y,z con la

//detección de los sensores de fin de curso o utilizando el comando k

//para el posicionamiento manual

if(!(strncmp(strEnd,received,1))){

if(eventFlag[1]==2){

if(giro[1]==1){

CwCww1_ClrVal(); //girar en sentido opuesto al

giro[1]=3; // establecido para el cero mecánico

}

if(giro[1]==2){

CwCww1_SetVal();

giro[1]=4;

}

Enable1_SetVal(); //Habilitar el motor y el

CLK1_Enable(); // temporizador así como sus eventos

CLK1_EnableEvent();

}

if(eventFlag[2]==2){

Page 105: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

87

if(giro[2]==1){

CwCww2_ClrVal();

giro[2]=3;

}

if(giro[2]==2){

CwCww2_SetVal();

giro[2]=4;

}

Enable2_SetVal();

CLK2_Enable();

CLK2_EnableEvent();

}

if(eventFlag[3]==2){

if(giro[3]==1){

CwCww3_ClrVal();

giro[3]=3;

}

if(giro[3]==2){

CwCww3_SetVal();

giro[3]=4;

}

Enable3_SetVal();

CLK3_Enable();

CLK3_EnableEvent();

}

}

//Comando "Xf" para establecer el desplazamiento máximo

if(!(strncmp(strXf,received,2))){

cntRel[1]=cntAbs[1]; //Se establece el contador relativo

cntRel[2]=cntAbs[2]; //que nos dará la posición en la que

cntRel[3]=cntAbs[3]; //se encuentre cada eje

eventFlag[1]=3; //Se finaliza el proceso para

eventFlag[2]=3; // establecer el área de trabajo

eventFlag[3]=3;

}

//Comando "fmax=" para introducir en Hz la frecuencia máxima de los

//motores x,y,z

if(!(strncmp(strFmax,received,5))){

l=0;

while(strFmaxXYZ[l]!= 0x00){

strFmaxXYZ[l]=0x00;

l++;

}

while(*received != 0x00){

++received;

}

while(*received != ';'){

Fmax[3] = atoi(received);

--received;

}

--received;

while(*received != ';'){

Fmax[2] = atoi(received);

Page 106: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

88

--received;

}

while(*received != '='){

Fmax[1] = atoi(received);

--received;

}

strcat(strFmaxXYZ,(++received));

Calculo();

}

//Comando "df=" para introducir el incremento lineal de la frecuencia de

//los motores x,y,z

if(!(strncmp(strDf,received,3))){

l=0;

while(strDfXYZ[l]!= 0x00){

strDfXYZ[l]=0x00;

l++;

}

while(*received != 0x00){

++received;

}

while(*received != ';'){

Df[3] = atoi(received);

--received;

}

--received;

while(*received != ';'){

Df[2] = atoi(received);

--received;

}

while(*received != '='){

Df[1] = atoi(received);

--received;

}

strcat(strDfXYZ,(++received));

Calculo();

}

//Comando "xs=" para introducir la distancia en número de pasos a

//recorrer de los motores x,y,z

if(!(strncmp(strXs,received,3))){

l=0;

while(strXsXYZ[l]!= 0x00){

strXsXYZ[l]=0x00;

l++;

}

while(*received != 0x00){

++received;

}

while(*received != ';'){

Xs[3] = atoi(received);

--received;

}

--received;

Page 107: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

89

while(*received != ';'){

Xs[2] = atoi(received);

--received;

}

while(*received != '='){

Xs[1] = atoi(received);

--received;

}

strcat(strXsXYZ,(++received));

Calculo();

}

//Comando "giro=" para establecer el sentido de giro de los tres motores

//x,y,z

if(!(strncmp(strGiro,received,5))){

l=0;

while(strGiroXYZ[l]!= 0x00){

strGiroXYZ[l]=0x00;

l++;

}

while(*received != 0x00){

++received;

}

while(*received != ';'){

received=received-3;

if(*received == 'c'){

received=received+2;

giro[3]=1;

SelectGiro();

}

if(*received == 'w'){

received=received+2;

giro[3]=2;

SelectGiro();

}

}

--received;

while(*received != ';'){

--received;

if(*received == 'c'){

giro[2]=1;

SelectGiro();

}

if(*received == 'w'){

giro[2]=2;

SelectGiro();

}

}

--received;

while(*received != '='){

--received;

if(*received == 'c'){

giro[1]=1;

SelectGiro();

}

Page 108: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

90

if(*received == 'w'){

giro[1]=2;

SelectGiro();

}

}

strcat(strGiroXYZ,(++received));

}

//Comando "go" para generar un reporte de los valores introducidos

if(!(strncmp(strGo,received,2))){

xs[1]=0;

xs[2]=0;

xs[3]=0;

f[1]=Fmin[1];

f[2]=Fmin[2];

f[2]=Fmin[2];

CLK1_SetFreqHz((unsigned short)f[1]); //Se establece el valor

CLK2_SetFreqHz((unsigned short)f[2]); //de la frecuencia de

CLK3_SetFreqHz((unsigned short)f[3]); // arranque en cada

if(Xs[1]>0){ // temporizador

Enable1_SetVal();

CLK1_Enable();

CLK1_EnableEvent();

}

if(Xs[2]>0){

Enable2_SetVal();

CLK2_Enable();

CLK2_EnableEvent();

}

if(Xs[3]>0){

Enable3_SetVal();

CLK3_Enable();

CLK3_EnableEvent();

}

}

//Comando "s" para detener el desplazamiento con una desaceleración para

//evitar la pérdida de pasos

if(!(strncmp(strStop,received,1))){

if(eventFlag[1]==3){

Xs[1]=Xa[1];

xs[1]=Xs[1];

}

if(eventFlag[2]==3){

Xs[2]=Xa[2];

xs[2]=Xs[2];

}

if(eventFlag[3]==3){

Xs[3]=Xa[3];

xs[3]=Xs[3];

}

}

//Comando "r" para generar un reporte de los valores introducidos

if(!(strncmp(strPos,received,1))){

l=0;

Page 109: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

91

while(report[l]!=0x00){

report[l]=0x00;

l++;

}

itoa(cntAbs[1],strCntAbsX);

itoa(cntAbs[2],strCntAbsY);

itoa(cntAbs[3],strCntAbsZ);

itoa(cntRel[1],strCntRelX);

itoa(cntRel[2],strCntRelY);

itoa(cntRel[3],strCntRelZ);

strcat(report,"Frecuencia de Arranque: ");

strcat(report,strFminXYZ);

strcat(report,"Frecuencia Maxima: ");

strcat(report,strFmaxXYZ);

strcat(report,"Incremento de la Frecuencia: ");

strcat(report,strDfXYZ);

strcat(report,"Desplazamiento maximo:");

strcat(report,strCntAbsX);

strcat(report,";");

strcat(report,strCntAbsY);

strcat(report,";");

strcat(report,strCntAbsZ);

strcat(report,"\n");

strcat(report,"Posicion actual:");

strcat(report,strCntRelX);

strcat(report,";");

strcat(report,strCntRelY);

strcat(report,";");

strcat(report,strCntRelZ);

strcat(report,"\n");

n=0;

flag=1;

}

//Comando "r" para reinciar la configuración en cero

if(!(strncmp(strReset,received,1))){

}

}

/*

** ===================================================================

** Función : void Calculo()

** Descripción : Calcula los valores necesarios para el desarrollo

** del perfil de velocidad

** Parámetros : Ninguno

** Retornos : Ninguno

** ===================================================================

*/

void Calculo(){

for(m=1;m<4;m++){

if((Fmax[m]!=0)&&(Fmin[m]!=0)&&(Df[m]!=0)&&(Xs[m]!=0)){

Xa[m]=((Fmax[m]-Fmin[m])/Df[m])+1;

if((Xa[m]*2)>Xs[m]){

Xa[m]=Xs[m]/4;

}

Page 110: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

92

Xd[m]=Xs[m]-Xa[m];

}

}

}

/*

** ===================================================================

** Función : void SelectGiro()

** Descripción : Establece el giro en base al valor numérico del

** elemento correspondiente en el arreglo

** Parámetros : Ninguno

** Retornos : Ninguno

** ===================================================================

*/

void SelectGiro(){

if(giro[1]==1){

CwCww1_SetVal();

}

if(giro[1]==2){

CwCww1_ClrVal();

}

if(giro[2]==1){

CwCww2_SetVal();

}

if(giro[2]==2){

CwCww2_ClrVal();

}

if(giro[3]==1){

CwCww3_SetVal();

}

if(giro[3]==2){

CwCww3_ClrVal();

}

}

/*

** ===================================================================

** Función : void itoa()

** Descripción : Almacena en una cadena el código ASCII de un entero

** Parámetros : Ninguno

** Retornos : Ninguno

** ===================================================================

*/

int curDig=0, e=0;

long Dig=0;

void itoa(int cntAbs, char *strCntAbs){

char strAlt[30];

e=1;

Dig=cntAbs;

do{

Dig/=pow(10,(e));

Dig*=pow(10,(e));

curDig=cntAbs-Dig;

curDig/=pow(10,e-1);

Page 111: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

93

if(curDig<=9){

strAlt[e++]=L'0'+curDig;

}

}while(Dig);

strCntAbs--;

do{

*strCntAbs=strAlt[e];

strCntAbs++;

e--;

}while(e>0);

while(*strCntAbs!=0x00){

*strCntAbs=0x00;

}

}

/*

** ===================================================================

** Event : CLK1_OnEnd (module Events)

**

** Component : CLK1 [PPG]

** Description :

** This event is called when the specified number of iterations

** is generated. (Only when the component is enabled - <Enable>

** and the events are enabled - <EnableEvent>). The event is

** available only when the peripheral supports an interrupt,

** that is generated at the end of the PWM period.

** Parameters : None

** Returns : Nothing

** ===================================================================

*/

void CLK1_OnEnd(void)

{

if(eventFlag[1]==2){

cntAbs[1]++;

}

if(eventFlag[1]==3){

if(Xs[1]){

Xs[1]--;

xs[1]++;

if(xs[1]<=Xa[1]){

CLK1_SetFreqHz((unsigned short)f[1]);

f[1]+=Df[1];

}

if(xs[1]>=Xd[1]){

f[1]-=Df[1];

CLK1_SetFreqHz((unsigned short)f[1]);

}

if(giro[1]==giroZero[1]){

cntRel[1]--;

}else{

cntRel[1]++;

}

}else{

Page 112: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

94

Enable1_ClrVal();

CLK1_Disable();

CLK1_DisableEvent();

}

}

}

/*

** ===================================================================

** Event : CLK2_OnEnd (module Events)

**

** Component : CLK2 [PPG]

** Description :

** This event is called when the specified number of iterations

** is generated. (Only when the component is enabled - <Enable>

** and the events are enabled - <EnableEvent>). The event is

** available only when the peripheral supports an interrupt,

** that is generated at the end of the PWM period.

** Parameters : None

** Returns : Nothing

** ===================================================================

*/

void CLK2_OnEnd(void)

{

if(eventFlag[2]==2){

cntAbs[2]++;

}

if(eventFlag[2]==3){

if(Xs[2]){

Xs[2]--;

xs[2]++;

if(xs[2]<=Xa[2]){

CLK2_SetFreqHz((unsigned short)f[2]);

f[2]+=Df[2];

}

if(xs[2]>=Xd[2]){

f[2]-=Df[2];

CLK2_SetFreqHz((unsigned short)f[2]);

}

if(giro[2]==giroZero[2]){

cntRel[2]--;

}else{

cntRel[2]++;

}

}else{

Enable2_ClrVal();

CLK2_Disable();

CLK2_DisableEvent();

}

}

}

Page 113: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

95

/*

** ===================================================================

** Event : CLK3_OnEnd (module Events)

**

** Component : CLK3 [PPG]

** Description :

** This event is called when the specified number of iterations

** is generated. (Only when the component is enabled - <Enable>

** and the events are enabled - <EnableEvent>). The event is

** available only when the peripheral supports an interrupt,

** that is generated at the end of the PWM period.

** Parameters : None

** Returns : Nothing

** ===================================================================

*/

void CLK3_OnEnd(void)

{

if(eventFlag[3]==2){

cntAbs[3]++;

}

if(eventFlag[3]==3){

if(Xs[3]){

Xs[3]--;

xs[3]++;

if(xs[3]<=Xa[3]){

CLK3_SetFreqHz((unsigned short)f[3]);

f[3]+=Df[3];

}

if(xs[3]>=Xd[3]){

f[3]-=Df[3];

CLK3_SetFreqHz((unsigned short)f[3]);

}

if(giro[3]==giroZero[3]){

cntRel[3]--;

}else{

cntRel[3]++;

}

}else{

Enable3_ClrVal();

CLK3_Disable();

CLK3_DisableEvent();

}

}

}

Page 114: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

96

/** ###################################################################

** Filename : Events.h

** Project : ProcessorExpert

** Processor : MCF51QE128CLH

** Component : Events

** Version : Driver 01.02

** Compiler : CodeWarrior ColdFireV1 C Compiler

** Date/Time : 2013-10-01, 16:59, # CodeGen: 0

** Abstract :

** This is user's event module.

** Put your event handler code here.

** Settings :

** Contents :

** No public methods

**

** ###################################################################*/

#ifndef __Events_H

#define __Events_H

/* MODULE Events */

#include "PE_Types.h"

#include "PE_Error.h"

#include "PE_Const.h"

#include "IO_Map.h"

#include "PE_Timer.h"

#include "AS1.h"

#include "CLK1.h"

#include "CwCww1.h"

#include "HalfFull1.h"

#include "Enable1.h"

#include "FDCA1.h"

#include "FDCB1.h"

#include "PaP1.h"

#include "CWm1.h"

#include "CWWm1.h"

#include "CLK2.h"

#include "HalfFull2.h"

#include "Bit1.h"

#include "CwCww2.h"

#include "Enable2.h"

#include "FDCA2.h"

#include "FDCB2.h"

#include "PaP2.h"

#include "CWm2.h"

#include "CWWm2.h"

#include "CLK3.h"

#include "HalfFull3.h"

#include "CwCww3.h"

#include "Enable3.h"

#include "FDCB3.h"

#include "FDCA3.h"

#include "PaP3.h"

#include "CWm3.h"

#include "CWWm3.h"

/*

Page 115: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

97

** ===================================================================

** Event : AS1_OnRxChar (module Events)

** Component : AS1 [AsynchroSerial]

** Description :

** This event is called after a correct character is received.

** The event is available only when the <Interrupt

** service/event> property is enabled and either the <Receiver>

** property is enabled or the <SCI output mode> property (if

** supported) is set to Single-wire mode.

** Parameters : None

** Returns : Nothing

** ===================================================================

*/

void AS1_OnRxChar(void);

/*

** ===================================================================

** Event : AS1_OnTxChar (module Events)

** Component : AS1 [AsynchroSerial]

** Description :

** This event is called after a character is transmitted.

** Parameters : None

** Returns : Nothing

** ===================================================================

*/

void AS1_OnTxChar(void);

void comparaCadena(char *);

void Calculo(void);

void SelectGiro(void);

void itoa(int, char *);

/*

** ===================================================================

** Event : CLK1_OnEnd (module Events)

**

** Component : CLK1 [PPG]

** Description :

** This event is called when the specified number of iterations

** is generated. (Only when the component is enabled - <Enable>

** and the events are enabled - <EnableEvent>). The event is

** available only when the peripheral supports an interrupt,

** that is generated at the end of the PWM period.

** Parameters : None

** Returns : Nothing

** ===================================================================

*/

void CLK1_OnEnd(void);

Page 116: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice A

98

/*

** ===================================================================

** Event : CLK2_OnEnd (module Events)

**

** Component : CLK2 [PPG]

** Description :

** This event is called when the specified number of iterations

** is generated. (Only when the component is enabled - <Enable>

** and the events are enabled - <EnableEvent>). The event is

** available only when the peripheral supports an interrupt,

** that is generated at the end of the PWM period.

** Parameters : None

** Returns : Nothing

** ===================================================================

*/

void CLK2_OnEnd(void);

/*

** ===================================================================

** Event : CLK3_OnEnd (module Events)

**

** Component : CLK3 [PPG]

** Description :

** This event is called when the specified number of iterations

** is generated. (Only when the component is enabled - <Enable>

** and the events are enabled - <EnableEvent>). The event is

** available only when the peripheral supports an interrupt,

** that is generated at the end of the PWM period.

** Parameters : None

** Returns : Nothing

** ===================================================================

*/

void CLK3_OnEnd(void);

/* END Events */

#endif /* __Events_H*/

Page 117: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

99

Apéndice B

Vista superior de la tarjeta de control

PCB de la tarjeta de control

Page 118: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Apéndice B

100

Vista superior de la tarjeta de accionamiento

PCB de la tarjeta de accionamiento

Page 119: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

101

Bibliografía

[1] Sears, Zemansky, Física Universitaria con Física Moderna, Vol. 2, Decimosegunda

Edición, Pearson Educación, México, 2009.

[2] Plonus M. A., Electromagnetismo aplicado, Ed. Reverté, 1994.

[3] Acarnley P. P., Stepping motors. A guide to theory and practice, The Institution of

Engineering and Technology, London, United Kingdom, 2007.

[4] Hughes A., Electric Motors and Drives. Fundamentals, Types and Applications,

Third Edition, Elsevier Ltd. Great Brirain, 2006.

[5] Kenjo T., Stepping motors and their microprocessor controls, Oxford, United States,

1984.

[6] Ogata K., Ingeniería de control moderna, Ed. Pearson, España, 2010.

[7] Lee S. Y., Kang C. S., Hyun C. H., Park M., S-Curve Profile Switching Method using

Fuzzy System for Position Control of DC Motor under Uncertain Load, ICROS, 2012.

[8] Wang B., Liu Q., Zhou L., Zhang Y., Li X., Zhang J., Velocity Profile algorithm

Realization on FPGA for Stepper Motor Controller, IEEE, Pág. 6072-6075, 2011.

[9] Shuquiu Gong A., Bin He B., LabVIEW-based automatic rising and falling Speed

control of stepper motor, ICEMS, 2009.

[10] Li L., Chen X., Study on the Novel Main Circuit Topology of Stepping Motor Drive,

IEEE, Pág. 2021-2024, 2009.

[11] Zhihuang H., Lin L., Donghui G., Desing of Stepping Motor Driving Module for

Automatic Microscope System, IEEE, Pág. 328-331, 2009

[12] Weiwei H., Jianjing S., Desing and Study of the High-precision Stepping Motor

Control System for Intelligent Sampling of Liquid, IEEE, Volume 3 Pág. 125-

128,2010.

[13] Sung-Wook M., Young-Jin K., Yoon-Taek L., Dong Hwan K., Missing Step

Detection in a High Speed Micro Stepping Motor Using Current Feedback, ICROS,

Pág. 494-497, 2012

Page 120: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

Bibliografía

102

[14] Huan T., Jianxun Z. y Wenqin L., Desing of DSP based Multiple Stepping-motors

Micro-stepping Driving Controller, IEEE, Pág. 340-345, 2005.

[15] Wei C., Zhongwei F., A Fast Accelerating Algorithm For Stepping Motor, IEEE,

Pág.1179-1182, 2010.

[16] Martínez O.K., Leija L., Vera A., 3Dcartesian System for the Characterization of

Electromagnetic and Ultrasonic Aplicators: Validation and Performance Testing,

IEEE, Pág. 160-162, 2013.

[17] Espina-Hernández J. H., Automatización de las mediciones de textura con el uso de

un goniómetro comercial, Tesis de maestría en sistemas automatizados de medición,

I.S.P.J.A.E. Facultad de Eléctrica, Cuba, 1998.

[18] Espina-Hernández J. H., New intelligent stepping motor controller at the LNLS,

LNLS – Campinas, Brazil, 2002.

[19] Díaz-Estrella A., Teoría y diseño con microcontroladores de Freescale, Ed.

McGRAW-HILL, España 2008.

Page 121: ESCUELA SUPERIOR DE INGENIERÍA …sepi.esimez.ipn.mx/electronica/archivos/1300.pdfIV Resumen En este trabajo se reporta el desarrollo de un sistema de control a lazo abierto para

103

Agradecimientos

Le agradezco primeramente a Dios que me ha permitido la claridad de mente y la vida para

adquirir el conocimiento que me ha permitido llegar hasta el cumplimiento de esta meta.

Le agradezco a mi mamá Patricia Vázquez por haberme dado la vida y el ímpetu para buscar

ser lo mejor en cualquier ámbito en el que me desarrolle. A mis suegros que me han apoyado

tal como si fuera su propia hija. A mi abuelita Ofelia y a mi tía Mayte que a través de su

ejemplo de lucha contra el cáncer me han enseñado a nunca darme por vencida a pesar de las

circunstancias. A mi abuelito Sotero, a mi abuelita Maty y a mi abuelito Miguel que me

enseñaron la importancia de la unidad familiar para disfrutar al máximo de los triunfos y

atenuar el dolor de los fracasos. A toda mi familia que siempre busca la forma de hacerse

presente para ofrecerme el apoyo en todo momento. Pero sobre todo a mi amado esposo

Daniel De La Paz que ha cumplido a letra cabal la frase de “en las buenas y en las malas” y

que siempre ha apoyado sin reservas mi crecimiento profesional, espiritual y emocional.

A mis directores de tesis el Dr. José Hiram Espina Hernández y el Dr. José Alberto Pérez

Benítez por brindarme su asesoría, tiempo, consejos, revisiones y correcciones durante la

realización de este trabajo de tesis.

A mis profesores y sinodales por ofrecer su tiempo y experiencia en el campo de la

investigación correspondiente.

A mis compañeros Andrés, Saraí y Javier por compartir esta etapa de la vida conmigo desde

el inicio. A mis compañeros de laboratorio Eduardo, Pedro, Juan, Nathalia, Arturo y Jorge

que siempre estuvieron dispuestos a compartir análisis y propuestas. Agradezco a todos mis

compañeros tanto del programa de maestría como del doctorado, a los que ya egresaron y a

los que faltan por egresar, ya que han contribuido a que la estancia de la maestría se haya ido

como un suspiro.