Proyecto de Sistema de Control
Proyecto de Sistema de Control
Proyecto de Sistema de Control
PARA LA FERIA
dia
Va (t ) Ra ia (t ) La Vb (t )
dt
donde : Vb (t ) K b w(t ) w(t ) velocidad angular del eje
Tm (t ) K i ia Tm (t ) Torque del motor
dw(t )
Tm (t ) J T BT w(t )
dt
J T inercia total de la carga mecanica=J L J M
BT coeficiente de fricción viscosa total=BL BM
Se desea que ustedes monten un modelo simulink del motor en cadena abierta (sin control) y
obtengan la respuesta del motor para una tensión de armadura constante de 18 volts aplicada
en t=0. Consideren como salida: la velocidad angular en el eje del motor. Pero también nos
interesa ver cómo es el comportamiento de la corriente de armadura durante el arranque del
motor.
dia
Va (t ) Ra ia (t ) La Vb (t )
dt
donde : Vb (t ) K b w(t ) w(t ) velocidad angular del eje
Tm (t ) K i ia Tm (t ) Torque del motor
dw(t )
Tm (t ) J T BT w(t )
dt
J T inercia total de la carga mecanica=J L J M
BT coeficiente de fricción viscosa total=BL BM
1. Calcular la función de transferencia en cadena abierta del motor partiendo del diagrama
de bloques representativo de sus ecuaciones dinámicas. 3 ptos
2. Obtener la función de transferencia en el espacio de trabajo de matlab. A este respecto
se recomienda ver el help de comandos como tf y zpk. 3 ptos
3. Obtener los polos del motor. ¿Cuál cree usted es la razón para que el motor tenga un polo
mucho más rápido que el otro? 3 ptos
4. Estimar la duración de la respuesta transitoria del motor en cadena abierta. ¿Coincide
esto con lo obtenido en la asignación tres? 3 ptos
5. Calcular la ganancia estática del motor tanto mediante ecuaciones como en Matlab. 3
ptos
6. Mostrar el diagrama de bloques en cadena cerrada que utilizaría para analizar el
comportamiento regulatorio del lazo de control de la asignación cuatro para una
perturbación modelada como torque frenante. 4 ptos
En esta asignación van a trabajar con el servo de posición que discutimos en clase. Recuerden que estamos utilizando el
mismo motor DC, pero ahora la variable controlada es la posición angular en un eje cuya velocidad está reducida veinte
veces debido a la utilización de un engranaje reductor de velocidad. El diagrama simulink del sistema se muestra en la
siguiente figura:
Este modelo se encuentra disponible en el site del curso bajo la denominación: “servoposicionPID.mdl”. Ustedes lo van a
utilizar para efectuar la prueba final de su diseño para el cual: aplicarán la técnica de ubicación de polos en cadena cerrada.
Comentarios:
1. El controlador PID del modelo tiene una salida limitada entre -5 y +5 voltios.
2. Se supone que el motor esta inicialmente parado y se está aplicando una referencia tipo escalón de
magnitud 1 radian.
3. A los efectos de aplicar la técnica sigue siendo válida la aproximación de despreciar la inductancia de
armadura. Es decir, la función de transferencia del motor velocidad vs tensión de armadura es de primer
orden.
Briceño 0.8 15
Cumare 0.7 10
Marin 1 5
Martinez 1.5 10
Olivo 2 5
Padron 0.8 10
Silva 1.2 8
Velasco 1.6 5
Veloz 1 10
Viloria 1.5 15
Ruiz 2 10
A los efectos de proceder al diseño podrán utilizar el archivo .m disponible en el site bajo la denominación:
“DisenoPIDServoPosicion.m”. Ustedes deben intervenir este archivo en las líneas 28 y 29 a fin de colocar las
especificaciones de diseño que les corresponden según la tabla. Como se dijo en clase: este programa parte de
las especificaciones de diseño para calcular la posición deseada para los polos dominantes del sistema.
Internamente, él calcula la posición de los dos ceros del controlador PID de manera tal de forzar a que el LGR del
sistema pase por esos puntos de diseño (haciendo cumplir la condición de fase) y luego calcula la ganancia para
que los polos se ubiquen allí aplicando condición de magnitud. Luego, ustedes deben verificar en sisotool donde
quedaron ubicados los otros polos del sistema y si los polos supuestamente dominantes realmente lo son. Se
pide entonces:
A. Obtener el diseño y verificarlo en el sisotool que los polos “supuestamente” dominantes están ubicados
en la posición que ustedes obtuvieron a partir de las especificaciones de diseño. Mostrar la gráfica de
verificación. (7 ptos)
B. Obtener la respuesta lineal del sistema y compararla con lo especificado. Explicar a qué pueden deberse
las diferencias sobre la base del cumplimiento o no de la Hipótesis de Dominancia. (7 ptos)
C. Con los parámetros Kc, Tr y Td obtenidos (ver anexo) obtengan la respuesta del modelo simulink. Si hay
diferencias con respecto a la respuesta obtenida del análisis lineal, comentar a qué pueden deberse estas
diferencias. Mostrar las respuestas obtenidas. (6 ptos)
Anexo :
1 TrTd s 2 Tr s 1
PID( s ) K C (1 Td s ) K C
Tr s Tr s
s 2 (1/ Td ) s (1/ TrTd )
PID( s ) K CTd
s
Las raíces del numerador se obtienen de la expresión:
1 1
s1 , s2 (1/ Td ) 2 4(1/ TrTd )
2Td 2
Si : Tr 4Td
el controlador aportará dos ceros reales e iguales y:
( s 1/ 2Td ) 2
PID( s ) K CTd
s
Material utilizado:
Arduino UNO.
Driver l298d.
Motoreductor 12V.
Fuente de alimentación externa de 12V a 1amp.
Motor DC utilizado
Diagrama de conexión
Diagrama de conexión con integrado L298d.
Si no cuentas con el integrado L298d, puedes utilizar el L293D para un motor DC de menor potencia te funcionara
muy bien.
Una vez realizado las conexiones del circuito, conectamos la placa arduino a nuestra computadora y abrimos
MATLAB.
Creamos un nuevo script y comenzamos a escribir el siguiente código. Únicamente tendremos que modificar el
numero de puerto de comunicación y el modelo en caso de ser necesario, de la placa Arduino.
Script en MATLAB.
for x = 0:4
writeDigitalPin(a,'D3',1);
writeDigitalPin(a,'D5',0);
pause(2);
writeDigitalPin(a,'D3',0);
writeDigitalPin(a,'D5',1);
pause(2);
end
writeDigitalPin(a,'D3',0);
writeDigitalPin(a,'D5',0);
for d = 1:-0.1:0
writePWMDutyCycle(a,'D3',d);
writeDigitalPin(a,'D5',0);
pause(2);
end
for s = 0:+0.1:1
writeDigitalPin(a,'D3',0);
writePWMDutyCycle(a,'D5',s);
pause(2);
end
writeDigitalPin(a,'D3',0);
writeDigitalPin(a,'D5',0);
Bibliografia
https://create.arduino.cc/editor/ProfeGarcia/ec7844e0-f33e-4a09-b636-910d9fadd8c2/preview
https://sites.google.com/site/arcontrolmecatronica/archivos-matlab-descargables
https://www.dropbox.com/sh/mb4dkc5c1bymenr/AACA9gWaIsx8edNvnGKHiex8a?dl=0
https://www.youtube.com/watch?v=yTc9xq_jmAE
https://www.biwy-mecatronica.com/2017/11/mpp-encoder-arduino.html
https://www.youtube.com/watch?v=HZE7fVpdQxw
1. Objetivos
2. Introducción
3. Materiales
4. Modelamiento matemático del motor DC
5. Diseño y características de la planta
6. Conclusiones
7. Recomendaciones
8. Bibliografía
9. Anexos
Objetivos
Objetivo General
Diseñar e implementar un sistema de control de velocidad de un motor DC.
Objetivos Específicos
Determinar las especificaciones requeridas para una planta devanadora, utilizada para enrollar cable o alambre.
Medir la velocidad a la que gira el eje de un motor DC mediante un opto-acoplador que es el fundamento de un
tacómetro digital.
Obtener un muestreo de datos mediante un protocolo de comunicación hacia MATLAB.
Utilizar el comando IDENT para identificar el tipo de sistema y sus diversas aplicaciones.
Introducción
Los sistemas de control son aquellos dedicados a obtener la salida deseada de un sistema o proceso. En un sistema
general se tienen una serie de entradas que provienen del sistema a controlar, llamado planta, y se diseña un sistema
para que, a partir de estas entradas, modifique ciertos parámetros en el sistema planta, con lo que
las señales anteriores volverán a su estado normal ante cualquier variación.
JUSTIFICACIÓN
Para lograr una alta prestación de los accionamientos llevados a cabo por un motor que forma parte de un sistema
de control, es necesario estudiar las características dinámicas de estos y desarrollar estrategias de control acorde con
las mismas.
Es por esta razón que la presente actividad pretende tener un acercamiento al control en una planta real, donde se
diseñará un control de velocidad del motor DC y se lo manejará de manera adecuada a la aplicación elegida.
Materiales
Motor DC
El motor de corriente continua es una máquina que convierte la energía eléctrica en mecánica, principalmente
mediante el movimiento rotativo. Esta máquina de corriente continua es una de las más versátiles en la industria. Su
fácil control de posición, par y velocidad la han convertido en una de las mejores opciones en aplicaciones de control
y automatización de procesos.
Carrete
Cilindro generalmente con el eje hueco, con rebordes o discos en sus bases, en el que se enrollan hilos, cables u otro
material flexible. En nuestro caso nuestro carrete es de madera y tiene un diseño especial para simular el enrollado
de alambre
Ilustración 2 CARRETE
Sensor
La etapa de medición se realiza mediante el uso de un opto-acoplador H21A1, siguiendo el principio de
funcionamiento de un tacómetro digital, a través del cual se hace pasar un disco de ranurado codificado colocado en
la parte posterior del eje del motor. El disco codificado de 30 pulsos/rev. Los pulsos emitidos son realimentados al
microcontrolador para así calcular la velocidad de rotación del motor.
Para la etapa de procesamiento de datos, utilizamos el microcontrolador PIC 16F877A de 40 pines el cual nos
permitió conectar el display LCD para desplegar los datos obtenidos, el sensor y la conexión Serial hacia la PC.
Ilustración 4 PIC 16F877A
DIAGRAMA DE BLOQUES
Ilustración 5 DIAGRAMA DEL SISTEMA
Etapa de Potencia
Mediante un integrado 555 generamos un PWM para hacer girar el motor, esta etapa se la acopló a la etapa
de potencia, en la cual se utilizó un transistor IRFZ44N que permite soportar corrientes altas y darle mayor potencia
al motor.
Por lo tanto, la función de transferencia que caracteriza al motor y que relaciona la frecuencia (en RPM) a la que gira
el motor con el voltaje de armadura está dada por:
Sin Carga
La razón fue determinada a través de los siguientes datos presentados en la tabla
Ilustración 21 INTERPOLACIÓN
Ilustración 22 MODELO MATEMÁTICO
Ilustración 23 RESPUESTA ESCALÓN
Conclusiones
El primer punto que se trató en este trabajo fue la descripción del funcionamiento de un motor de corriente
continua, donde se analizaron los diferentes aspectos relacionados con su funcionamiento, y los parámetros que
influyen en el control de la velocidad de los mismos. A partir de esto se obtuvo un modelo matemático, donde,
están contemplados dichos parámetros. Dicho modelo matemático es una aproximación bastante exacta
del comportamiento real del sistema.
Un mayor número de orificios en la rueda utilizada en la etapa de sensado da una mayor fidelidad en la medición
Se deben tomar un mayor número de muestras para conseguir una mejor aproximación en
el dominio del tiempo e implementando el comando IDENT con el vector de datos, se tendrá una mejor
aproximación en el dominio de la frecuencia
Podemos concluir que nuestra planta no es tan fidedigna dado que carece de un compensador.
Recomendaciones
Es necesario tener cuidado al momento de realizar las conexiones, especialmente en lo que se refiere a la etapa
del microcontrolador y la PC ya que si el circuito genera alguna corriente de fuga, el puerto de la computadora se
puede dañar permanentemente.
La superficie sobre la que se coloca el motor debe ser fija para no tener variaciones externas en la medición de las
rpm.
Para realizar la adquisición de datos mediante el puerto serial un buen procedimiento es comprobar que el puerto
COM utilizado es el correcto mediante el hiperterminal.
Se debe tener cuidando en las alimentaciones, ya que se están utilizando voltajes de 5 voltios para alimentar al
PIC y de 12 voltios para alimentar el motor.
Bibliografía
http://bibdigital.epn.edu.ec/bitstream/15000/420/1/CD-0400.pdf
http://www.iesmarenostrum.com/departamentos/tecnologia/mecaneso/mecanica_basica/operadores/ope_rue
da.htm
http://isa.umh.es/asignaturas/ai/practicas/p09.pdf
Sistema-motor-ident.pdf
Control_de_un_motor_de_velocidad.pdf
Anexos
Programa en MATLAB
clear all;
close all;
clc;
puerto serial
fopen(PS);
K1= 0;
K= [];
pause(0.01)
K1=0;
end;
K=K*2;
length(K)
fclose(PS);
delete(PS);
clear PS;
w=length(K);
o=1:1:w;
n=4; % número
figure(2)
L=1;
for j=1:n
if j~=i
L=L*(x-xn(j))/(xn(i)-xn(j));
end
end
end
p=simplify(p);
#fuses HS,NOWDT,NOLVP
#include
#use delay(clock=20000000)
#bit t1_overflow=0x0C.0
float volt=0;
void main() {
int32 freq,rpm;
long freqc_high;
long freqc_low;
lcd_init();
while (TRUE) {
cycles8=0;
cycles=0;
freqc_high=0;
t1_overflow=0;
set_timer1(0);
setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1);
//PARA EL CONVERSOR AD
setup_adc_ports(AN0_AN1_AN3);
setup_adc(ADC_CLOCK_DIV_2);
set_adc_channel(0);
volt=read_adc();
while (cycles!=0xFF) {
cycles8=0;
while (cycles8!=0xFF) {
if (t1_overflow)
{t1_overflow=0;freqc_high++;}
else
{delay_cycles(5);}
delay_cycles(62);
cycles8++;
delay_cycles(216);
cycles++;
delay_cycles(211);
setup_timer_1(T1_DISABLED);
if (t1_overflow)
freqc_high++;
freqc_low=get_timer1();
freq=make32(freqc_high,freqc_low);
rpm=freq*2;
printf("%Lu ",rpm);
Lcd_putc ("\f");
lcd_gotoxy(1,1);
lcd_gotoxy(1,2);
printf(lcd_putc,"%LU RPM",rpm);
delay_ms(10);
Tacómetro Digital
Dispositivo para comprobar el correcto funcionamiento del sensor.
Link de descarga
https://www.monografias.com/trabajos82/control-velocidad-motor-dc/control-velocidad-motor-
dc2.shtml#Relacionados