scieee AI-readable full text Open interactive document viewer

Simulación y control digital de un motor DC con Scilab-XCOS

Olivares Ruiz, Gonzalo,Gómez Mula, Francisco,Damas Hermoso, Miguel

Abstract

Departamento de Arquitectura y Tecnología de Computadores

Full text

Simulación y control digital de un motor DC con Scilab-XCOS G. Olivares(1), F.Gómez (2), M.Damas (3) Departamento de Arquitectura y Tecnología de Computadores. ETSI Informática y de Telecomunicación. Universidad de Granada Granada, España (1)[email protected]; (2)[email protected]; (3)[email protected] Resumen. Se describe en este artículo un conjunto de técnicas de control discreto de un motor DC empleando Scilab y XCOS como alternativa de software libre. El conjunto de experiencias propuestas se están empleando en las prácticas de las asignaturas impartidas por el Área de Ingeniería de Sistemas y Automática y el Departamento de Arquitectura y Tecnología de Computadores de la Universidad de Granada con resultados satisfactorios. Palabras Claves: Control digital, Scilab-XCOS, Motor de corriente continua. PID, LQR, LQI. Abstract. This paper describes a set of discrete control techniques of a DC motor using Scilab and XCOS as a free software alternative. The set of experiences proposed is being used in the practices of the subjects taught by the Systems Engineering and Automation Area and the Department of Architecture and Computer Technology of the University of Granada with satisfactory results. Keywords: Digital-Control, Scilab-XCOS, DC motor. 1 Introducción Matlab-Simulink es sin duda la herramienta de software de simulación más utilizada en la enseñanza de sistemas de control. No obstante, debido a su coste, no todas las universidades disponen de esta herramienta, o bien, puede haber dificultades puntuales de acceso a los computadores de los laboratorios que disponen de las licencias de uso, tal y como ha ocurrido durante periodos de confinamiento por pandemia, en los cuales los estudiantes no han podido usarlo. Tras analizar varias posibilidades de software libre, hemos empezado a usar Scilab- XCOS como alternativa viable para el diseño y simulación de sistemas de control, y también como herramienta de control en tiempo real de sistemas mecatrónicos básicos, en los laboratorios de prácticas de algunas asignaturas de grado y master impartidas por el Departamento de Arquitectura y Tecnología de Computadores de la Universidad de Enseñanza y Aprendizaje de Ingeniería de Computadores. Número 10, 2020 75 Granada (Informática Industrial, Sistemas de Control, Control Digital de Sistemas Mecatrónicos, etc.). El motor de corriente continua es uno de los principales componentes que se utilizan en sistemas mecatrónicos. Conocer bien su comportamiento, modelado y métodos de control es básico para avanzar y abordar más adelante el control de sistemas mecánicos más complejos. Además, controlar la posición angular del eje de un motor (servomotor) o la velocidad angular del mismo, permite de una forma sencilla, experimentar y asimilar correctamente un conjunto amplio de conceptos relacionados con el desarrollo de sistemas de control, tales como: funciones de transferencia continuas y discretas, estabilidad, controlabilidad, observabilidad, control PID, control LQR, representación en el espacio de estados, control por ubicación de polos, controladoresobservadores, y también experimentar con filtros digitales, sistemas con ruido, etc. En su día ya preparamos un conjunto de guiones y ejercicios prácticos de control de una maqueta de motor DC a realizar con Matlab y Simulink [1]. Ahora presentamos algunos ejemplos de ejercicios prácticos para la docencia de sistemas de control digital realizados con Scilab-XCOS y con un equipamiento hardware distinto. 2 Descripción del equipamiento hardware Para el desarrollo de las prácticas utilizamos un kit compuesto por un motor DC [2], con una relación de engranajes de 20:1, que dispone a su vez de un codificador incremental, en cuadratura, de 13 ranuras, que suministra 1040 pulsos por vuelta. El controlador es una tarjeta Arduino Mega 2560 [3] e incluye una tarjeta de potencia con el adaptador Toshiba TB6612 [4]. Fig 1. Motor conectado a tarjeta controladora y fotografía del kit completo Enseñanza y Aprendizaje de Ingeniería de Computadores. Número 10, 2020 76 3. Scilab Scilab [5] es un paquete de software libre diseñado para la simulación de sistemas en general, y de sistemas de control en particular, que ha sido desarrollado en Francia por el INRIA (Institut National de Recherche en Ciences et Technologies du Numérique). Al contrario que otras herramientas de software como Octave, la lista de comandos de Scilab no es compatible con Matlab, aunque siempre dispone de funciones equivalentes. Sin embargo, Scilab incluye XCOS [6], que permite programar en forma gráfica en forma similar a Simulink, y dispone de una amplia biblioteca (denominada paleta) con todos los módulos necesarios, tal y como se puede apreciar en la figura 2. Fig 2. Ejemplo de módulos de XCOS Scilab se instala muy rápidamente, y requiere muchos menos recursos computacionales que Matlab, lo que es importante para que se pueda usar en la gran mayoría de los computadores de los estudiantes. Dispone además de todas las funciones necesarias para el diseño y la simulación de sistemas de control. XCOS dispone además de una biblioteca de módulos de interfaz con las tarjetas Arduino Mega y Arduino UNO (ver figura 3), lo que permite realizar aplicaciones de control en tiempo real con dichos dispositivos, siempre que el periodo de muestreo no sea inferior a 0.03 segundos. Esto último hace que esta característica no se pueda usar para controlar algunos sistemas mecatrónicos ampliamente usados en experiencias prácticas docentes (péndulo invertido, sistema de bola en plano, mini-segway, etc.), pero es suficiente para ser utilizada para el control del motor DC, objetivo de nuestro trabajo. Enseñanza y Aprendizaje de Ingeniería de Computadores. Número 10, 2020 77 Fig 3. Módulo XCOS para Arduino 4. Listado de ejercicios experimentales ensayados Presentamos a continuación una lista de tareas experimentales desarrolladas con la herramienta y equipo anteriormente descritos: 1. Control de la velocidad del motor en lazo abierto. 2. Diseño y control PD discreto de posición en tiempo real; comparativa con la simulación mediante la función de transferencia. 3. Diseño y control PI discreto de la velocidad angular; comparativa con la simulación mediante la función de transferencia. 4. Control LQR (comparativa entre simulación y control en tiempo real). 5. Control y simulación LQI (LQR con integrador). 6. Simulación de control con observador discreto. Todas estas tareas didácticas han sido planificadas y ensayadas con éxito. A lo largo de este artículo (apartado 5) se detallarán. 5. Modelado del motor DC A partir de las ecuaciones diferenciales que definen el comportamiento físico de un motor de corriente continua, y suponiendo una autoinducción despreciable (L=0), se obtiene la representación en el espacio de estados continuo del motor, con variables de estado (θ,ω) : Enseñanza y Aprendizaje de Ingeniería de Computadores. Número 10, 2020 78 2 i [1] = ya que L=0 Despejando i: Sustituyendo i en [1]: i bK Ki J b JJ V K Ri Li Ri VK iR bKbKVK JJJJR bK K V J RJ RJ θθ θ θ θ θ θ θθ θ θθ •• • •• • •• • • •• • • •• • =+ ⇒=− + −=+ − =  −  =−+ =−+    =−+ +   ( ) 2 En forma matricial : 01 0 0 10 V bK K J RJ RJ θ θ θ θ θ θθ • • •• • •         = +      −+           =  donde J es el momento de inercia del eje, K es la constante de fuerza electromotriz cuyo valor numérico es el mismo que el valor de la constante de par motor (K=Kt=Ke), R es la resistencia del bobinado, L la autoinducción, b el coeficiente de fricción, y V la entrada de control (voltaje aplicado al motor). La función de transferencia con respecto a la posición angular es: ( ) ( ) 22 22 () ' ( 0) ( ) ( 1) [] ' T= constante mecánica sK K L V s s Ts s JLs RJ Lb s Rb K K RJ KRb K Rb K θ = = = + ++ ++ =++ y la función de transferencia con respecto a la velocidad angular: ( ) ( ) 22 () ' () 1 sK K V s Ts JLs RJ Lb s Rb K ω = = + ++ ++ Para el motor utilizado, se obtuvo experimentalmente: K’=4.56 y T=0.07 Enseñanza y Aprendizaje de Ingeniería de Computadores. Número 10, 2020 79 6 Resultados obtenidos A continuación se describen algunos de los módulos experimentales y los resultados obtenidos. 6.1 Control del motor en lazo abierto y lectura del ángulo de giro del motor En la figura 4 se presenta un módulo realizado con XCOS para el control de velocidad del motor en lazo abierto. Se puede seleccionar el sentido de giro mediante la activación de dos pines de salida digital; asimismo, la velocidad se regula con una salida PWM. Fig 4. Control de la velocidad y sentido de giro del motor en lazo abierto y lectura del ángulo de giro. 6.2 Lectura de la velocidad de giro w del motor A partir de la medida del ángulo de giro en radianes, se lleva a cabo la derivada mediante el método Backward-Euler para obtener la medida de la velocidad angular en radianes/segundo (ver figura 5). El periodo de muestreo seleccionado es de 0.05 segundos. Enseñanza y Aprendizaje de Ingeniería de Computadores. Número 10, 2020 80 Fig 5. Medida de la velocidad de giro del motor. 6.3 Control PD de la posición angular del motor (servo) Los parámetros del controlador PD (constantes proporcional y diferencial) se diseñan a partir de la función de transferencia del motor y en función de la respuesta deseada. Se usa el método de diseño por ubicación de los polos de la respuesta final deseada, a partir del sobredisparo máximo (Mp) y el tiempo de asentamiento (ts) requeridos. Presentamos a continuación un programa Scilab para realizar dicho diseño y representar gráficamente la respuesta del sistema controlado: R=3.8; L=0.0037; K=0.2; b=0.001;T=0.07; J=(T*(R*b+K^2))/R; Kprima=K/(R*b+K^2); s=%s; G=Kprima/(s*(T*s+1)); Ts=0.01; // periodo de muestreo Mp=0.001; ts=0.5; xi=abs(log(Mp)/sqrt(%pi^2+log(Mp)^2)); wn=4/(xi*ts); // Calculo de Kp y Kd Kp=((wn^2)*T)/Kprima; Kd=(2*xi*wn*T-1)/Kprima; // Simulacion fdtPD=Kd*s+Kp; // f.d.t del controlador PD sysc=K/(J*L*s^3+ (R*J+L*b)*s^2 + (R*b+K^2)*s); fdtlazoc=(fdtPD*sysc)/.(1);// Realimentación negativa t=[0:0.01:3]; r=10+0*t; // consigna de ángulo deseado (10 rad) y=csim(r,t,fdtlazoc); plot(t,y); Una vez obtenidas las constantes Kp y Kd del controlador PD, este se implementó de nuevo con XCOS, visualizando en tiempo real la respuesta ante un cambio de consigna periódico. Además, en el mismo ejemplo se realizó una comparativa con la respuesta simulada sobre la función de transferencia (ver figura 6). Enseñanza y Aprendizaje de Ingeniería de Computadores. Número 10, 2020 81 Fig.6 Control PD de la posición angular, realizado con XCOS Se obtuvieron los siguientes resultados experimentales: Fig.7 Consigna (en negro), ángulo del eje estimado (en rojo) y ángulo real controlado (en verde) La respuesta es casi idéntica. Se detecta un pequeño retardo debido al retardo de la comunicación serie con la tarjeta Arduino. Hay que tener en cuenta también que se compara la respuesta teórica continua con la respuesta real del sistema discreto, con una baja frecuencia de muestreo. 6.4 Control PI de la velocidad angular En la figura 8 se puede apreciar el diseño XCOS del control Proporcional-Integral (PI) de la velocidad w del motor en tiempo real, con un periodo de muestreo de 0.05 seg, así como su simulación empleando la función de transferencia continua del motor. Enseñanza y Aprendizaje de Ingeniería de Computadores. Número 10, 2020 82 Fig.8 Control y simulación en tiempo real de la velocidad angular del motor Se puede observar (figura 9), que salvo el ruido registrado en la gráfica experimental, las respuestas en tiempo real (en verde) y simulada (en rojo) son muy similares. Fig.9 Consigna, señales real y simulada de la velocidad angular controlada 6.5 Control LQR de la posición angular Con el módulo XCOS de la representación en el espacio de estados (ver figura 10) descrita en el apartado 5, hemos implementado un sistema de control de posición angular por realimentación en el espacio de estados (ver figura 11), donde las constantes de realimentación se calculan mediante un Regulador Cuadrático Lineal (LQR) discreto que optimiza la respuesta de control, minimizando además el coste energético [7]. Enseñanza y Aprendizaje de Ingeniería de Computadores. Número 10, 2020 83