UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FAC. DE CS. QUÍMICAS E INGENIERÍA INGENIERÍA EN ELECTRÓNICA PROCESAMIENTO DIGITAL DE SEÑALES “IDENTIFICACIÓN Y CONTROL DE UN PÉNDULO INVERTIDO EN TIEMPO REAL” GONZÁLEZ COTA JUAN CARLOS HIPÓLITO SOLÍS JOSUÉ JUÁREZ LEY ISRAEL MEDINA SOTO OHANA PARDINI ARVIZU OSCAR ISAAC VÁSQUEZ CERVANTES LUZ ANGELINA ASESORES: M.C LAURA JIMÉNEZ BERISTAIN M.C. JOSÉ JAIME ESQUEDA ELIZONDO TIJUANA B.C. A 9 DE DICIEMBRE DE 2005 Péndulo Invertido Control Digital CONTENIDO I. Etapas de Potencia Diagramas a bloques Circuitos II. Encoders De mástil De posición III. Simulink PWM Controlador Inversión de dirección IV. Identificación del sistema Paramétrica No paramétrica V. Resultados de la identificación del sistema con limit switch Paramétrica No paramétrica Función ident de matlab VI. Resultados de la identificación del sistema sin limit switch No paramétrica Paramétrica Función ident de matlab Péndulo Invertido Control Digital ETAPAS DE POTENCIA Diagrama A Bloques 1ra Etapa Interruptores de límite con compuerta AND Simulink Inversor Optoacoplador Flip-Flop Puente H Motor La primera etapa para la realización del péndulo teníamos nuestro componente principal que era el puente H el cual se encargaría de mover el motor que sostenía el encoder con el mástil, a este le llegaban 2 señales: 1. PWM con la cual se manipulaba la velocidad del motor, esta señal provenía de la computadora y pasaba por un opto acoplador para evitar algún daño al DAQ. 2. El sentido del giro, este se determinaba con 2 interruptores de límite situado uno en cada extremo del área de desplazamiento, cada interruptor se conecto a una compuerta AND, posteriormente un lado se enviaba como dato al flip flop y el otro servia como reset para el flip flop, el dato que salía del flip flor tipo D se enviaba al inversor y luego al se enviaban al puente H para determinar el giro. En los diagramas se explicara claramente la lógica del circuito. Péndulo Invertido Control Digital 2da Etapa Simulink Optoacoplador Inversor Puente H Motor En esta etapa se eliminaron los interruptores de limite ya que por medio de simulink y el error del sistema se decidía el giro del motor. Al eliminar los interruptores se elimino el flip flop y la compuerta AND. Los demás componentes quedaron igual solamente que de la computadora se enviaba la señal del sentido directamente al inversor. Etapa Básica De Potencia Péndulo Invertido Control Digital En esta etapa la cual es la base del desarrollo del péndulo invertido se tienen 3 componentes: 1. Puente H (L298N) el cual se manipula con voltajes lógicos se necesita polarizar con sus 5v y tierra, tiene su entrada de enable en la cual se le conecta la señal del pwm con el cual determinamos la velocidad de los motores, tambien cuenta con 2 entradas con las cuales se le indica el sentido del giro las cuales están conectadas al inversor. Cuenta con 2 pines en los cuales se conecta el voltaje al cual se manipulara el motor soportando una corriente de 2A. Más datos y especificaciones de conexiones se pueden ver en los anexos y hojas de especificaciones. 2. Optoacoplador tiene su polarización para un funcionamiento correcto y este recibe la señal del pwm proveniente de simulink, se utiliza para la protección de los sistemas, para así separar las tierras análogas de las digitales. Posteriormente se conecta a una compuerta inversora solo para asegurar una salida de 1 ó 0 en la señal. Etapa De Reconocimiento Con Interruptores De Límite Péndulo Invertido Control Digital En esta etapa se tiene la etapa básica de potencia pero se le agregan 3 componentes: 1. Interruptores de limite con compuerta AND, los interruptores están conectados como circuito cerrado un extremo a tierra y el otro a una entrada de la compuerta and la cual esta conectada con una resistencia a vcc esto para lograr un 1 lógico al momento de que el motor llegue a un limite. 2. Posteriormente la señal de la compuerta and de un interruptor se envia al flip flop D y el otro interruptor se envía al inversor esto para hacer que cuando el motor llegue a un interruptor se quede un 1 en el flip flop y al cambiar de giro y el motor llegar a tocar el otro interruptor se produzca un reset en el flip flop y de esta manera estar realizando una secuencia de 1 y 0 y así estar cambiando el giro. 3. La señal de salida del flip flop se envía a la compuerta inversora esto es para que con una señal de entrada se produzcan dos de salidas una negada a lo que esta entrando y esta misma negada se envía de nuevo a un inversor para que salga la original y así con una sola señal de giro enviar 2 hacia el puente H ya que este necesita que le lleguen 2 señales para saber hacia donde girar. De esta manera tendremos una secuencia de 1,0 y 0,1. Etapa Controlado Por Medio De Simulink Este diagrama pertenece a la 2da etapa vista en el diagrama a bloques. Como se dijo anteriormente se elimina el flip flop con su compuerta inversora. Y basándonos en el diagrama anterior del reconocimiento del sistema solo se cambia el pin 13 de la compuerta inversora al cual previamente le llegaba la señal del flip flop D por la señal que proviene de simulink. Todo lo demás sigue funcionando de la misma forma. Péndulo Invertido Control Digital ENCODERS Encoder De Mastil El principio de funcionamiento de un encoder absoluto es muy sencillo, un disco rotatorio, con zonas transparentes y opacas, interrumpe un haz luminoso adquirido por unos fotorreceptores; por lo tanto, ellos transforman los impulsos luminosos en impulsos eléctricos que se tratan y transmiten por la parte electrónica en salida la cual nos entrega resultados en valores digitales que por lo general se encuentran codificados en Gray o binario, el utilizado para este proyecto se encuentra en Gray. Si tomamos en cuenta que el principio de trabajo y funcionamiento de un encoder de 8 bits es el mismo para casi todo tipo de ellos, podemos empezara a trabajar con este en base solo a las terminales de salida de la menos significativa a la mas basándonos en la tabla de las terminales y los colores de estas que se presenta a continuación. Cabe resaltar que estos colores que se representan en la tabla son los dados por el fabricante, pero con motivo de la aplicación del mismo para el péndulo invertido se adaptaron nuevos cables de mayor distancia para que el péndulo funcionara de una manera más libre, a continuación se menciona el circuito usado para convertir el código gray a voltaje análogo. Primeramente se tuvo que implementar un circuito para convertir de código gray a binario, este circuito es un simple arreglo de compuertas X-OR, después de realizar esta conversión se implemento el DAC para que nos convierta a voltaje. Péndulo Invertido Control Digital Este circuito nos arroja una conversión de un máximo de 9.17V, de los 10V con que es alimentado, esto debido a la saturación en el operacional, este es un ligero problema para la aplicación de el péndulo invertido puesto que solo nos da un rango de acción de 0-340 grados, dejándonos 20 grados en saturación, este problema se intento solucionar dejando la parte en saturación hacia abajo y mediante software. El nivel de conversión por cada grado nos arroja una medición de 0.02697 V aproximadamente. Diagrama A Bloques Del Sistema Tabla de Conexión Colores Café Café/blanco Naranja Naranja/blanco Verde Azul Verde/blanco Azul/blanco Blanco Negro Salida Naranja Dígitos 1 2 3 4 5 6 7 8 vcc gnd (conexion a la PC) Péndulo Invertido Diagrama Del Circuito Control Digital Péndulo Invertido Control Digital Encoder De Posición El posicionamiento se logra haciendo uso de un “encoder”. Esto es un pequeño disco acoplado en el eje del motor, donde contamos con 100 ranuras. Cada una de ellas nos da un pulso, haciendo el conteo de estos pulsos podemos identificar la posición de la base. Este encoder fue puesto con la finalidad de ubicar a nuestro carrito del péndulo dentro del rango de operación en la base. Para lograr poner el encoder en la parte posterior del motor se tuvo que adaptar puesto que el ancho de la varilla del motor no concordaba con la entrada en el encoder. HEDS-9000 El encoder usado es el HEDS-9000 de HP, básicamente lo que hace es medir la velocidad de el motor y su sentido de giro, para esto el encoder cuenta con dos canales de salida con los cuales se puede realizar la medición de estos parámetros. Diagrama Interno Del Encoder Péndulo Invertido Control Digital Formas De Onda De Salida Como salida cuenta con dos canales con los cuales se obtiene el sentido de giro, cuando el canal A se encuentra desfasado respecto al B entonces el motor se encuentra girando hacia la derecha, y cuando ocurre lo contrario el sentido es opuesto. En cuanto a la velocidad esta se determina de acuerdo al numero de pulsos en el motor, a mas velocidad mas pulsos. Conexiónes del Encoder Péndulo Invertido Control Digital Circuito De Potencia Conexiones Del Cable Gris De Datos Función PWM Tierra digital Tierra análoga Lectura encoder de mástil Dirección del motor Color de cable Verde Azul Café Naranja Verde/Blanco Número de tarjeta 22 53 64 65 21 Péndulo Invertido Control Digital SIMULINK Para poder diseñar el controlador necesario en el proyecto del péndulo invertido, fue necesario trabajar con diversas etapas inclusive a nivel programación, y es la etapa en la que se ha trabajado con más detalle, ya que no ha sido sencillo diseñarla debido a diversas variantes que han surgido conforme el desarrollo del proyecto. Simulink te ofrece una muy buena herramienta para trabajar y pulir los detalles que han surgido. Para poder controlar el sistema de traslado del péndulo invertido fue necesario trabajar sobre el motor de base, el cual carga el peso tanto del mástil como del indicador de posición (encoder). Se usó un PWM para generar diferentes velocidades de respuesta en el motor y de esta forma tener la posibilidad de acelerar repentinamente o en su defecto desacelerar el péndulo, buscando así conseguir la vertical. Sin embargo los problemas no terminan ahí, puesto que una vez obtenido el PWM capaz de regular la velocidad de traslado del motor era necesario conocer la posición del mástil y la posición del motor. Además de ciertos detalles referentes a los límites de carrera que fueran deseados, esto para evitar que el motor de traslado se golpeara con la base, provocando de esta manera desajustes o en algunos casos daño, también se debe tomar en consideración que aún no se aborda lo que sería en si el controlador. Nosotros decidimos controlar todo en su mayoría desde Simulink ya que implicaba menos alambrado y por ende una posible reducción de errores. Por Etapas: PWM La idea del PWM es relativamente interesante, se requiere una señal base que se repita de forma infinita (dientes de sierra en este caso), al haber cruces por cero, el ancho de pulso de la señal varía, dependiendo totalmente de la señal de error (lejanía del mástil y la vertical). En este caso, Simulink no posee un bloque que genere un ciclo FOR o cualquier otro tipo de ciclo, lo cual nos pone en un predicamento, sin embargo se cuenta con generadores de funciones, que a su vez pueden emular este tipo de función (ciclos), eso aunado a un escalón genera una señal montada en CD, lo cual asegura una señal 100% positiva, a la cual se le puede agregar la información necesaria proveniente de un sensor externo para variar el ancho de pulso, hasta aquí, se cubren los primeros 5 bloques de la figura 1. Paso siguiente, se compara el valor de referencia el cual será una analogía al cruce por cero y ya con este valor se obtiene un cero lógico o en su defecto un uno lógico, paso después del cual se amplifica para tener un valor de 5 volts a la salida del sistema, como siempre no todo es tan sencillo cuando se habla de generar interfaces entre modelos reales y simulados, y esta vez no fue diferente debido a la diferencia entre los tipos de datos manejados, fue más sencillo manejar un mismo tipo de dato durante todo el proceso, sin embargo, al final del proceso fue necesario emplear dos convertidores de Péndulo Invertido Control Digital tipo de dato asegurando de ésta manera que a la salida siempre tuviéramos el tipo de dato obligatorio por el sistema para funcionar. >= 4.5 Signal Generator 5 uint8 double Add1 Add2 1 Step ENTRADA PID Compare To Constant Gain 1 SALIDA PWM Data Type ConversionData Type Conversion1 |u| Abs Fig. 1 Controlador Para poder tomar datos en tiempo real, fue necesario emplear un retenedor de orden cero para adecuar la señal, es decir almacenarla en un buffer y que no se perdiera totalmente, ya que las velocidades de captura de la tarjeta nos limitaban en lo que a frecuencias se refiere. Una vez tratado éste problema, el enfoque fue generar un porcentaje de error en base a un punto de referencia y el dato capturado del sensor, en este caso el comportamiento de sensor lo tomó el encoder sobre el cual fue montado el mástil, ya que éste da un valor en voltaje específico para cada cantidad de grados, una vez hecho esto y obtenido el valor del error, se alimenta a tres bloques, primero al bloque del controlador por medio del cual se espera controlar y anticipar el movimiento del péndulo, el sentido de movimiento del motor como segundo bloque y el PWM como tercer bloque, éste último ya fue explicado en el párrafo anterior, el sentido de movimiento se explicará en el siguiente bloque. El controlador, es la parte más importante del sistema de Simulilnk, aunque visto desde la perspectiva del código no es mucho, cómo llegar a ese controlador es lo interesante, existen dos formas de diseñar el controlador, la primera es ajustando las ganancias por medio de prueba y error de forma tal que quede lo más cercano posible al resultado deseado, y la segunda es en base a mediciones tomadas de las pruebas de peso y carrera y comportamiento del péndulo, obtener la planta del sistema, este último método es el que se estuvo trabajando al final pero por cuestiones de tiempo no fue posible completar al 100 %, es por eso que para fines prácticos se empleó el método experimental mediante el ajuste de ganancias. Por medio del cual se llegó al modelo y ganancias empleadas en la figura 2, la cual tiene marcadas las entradas y salidas del bloque. Péndulo Invertido Control Digital 1 2 COMPARACION/ENCODER 99 Proportional 1 s+1 SALIDA DEL PID s Sum Integral Sum1 pid encoder 55 du/dt To Workspace1 Zero-Order Hold To Workspace Derivative D 3 GRAF PID 4 SEÑAL DE ERROR 2 5 ENTRADA DEL ENCODER SALIDA DEL ENCODER error To Workspace2 Fig. 2 Inversión De Dirección En este bloque se comparan niveles de voltaje provenientes del encoder, para tener un punto de referencia con respecto al cual mover el motor e indicar un sentido de movimiento, obedece los mismo seguimientos de los bloques de comparación anteriores, si la comparación se cumple la salida es uno, caso en el cual lo amplificamos para que genere 5 volts a la salida y por ende un uno lógico o un cero lógico, mismo que a su vez mueve al motor a la derecha o a la izquierda respectivamente. giro To Workspace2 1 <= 0 ENTRADA DEL ERROR 2 ENTRADA DEL ENCODER Compare To Constant2 <= 3 Compare To Constant3 OR >= 7.3 Logical Operator1 Compare To Constant4 Fig. 3 XOR Convert Logical Operator Data Type Conversion5 5 Gain2 uint8 double 1 CAMBIO DE DIRECC. Data Type Conversion1 Data Type Conversion4 Péndulo Invertido Control Digital Por último, en lo que respecta al código preliminar empleado en el proyecto, ésta es la presentación del programa de manera general. PWM_Modif icado PID SALIDA DEL PID 4.93 ENTRADA PID SALIDA PWM Analog Output COMPARACION/ENCODER National Instruments PCI-6024E [auto] Setpoint GRAF PID Analog Output Scope INVERSION DE DIRECCION Analog Input Analog Input National Instruments PCI-6024E [auto] SEÑAL DE ERROR ENTRADA DEL ENCODER SALIDA DEL ENCODER ENTRADA DEL ERROR CAMBIO DE DIRECC. ENTRADA DEL ENCODER Analog Output Analog Output1 National Instruments PCI-6024E [auto] Péndulo Invertido Control Digital IDENTIFICACIÓN DEL SISTEMA Un sistema es todo proceso que transforma entradas (causas) en salidas (efectos) y un ejemplo de esto es un programa de computo, donde la entrada son los datos a procesar y la salida son los resultados producto del procesamiento. Estos sistemas tienen asociada una función de transferencia y para obtener esta función de transferencia utilizamos dos métodos que a continuación se mencionan. Identificación De Sistemas Paramétrica El procedimiento de identificación es el siguiente: 1. Capturar muestras de entrada y salida, mediante simulink (analog input, to workspace). 2. Alinear los datos. Graficamos los datos obtenidos y observamos el desplazamiento o defasamiento de los datos y si era necesario los corregimos mediante ciclos for en MatLab. Codigo de alineación de datos load e2.dat; load s2.dat; load e3.dat; load s3.dat; for (c=1:1:1000-169) s2al(c)=s2(c+168); end for (c=1:1:1000-169) e2al(c)=e2(c); end for (c=1:1:1000-835) s3al(c)=s3(c+834); end for (c=1:1:1000-835) e3al(c)=e3(c); end save s2al.dat -ascii s2al.dat save e2al.dat -ascii e2al.dat save s3al.dat -ascii s3al.dat save e3al.dat -ascii e3al.dat Péndulo Invertido Control Digital 3. Utilizamos un programa llamada isisarma.Que fue creado mediante el modelo ARMAX para obtener la función de transferencia a partir de entradas y salidas alineadas. Código ISISARMA load in1.dat load out1.dat entrada=in1'; salida=out1'; fm=1000; T=1/fm; N1=length(entrada); Tope=T*(N1-1); t=(0:T:Tope); n=length(t); Np=size(salida); N=Np(1,2); MT=1000; %inicio for r=1:6, for p=r:6, for L=1:N-p %Columna f=2; fu=1; for k=1:p, %Fila parte de entrada GAMT(k,L)=-salida(p+L-f+1); %El +1 es por corrección para MATLab f=f+1; end for k=p+1:p+r+1, GAMT(k,L)=entrada(p+L-fu+1); %El +1 es por corrección para MATLab fu=fu+1; end end GAMT; GAM=GAMT'; for te=p+1:N, xnt(te-p)= salida(te); end xn=xnt'; clear teta teta = GAMT*GAM; teta = inv(teta); teta = teta*GAMT; teta = teta*xn; Péndulo Invertido Control Digital e=xn-GAM*teta; % Calcula el error, 'e' es un vector columna clear GAM GAMT xn xnt Ep=e'*e; % CAlcula la suma de los errores cuadrático medio FPE=((p+N+r+1)/(N-p-r-1))*Ep; % donde r es el orden del modelo MA y p del AR if FPE<MT clear TETA MT=FPE; R=r; P=p; TETA=teta; end end end Den(1)=1; for m=2:P+1, Den(m)=TETA(m-1); end nu=length(TETA); for m=P+1:nu, Num(m-P)=TETA(nu-(m-P)+1); end xf=0:1:1023; xf=(fm/2)*xf/1024; [H,W]=freqz(Num,Den,512,fm); mayor=max(H); radio=abs(mayor); N2=Num/radio; D2=Den/radio; printsys(N2,D2,'z'); [H2,W2]=freqz(N2,D2,512,fm); mayor=max(H2); HLin2=freqz(N2,Den,xf,fm); maximo=max(HLin2); mag2=abs(HLin2); ParteReal=real(HLin2); ParteImag=imag(HLin2); Hfase=atan2(ParteImag,ParteReal)*180/pi; Hfase=Hfase-180; Péndulo Invertido Control Digital figure subplot(211);plot(xf,mag2); xlabel('(Hz)');ylabel('Amp');title('Respuesta de Amplitud del sistema identificado(escala lineal)'); axis([0 4000 0 1]); grid on, subplot(212); plot (xf,Hfase); xlabel('(Hz)'); ylabel('Grados');title('Respuesta de la fase del sistema identificado(escala lineal)'); grid on Este código fue la mejor opción, ya que nos mostraba la función de transferencia directamente. Identificación No Parametrica de Sistemas El procedimiento de identificación es el siguiente: 1. Capturar muestras de entrada y salida, mediante simulink (analog input, to workspace). 2. Alinear los datos. Graficamos los datos obtenidos y observamos el desplazamiento o defasamiento de los datos y si era necesario los corregimos mediante ciclos for en MatLab. 3. Realizamos la correlación cruzada y auto correlación para M=32, y agregamos 2000 ceros a las correlaciones. 4. Calcular el espectro y auto espectro con la TRF. 5. Obtener las magnitudes de los espectros y dividir el espectro entre el auto espectro. 6. Obtener las graficas de Bode. A continuación se muestra el código con todos los pasos mencionados. load e1al.dat; load e2al.dat; load e3al.dat; load s1al.dat; load s2al.dat; load s3al.dat; N1=length(e1al); N2=length(e2al); N3=length(e3al); Péndulo Invertido Control Digital %%%%%%%%%%%%%%%%%CORRELACION PARA 32 MUESTRAS%%%% %_________________autocorrelacion__________________________% n=1; m=0; for m=0:1:31; C=0; for n=1:1:N1-m R=e1al(n)*e1al(n+m); C=C+R; Rx1=(C/(N1-m)); Rxx1(m+1)=Rx1; end for n=1:1:N2-m R=e2al(n)*e2al(n+m); C=C+R; Rx2=(C/(N2-m)); Rxx2(m+1)=Rx2; end for n=1:1:N3-m R=e3al(n)*e3al(n+m); C=C+R; Rx3=(C/(N3-m)); Rxx3(m+1)=Rx3; end end %_________________correlacion cruzada______________________% n=1; m=0; for m=0:1:31; C=0; for n=1:1:N1-m R=e1al(n)*s1al(n+m); C=C+R; Ry1=(C/(N1-m)); Rxy1(m+1)=Ry1; end for n=1:1:N2-m R=e2al(n)*s2al(n+m); C=C+R; Ry2=(C/(N2-m)); Rxy2(m+1)=Ry2; end for n=1:1:N3-m R=e3al(n)*s3al(n+m); C=C+R; Ry3=(C/(N3-m)); Péndulo Invertido Control Digital Rxy3(m+1)=Ry3; end end %%%%%%%%%%%%%%LLENAR CON CEROS%%%%%%%%%%%%%%% for (cont=1:1:1968) Rxx1(cont+32)=0; Rxx2(cont+32)=0; Rxx3(cont+32)=0; Rxy1(cont+32)=0; Rxy2(cont+32)=0; Rxy3(cont+32)=0; end %%%%%%%%%%%%%%%%ESPECTROS%%%%%%%%%%%%%%%%%%%% Sxx1=fft(Rxx1); Sxy1=fft(Rxy1); Sxx2=fft(Rxx2); Sxy2=fft(Rxy2); Sxx3=fft(Rxx3); Sxy3=fft(Rxy3); for (c=1:1:2000) Hf2(c)=abs(Sxy2(c))/abs(Sxx2(c)); end Fase2=atan(Hf2); Grados2=(180*Fase2)/pi; for (c=1:1:2000) Hf1(c)=abs(Sxy1(c))/abs(Sxx1(c)); end Fase1=atan(Hf1); Grados1=(180*Fase1)/pi; for (c=1:1:2000) Hf3(c)=abs(Sxy3(c))/abs(Sxx3(c)); end Fase3=atan(Hf3); Grados3=(180*Fase3))/pi; %%%%%%%%%%%%%%% Péndulo Invertido Control Digital RESULTADOS DE LA IDENTIFICACIÓN DEL SISTEMA Utilizando datos de entrada y salida muestreados cuando el sistema tenía interruptores de límite.(limit switches) Identificación No Paramétrica Se capturaron tres pares de datos de entrada y salida el 02 de nov 05. Después de alinearlos y aplicar la correlación y FFT, se obtuvieron las siguientes gráficas. Aquí únicamente utilizaremos el primer par de datos capturados. A estas muestras se les agregó 2000 ceros y se utilizó el algoritmo de la correlación empleando la fórmula vista en clase para m=32: A estos datos no se les agregó ceros y se utilizó la función xcorr de matlab: Péndulo Invertido Control Digital Utilizamos la función spa de matlab para hacer el análisis espectral y obtuvimos la gráfica de Bode empleando los mismos datos anteriores: Identificación Paramétrica Introduciendo los datos de entrada y salida al programa en matlab isisarma se obtuvo la función de transferencia. Función de transferencia con los primeros datos obtenidos y que se alinearon e1al y s1al (estos datos son distintos a los anteriores y fueron los primeros capturados cuando tenía limit switches el sistema) num/den = -0.29624 z^3 + 0.30172 z^2 + 0.28183 z - 0.22793 ---------------------------------------------------------------0.17201 z^4 - 0.10398 z^3 - 0.030587 z^2 - 0.011965 z - 0.015266 Péndulo Invertido Control Digital Utilizando La Función ident De Matlab En matlab existe una función llamada ident que permite hacer la identificación de un sistema. Es una interfaz gráfica que identifica un sistema en forma automática y rápida. Primero es necesario crear un objeto del tipo iddata que contendrá los datos de entrada y salida. >> obj_iddata = iddata(salida21105, entrada21105); Para abrir la interfaz gráfica debemos escribir ident en matlab. >> ident Al abrirse debemos dar clic en import… para importar los datos de entrada y salida Péndulo Invertido Control Digital Enseguida escogemos IDDATA object…: Y luego tecleamos el nombre de la variable con el que nombramos al objeto iddata que contiene las entradas y salidas. Péndulo Invertido Control Digital Enseguida se da clic en Quick Start para que comience a trazar las gráficas más comunes: Entrada y salida: Péndulo Invertido Respuesta al escalón con el modelo arx: Respuesta a la frecuencia: Diagrama de polos y ceros: Control Digital Péndulo Invertido Polos y ceros con el modelo armax: Comparacion de spa, armax, resp a impulso y resp a frecuencia azul= resp a impulso verde=spa rojo=arx cian=modelo en espacio de estados Control Digital Péndulo Invertido Control Digital UTILIZANDO DATOS DE ENTRADA Y SALIDA MUESTREADOS CUANDO AL SISTEMA SE LE DESACTIVARON LOS LIMIT SWITCHES Datos de entrada: Datos de salida: in1.dat , in2.dat, in3.dat out1.dat, out2.dat, out3.dat Identificación No Paramétrica Primero fue importante verificar si los datos estaban alineados para ello se graficaron los datos y se observó la desviación que había entre los datos de entrada y los de salida. Verficiacion de datos. Saber si estan alineados in1 out1 Péndulo Invertido Control Digital in2 out2 in3 out3 En este caso no se observa que los datos estén desalineados, es decir, se observa que existen datos de salida en el instante en que existen datos de entrada, lo da lugar a que no existe un retraso en la respuesta. Enseguida de obtuvieron las correlaciones y FFT de los datos agregando 2000 ceros y para m = 32. Identificación Paramétrica Para hacer la identificación paramétrica, introdujimos los datos de entrada y salida alineados a un programa hecho en matlab llamado isisarma y se obtuvieron las siguientes funciones de transferencia: Péndulo Invertido Control Digital Funciones de transferencia con in and out In3 out 3 num/den = 0.0032241 z^3 – 0.0042571 z^2 + 0.0043673 z – 0.0025686 ------------------------------------------------------0.1394 z^3 – 0.08923 z^2 – 0.032821 z – 0.017242 in2 out2 num/den = -0.003204 z^3 + 0.0025038 z^2 – 0.001417 z – 0.0012915 -----------------------------------------------------0.070092 z^3 – 0.046455 z^2 – 0.016197 z – 0.0072018 in1 out1 num/den = -0.0016347 z^3 + 0.00071593 z^2 – 0.0011358 z – 0.00097027 ---------------------------------------------------------0.052657 z^3 – 0.042072 z^2 – 0.0074445 z – 0.002981 in and out in3 out3: Péndulo Invertido Control Digital in2 out2 in1 out1 Péndulo Invertido Utilizando La Función ident De Matlab: Control Digital Péndulo Invertido Control Digital REFERENCIAS [1] Juan García López ¨Procesamiento Digital de Señales¨. Libro en revisión por el CICIPN, 1999. [2] José Jaime Esqueda Elizondo, Juan García López, Identificación no paramétrica de sistemas lineales e invariantes con el tiempo¨, CONATEC-1999 [3] http://www.iitk.ac.in/eclub/Circuit/l298.htm [4] Tesis: "Identificación de sistemas lineales e invariantes usando un procesador digital de señales" Autor: José Jaime Esqueda Elizondo. Páginas: 25-40, 62-79, 86-87, 113-114. [5] Data sheets