UNIVERSIDAD NACIONAL DE INGENIERIA
UNIVERSIDAD NACIONAL DE INGENIERIA
CONTROL DE VELOCIDAD
CONTROL DE VELOCIDAD
Y
Y
POSICIÓN
POSICIÓN
DE
DE
UN
UN
MOTOR
MOTOR
Integrantes:
Integrantes:
Cueva Olivos, John Paul
Cueva Olivos, John Paul
Sandoval Monzón, Héctor David
Sandoval Monzón, Héctor David
Zevallos Gutiérrez, Rómulo
Zevallos Gutiérrez, Rómulo
Profesor:
Profesor:
M.Sc. Ricardo Rodríguez Bustinza
M.Sc. Ricardo Rodríguez Bustinza
Ciclo Académico:
Ciclo Académico:
2011-1
2011-1
INTRODUCCION
INTRODUCCION
En la actualidad, la ingeniería de control se ha convertido en una herramienta cada vez m
En la actualidad, la ingeniería de control se ha convertido en una herramienta cada vez m ás útilás útil en la industria. Debido a la alta gama de soluciones que puede ofrecernos, es imprescindible en la industria. Debido a la alta gama de soluciones que puede ofrecernos, es imprescindible conocer los principales tipos de controles.
conocer los principales tipos de controles.
Como ya hemos visto en ciclos anteriores, los cursos de control clásico y control moderno nos Como ya hemos visto en ciclos anteriores, los cursos de control clásico y control moderno nos formaron una base muy sólida de control, pero que pocas veces se tuvo la oportunidad de formaron una base muy sólida de control, pero que pocas veces se tuvo la oportunidad de experimentar y observarlos físicamente.
experimentar y observarlos físicamente.
Como se ha visto a lo largo del ciclo, el diseño de controladores digitales es muy similar a los Como se ha visto a lo largo del ciclo, el diseño de controladores digitales es muy similar a los controladores analógicos, con la gran diferencia de que la discretizacion nos permite controladores analógicos, con la gran diferencia de que la discretizacion nos permite implementar diferentes tipos de algoritmos en sistemas embebidos como microcontroladores, implementar diferentes tipos de algoritmos en sistemas embebidos como microcontroladores, dsp
dsp’s’s, ordenadores, etc. con cambios casi imperceptibles en la electrónica, ya que el cambiar el, ordenadores, etc. con cambios casi imperceptibles en la electrónica, ya que el cambiar el
tipo de controlador implicara solo un cambio del software. tipo de controlador implicara solo un cambio del software.
En el siguiente trabajo realizaremos el control de velocidad y posición de un motor. Ambos, En el siguiente trabajo realizaremos el control de velocidad y posición de un motor. Ambos, controles muy importantes en la industria.
controles muy importantes en la industria.
La aplicación del control de velocidad de un motor la podemos apreciar cuando por ejemplo La aplicación del control de velocidad de un motor la podemos apreciar cuando por ejemplo observamos una faja transportadora de botellas, la cual está sometida a soportar cargas observamos una faja transportadora de botellas, la cual está sometida a soportar cargas variables. Supongamos el caso de una faja que transporta botellas de gaseosa, como sabemos, variables. Supongamos el caso de una faja que transporta botellas de gaseosa, como sabemos, a veces la faja estará totalmente vacía y otras veces transportara 10, 20 o 100 botellas, el a veces la faja estará totalmente vacía y otras veces transportara 10, 20 o 100 botellas, el aumento de numero de botellas en la faja, ocasionara la disminución de la velocidad. Es en aumento de numero de botellas en la faja, ocasionara la disminución de la velocidad. Es en esta parte en la que entra a tallar el control de velocidad del motor que gobierna la faja, esta parte en la que entra a tallar el control de velocidad del motor que gobierna la faja, procurando que esta mantenga siempre la misma velocidad
procurando que esta mantenga siempre la misma velocidad para un correcto para un correcto funcionamiento.funcionamiento. Por otro lado la aplicación del control de posición de un motor es muy utilizada actualmente Por otro lado la aplicación del control de posición de un motor es muy utilizada actualmente en robótica. Tenemos como un caso muy cercano el control de posición de los motores en las en robótica. Tenemos como un caso muy cercano el control de posición de los motores en las articulaciones de un brazo robótico.
CONTROL DE VELOCIDAD DE UN MOTOR
CONTROL DE VELOCIDAD DE UN MOTOR
Para el control de velocidad del motor hemos utilizado un motor DC con encoder sin caja Para el control de velocidad del motor hemos utilizado un motor DC con encoder sin caja reductora, el cual provenía de una maquina fotocopiadora. Hemos elegido este motor debido reductora, el cual provenía de una maquina fotocopiadora. Hemos elegido este motor debido a sus grande velocidades, ya que queríamos hacer el control de velocidad en un rango de 0 a a sus grande velocidades, ya que queríamos hacer el control de velocidad en un rango de 0 a 1400 RPM.
1400 RPM.
Aunque no conseguimos, la marca exacta del motor para poder obtener sus datos completos Aunque no conseguimos, la marca exacta del motor para poder obtener sus datos completos por medio de su
por medio de su datasheet, algunas de este motor son:datasheet, algunas de este motor son: Descripción
Descripción Valor Valor UnidadesUnidades Voltaje
Voltaje Nominal Nominal 12 12 VoltiosVoltios Corriente
Corriente Nominal Nominal 1.8 1.8 AmperiosAmperios Encoder
Encoder 100 100 ranurasranuras
El motor cuenta con un encoder directamente acoplado al único eje, ya que no tiene caja El motor cuenta con un encoder directamente acoplado al único eje, ya que no tiene caja reductora, de este modo podemos obtener la velocidad del motor con l a frecuencia de de reductora, de este modo podemos obtener la velocidad del motor con l a frecuencia de de pulsos que nos arroje este encoder.
pulsos que nos arroje este encoder.
CONVERSOR FRECUENCIA-VOLTAJE
CONVERSOR FRECUENCIA-VOLTAJE
Entre los diversos circuitos existentes que nos permiten convertir la frecuencia en voltaje, Entre los diversos circuitos existentes que nos permiten convertir la frecuencia en voltaje, hemos utilizado uno basado en
Realizamos las pruebas previamente en el simulador de cir
Realizamos las pruebas previamente en el simulador de cir cuitos de Proteus-Isis:cuitos de Proteus-Isis:
Al realizar la simulación para distintas valores de resistencias y condensadores basados en las Al realizar la simulación para distintas valores de resistencias y condensadores basados en las formulas obtenidas en el datasheet del LM331, elegimos finalmente los valores del diseño de formulas obtenidas en el datasheet del LM331, elegimos finalmente los valores del diseño de la figura anterior, obteniendo en la simulación que el circuito respondía bastante rápido, la figura anterior, obteniendo en la simulación que el circuito respondía bastante rápido, llegando a establecer el voltaje de salida en un tiempo de 30ms aproximadamente. Dicha llegando a establecer el voltaje de salida en un tiempo de 30ms aproximadamente. Dicha velocidad de respuesta podía disminuirse aún más reduciendo el valor del capacitor C4, sin velocidad de respuesta podía disminuirse aún más reduciendo el valor del capacitor C4, sin embargo, esta disminución en el tiempo de respuesta traía consigo el aumento de ruido en la embargo, esta disminución en el tiempo de respuesta traía consigo el aumento de ruido en la señal. Motivo por el c
Como nuestra intención es llevar a través de la DAQ un valor analógico de velocidad hacia la la Como nuestra intención es llevar a través de la DAQ un valor analógico de velocidad hacia la la computadora para ser luego ingresada al controlador, debemos obtener la relación existente computadora para ser luego ingresada al controlador, debemos obtener la relación existente entre la frecuencia que ingresa al conversor frecuencia-voltaje y el voltaje que existe a la entre la frecuencia que ingresa al conversor frecuencia-voltaje y el voltaje que existe a la salida.
salida.
Para ello realizamos pruebas con distintos valores de voltaje de alimentación al motor, con ello Para ello realizamos pruebas con distintos valores de voltaje de alimentación al motor, con ello podíamos generar distintas velocidades del motor, es decir distintas frecuencias del encoder y podíamos generar distintas velocidades del motor, es decir distintas frecuencias del encoder y en cada caso medimos los valores arrojados a la salida del conversor frecuencia-voltaje.
en cada caso medimos los valores arrojados a la salida del conversor frecuencia-voltaje. Los valores obtenidos fueron:
Los valores obtenidos fueron:
Frecuencia
Frecuencia V V out out RPMRPM 504 0.937 302.4 504 0.937 302.4 748 1.104 448.8 748 1.104 448.8 886 1.205 531.6 886 1.205 531.6 1031 1.307 618.6 1031 1.307 618.6 1195 1195 1.418 1.418 717717 1346 1.525 807.6 1346 1.525 807.6 1497 1497 1.63 1.63 898.2898.2 1660 1660 1.752 1.752 996996 1808 1808 1.853 1.853 1084.81084.8 1964 1964 1.95 1.95 1178.41178.4 2126 2126 2.064 2.064 1275.61275.6 2298 2298 2.184 2.184 1378.81378.8 2443 2443 2.264 2.264 1465.81465.8 2586 2586 2.382 2.382 1551.61551.6 2744 2744 2.491 2.491 1646.41646.4 2915 2915 2.594 2.594 17491749 3084 3084 2.716 2.716 1850.41850.4 3322 3322 2.886 2.886 1993.21993.2
Al graficar estos resultados obtuvimos una
Al graficar estos resultados obtuvimos una gráfica bastante lineal (casi perfecta).gráfica bastante lineal (casi perfecta).
y = 870.76x - 518.88 y = 870.76x - 518.88 R² = 0.9999 R² = 0.9999 0 0 500 500 1000 1000 1500 1500 2000 2000 2500 2500 0 1 2 3 4 0 1 2 3 4
RPM vs Vout
RPM vs Vout
RPM vs Vout RPM vs Vout Lineal (RPM vs Vout) Lineal (RPM vs Vout)Del grafico anterior podemos apreciar que la relación frecuencia-voltaje es casi 100% lineal y Del grafico anterior podemos apreciar que la relación frecuencia-voltaje es casi 100% lineal y obedece a la ecuación:
obedece a la ecuación: y = 870.76x - 518.88 y = 870.76x - 518.88
Con un error bastante pequeño, ya Con un error bastante pequeño, ya que:que: R² = 0.9999 es decir, casi 1
R² = 0.9999 es decir, casi 1
DISEÑO DE LA FUENTE DE
DISEÑO DE LA FUENTE DE LA TARJETA ELECTRÓNICA
LA TARJETA ELECTRÓNICA
Otros componentes que requerimos en la parte electrónica, es una fuente que pueda Otros componentes que requerimos en la parte electrónica, es una fuente que pueda aumentar a las diferentes partes electrónicas utilizadas. En nuestro caso dicha fuentes es la aumentar a las diferentes partes electrónicas utilizadas. En nuestro caso dicha fuentes es la siguiente:
siguiente:
DISEÑO DEL CONVERTIDOR ANALÓGICO-MODULADOR DE ANCHO DE PULSO
DISEÑO DEL CONVERTIDOR ANALÓGICO-MODULADOR DE ANCHO DE PULSO
Una vez recibida la señal censada de velocidad por la DAQ, esta la enviara a la PC, donde será Una vez recibida la señal censada de velocidad por la DAQ, esta la enviara a la PC, donde será ingresada al controlador, devolviéndonos una señal analógica de control que para ser enviada ingresada al controlador, devolviéndonos una señal analógica de control que para ser enviada al motor deberá previamente ser convertida a una modulación de ancho de pulso. Es por este al motor deberá previamente ser convertida a una modulación de ancho de pulso. Es por este que será necesario diseñar un convertidor analógico-pwm , el cual en nuestro caso está basado que será necesario diseñar un convertidor analógico-pwm , el cual en nuestro caso está basado en un pic que recibirá por una de sus entradas analógicas la señal de control y previo programa en un pic que recibirá por una de sus entradas analógicas la señal de control y previo programa la convertirá en una señal modulada con un ancho de pulso que será proporcional al valor la convertirá en una señal modulada con un ancho de pulso que será proporcional al valor analógico de la señal de control.
En este punto es importante recalcar que el PWM debe ser de una frecuencia igual o superior En este punto es importante recalcar que el PWM debe ser de una frecuencia igual o superior a los 20khz para no entrar en el rango audible humano, sin embargo será suficiente que supere a los 20khz para no entrar en el rango audible humano, sin embargo será suficiente que supere los 10KHZ. En nuestro caso siendo un pocos exigentes con las normas, diseñamos nuestro los 10KHZ. En nuestro caso siendo un pocos exigentes con las normas, diseñamos nuestro programa para que el
programa para que el pic que genere PWM con una pic que genere PWM con una frecuencia de 20KHz.frecuencia de 20KHz.
DRIVER DE POTENCIA PARA EL MOTOR
DRIVER DE POTENCIA PARA EL MOTOR –
– PUENTE H
PUENTE H
Debido a que nuestro motor trabajaba siempre con corrientes que no superaban los 2 Debido a que nuestro motor trabajaba siempre con corrientes que no superaban los 2 amperios, elegimos el integrado L298 que comprende dos puentes H de 2 amperios cada uno, amperios, elegimos el integrado L298 que comprende dos puentes H de 2 amperios cada uno, pudiéndose utilizar ambos en paralelo para
pudiéndose utilizar ambos en paralelo para conseguir un puente H de conseguir un puente H de hasta 4 Amperios.hasta 4 Amperios.
Sin embargo como dijimos antes, nuestro motor no supera los dos amperios, por lo que Sin embargo como dijimos antes, nuestro motor no supera los dos amperios, por lo que decidimos utilizar solo uno de los puentes H incorporados en este integrado.
decidimos utilizar solo uno de los puentes H incorporados en este integrado.
Es importante recalcar en este punto la importancia de colocar los 4 diodos a la salida del Es importante recalcar en este punto la importancia de colocar los 4 diodos a la salida del puente H tal com
puente H tal como se indica en o se indica en la figura con el la figura con el fin de contrarrestar fin de contrarrestar los voltajes invelos voltajes inversosrsos generados por la fuerza contra electromotriz en los motores cuando cambian de giro.
generados por la fuerza contra electromotriz en los motores cuando cambian de giro. Es recomendable que estos diodos sean ultrarrápidos para
DISEÑO DE LA PLACA
DISEÑO DE LA PLACA
Todos los componentes anteriores (Fuente, convertidor voltaje-frecuencia, convertidor Todos los componentes anteriores (Fuente, convertidor voltaje-frecuencia, convertidor Analógico-PWM y puente H) fueron incorporados en nuestra placa para el control de Analógico-PWM y puente H) fueron incorporados en nuestra placa para el control de velocidad, teniendo como resultado la mostrada
velocidad, teniendo como resultado la mostrada en los siguientes gráficos:en los siguientes gráficos:
VISTA TRIDIMENSIONAL DE LA PLACA VISTA TRIDIMENSIONAL DE LA PLACA
DETALLES DE LA PLACA DE CONTROL DE
ESQUEMA COMPLETO DE CONEXIÓN
ESQUEMA COMPLETO DE CONEXIÓN
ADQUISICIÓN DE LA PLANTA
ADQUISICIÓN DE LA PLANTA
Después de un adecuado acondicionamiento de la señal se
Después de un adecuado acondicionamiento de la señal se generó el siguiente esquema en
generó el siguiente esquema en
labview (
labview (
“adquisicion.vi” “adquisicion.vi”) para la adquisición de los datos de la
) para la adquisición de los datos de la planta:
planta:
Como se puede observar en la figura anterior la data proveniente del convertidor
Como se puede observar en la figura anterior la data proveniente del convertidor
frecuencia voltaje se le aplica un escalamiento debido que para una entrada cero el
frecuencia voltaje se le aplica un escalamiento debido que para una entrada cero el
convertidor arroja un valor mínimo de
convertidor arroja un valor mínimo de 0,573175. Por esta razón se
0,573175. Por esta razón se desmultiplex
desmultiplexa la
a la señal
señal
proveniente del DAQ Assitant 2 puesto que tiene configurado dos canales:
proveniente del DAQ Assitant 2 puesto que tiene configurado dos canales:
voltage y voltage y voltage_0voltage_0
, el canal
, el canal
voltagevoltageel cual contiene la data proveniente del convertid
el cual contiene la
data proveniente del convertidor es restado
or es restado
por dicho valor y luego de esto es nuevamente multiplexado con
por dicho valor y luego de esto es nuevamente multiplexado con
voltage_0voltage_0y almacenado
y almacenado
en adqui_LV.lvm y adqui_ML.lvm, los cuales fueron configurados con cabecera y sin
en adqui_LV.lvm y adqui_ML.lvm, los cuales fueron configurados con cabecera y sin
cabeceras
cabeceras respectivamen
respectivamente.
te.
IDENTIFICAC
IDENTIFICACIÓN DE L
IÓN DE LA PLANTA
A PLANTA
LABVIEW
LABVIEW
Usando el archivo adqui_LV.lvm se dispuso a crear un nuevo proyecto
Usando el archivo adqui_LV.lvm se dispuso a crear un nuevo proyecto
idetificado_SE.seproj
idetificado_SE.seproj
en signal express acoplado con el toolbox de sistemas de
en signal express acoplado con el toolbox de sistemas de
identificación, para la identificación se utilizó arx 1 1 1, a continuación se puede
identificación, para la identificación se utilizó arx 1 1 1, a continuación se puede
observar la
En esta ultima imagen se puede apreciar que despues de ejecutar el proyecto se En esta ultima imagen se puede apreciar que despues de ejecutar el proyecto se generara el archivo
generara el archivo identificado.simidentificado.sim el cual se utiliza en el programael cual se utiliza en el programa
simulacion_modelo.vi
simulacion_modelo.vi para obetener la funcion de transferencia de la planta. Talespara obetener la funcion de transferencia de la planta. Tales resulatdos se pueden apreciar claramente en la
resulatdos se pueden apreciar claramente en la siguiente imagen:siguiente imagen:
Debido que se utilizó identificación paramétrica ARX[1 1 1] como era obvio se
Debido que se utilizó identificación paramétrica ARX[1 1 1] como era obvio se
obtuvo una función de transferencia de primer orden:
obtuvo una función de transferencia de primer orden:
Como se puede ver la planta cuenta con un polo
Como se puede ver la planta cuenta con un polo
, el cual se encuentra
, el cual se
encuentra
en el semiplano izquierdo que nos indica que el sistema es
MATLAB
MATLAB
En esta ocasión se usó el archivo adqui_ML.lvm, para ello se realizó el programa
En esta ocasión se usó el archivo adqui_ML.lvm, para ello se realizó el programa
identi.m
identi.m
, el cual se encarga de crear los vectores (t, x, y) para luego ser usados
, el cual se encarga de crear los vectores (t, x, y) para luego ser usados
mediante el guide de i
mediante el guide de identificación de matlab. El código se muestra a
dentificación de matlab. El código se muestra a continuació
continuación
n
%identi.m
%identi.m
clear
clear allall, close, close allall, clc, clc load
load adqui_ML.lvmadqui_ML.lvm
t=adqui_ML(:,1); t=adqui_ML(:,1); x=adqui_ML(:,4); x=adqui_ML(:,4); y=adqui_ML(:,2); y=adqui_ML(:,2); plot(t,x,
plot(t,x,'g''g',t,y,,t,y,'b''b')) title(
title('Vin vs Vout''Vin vs Vout')) legend(
legend('Vin''Vin',,'Vout''Vout')) grid
grid onon
axis([0 5 -0.5 5.5]) axis([0 5 -0.5 5.5])
Al ejecutar el programa se genera la gráfica que muestra la señal de excitación y la
Al ejecutar el programa se genera la gráfica que muestra la señal de excitación y la
respuesta del sistema
respuesta del sistema
A continuación desde command window ejecutamos ident y realizamos las
A continuación desde command window ejecutamos ident y realizamos las
configuracion
Después de haber configuramos debemos de obtener el siguiente esquema:
Después de haber configuramos debemos de obtener el siguiente esquema:
Activamos Model output y obtenemos la siguiente grafica
Activamos Model output y obtenemos la siguiente grafica
En la gráfica anterior se puede apreciar que el
En la gráfica anterior se puede apreciar que el modelo identificado con ARX[
modelo identificado con ARX[1 1 1]
1 1 1]
sigue de una manera correcta el
sigue de una manera correcta el comportam
comportamiento de la
iento de la planta con un porcentaje de
planta con un porcentaje de
aproximación de 95.39%.
aproximación de 95.39%.
También se realizó una implementación de identificación en matlab sin usar el
También se realizó una implementación de identificación en matlab sin usar el
guide para ello se realizó el programa
guide para ello se realizó el programa ident_matlab.m
ident_matlab.m, el código se muestra a
, el código se muestra a
continuación:
continuación:
%ident_matlab.m
%ident_matlab.m
clc; close
clc; close allall; clear; clear allall;; % LECUTRA DE LA DATA
% LECUTRA DE LA DATA
% CASO 1: SUBAMORTIGUADO
% CASO 1: SUBAMORTIGUADO
load
u1=adqui_ML(:,4); u1=adqui_ML(:,4); y1=adqui_ML(:,2); y1=adqui_ML(:,2);
% Cálculo de la cantidad de datos
% Cálculo de la cantidad de datos
% N: número de datos % N: número de datos [N1,nos]=size(u1); [N1,nos]=size(u1); %% ACONDICIONANDO LA SEÑAL %% ACONDICIONANDO LA SEÑAL %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Buscando el punto de inicio del flanco de subida
%% Buscando el punto de inicio del flanco de subida
y1=y1-2; y1=y1-2; u1=u1-2; u1=u1-2; i=1; i=1; while
while u1(i)>0u1(i)>0 i=i+1; i=i+1; end end i=i+1; i=i+1; while
while u1(i)<0u1(i)<0 i=i+1; i=i+1; end end punto=i; punto=i; y1=[y1(punto:N1,:)]; y1=[y1(punto:N1,:)]; u1=[u1(punto:N1,:)]; u1=[u1(punto:N1,:)]; [N1,nos]=size(u1); [N1,nos]=size(u1);
% Calculo del máximo de la entrada
% Calculo del máximo de la entrada
max1=0; max1=0; for
for i=1:N1i=1:N1 if if max1<u1(i)max1<u1(i) max1=u1(i); max1=u1(i); end end end end min1=1000; min1=1000; for
for i=1:N1i=1:N1 if if min1>u1(i)min1>u1(i) min1=u1(i); min1=u1(i); end end end end % Valor de corrección % Valor de corrección cor1=-min1; cor1=-min1;
% Corrigiendo las señales
% Corrigiendo las señales
y1=y1+cor1; y1=y1+cor1; u1=u1+cor1; u1=u1+cor1; max1=max1+cor1; max1=max1+cor1; min1=min1+cor1; min1=min1+cor1;
%% ESTIMACIÓN DE LA FUNCIÓN DE TRANSFERENCIA
%% ESTIMACIÓN DE LA FUNCIÓN DE TRANSFERENCIA
DATAX=[y1 u1]; DATAX=[y1 u1]; figure
figure%%,title('CASO 1: SUBAMORTIGUADO')%%,title('CASO 1: SUBAMORTIGUADO')
datan=iddata(y1,u1,0.001); datan=iddata(y1,u1,0.001); %%idplot(datan); %%idplot(datan); % TOOLKIT IDENT % TOOLKIT IDENT th=arx(datan,[1 1 1]); th=arx(datan,[1 1 1]); %th=armax(datan,[2 2 1 1]); %th=armax(datan,[2 2 1 1]); present(th); present(th); thc=thd2thc(th); thc=thd2thc(th); [numc,denc]=th2tf(thc); [numc,denc]=th2tf(thc); printsys(numc,denc, printsys(numc,denc, 's''s');); Gc1=tf(numc,denc); Gc1=tf(numc,denc); %% GRAFICANDO RESULTADOS %% GRAFICANDO RESULTADOS T=0.001; T=0.001; % DATAS % DATAS tt=0:T:(N1-1)*T; tt=0:T:(N1-1)*T; subplot(211) subplot(211) plot(tt,u1,
plot(tt,u1, 'r''r'),axis([0 3 -0.5 6]),title(),axis([0 3 -0.5 6]),title( 'Entrada''Entrada')) grid
grid onon
subplot(212) subplot(212)
plot(tt,y1),axis([0 3 -0.5 3]),title(
plot(tt,y1),axis([0 3 -0.5 3]),title( 'Salida''Salida')) grid grid onon % COMPARANDO RESULTADOS % COMPARANDO RESULTADOS figure figure % Tiempo contínuo % Tiempo contínuo tc=0:T:0.9; tc=0:T:0.9; u=(max1)*ones(size(tc)); u=(max1)*ones(size(tc)); yc=lsim(Gc1,u,tc); yc=lsim(Gc1,u,tc); plot(tc,yc,
plot(tc,yc, 'k''k'),title(),title('Comparando resultados'Comparando resultados)) hold hold % Tiempo discreto % Tiempo discreto Gd1=tf(th.b,th.a,T); Gd1=tf(th.b,th.a,T); [nd,dd]=tfdata(Gd1, [nd,dd]=tfdata(Gd1, 'v''v');); Gd1=tf(nd,dd); Gd1=tf(nd,dd); tk=0:T:2; tk=0:T:2; Nd1=length(tk); Nd1=length(tk); yd=(max1)*dstep(nd,dd,Nd1); yd=(max1)*dstep(nd,dd,Nd1); stairs(tk,yd, stairs(tk,yd, 'r''r')) plot(tk,y1(1:Nd1), plot(tk,y1(1:Nd1), 'b''b')) axis([0 1 0 2]) axis([0 1 0 2]) grid grid legend(
legend('G_{id}(s)''G_{id}(s)',,'G_{id}(z)''G_{id}(z)',,'Data''Data',4),4) xlabel(
xlabel('\bf tiempo''\bf tiempo')) ylabel(
Al ejecutar el programa anterior obtenemos:
Al ejecutar el programa anterior obtenemos:
Además se visualizan
Además se visualizan los siguientes resultados:
los siguientes resultados:
>>
>>
Discrete-time IDPOLY model: A(q)y(t) = B(q)u(t) + e(t) Discrete-time IDPOLY model: A(q)y(t) = B(q)u(t) + e(t) A(q) = 1 - 0.9889 (+-0.0002845) q^-1
A(q) = 1 - 0.9889 (+-0.0002845) q^-1 B(q) = 0.003841 (+-9.28e-005) q^-1 B(q) = 0.003841 (+-9.28e-005) q^-1 Estimated using ARX on data set datan Estimated using ARX on data set datan
Loss function 4.86336e-005 and FPE 4.8673e-005 Loss function 4.86336e-005 and FPE 4.8673e-005 Sampling interval: 0.001
Sampling interval: 0.001 Created:
Created: 13-Jul-2011 13-Jul-2011 03:36:1003:36:10 Last modified: 13-Jul-2011 03:36:10 Last modified: 13-Jul-2011 03:36:10
num/den = num/den = 3.8622 3.8622 ---s + 11.2095 s + 11.2095 Current plot held Current plot held
Una vez que ya
Una vez que ya tenemos la planta con la que vamos a
tenemos la planta con la que vamos a trabajar para el control de velocidad,
trabajar para el control de velocidad,
procederemo
procederemos a
s a hallar los respectivos controles.
hallar los respectivos controles.
CALCULOS PREVIOS PARA REALIZAR EL DISEÑO DE LOS
CALCULOS PREVIOS PARA REALIZAR EL DISEÑO DE LOS
CONTROLADORES
CONTROLADORES
Primero debemos cargar la data del modelo real y obtener la función de
Primero debemos cargar la data del modelo real y obtener la función de
transferencia de la planta, se realiza un aproximación de la F.T. utilizando
transferencia de la planta, se realiza un aproximación de la F.T. utilizando
ARX111, pues presenta una buena aproximación (98%) al modelo real.
ARX111, pues presenta una buena aproximación (98%) al modelo real.
%% Cargando la data del modelo real %% Cargando la data del modelo real load
load adqui_ML.lvmadqui_ML.lvm
u1=adqui_ML(:,4); u1=adqui_ML(:,4); y1=adqui_ML(:,2); y1=adqui_ML(:,2); t=adqui_ML(:,1); t=adqui_ML(:,1);
%% Cálculo para obtener la Función de transferencia de la Planta %% Cálculo para obtener la Función de transferencia de la Planta DATAX=[y1 u1]; DATAX=[y1 u1]; datan=iddata(y1,u1,0.001); datan=iddata(y1,u1,0.001); th=arx(data th=arx(datan,[1 1 n,[1 1 1]);1]); present(th); present(th);
% Pasando al Modelo Continuo
% Pasando al Modelo Continuo
thc=thd2thc(th); thc=thd2thc(th); [numc,denc]=th2tf(thc); [numc,denc]=th2tf(thc); printsys(numc,denc, printsys(numc,denc, 's''s');); Gp=tf(numc,denc); Gp=tf(numc,denc);
Ahora calcularemos los polos deseados, y para ellos consideraremos un
Ahora calcularemos los polos deseados, y para ellos consideraremos un
sobrepaso máximo igual a 20% y un tiempo de establecimiento igual a 0.1s.
sobrepaso máximo igual a 20% y un tiempo de establecimiento igual a 0.1s.
%% Cálculos para obtener los polos deseados %% Cálculos para obtener los polos deseados Mp=0.2; Ts=0.1; Mp=0.2; Ts=0.1; e=solve( e=solve('0.2-exp(-e*pi/sqrt(1-e^2))=0''0.2-exp(-e*pi/sqrt(1-e^2))=0' );); e=sym2poly(e); e=sym2poly(e); e=e(1);
e=e(1); % Coeficiente de Amortiguamiento% Coeficiente de Amortiguamiento
Wn=5/(e*Ts); Wn=5/(e*Ts); sigma=-e*Wn; sigma=-e*Wn; Wd=Wn*sqrt(1-e^2); Wd=Wn*sqrt(1-e^2); Td=2*pi/Wd; Td=2*pi/Wd; T=Td/20;
T=Td/20; % Tiempo de Muestreo% Tiempo de Muestreo
% T=0.001; % T=0.001; n=[Wn^2]; n=[Wn^2]; d=[1 2*e*Wn Wn^2]; d=[1 2*e*Wn Wn^2]; Gr=tf(n,d);
Gr=tf(n,d); % Modelo continuo de referencia% Modelo continuo de referencia
s=pole(Gr);
s=pole(Gr); % Polos continuos deseados% Polos continuos deseados
z=exp(T*s);
Polos continuos deseados s :
Polos continuos deseados s :
-50.0000 +97.5991i
-50.0000 +97.5991i
-50.0000 -97.5991i
-50.0000 -97.5991i
Polos continuos deseados z:
Polos continuos deseados z:
0.8097 + 0.2631i
0.8097 + 0.2631i
0.8097 - 0.2631i
0.8097 - 0.2631i
Considerando que el tiempo de muestreo (T) es igual a 0.0032189s, entonces se
Considerando que el tiempo de muestreo (T) es igual a 0.0032189s, entonces se
obtiene la si
obtiene la siguiente función de transferencia discreta:
guiente función de transferencia discreta:
%% Modelo Discreto %% Modelo Discreto Gpzz=tf(th.b,th.a,T); Gpzz=tf(th.b,th.a,T); [numpz,denpz]=tfdata(Gpz, [numpz,denpz]=tfdata(Gpz, 'v''v'););
Obtenemos el Root Locus del sistema en lazo abierto.
Obtenemos el Root Locus del sistema en lazo abierto.
%% Root locus de la planta %% Root locus de la planta figure figure rlocus(Gpzz), zgrid rlocus(Gpzz), zgrid axis([-1 1 -1 1]) axis([-1 1 -1 1]) hold hold plot(real(z(1)),imag(z(1)),
plot(real(z(1)),imag(z(1)), 'r*''r*',real(z(2)),imag(z(2)),,real(z(2)),imag(z(2)), 'r*''r*')) title(
CONTROLADOR CONTINUO PROPORCIONAL-INTEGRAL (PI)
CONTROLADOR CONTINUO PROPORCIONAL-INTEGRAL (PI)
Realizaremos el diseño del controlador PI, primeramente calculando las
Realizaremos el diseño del controlador PI, primeramente calculando las
variables K y a del controlador:
variables K y a del controlador:
%% DISEÑO DEL CONTROLADOR PI %% DISEÑO DEL CONTROLADOR PI % Polos de la Planta % Polos de la Planta [P [P Z]=pzmap(GpZ]=pzmap(Gp);); % Polos Deseados % Polos Deseados pd=s(1) pd=s(1)
% Calculando la magnitud correspondiente a los polos
% Calculando la magnitud correspondiente a los polos
d1=pd-P(1); d1=pd-P(1); d2=pd-0; d2=pd-0;
% Calculando los ángulos de fase
% Calculando los ángulos de fase
theta1=atan(imag(d1)/real(d1))*180/pi+180; theta1=atan(imag(d1)/real(d1))*180/pi+180; theta2=atan(imag(d2)/real(d2))*180/pi+180; theta2=atan(imag(d2)/real(d2))*180/pi+180;
% Ahora hallamos el ángulo de fase correspondiente al cero
% Ahora hallamos el ángulo de fase correspondiente al cero
integrador
integrador
thetaz=180+theta1+theta2; thetaz=180+theta1+theta2; % Cálculo del valor del cero
% Cálculo del valor del cero
a=-real(pd)+imag(pd)/(tan(thetaz*pi/180)) a=-real(pd)+imag(pd)/(tan(thetaz*pi/180)) d3=pd+a;
d3=pd+a; % Magnitud correspondiente al cero% Magnitud correspondiente al cero
% Cálculo de la ganancia K % Cálculo de la ganancia K n1=norm(d1); n1=norm(d1); n2=norm(d2); n2=norm(d2); n3=norm(d3); n3=norm(d3); Kg=numc(2);
Kg=numc(2); % Ganacia Estática% Ganacia Estática
K=(1*n1*n2)/(n3*Kg) K=(1*n1*n2)/(n3*Kg) Gc=tf(K*[1 a],[1 0]);
Gc=tf(K*[1 a],[1 0]); % Controlador PI continuo% Controlador PI continuo
S=series(Gc,Gp); S=series(Gc,Gp); F=S/(1+S); F=S/(1+S);
a=
a= 135.4187
135.4187
K=
K= 22.9688
22.9688
REDISEÑO DEL CONTROLADOR PI, PARA OBTENER EL
REDISEÑO DEL CONTROLADOR PI, PARA OBTENER EL
CONTROLADOR PI DISCRETO
CONTROLADOR PI DISCRETO
%% Rediseno del controlador PI %% Rediseno del controlador PI tk=0:T:0.4;
tk=0:T:0.4;
% Rediseno del Controlador Continuo (Controlador Discreto)
% Rediseno del Controlador Continuo (Controlador Discreto)
y=step(F,tk); y=step(F,tk);
%
%
---syscz1=c2d(Gc,T,
syscz1=c2d(Gc,T, 'zoh''zoh'))
syspz1=feedback(syscz1*Gpz,1); syspz1=feedback(syscz1*Gpz,1); y1=step(syspz1,tk);
%
%
--syscz2=c2d(Gc,T,
syscz2=c2d(Gc,T, 'tustin''tustin')) syspz2=feedback(syscz2*Gpz,1); syspz2=feedback(syscz2*Gpz,1); y2=step(syspz2,tk); y2=step(syspz2,tk); % % --Wc=100; Wc=100; syscz3=c2d(Gc,T,
syscz3=c2d(Gc,T, 'prewarp''prewarp',Wc),Wc) syspz3=feedback(syscz3*Gpz,1); syspz3=feedback(syscz3*Gpz,1); y3=step(syspz3,tk); y3=step(syspz3,tk); % % --% Ploteo % Ploteo figure figure plot(tk,y,
plot(tk,y, 'k''k'); hold); hold onon
stairs(tk,y1,
stairs(tk,y1,'b''b'); hold); hold onon
stairs(tk,y2,
stairs(tk,y2,'r''r'); hold); hold onon
stairs(tk,y3,
stairs(tk,y3,'g''g');); legend(
legend('Rpta Continua''Rpta Continua',,'Rpta ZOH''Rpta ZOH',,'Rpta Tustin''Rpta Tustin',,'Rpta Wc''Rpta Wc',4),4)
Aproximación por ZOH
Aproximación por ZOH
Aproximación por Tustin
Aproximación por Tustin
Aproximación por Tustin con Predesvío
Aproximación por Tustin con Predesvío
Si se hubiera diseñado con un tiempo de muestro (T) igual a 0.001s, se tendría
Si se hubiera diseñado con un tiempo de muestro (T) igual a 0.001s, se tendría
mejoras en las
mejoras en las respuestas.
respuestas.
ROOT LOCUS DE LA PLANTA CONTROLADA
ROOT LOCUS DE LA PLANTA CONTROLADA
%% Root Locus de la planta controlada
%% Root Locus de la planta controlada
Gcz=syscz1; Gcz=syscz1; L=series(Gcz,Gpz); L=series(Gcz,Gpz); figure figure rlocus(L), zgrid rlocus(L), zgrid axis([-1 1 -1 1]) axis([-1 1 -1 1]) hold hold plot(real(z(1)),imag(z(1)),
plot(real(z(1)),imag(z(1)), 'r*''r*',real(z(2)),imag(z(2)),,real(z(2)),imag(z(2)), 'r*''r*')) title(
CONTROLADOR DISCRETO PROPORCIONAL-INTEGRAL (PI)
CONTROLADOR DISCRETO PROPORCIONAL-INTEGRAL (PI)
Realizaremos el diseño del controlador PI discreto, inicialmente calcularemos
Realizaremos el diseño del controlador PI discreto, inicialmente calcularemos
las variables Kc y a del controlador:
las variables Kc y a del controlador:
%% DISEÑO DEL CONTROLADOR PI DISCRETO
%% DISEÑO DEL CONTROLADOR PI DISCRETO
% Polos Discretos de la Planta
% Polos Discretos de la Planta
[P Z]=pzmap(Gpz);
[P Z]=pzmap(Gpz);
% Polo Discreto Deseado
% Polo Discreto Deseado
pdz=z(1);
pdz=z(1);
% Calculando la magnitud correspondiente a los polos
% Calculando la magnitud correspondiente a los polos
d1=pdz-1;
d1=pdz-1;
d2=pdz-P(1);
d2=pdz-P(1);
% Calculando los ángulos de fase
% Calculando los ángulos de fase
theta1=atan(imag(d1)/real(d1))*180/pi+180;
theta1=atan(imag(d1)/real(d1))*180/pi+180;
theta2=atan(imag(d2)/real(d2))*180/pi+180;
theta2=atan(imag(d2)/real(d2))*180/pi+180;
% Ahora hallamos el ángulo de fase correspondiente al cero
% Ahora hallamos el ángulo de fase correspondiente al cero
thetaz=180+theta1+theta2;
thetaz=180+theta1+theta2;
% Cálculo del valor del cero
% Cálculo del valor del cero
a=real(pdz)-imag(pdz)/(tan(thetaz*pi/180))
a=real(pdz)-imag(pdz)/(tan(thetaz*pi/180))
d3=pdz-a;
d3=pdz-a;
% Magnitud correspondiente al cero
% Magnitud correspondiente al cero
% Cálculo de la ganancia K
% Cálculo de la ganancia K
n1=norm(d1);
n1=norm(d1);
n2=norm(d2);
n2=norm(d2);
n3=norm(d3);
n3=norm(d3);
Kg=numpz(2);
Kg=numpz(2);
% Ganacia Estática
% Ganacia Estática
Kc=(1*n1*n2)/(n3*Kg)
Kc=(1*n1*n2)/(n3*Kg)
a =0.7147
a =0.7147
K c=96.1121
K c=96.1121
ROOT LOCUS DE LA PLANTA DISCRETA CONTROLADA Y SU
ROOT LOCUS DE LA PLANTA DISCRETA CONTROLADA Y SU
RESPUESTA A UNA ENTRADA ESCALÓN
RESPUESTA A UNA ENTRADA ESCALÓN
%% Root Locus de la planta controlada
%% Root Locus de la planta controlada
Gcz=zpk([a],[1],Kc,T)
Gcz=zpk([a],[1],Kc,T)
L=series(Gcz,Gpz);
L=series(Gcz,Gpz);
figure
figure
rlocus(L), zgrid
rlocus(L), zgrid
axis([-1 1 -1 1])
axis([-1 1 -1 1])
hold
hold
plot(real(z(1)),imag(z(1)),
plot(real(z(1)),imag(z(1)), 'r*'
'r*'
,real(z(2)),imag(z(2)),
,real(z(2)),imag(z(2)),'r*'
'r*'
)
)
title(
%% Respuesta al step de control discreto PI
%% Respuesta al step de control discreto PI
t=0:T:0.2;
t=0:T:0.2;
sys1=feedback(L,1,-1);
sys1=feedback(L,1,-1);
yd1=step(sys1,t);
yd1=step(sys1,t);
figure
figure
plot(t,yd1,
plot(t,yd1,'b+'
'b+'
), grid
), grid
title(
title('Respuesta al step control PI'
'Respuesta al step control PI'
)
)
xlabel(
xlabel('Tiempo (seg)'
'Tiempo (seg)'
)
)
CONTROLADOR PID DISCRETO
CONTROLADOR PID DISCRETO
Realizaremos el diseño del controlado PID discreto, para esto tomaremos un cero en
Realizaremos el diseño del controlado PID discreto, para esto tomaremos un cero en
0.6, luego calcularemos las variables Kc y
0.6, luego calcularemos las variables Kc y a del controlador:
a del controlador:
%% DISEÑO DEL CONTROLADOR PID DISCRETO
%% DISEÑO DEL CONTROLADOR PID DISCRETO
% Polos Discretos de la Planta
% Polos Discretos de la Planta
[P Z]=pzmap(Gpz);
[P Z]=pzmap(Gpz);
% Polo Discrteo Deseado
% Polo Discrteo Deseado
pdz=z(1);
pdz=z(1);
% Calculando la magnitud correspondiente a los polos
% Calculando la magnitud correspondiente a los polos
d1=pdz-1;
d1=pdz-1;
d2=pdz-P(1);
d2=pdz-P(1);
d3=pdz-0;
d3=pdz-0;
d4=pdz-0.6;
d4=pdz-0.6;
% Calculando los ángulos de fase
% Calculando los ángulos de fase
theta1=atan(imag(d1)/real(d1))*180/pi+180;
theta1=atan(imag(d1)/real(d1))*180/pi+180;
theta2=atan(imag(d2)/real(d2))*180/pi+180;
theta2=atan(imag(d2)/real(d2))*180/pi+180;
theta3=atan(imag(d3)/real(d3))*180/pi;
theta3=atan(imag(d3)/real(d3))*180/pi;
alpha1=atan(imag(d4)/real(d4))*180/pi;
alpha1=atan(imag(d4)/real(d4))*180/pi;
% Ahora hallamos el ángulo de fase correspondiente al cero
% Ahora hallamos el ángulo de fase correspondiente al cero
integrador
integrador
alpha2=180+theta1+theta2+theta3-alpha1;
alpha2=180+theta1+theta2+theta3-alpha1;
% Cálculo del valor del cero
% Cálculo del valor del cero
a=real(pdz)-imag(pdz)/(tan(alpha2*pi/180))
a=real(pdz)-imag(pdz)/(tan(alpha2*pi/180))
d5=pdz-a;
d5=pdz-a;
% Magnitud correspondiente al cero
% Magnitud correspondiente al cero
% Cálculo de la ganancia K
% Cálculo de la ganancia K
n1=norm(d1);
n1=norm(d1);
n2=norm(d2);
n2=norm(d2);
n4=norm(d3);
n4=norm(d3);
n3=norm(d4);
n3=norm(d4);
n5=norm(d5);
n5=norm(d5);
Kg=numpz(2);
Kg=numpz(2);
% Ganacia Estática
% Ganacia Estática
Kc=(1*n1*n2*n3)/(n4*n5*Kg)
Kc=(1*n1*n2*n3)/(n4*n5*Kg)
a =0.4567
a =0.4567
Kc =24.1315
Kc =24.1315
ROOT LOCUS DE LA PLANTA DISCRETA CONTROLADA Y SU
ROOT LOCUS DE LA PLANTA DISCRETA CONTROLADA Y SU
RESPUESTA A UNA ENTRADA ESCALÓN
RESPUESTA A UNA ENTRADA ESCALÓN
%% Root Locus de la planta controlada
%% Root Locus de la planta controlada
Gcz=zpk([0.6 a],[1 0],Kc,T)
Gcz=zpk([0.6 a],[1 0],Kc,T)
L=series(Gcz,Gpz);
L=series(Gcz,Gpz);
figure
figure
rlocus(L), zgrid
rlocus(L), zgrid
axis([-1 1 -1 1])
axis([-1 1 -1 1])
hold
hold
plot(real(z(1)),imag(z(1)),
plot(real(z(1)),imag(z(1)), 'r*'
'r*'
,real(z(2)),imag(z(2)),
,real(z(2)),imag(z(2)),'r*'
'r*'
)
)
title(
%% Respuesta al step de control PID
%% Respuesta al step de control PID
t=0:T:1;
t=0:T:1;
sys1=feedback(L,1,-1)
sys1=feedback(L,1,-1)
yd1=step(sys1,t);
yd1=step(sys1,t);
figure
figure
plot(t,yd2,
plot(t,yd2,'b+'
'b+'
), grid
), grid
title(
title('Respuesta al step control PID'
'Respuesta al step control PID'
)
)
xlabel(
La forma del controlador PID Académico es:
La forma del controlador PID Académico es:
Siendo
Siendo
el factor de sintonía para el filtro cuyo valor esta en el rango [0,1]
el factor de sintonía para el filtro cuyo valor esta en el rango [0,1]
El control PID digitalizado toma la forma
El control PID digitalizado toma la forma
Entonces:
Entonces:
Kp =14.8967
Kp =14.8967
Ti =0.00914
Ti =0.00914
Td =0.001428
Td =0.001428
CONTROL PID EN TIEMPO REAL DE LA VELOCIDAD DE UN MOTOR
CONTROL PID EN TIEMPO REAL DE LA VELOCIDAD DE UN MOTOR
DC USANDO LA INTERFAZ DE LABVIEW
DC USANDO LA INTERFAZ DE LABVIEW
Para la implementación en tiempo real se utilizó un control PID el cual se
Para la implementación en tiempo real se utilizó un control PID el cual se
implementó en labview y se muestra a continuación.
implementó en labview y se muestra a continuación.
DIAGRAMA DE BLOQUES
DIAGRAMA DE BLOQUES
Como se puede observar en el diagrama de bloques se realiza un
Como se puede observar en el diagrama de bloques se realiza un
escalamiento tanto a la señal de referencia como a la señal proveniente del
escalamiento tanto a la señal de referencia como a la señal proveniente del
convertidor frecuencia-voltaje de acuerdo a la recta encontrada al inicio de
convertidor frecuencia-voltaje de acuerdo a la recta encontrada al inicio de
las pruebas la cual nos arrojaba una relación igual a:
las pruebas la cual nos arrojaba una relación igual a:
Y viceversa
Y viceversa
CONTROL
CONTROL DE
DE POSICIÓN
POSICIÓN DE
DE UN
UN MOTOR
MOTOR
Para el control de posición de un motor, el procedimiento será muy parecido, con la
Para el control de posición de un motor, el procedimiento será muy parecido, con la
salvedad que esta vez lo que queremos controlar es la posición, esto dificulta un poco la
salvedad que esta vez lo que queremos controlar es la posición, esto dificulta un poco la
tarea, ya que para ello deberemos contar con un sensor de posición, es
tarea, ya que para ello deberemos contar con un sensor de posición, es decir, algún circuito
decir, algún circuito
electrónico que en todo momento pueda proporcionarnos la posición de un motor.
electrónico que en todo momento pueda proporcionarnos la posición de un motor.
Además, el motor cuya posición queremos controlar debe ser un motor con reductor, esto
Además, el motor cuya posición queremos controlar debe ser un motor con reductor, esto
debido a que un motor sin reductor al ser mucho más veloz nos ocasionaría grandes
debido a que un motor sin reductor al ser mucho más veloz nos ocasionaría grandes
problemas al momento de controlarlo.
problemas al momento de controlarlo.
Por este motivo para el siguiente control utilizaremos un motor con reductor y por tanto
Por este motivo para el siguiente control utilizaremos un motor con reductor y por tanto
mas lento que el anterior.
mas lento que el anterior.
El motor que hemos elegido es el
El motor que hemos elegido es el Matushita modelo: GMX-6MPO13A
Matushita modelo: GMX-6MPO13A, el cual esta
, el cual esta
provisto de un encoder
Este motor tiene un encoder de 100 ranuras y no esta acoplado directamente al eje final,
Este motor tiene un encoder de 100 ranuras y no esta acoplado directamente al eje final,
sobre el cual se controlara la posición, si no mas
sobre el cual se controlara la posición, si no mas bien sobre el eje principal del motor.
bien sobre el eje principal del motor.
Este encoder
Este encoder es
es de modelo E
de modelo EM1 & HEDS y
M1 & HEDS y cuenta con 5
cuenta con 5 pines, los cual se d
pines, los cual se detallan en su
etallan en su
hoja de datos y se puede visualizar en el si
hoja de datos y se puede visualizar en el siguiente grafico.
guiente grafico.
SENSOR DE POSICIÓN
SENSOR DE POSICIÓN
Como se puede apreciar en el grafico anterior los 5 pines del encoder de
Como se puede apreciar en el grafico anterior los 5 pines del encoder de este motor son:
este motor son:
1.
1. GND (tierra)
GND (tierra)
2.
2. Index (Canal de indexación o índice)
Index (Canal de indexación o índice)
3.
3. Canal A del encoder
Canal A del encoder
4.
4. Alimentacion del encoder de 5V
Alimentacion del encoder de 5V
5.
5. Canal B del
Canal B del encoder.
encoder.
Los canales A y B son los encargados de enviar trenes de pulsos de onda cuadrada
Los canales A y B son los encargados de enviar trenes de pulsos de onda cuadrada
desfasados 90 grados,
Si bien es cierto, para el control de velocidad fue solo necesario utilizar uno de estos
Si bien es cierto, para el control de velocidad fue solo necesario utilizar uno de estos
canales para poder medir la velocidad, en el caso del control de posición necesitamos leer
canales para poder medir la velocidad, en el caso del control de posición necesitamos leer
las señales de ambos canales, ya que con los dos podemos determinara además el sentido
las señales de ambos canales, ya que con los dos podemos determinara además el sentido
de giro.
de giro.
El ángulo girado lo podremos obtener contando los pulsos de uno de los canales.
El ángulo girado lo podremos obtener contando los pulsos de uno de los canales.
El sentido de giro lo
El sentido de giro lo podremos obtener utilizand
podremos obtener utilizando ambas señales e
o ambas señales e ingresándolas a
ingresándolas a
un FLIP FLOP de tipo D, la primera se ingresara a la entrada D del flip flop, y la
un FLIP FLOP de tipo D, la primera se ingresara a la entrada D del flip flop, y la
segunda a la entrada de reloj (clock).
segunda a la entrada de reloj (clock).
La conexión se ilustra en el siguiente gráfico y es muy fácil deducir el
La conexión se ilustra en el siguiente gráfico y es muy fácil deducir el
funcionamiento de esto considerando que cuando el motor gire en un sentido el
funcionamiento de esto considerando que cuando el motor gire en un sentido el
canal A estará adelantado 90 grados con respecto al canal B, y cuando gire en
canal A estará adelantado 90 grados con respecto al canal B, y cuando gire en
sentido contrario será mas bien el canal B el
sentido contrario será mas bien el canal B el que se encuentre adelantado.
que se encuentre adelantado.
Esto produce una señal de salida igual a “1” cuando el motor gire en un sentido y Esto produce una señal de salida igual a “1” cuando el motor gire en un sentido y
una señal
una señal
de salida igual a “0” cuando gire en el sentido de salida igual a “0” cuando gire en el sentido contrario.contrario.El pic recibirá entonces el número de pulsos y el sentido en que se producen cada
El pic recibirá entonces el número de pulsos y el sentido en que se producen cada
uno de ellos, logrando con esto definir el ángulo en que se encuentra posicionado.
uno de ellos, logrando con esto definir el ángulo en que se encuentra posicionado.
Posteriormente deberá transforma el valor del angulo en una señal analógica para
Posteriormente deberá transforma el valor del angulo en una señal analógica para
enviársela a la DAQ.
enviársela a la DAQ.
Entre las distintas posibilidades que existen para dotar al pic de una salida
Entre las distintas posibilidades que existen para dotar al pic de una salida
analógica nos decidimos por utilizar un R-2R ladder (Escalera R-2R), la cual nos
analógica nos decidimos por utilizar un R-2R ladder (Escalera R-2R), la cual nos
brinda una salida analógica proporcional al numero binario que coloquemos en la
brinda una salida analógica proporcional al numero binario que coloquemos en la
salida de uno o mas de los puertos del PIC.
En nuestro caso hemos utilizado 10 bits de resolución, pudiendo con ello tener una
En nuestro caso hemos utilizado 10 bits de resolución, pudiendo con ello tener una
salida analógica lo mas compatible posible con la DAQ USB6008, ya que esta
salida analógica lo mas compatible posible con la DAQ USB6008, ya que esta
también cuenta con una entrada analógica de 10 bits.
también cuenta con una entrada analógica de 10 bits.
ESQUEMÁTICO DEL SENSOR DE POSICIÓN
DISEÑO DE LA PLACA
DISEÑO DE LA PLACA
VISTA TRIDIMENSIONAL DE LA PLACA
VISTA TRIDIMENSIONAL DE LA PLACA
CONEXIÓN DE AMBAS PLACAS PARA EL CONTROL DE POSICIÓN
CONEXIÓN DE AMBAS PLACAS PARA EL CONTROL DE POSICIÓN
CONTROL PID EN TIEMPO REAL DE LA POSICIÓN DE UN MOTOR
CONTROL PID EN TIEMPO REAL DE LA POSICIÓN DE UN MOTOR
DC USANDO LA INTERFAZ DE LABVIEW
DC USANDO LA INTERFAZ DE LABVIEW
A continuación se muestra el
En esta sección se muestra el diagrama de bloques:
En esta sección se muestra el diagrama de bloques:
NOTA:
NOTA:
Es importante explicar la parte final
Es importante explicar la parte final del esquema anterior que se observa en
del esquema anterior que se observa en la siguiente
la siguiente
figura:
figura:
Como sabemos la señal
Como sabemos la señal de control pued
de control puede
e variar de -5V a +5V,sin emb
variar de -5V a +5V,sin embargo, el pic solo
argo, el pic solo
puede recibir señales positivas, por esta razón, el esquema anterior trata de transformar el
puede recibir señales positivas, por esta razón, el esquema anterior trata de transformar el
rango de -5V a +5V a un nuevo rango de 0-5V. El saturador de 0.2 a 4.7V colocado a la
rango de -5V a +5V a un nuevo rango de 0-5V. El saturador de 0.2 a 4.7V colocado a la
salida es debido a que es en
salida es debido a que es en este rango en que trabaja la escalera R-2R y
este rango en que trabaja la escalera R-2R y no en el esperado
no en el esperado
de 0-5V
CONTROL DIFUSO DE MOTOR DC
CONTROL DIFUSO DE MOTOR DC
En esta parte del informe diseñaremos el Control Difuso tipo base line para controlar la
En esta parte del informe diseñaremos el Control Difuso tipo base line para controlar la
posición angular del motor DC
posición angular del motor DC
``
Fig.
Fig. FLC
FLC en
en un
un lazo
lazo realimentado
realimentado
En nuestro caso la
En nuestro caso la planta representa la función de transferencia del motor identificada
planta representa la función de transferencia del motor identificada
mediante el Workbench de Labview. En
mediante el Workbench de Labview. En nuestro caso sería:
nuestro caso sería:
Para el proceso de fuzzyficacion usaremos
Para el proceso de fuzzyficacion usaremos funciones de pertenenc
funciones de pertenencia triangulares.
ia triangulares.
DISEÑO DEL CONTROLADOR TIPO BASE LINE PARA EL MOTOR DC
DISEÑO DEL CONTROLADOR TIPO BASE LINE PARA EL MOTOR DC
Funciones de Pertenencia
Funciones de Pertenencia
ENTRADA
SALIDA
SALIDA
BASE DE REGLAS DIFUSAS
BASE DE REGLAS DIFUSAS
NB
NM
NS
ZO
PS
PM
PB
NB
NM
NS
ZO
PS
PM
PB
Error
Error
-1
-1
-0.24
-0.24
-0.038
-0.038
0
0
0.038
0.038
0.24
0.24
11
Salida
Salida
-1
-1
-0.24
-0.24
-0.18
-0.18
0
0
0.18
0.18
0.24
0.24
11
Donde se pueden obtener las
Donde se pueden obtener las siguientes reglas.
siguientes reglas.
R1: IF e is
R1: IF e is NB
NB AND THEN u is
AND THEN u is NB
NB
R2: IF e is
R2: IF e is NM
NM AND
AND THEN u is
THEN u is NM
NM
R3 : IF e is
R3 : IF e is NS
NS AND THEN u is
AND THEN u is NS
NS
R4 : IF e is
R4 : IF e is ZO
ZO AND THEN u is
AND THEN u is ZO
ZO
R5 : IF e is
R5 : IF e is PS
PS AND THEN u is
AND THEN u is PS
PS
R6 : IF e is
R6 : IF e is PM
PM AND THEN u is
AND THEN u is PM
PM
R7 : IF e is
Fig. Grafico que relaciona las entradas y las salidas
Fig. Grafico que relaciona las entradas y las salidas
GRAFICO DEL CONTROL TIPO BASE LINE EN LABVIEW:
GRAFICO DEL CONTROL TIPO BASE LINE EN LABVIEW:
Fig. Control Tipo Base Line en LabView
Fig. Control Tipo Base Line en LabView
Fig. Respuesta del controlador a una
Fig. Respuesta del controlador a una referencia
referencia
La grafica representa la
La grafica representa la respuesta a una entrada escalón de
respuesta a una entrada escalón de referencia. Podemos apreciar
referencia. Podemos apreciar
que el control no es muy eficiente ya que
que el control no es muy eficiente ya que para entradas de referencia muy eleva
para entradas de referencia muy elevadas la
das la
señal de control se pierde.
señal de control se pierde.
Control PID Difuso Lineal para el control de Posición
Control PID Difuso Lineal para el control de Posición del motor DC
del motor DC
La forma del controlador PID tradicional es
La forma del controlador PID tradicional es
Donde: E representa el error y CE el cambio del error que van a entrar a las reglas difusas.
Donde: E representa el error y CE el cambio del error que van a entrar a las reglas difusas.
GE y GCE representan las ganancias para
GE y GCE representan las ganancias para el error y cambio
el error y cambio del error respectivamente. GIE
del error respectivamente. GIE
representa la ganancia de la integral del error y GU la ganancia de
representa la ganancia de la integral del error y GU la ganancia de la señal de control.
la señal de control.
Los valores para las ganancias se calculan a partir del diseño del controlador y están dados
Los valores para las ganancias se calculan a partir del diseño del controlador y están dados
por:
por:
De donde los valores podemos despejar las ganancias:
De donde los valores podemos despejar las ganancias: