Está en la página 1de 7

1

Enfoque Universitario para la Implementación


del control de un motor de CD
A. Aguilar, No miembro, IEEE

con la posición. En la figura 1 se muestra el esquemático


Resumen—Este documento presenta el diseño de tres utilizado para obtener las ecuaciones (1), (2) y (3).
controladores clásicos para la posición de un motor de corriente
directa de magneto permanente. Se presenta el diseño discreto de
los controladores utilizando la herramienta sisotool del paquete
de Matlab. Se muestra la implementación de las ecuaciones de
diferencias programadas en un microcontrolador. Los
controladores presentados son: PD, PID y adelanto de Fase.

I. NOMENCLATURA
u: Voltaje en el circuito del motor (volts) Fig. 1. Esquemático para el modelado de un motor de corriente directa de
ke: Constante de voltaje(V s/rad) magneto permanente.
km: Constante de torque (Nm/A).
R: Resistencia (Ohm) LI& = − RI − k eω + u (1)
L: Inductancia (H)
Jω& = − Bω + k m I (2)
B: Fricción viscosa (Nm s/rad)
J: Inercia del rotor (kg m2) θ& = ω (3)
I: Corriente (A)
B. Función de transferencia
II. INTRODUCTION
Con las ecuaciones del sistema se puede obtener la función de
L A implementación de un controlador es parte fundamental
en la ingeniería de control. Al momento de trasladar las
ecuaciones a un programa para controlar un dispositivo real, se
transferencia del sistema (4), la cual se utilizará para las el
diseño del control y las simulaciones.

presentan diversos problemas. Para realizar una


θ (s) k
implementación satisfactoria es necesario contar con un buen = (4)
modelo matemático del sistema, para diseñar y simular el V ( s) JLs + ( JR + BL ) s 2 + ( BR + K 2 ) s
3

control. Hoy en día con las herramienta de computo


disponibles se puede diseñar y simular varios controladores en De la hoja de datos del motor PITTMAN GM9232 obtenemos
cuestión de minutos. los parámetros del motor.

Ya con las simulaciones realizadas se debe realizar la TABLA I


PARÁMETROS PARA EL MOTOR PITTMAN GM9232
implementación. Para lograr esto de forma exitosa se deben de Parámetro Valor
considerar la velocidad de procesamiento, capacidad de K=ke=km 0.0494V s/rad - Nm/A
computo, el ruido, interfaz de los sensores, acoplamiento de L 11.7 mH
señales etc. R 18.5Ω
B 1.8e-6Nm s/rad
III. MODELADO MATEMÁTICO J 1.9e-6kgm2
A. Ecuaciones de motor
Sustituyendo los valores de la hoja de datos, la función de
El motor de magneto permanente se puede modelar utilizando transferencia queda como (5).
las ecuaciones que describen su parte mecánica (2) y su parte
eléctrica (3). Debido a que se desea controlar la posición θ ( s) 0.0494
agregamos la ecuación (3) que relaciona la velocidad angular = (5)
V ( s) 2.223 × 10 −8 s 3 + 3.517 × 10 −5 s 2 + 2.473 × 10 −3 s

A. Aguilar es alumno de Instituto Tecnológico de estudios superiores de


Monterrey, campus Guadalajara. Estudiante de 8º semestre de Mecatrónica.
(E-mail: alejandroaguilarv@gmail.com).
2

C. Comprobación por medio de simulación


Se introduce la función de transferencias al simulador
simulink, para comprobar la validez del modelo. La figura 2
muestra el diagrama a bloques.

Fig. 2. Modelo a bloques de simulink para la respuesta a lazo abierto de


velocidad del motor.

Fig. 4. Plano complejo que muestra el círculo unitario, los polos y ceros del
sistema.

Fig. 3. Respuesta de velocidad a un voltaje nominal de de 38.2v, que se


indica en la hoja de datos.

La simulación mostró que la velocidad a un voltaje nominal


de 38.2v se estabiliza a 7300rpm. La hoja de datos indica una
velocidad sin carga de 6880rpm, lo cual muestra que el
modelo da una buena aproximación. Fig. 5. Acercamiento de un cero del sistema, muestra la intersección entre las
dos restricciones de diseño, tiempo de asentamiento y sobre impulso.
IV. CONTROLADOR PROPORCIONAL DERIVATIVO
La función de transferencia discreta para el controlador queda
El primer controlador propuesto es un proporcional derivativo
como (9). La funcion discreta se puede expresar como una
discreto, su ecuación queda como (6). Se multiplica (6) por z,
ecuación de diferencias queda como (10).
obteniendo (7), se reacomoda de la forma (8) para facilitar su
diseño en sisotool de Matlab.
( z − 0.7)
D( z ) = 5 (9)
−1
D( z ) = k p + k d (1 − z ) (6) z
zD( z ) = zk p + k d ( z − 1) (7) E (k − 1)
Y (k ) = 5E (k ) − (10)
(z − kd
k p + kd ) 3
D( z ) = (k p + k d ) (8) Utilizando simulink se simula el controlador diseñado. El
z diagrama a bloques de la simulación se muestra en la figura 6.

Se introduce la función de transferencia en sisotool, se


discretiza el sistema con un periodo de muestreo Ts=0.001s.
Se edita el compensador para que quede de la forma (8), se
ubican los ceros del sistema de forma gráfica para obtener un
tiempo de asentamiento de 0.1seg y un sobrepaso máximo
1.3%. Es importante obtener ganancias enteras, o que se Fig. 6. Diagrama a bloques de simulink de la simulación del controlador PD.
puedan expresar como una división, para facilitar su
programación en el microcontrolador. En la figura 4 se La respuesta de posición de la simulación se muestra en la
muestra el plano complejo y la ubicación de polos y ceros. LA figura 7.
figura 5 muestra un acercamiento a uno de los ceros del
controlador.
3

Fig. 7 Respuesta de la simulación del controlador PD.

La ecuación de diferencias (10) se puede programar fácilmente Fig. 9. Plano complejo que muestra el círculo unitario, los polos y ceros del
en el microcontrolador de la siguiente forma: sistema en lazo cerrado con un controlador PID.

u=5*e0+e1/3;

El lenguaje utilizado es C y la variable e0 representa el error


actual y e1 representa el error anterior. El resultado
experimental de este controlador se muestra en la figura 8

Fig. 10. Acercamiento de los ceros del controlador, muestra la intersección


entre las dos restricciones de diseño, tiempo de asentamiento y sobre impulso.

El tiempo de asentamiento es diseñado para de 0.7seg y un


sobrepaso máximo 40%. La ubicación de los polos y ceros del
sistema se muestra en la figuras 9 y 10. La simulación del
Fig. 8 Respuesta experimental de la posición para el motor, la referencia
sistema es obtenida directamente de sisotool. La figura 11
especificada fue de 500rad. Se observa como el tiempo de asentamiento y
sobrepaso cumplen las restricciones de diseño. muestra esta respuesta.

V. CONTROLADOR PID
De la misma forma que el controlador PD, se diseña un PID
con sisotool. La función de transferencia del PID queda como
(10), la re expresamos de la forma (11), para facilitar la
ubicación de ceros en sisotool.

KI
D( z ) = K p + −1
+ K D (1 − z −1 ) (10)
(1 − z )
 2 (K p + 2K D ) KD 
z + z+  (11)
( K + K + K ) ( K + K + K )
D( z ) = ( K p + K D + K I ) 
p D I p D I 
 z ( z − 1) 
 
 
Fig. 11. Simulación en sisotool del controlador PID.
4

La función de transferencia obtenida es la ecuación (12).


Utilizando (11) podemos obtener las ganancias del
controlador. K p = 1.185 K I = 0.5 K D = 13.4

Y ( z)  z 2 − 1.93 z + 0.927 
= 14.5  (12)
E ( z)  ( z − 1) z 

Esto se programa en el microcontrolador de la siguiente


forma:
u=u+14*e0-28*e1+13*e2;

La respuesta experimental del sistema se muestra en la


figura 12. En este controlador fue necesario realizar un ajuste
de ganancias experimental, para logar la estabilización
adecuada, debido a la saturación de las variables. El código Fig. 13. Plano complejo que muestra el círculo unitario, los polos y ceros del
sistema en lazo cerrado con un controlador de adelanto.
del controlador queda como:

u=u+e0-e1/2+e2/5;

Fig. 14. Acercamiento de los ceros del controlador, muestra la


intersección entre las dos restricciones de diseño, tiempo de asentamiento y
Fig. 12 Respuesta experimental de la posición para el motor con el sobre impulso.
controlador PID. Se observa una diferencia notable entre la simulación y la
respuesta. Esto se debe a la sintonización de las ganancias. La función de transferencia obtenida (14) se muestra a
continuación:
VI. CONTROLADOR DE ADELANTO DE FASE
Y ( z ) z + 0.5
La función de transferencia de un controlador de adelanto de = (14)
fase [1] se muestra en 13. E ( z ) z + 0.5
(z + α )
D( z ) = K (13) En la figura 15 de muestra el diagrama a bloques utilizado
z+β en la simulación y en la figura 16 su respuesta.

Ubicamos los polos y ceros del sistema utilizando sisotool.


Las figuras 13 y 14 muestran el plano complejo, las
restricciones de diseño, en este caso el tiempo de asentamiento
es de 0.1seg y el sobrepaso máximo de 0.032%
Fig. 15. Diagrama a bloques de simulink de la simulación del controlador
de adelanto de fase.
5

El controlador se programa en un ciclo infinito que monitorea


la error de forma constante y realiza las correcciones
necesarias. El ciclo para el controlador de adelanto se muestra
a continuación:

while(1){

e1=e0; //error anterior


e0=posd-pos; //error actual
caclpos(); //Función que obtiene la posición
printf("%ld,",pos); //Manda la información
u=-u/2+e0+e1/2; //Controlador
sendcont(); //Indica el voltaje del motor
}
Fig. 16 Respuesta de la simulación del controlador de adelanto de fase.

La duración de este ciclo se puede desglosar de la siguiente


La respuesta experimental del controlador se muestra en la
manera: 200us para calcular el controlador, 300us preparar el
figura 17. El controlador de adelanto de fase se programa en el PWM y 350us para leer la posición. Esto es un retardo
microcontrolador de la siguiente manera: acumulado de 850us, que es un poco menos del milisegundo
establecido, lo cual no generó problemas. Para obtener estas
u=-u/2+e0+e1/2; aproximaciones del tiempo de muestreo se contaron las
instrucciones de ensamblador generadas por el compilador. Es
importante notar que estos tiempos cambian en cierto rango ya
que para calcular números grandes se requieren más ciclos.
B. Encoder de cuadratura
El encoder de cuadratura utilizado en el experimento fue
rescatado de un Mouse de computadora que ya no funcionaba.
El disco tiene 60 divisiones y el sensor óptico proporciona dos
señales desfasadas 90º. El procesamiento requerido para
detectar una cambio de dirección en la señal puede complicar
muchos los algoritmos de programación y saturar los recursos
del microcontrolador [2]. Por esto se opta por un
decodificador externo. También fue necesario añadir 2
inversores Schmitt Trigger para mejorar las señales obtenidas
del encoder. El esquemático de este arreglo se muestra en la
figura 18. Las señales con las cuales se hace la detección del
Fig. 17 Respuesta experimental de la posición para el motor. Se observa como cambio de dirección se muestran en la figura 19.
el tiempo de asentamiento y sobrepaso cumplen las restricciones de diseño.

VII. IMPLEMENTACIÓN

A. Respecto al microcontrolador
Se seleccionó un microcontrolador económico, de
capacidad media, para representar una situación de diseño
donde los recursos son limitados. El PIC16F628A es un
microcontrolador RISC de 8bit, con 2K de memoria de
programa, 224 bytes de RAM y 18pines.

Se utilizó un oscilador que proporciona una velocidad de 2


Fig. 18 Decodificador para el encoder de cuadratura. Las salidas
millones de instrucciones por segundo, para obtener un decodificadas se conectan directamente a los timers de microcontrolador.
periodo de muestreo de 1mseg o menos. El microcontrolador
cuenta con tres timers internos. Dos de ellos fueron utilizados
para contar los pulsos del encoder y generar una variable que
almacena la posición. El timer restante es utilizado por el
microcontrolador para generar una señal PWM.
6

puente H basta con colocar en bajo el pin correspondiente. El


puente H es un arreglo tradicional que utiliza transistores
Darlinton de la familia TIP. La función “sendcont()” es la
encargada de calcular el valor en el PWM, se muestra a
continuación.

void sendcont(){
if(u==0){ //apaga motor si u=0
output_high(PIN_A0);
output_high(PIN_A1);
} else {
Fig. 19 Forma de los pulsos del encoder y señal decodificada.
if(u>0){
La función “caclpos()”obtiene la posición absoluta del motor a output_high(PIN_A0);
partir del momento que se inicio el microcontrolador. Se graba output_low(PIN_A1);
en una variable global int32 los pulsos obtenidos en el } else {
encoder. Esto puede almacenar 3 millones de revoluciones del output_low(PIN_A0);
eje del reductor. A continuación se presenta la función. output_high(PIN_A1);
}}
void caclpos(){
a1=get_timer0(); v=abs(u);
a2=get_timer1(); if(v<200) v=200; //limita la u por seguridad.
aux1=a1-a2; if(v>1020) v=1020; //limita la u por seguridad.
set_pwm1_duty(v); //200-->1020 rango funcional
if(aux1<-100){ }
aux2=aux2-100;
set_timer0(0); Esta función revisa el valor calculado por el controlador y lo
set_timer1(0); limita en el rango funcional del PWM. En caso que el control
a1=0; sea cero se apaga el motor dejándolo en esa posición. Según
a2=0; el signo del control se activa el canal de dirección
} correspondiente del puente H. Se retira el signo al control y se
if(aux1>100){ revisa que este dentro del rango funcional. Si es menor que
aux2=aux2+100; 200 se deja en este valor, debido a la zona muerta del motor.
set_timer0(0); Si el control es mayor de 1020, se limita a este valor ya que no
set_timer1(0); hay más voltaje disponible.
a1=0;
a2=0;
} D. Interfaz serial
pos=aux2+aux1; Para monitorear y analizar el comportamiento del sistema se
} utilizo la interfase serial de microcontrolador. Se acoplo el
puerto serial de una computadora personal al microcontrolador
En términos generales esta función resta los pulsos de cada por medio del MAX232. Este circuito integrado permite
dirección. Así se pueden obtener posiciones negativas y convertir los niveles de voltaje del protocolo RS-232 a TTL.
positivas, de forma absoluta, esto se almacena en la variable La información generada por el microcontrolador se manda
aux1. Debido a las limitaciones en los timers cada 100 pulsos por el puerto serial a un programa de Matlab. El programa de
de borran y se almacena este valor en la variable aux2. Matlab grafica la posición en pantalla, del tiempo
Finamente se suman las variables auxiliares para obtener la especificado.
posición absoluta.
C. PWM y etapa de potencia VIII. CONCLUSIONES
Para pasar de las ecuaciones a la implementación de un
El microcontrolador esta acoplado con el puente H por controlador, existen diversas consideraciones importantes. Es
medio de optoacopladores. Esto permite utilizar dos fuentes necesario tener esto en mente, de lo contrario el controlador no
separadas, una para los circuitos de control y otra para la etapa funcionara de manera adecuada. En caso de utilizar un
de potencia. El microcontrolador seleccionado solo cuenta con microcontrolador con recursos limitados, es de suma
un modulo PWM. Para controlar ambos canales del puente H importancia simplificar lo más posible los algoritmos para no
se conecto la salida del PWM al ánodo de ambos saturar la memoria. Si se hubiese deseado utilizar números con
optoacopladores. Los cátodos fueron conectados a otras punto flotante, se hubiera saturado la memoria del
terminales del microcontrolador y para mandar la señal al microcontrolador solamente con la librería necesaria. También
7

la decodificación externa de las señales del encoder de


cuadratura, simplifican la programación y liberan de carga al
microcontrolador. Considerar la zona muerta del motor para
que el programa no quede en espera de algo que nunca será
posible.

Además de estas consideraciones relacionadas con el


hardware y software; es muy importante contar con un buen
diseño en el control. Ya que por lo general al implementar los
factores de ruido se verán incrementados. Es necesario ubicar
los polos, de forma que se pueda garantizar una buena
estabilidad del sistema. Se deben realizar las simulaciones
necesarias con un modelo aproximado, así como la validación
de este modelo. Para esto las herramientas de software como
Matlab muestran su gran utilidad.

AGRADECIMIENTOS
Un agradecimiento especial al profesor Esteban Chávez por
su apoyo y paciencia.

REFERENCIAS
[1] K. Ogata, “Sistemas de Control en Tiempo Discreto” 2ª ed. Mexico:
Pearson Prentice Hall, 1996, pp. 204–257.
[2] S. Bowling, Servo Motor application, Microchip app note AN696 ,
2000. Disponible: http://www.microchip.com

También podría gustarte