Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Digital Control Implementation
Digital Control Implementation
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.
Fig. 4. Plano complejo que muestra el círculo unitario, los polos y ceros del
sistema.
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;
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
Y ( z) z 2 − 1.93 z + 0.927
= 14.5 (12)
E ( z) ( z − 1) z
u=u+e0-e1/2+e2/5;
while(1){
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.
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
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