You are on page 1of 7

1

Enfoque Universitario para la Implementacin


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

ResumenEste documento presenta el diseo de tres


controladores clsicos para la posicin de un motor de corriente
directa de magneto permanente. Se presenta el diseo discreto de
los controladores utilizando la herramienta sisotool del paquete
de Matlab. Se muestra la implementacin de las ecuaciones de
diferencias programadas en un microcontrolador. Los
controladores presentados son: PD, PID y adelanto de Fase.

con la posicin. En la figura 1 se muestra el esquemtico


utilizado para obtener las ecuaciones (1), (2) y (3).

I. NOMENCLATURA
u: Voltaje en el circuito del motor (volts)
ke: Constante de voltaje(V s/rad)
km: Constante de torque (Nm/A).
R: Resistencia (Ohm)
L: Inductancia (H)
B: Friccin viscosa (Nm s/rad)
J: Inercia del rotor (kg m2)
I: Corriente (A)
II. INTRODUCTION

A implementacin de un controlador es parte fundamental


en la ingeniera de control. Al momento de trasladar las
ecuaciones a un programa para controlar un dispositivo real, se
presentan diversos problemas. Para realizar una
implementacin satisfactoria es necesario contar con un buen
modelo matemtico del sistema, para disear y simular el
control. Hoy en da con las herramienta de computo
disponibles se puede disear y simular varios controladores en
cuestin de minutos.
Ya con las simulaciones realizadas se debe realizar la
implementacin. Para lograr esto de forma exitosa se deben de
considerar la velocidad de procesamiento, capacidad de
computo, el ruido, interfaz de los sensores, acoplamiento de
seales etc.
III. MODELADO MATEMTICO

A. Ecuaciones de motor
El motor de magneto permanente se puede modelar utilizando
las ecuaciones que describen su parte mecnica (2) y su parte
elctrica (3). Debido a que se desea controlar la posicin
agregamos la ecuacin (3) que relaciona la velocidad angular
A. Aguilar es alumno de Instituto Tecnolgico de estudios superiores de
Monterrey, campus Guadalajara. Estudiante de 8 semestre de Mecatrnica.
(E-mail: alejandroaguilarv@gmail.com).

Fig. 1. Esquemtico para el modelado de un motor de corriente directa de


magneto permanente.

LI& = RI k e + u
J& = B + k m I
& =

(1)
(2)
(3)

B. Funcin de transferencia
Con las ecuaciones del sistema se puede obtener la funcin de
transferencia del sistema (4), la cual se utilizar para las el
diseo del control y las simulaciones.

(s)
V ( s)

k
(4)
JLs + ( JR + BL ) s 2 + ( BR + K 2 ) s
3

De la hoja de datos del motor PITTMAN GM9232 obtenemos


los parmetros del motor.
TABLA I
PARMETROS PARA EL MOTOR PITTMAN GM9232

Parmetro
K=ke=km
L
R
B
J

Valor
0.0494V s/rad - Nm/A
11.7 mH
18.5
1.8e-6Nm s/rad
1.9e-6kgm2

Sustituyendo los valores de la hoja de datos, la funcin de


transferencia queda como (5).

( s)
0.0494
(5)
=
V ( s) 2.223 10 8 s 3 + 3.517 10 5 s 2 + 2.473 10 3 s

2
C. Comprobacin por medio de simulacin
Se introduce la funcin 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 crculo 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 simulacin 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 aproximacin.

Fig. 5. Acercamiento de un cero del sistema, muestra la interseccin entre las


dos restricciones de diseo, tiempo de asentamiento y sobre impulso.

IV. CONTROLADOR PROPORCIONAL DERIVATIVO


El primer controlador propuesto es un proporcional derivativo
discreto, su ecuacin queda como (6). Se multiplica (6) por z,
obteniendo (7), se reacomoda de la forma (8) para facilitar su
diseo en sisotool de Matlab.

D( z ) = 5

D( z ) = k p + k d (1 z )

(6)

zD( z ) = zk p + k d ( z 1)

(7)

D( z ) = (k p + k d )

(z

kd
k p + kd

La funcin de transferencia discreta para el controlador queda


como (9). La funcion discreta se puede expresar como una
ecuacin de diferencias queda como (10).

)
(8)

Se introduce la funcin 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 grfica para obtener un
tiempo de asentamiento de 0.1seg y un sobrepaso mximo
1.3%. Es importante obtener ganancias enteras, o que se
puedan expresar como una divisin, para facilitar su
programacin en el microcontrolador. En la figura 4 se
muestra el plano complejo y la ubicacin de polos y ceros. LA
figura 5 muestra un acercamiento a uno de los ceros del
controlador.

( z 0.7)
z

Y (k ) = 5E (k )

E (k 1)
3

(9)

(10)

Utilizando simulink se simula el controlador diseado. El


diagrama a bloques de la simulacin se muestra en la figura 6.

Fig. 6. Diagrama a bloques de simulink de la simulacin del controlador PD.

La respuesta de posicin de la simulacin se muestra en la


figura 7.

Fig. 7 Respuesta de la simulacin del controlador PD.

La ecuacin de diferencias (10) se puede programar fcilmente


en el microcontrolador de la siguiente forma:

Fig. 9. Plano complejo que muestra el crculo unitario, los polos y ceros del
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 interseccin


entre las dos restricciones de diseo, tiempo de asentamiento y sobre impulso.

Fig. 8 Respuesta experimental de la posicin para el motor, la referencia


especificada fue de 500rad. Se observa como el tiempo de asentamiento y
sobrepaso cumplen las restricciones de diseo.

El tiempo de asentamiento es diseado para de 0.7seg y un


sobrepaso mximo 40%. La ubicacin de los polos y ceros del
sistema se muestra en la figuras 9 y 10. La simulacin del
sistema es obtenida directamente de sisotool. La figura 11
muestra esta respuesta.

V. CONTROLADOR PID
De la misma forma que el controlador PD, se disea un PID
con sisotool. La funcin de transferencia del PID queda como
(10), la re expresamos de la forma (11), para facilitar la
ubicacin de ceros en sisotool.

D( z ) = K p +

KI
+ K D (1 z 1 )
1
(1 z )

(10)

(K p + 2K D )
2

KD
z+
z +

(
K
+
K
+
K
)
(
K
+
K
+
K
)
p
D
I
p
D
I
D( z ) = ( K p + K D + K I )

z ( z 1)

(11)

Fig. 11. Simulacin en sisotool del controlador PID.

4
La funcin de transferencia obtenida es la ecuacin (12).
Utilizando (11) podemos obtener las ganancias del
controlador. K p = 1.185 K I = 0.5 K D = 13.4

z 2 1.93 z + 0.927
Y ( z)
= 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 estabilizacin
adecuada, debido a la saturacin de las variables. El cdigo
del controlador queda como:

Fig. 13. Plano complejo que muestra el crculo unitario, los polos y ceros del
sistema en lazo cerrado con un controlador de adelanto.

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

Fig. 12 Respuesta experimental de la posicin para el motor con el


controlador PID. Se observa una diferencia notable entre la simulacin y la
respuesta. Esto se debe a la sintonizacin de las ganancias.

VI. CONTROLADOR DE ADELANTO DE FASE


La funcin de transferencia de un controlador de adelanto de
fase [1] se muestra en 13.

D( z ) = K

(z + )
z+

(13)

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


interseccin entre las dos restricciones de diseo, tiempo de asentamiento y
sobre impulso.

La funcin de transferencia obtenida (14) se muestra a


continuacin:

Y ( z ) z + 0.5
=
E ( z ) z + 0.5

(14)

En la figura 15 de muestra el diagrama a bloques utilizado


en la simulacin 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 diseo, en este caso el tiempo de asentamiento
es de 0.1seg y el sobrepaso mximo de 0.032%
Fig. 15. Diagrama a bloques de simulink de la simulacin del controlador
de adelanto de fase.

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 continuacin:
while(1){

Fig. 16 Respuesta de la simulacin del controlador de adelanto de fase.

La respuesta experimental del controlador se muestra en la


figura 17. El controlador de adelanto de fase se programa en el
microcontrolador de la siguiente manera:
u=-u/2+e0+e1/2;

Fig. 17 Respuesta experimental de la posicin para el motor. Se observa como


el tiempo de asentamiento y sobrepaso cumplen las restricciones de diseo.

e1=e0;
//error anterior
e0=posd-pos;
//error actual
caclpos();
//Funcin que obtiene la posicin
printf("%ld,",pos); //Manda la informacin
u=-u/2+e0+e1/2; //Controlador
sendcont();
//Indica el voltaje del motor
}
La duracin de este ciclo se puede desglosar de la siguiente
manera: 200us para calcular el controlador, 300us preparar el
PWM y 350us para leer la posicin. Esto es un retardo
acumulado de 850us, que es un poco menos del milisegundo
establecido, lo cual no gener problemas. Para obtener estas
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 nmeros grandes se requieren ms 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
seales desfasadas 90. El procesamiento requerido para
detectar una cambio de direccin en la seal puede complicar
muchos los algoritmos de programacin y saturar los recursos
del microcontrolador [2]. Por esto se opta por un
decodificador externo. Tambin fue necesario aadir 2
inversores Schmitt Trigger para mejorar las seales obtenidas
del encoder. El esquemtico de este arreglo se muestra en la
figura 18. Las seales con las cuales se hace la deteccin del
cambio de direccin se muestran en la figura 19.

VII. IMPLEMENTACIN
A. Respecto al microcontrolador
Se seleccion un microcontrolador econmico, de
capacidad media, para representar una situacin de diseo
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
millones de instrucciones por segundo, para obtener un
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 posicin. El timer restante es utilizado por el
microcontrolador para generar una seal PWM.

Fig. 18 Decodificador para el encoder de cuadratura. Las salidas


decodificadas se conectan directamente a los timers de microcontrolador.

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 funcin sendcont() es la
encargada de calcular el valor en el PWM, se muestra a
continuacin.
void sendcont(){
if(u==0){
//apaga motor si u=0
output_high(PIN_A0);
output_high(PIN_A1);
} else {
if(u>0){
output_high(PIN_A0);
output_low(PIN_A1);
} else {
output_low(PIN_A0);
output_high(PIN_A1);
}}

Fig. 19 Forma de los pulsos del encoder y seal decodificada.


La funcin caclpos()

obtiene la posicin absoluta del motor a


partir del momento que se inicio el microcontrolador. Se graba
en una variable global int32 los pulsos obtenidos en el
encoder. Esto puede almacenar 3 millones de revoluciones del
eje del reductor. A continuacin se presenta la funcin.
void caclpos(){
a1=get_timer0();
a2=get_timer1();
aux1=a1-a2;
if(aux1<-100){
aux2=aux2-100;
set_timer0(0);
set_timer1(0);
a1=0;
a2=0;
}
if(aux1>100){
aux2=aux2+100;
set_timer0(0);
set_timer1(0);
a1=0;
a2=0;
}
pos=aux2+aux1;
}

En trminos generales esta funcin resta los pulsos de cada


direccin. As se pueden obtener posiciones negativas y
positivas, de forma absoluta, esto se almacena en la variable
aux1. Debido a las limitaciones en los timers cada 100 pulsos
de borran y se almacena este valor en la variable aux2.
Finamente se suman las variables auxiliares para obtener la
posicin absoluta.
C. PWM y etapa de potencia
El microcontrolador esta acoplado con el puente H por
medio de optoacopladores. Esto permite utilizar dos fuentes
separadas, una para los circuitos de control y otra para la etapa
de potencia. El microcontrolador seleccionado solo cuenta con
un modulo PWM. Para controlar ambos canales del puente H
se conecto la salida del PWM al nodo de ambos
optoacopladores. Los ctodos fueron conectados a otras
terminales del microcontrolador y para mandar la seal al

v=abs(u);
if(v<200) v=200; //limita la u por seguridad.
if(v>1020) v=1020; //limita la u por seguridad.
set_pwm1_duty(v); //200-->1020 rango funcional
}
Esta funcin revisa el valor calculado por el controlador y lo
limita en el rango funcional del PWM. En caso que el control
sea cero se apaga el motor dejndolo en esa posicin. Segn
el signo del control se activa el canal de direccin
correspondiente del puente H. Se retira el signo al control y se
revisa que este dentro del rango funcional. Si es menor que
200 se deja en este valor, debido a la zona muerta del motor.
Si el control es mayor de 1020, se limita a este valor ya que no
hay ms voltaje disponible.
D. Interfaz serial
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
por medio del MAX232. Este circuito integrado permite
convertir los niveles de voltaje del protocolo RS-232 a TTL.
La informacin generada por el microcontrolador se manda
por el puerto serial a un programa de Matlab. El programa de
Matlab grafica la posicin en pantalla, del tiempo
especificado.
VIII. CONCLUSIONES
Para pasar de las ecuaciones a la implementacin de un
controlador, existen diversas consideraciones importantes. Es
necesario tener esto en mente, de lo contrario el controlador no
funcionara de manera adecuada. En caso de utilizar un
microcontrolador con recursos limitados, es de suma
importancia simplificar lo ms posible los algoritmos para no
saturar la memoria. Si se hubiese deseado utilizar nmeros con
punto flotante, se hubiera saturado la memoria del
microcontrolador solamente con la librera necesaria. Tambin

7
la decodificacin externa de las seales del encoder de
cuadratura, simplifican la programacin 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.
Adems de estas consideraciones relacionadas con el
hardware y software; es muy importante contar con un buen
diseo en el control. Ya que por lo general al implementar los
factores de ruido se vern 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 validacin
de este modelo. Para esto las herramientas de software como
Matlab muestran su gran utilidad.

AGRADECIMIENTOS
Un agradecimiento especial al profesor Esteban Chvez por
su apoyo y paciencia.
REFERENCIAS
[1]
[2]

K. Ogata, Sistemas de Control en Tiempo Discreto 2 ed. Mexico:


Pearson Prentice Hall, 1996, pp. 204257.
S. Bowling, Servo Motor application, Microchip app note AN696 ,
2000. Disponible: http://www.microchip.com

You might also like