Skip to main content

Practice 15: System 3, using Motor

 #TSCLab #TCLab #ESP32 #Arduino #Control #MACI

By: Ulbio Alejandro


En el siguiente blog se presenta la vigésima sextapráctica del laboratorio de control de temperatura y velocidad de un motor.

Objetivo general:

  • Realizar la identificacion de sistemas, empleando datos anteriormente adquiridos de un Motor DC.

Materiales:

  • Matlab
  • TSC-Lab

Código de Matlab:


Introducción:

Es importante realizar una prueba en lazo abierto sobre la dinámica del sistema, el mismo que por medio de un Tren de pulsos podemos obtener los datos de la salida, los cuales resultaron la velocidad del motor DC en RPM. Para este ejercicio, se utiliza un archivo denominado OpenLoopMotorDC.csv el cual contiene tanto la entrada como la salida de la planta, cabe destacar que la entrada es un pulso unitario para experimentar la dinámica del sistema.
Ilustración 1 Variables de proceso del archivo tipo .csv

Mediante código de MATLAB, procedemos abrir el archivo para extraer los datos tanto la entrada como la salida. De esta forma obtenemos la respuesta del sistema para su posterior análisis.
Ilustración 2 Script de MATLAB.

Ilustración 3 Gráfica de los datos obtenidos en la prueba de lazo abierto.

En caso de que la planta lo amerite, es posible realizar un filtro para mejorar la respuesta del sistema, debido a que existen perturbaciones en la toma de datos donde es importante filtrar la señal para que la curva tenga un comportamiento más suave. Para ello, es importante tener el tiempo en estado estable de la curva que tenemos actualmente y luego encontrar los polos del filtro, el cual se especifica en el siguiente script.

Ilustración 4 Código para aplicar un filtro en la señal.

El polo que contempla la función de transferencia del filtro debe ser lo suficientemente alto para sin perder la dinámica del sistema y, lo suficientemente bajo para filtrar el ruido que presenta, teóricamente se indica que debe ser 5 veces el polo dominante encontrado, pero es posible ajustarlo mediante la simulación del filtro con el comando lsim().

Ilustración 5 Parte del código donde indica un filtro para la señal de control.

En este ejemplo, no se realizó dicho filtrado ya que se considera que el ruido presente cuando se adquiero los datos del lazo abierto es aceptable, sin embargo, se muestra el código en caso de que las circunstancias lo ameriten.
Es importante determinar el punto en el que la curva se estabiliza al momento de activar la señal de alto por medio del microcontrolador, como presente cierto ruido se realiza un promedio de todos los datos que se obtuvieron en el sistema, dando así un valor de 5742.4 [RPM].

Ilustración 6 Puntos de estado estable según la dinámica del sistema al aplicar un tren de pulso.

Luego, es posible encontrar el tiempo de estabilización de la curva, considerando que la respuesta es de primer orden, dando así Tss= 4[s] el cual se lo obtuvo por la banda del 2% alrededor del punto de estado estable. Cabe destacar, que en este caso el punto de operación de la salida es 0 [RPM] debido a que es el punto inicial donde parte la característica del lazo abierto, tal como se muestra en las figuras.

Ilustración 7 Obtención del tiempo en estado estable de la curva.

Es importante que al ingresar al Toolbox System Identification de MATLAB, tanto la entrada como la salida deben estar sin el punto de operación, es decir, se considera la variable incremental del proceso. En este caso, resulta que la variable completa es igual a la variable incremental y por ese motivo no se resta el punto de operación. Para abrir la aplicación se lo llama mediante el siguiente comando:

Ilustración 8 Comando para inicializar el Toolbox.

Luego, el aplicativo se muestra como en la siguiente imagen.
Ilustración 9 Primera vista del Toolbox System Identification.

El toolbox de MATLAB resulta ser intuitivo, donde por medio de flechas es posible guiarnos la secuencia de pasos a realizar para obtener una representación matemática de la planta de control (Motor DC). En primera instancia, se debe importar los datos, el mismo que debemos seleccionarlo con el nombre Time domain data tal como se muestra a continuación:

Ilustración 10 Opción para ingresar los datos al toolbox.

Tanto la entrada como la salida son los datos trabajados en el workspace sin el punto de operación previamente en el script, lo que se hace son llamarlos por el nombre de las variables correspondientes. Es posible dar un nombre a los datos en Data name, además de colocarle el tiempo inicial que es 0 y el tiempo de muestreo, que para este ejercicio se lo ha realizado como 1 segundo por muestra (este parámetro es importante, se debe establecer al momento de realizar la adquisición de datos de su planta de control). Una vez ajustado todos los parámetros, se da clic en Import.

Ilustración 11 Establecer los datos en el Toolbox.

Para observar que los datos fueron extraídos del Workspace del script, es posible dar clic en Time plot, el mismo que se encuentra en la parte inferior derecha del Toolbox. Además, se encuentra establecido por el nombre previamente escogido. Time plot permite graficar todos los datos que se encuentren en los cuadros del lateral izquierdo, en caso de tener más de una gráfica es posible segmentarla solo dando clic a los cuadros que necesitaremos visualizar.

Ilustración 12 Uso del Time plot para visualizar los datos en el Toolbox.

Es importante establecer los datos un rango de trabajo, ya que existen parte de la curva que no son considerados en el análisis. Para esto, se debe ir a una venta de interacción y seleccionar Select range, tal como se muestra en la siguiente imagen.

Ilustración 13 Selección de un rango de toda la curva en el Toolbox.

El criterio utilizado para seleccionar los rangos de la curva es destacar aquellas gráficas que no son similares al resto, además de segmentar las regiones de trabajo. Para esto, en esta ocasión se considera el criterio de: 70% de toda la señal servirá como entrenamiento de la identificación de sistemas, mientras que el 30% restante de la señal será como validación de los datos. En la gráfica, se puede observar 16 respuestas al activar un flanco alto en la adquisición de datos, obteniendo el 70% se consideró que alrededor de 11 primeros pulsos son para entramiento, mientras el restante es para validación.

Ilustración 14 Selección del 70 % de la curva, entrenamiento.

Ilustración 15 Selección del 30% de la señal, validación.

Cada vez que se seleccione la opción Insert, todas las curvas se irán generando en la vista de los datos, donde por medio del Time plot podemos observar la sección de las curvas seleccionadas. 

Ilustración 16 Se muestra los datos que serán para entrenamiento.

Ilustración 17 Se muestra los datos que serán para validación.

✅ Método 1

Luego, debemos arrastrar los datos respectivos tanto en el Working Data (70% de la señal) y Validation Data (30% de la señal), para comenzar a estimar el modelo matemático que simulará el sistema en cuestión, esto se realiza seleccionando Process Models.

Ilustración 18 Selección del Process Model.

Luego, aparecerá una ventana donde podemos estimar las distintas opciones o funciones de transferencias disponibles en el Toolbox, las mismas que serán en consideración del programador. Entre ella tenemos la función de transferencia con cierta cantidad de polos desde el 0 hasta 3, luego de que sean raíces reales o complejas conjugadas. Es posible realizar las variaciones que considere el usuario, una vez seleccionado cuales son las variantes que se desea, se debe dar clic en Estimate.

Ilustración 19 Selección de la función de transferencia a modelar el sistema.

Todos los modelos matemáticos obtenidos serán guardados en los recuerdos del lateral derecho, los mismos que tendrán distintos nombres y colores para que el usuario pueda identificarlos fácilmente.

Ilustración 20 Ajustando las características de un nuevo modelo matemático.

Ilustración 21 Obtención de todos los modelos matemáticos considerados para esta práctica.

Una vez obtenido todos los modelos que Matlab pudo simular a partir de los datos proporcionados, es posible compararlos y medirlos con la salida. Para esto, se debe dar clic en el recuadro inferior derecha denominado Model Output, el mismo que mostrará lo siguiente:

Ilustración 22 Clic en Model Output para acceder a la comparación de los modelos.

Luego, se obtiene una comparación entre los datos de la validación antes ajustados en el Toolbox, los mismos que serán modelados de acuerdo con el ajuste matemático escogido. En la parte derecha podemos visualizar el porcentaje de ajuste correspondiente a las señales de la izquierda y dependiendo de la estructura de la función de transferencia simulada. Para esto tomamos los siguientes criterios para destacar cada modelo:
  • Se debe tener un porcentaje de ajuste mayor al 70%, los que simbolicen menor al mismo serán descartados inmediatamente. 
  • Se debe tener en consideración el tipo de función de transferencia a escoger, esto indica que sea lo más simple posible para realizar el modelado de esta. 
En un caso hipotético que tengamos que escoger entre una función de primer orden con un ajuste del 89% y una función con polos conjugados complejos con un ajuste del 95%, muy probablemente se selecciones la primera función debido a la facilidad de análisis que conservar los de ese tipo de funciones de transferencia.

Ilustración 23 Porcentaje de ajuste de los distintos modelos encontrados.

✅ Método 2

Otra forma de realizar los pasos anteriores es dando la opción de Transfer Function Models, el mismo que ayudará ajustar los distintos modelos matemáticos para llegar al mejor porcentaje de ajuste posible.

Ilustración 24 Selección del segundo método para encontrar la representación matemática adecuada.

Luego, debemos indicarle cuales son las características que deseamos comparar entre los distintos modelos matemáticos que nos ofrece el Toolbox.

Ilustración 25 Ajuste de los parámetros.

Luego estimamos, para poder encontrar la mejor representación matemática posible. En este punto se da como recomendación tener varias opciones para estimar el mejor resultado según los criterios antes mencionados.

Ilustración 26 Primera Estimación del modelo matemático en el Toolbox.

Ilustración 27 Segunda estimación del modelo matemático en el Toolbox.

Ilustración 28 Tercera estimación del modelo matemático en el Toolbox.

Una vez que se haya seleccionado el mejor modelo matemático, es posible exportar la función de transferencia, arrastrándolo con el mouse y llevándolo en la opción To Workspace.

Ilustración 29 Enviando al Workspace la Función de transferencia resultante.

En este ejemplo se tienen las dos funciones de transferencia escogidas, pero solo nos servirá una y es la que se denomina como tf1, debido a que resulta mucho más simple que tf2, tal como se muestra en la siguiente imagen:

Ilustración 30 Funciones de transferencia resultantes.


✅ Método 3

Otra forma rápida de como obtener un modelo para la identificación de sistemas es usando el estimador Quick Start.

Dar click derecho sobre el modelo seleccionado en la venta System Identification y se despliega la ventana Data model info: 


Dar click en Export para exportar el modelo a Matlab.


En la parte final del código de matlab está la forma de presentar la función de transferencia de forma polinomial para facilitar su ingreso en el Simulink.

Test Identification Model

Finalmente, se propone emplear el siguiente simulink para comprobar la similitud entre la planata real de motor en el TSCLAB y el modelo identificado.

Simulink:


Código para el TSC-LAB:


Comments

Popular posts from this blog

Practice 29: NodeRed (Http) + Telegram

✅ Práctica 29 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la vigésima sextapráctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Recibir los valores sensados de temperatura del TSC-Lab a Telegram.  Materiales: Node-Red TSC-Lab Introducción: En la práctica anterior se aprendió a información del TSC-Lab a Node-Red mediante Wi-Fi con protocolo HTTP. Ahora a mas de enviar dicha información se pretende recibirla y monitoreada desde Telegram, la cual es una aplicación enfocada en la mensajería instantánea, el envío de varios archivos y la comunicación en masa. Se la puede descargar desde la tienda de Google Play o App Store. También se la puede utilizar desde su sitio web o versión de escritorio. En esta práctica se crearrá un bot en Telegram el cual al recibir un comando en específico, enviará de manera instantanea el valor de temperatura solicitado. Procedimiento: Nota: se asume que está in

Practice 9: Encoder Implementation (RPM)

✅ Práctica 9 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la novena práctica y corresponde a la cuarta del laboratorio de control de velocidad. Objetivo general: Visualizar las RPM del motor en base a la PWM asignada. Objetivos específicos: Comparar los resultados de movimiento con diferentes parámetros. Materiales: PCB de Temperature Control Lab (TSC-Lab) Introducción: En la práctica anterior se puso en marcha en motor asignándole un valor PWM, además brindaba la opción de escoger el sentido de gira. Ahora, en el presente laboartorio se implementa un encoder óptico, que mediante el código de programación en el IDE de Arduino, permite saber a cuantas revoluciones por minuto gira el motor. Es importante mencionar que en esta ocasión se hará uso de interrupciones, cualquier pin GPIO del ESP-32 puede ser utilizado con interrupción, en este caso se ha escogido el 27, pin en el cual está conectado el encoder óptico. Procedimiento: S

Practice 31: MQTT connection (mydata-lab)

✅ Práctica 31 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la vigésima octava práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Realizar una conexión MQTT utilizando el TSC-Lab.  Objetivos específicos: Enviar un mensaje al servidor y verificarlo en MQTTLens. Materiales: MQTTLens TSC-Lab Introducción: En las prácticas anteriores se realizararon conexiones a .diferentes plataformas donde se envió la información e inclusive se pudo visualizar los datos. Sin embargo, poseen muchas limitaciones como por ejemplo ThingSpeak que únicamente permite crear cuatro canales y el envío de información lo hace con un delay mínimo de 14 segundos. Ante ello, la mejor alternativa es trabajar con el servidor del TSC-Lab debido a que no tiene limitaciones en cuanto a la creación de proyectos, ni envío de información. Por esta razón, en la presente prácticase darán los primeros pasos para poder conectarse a

Practice 28: NodeRed (Wifi)

✅ Práctica 28 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la vigésima quinta práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Enviar los valores sensados de temperatura del TSC-Lab por WiFi a Node-Red y visualizarlos.  Materiales: Node-Red TSC-Lab Introducción: En la práctica anterior se aprendió a utilizar y familiarizarse con Node-Red, el envío de información se lo hizo por medio de comunicación serial. Sin embargo, no tiene mucho sentido que se esté enviando información a Node-Red por el puerto serial cuando se puede aprovechar el ESP-32 para conectarse a internet por medio de Wi-Fi. Se usará el protocolo HTTP para conectarse al servidor donde se aloja el servidor que se está ejecutando Node-Red, lo cual permitirá que cualquier dispositivo tenga acceso a su información. Procedimiento: Nota: se asume que está instalado Node-Red, que está familiarizado con el entorno y que sabe in

Practice 12: Speed Control Lab

✅ Práctica 12 ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez. (2021). Temperature and Speed Control Lab (TSC-Lab). IEEE Dataport. https://dx.doi.org/10.21227/8cty-6069 En el siguiente blog se presenta la vigésima segunda práctica del laboratorio de control de temperatura y velocidad de un motor. Github repository: https://github.com/vasanza/TSC-Lab Objetivo general: Realizar la adquisición de datos en Matlab emplenado comunicación serial. Materiales: Matlab TSC-Lab Registro de datos en formato Byte: Esta versión se recomienda si se utiliza Matlab de versiones anteriores a las 2017. Repository: https://github.com/vasanza/TSC-Lab/tree/main/Practice12/Practice12_Byte Registro de datos en formato String: Esta versión se recomienda si se utiliza Matlab de versiones actuales. Repository:  https://github.com/vasanz

Practice 27: NodeRed (USB)

✅ Práctica 27 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la vigési cuarta práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Enviar los valores sensados del motor del TSC-Lab por comunicación serial a Node-Red y visualizarlo.  Materiales: Node-Red TSC-Lab Introducción: En la presente práctica se muestra otra de las alternativas para visualizar y controlar dispositivos, la cual es Node-Red, siendo esta una herramienta de desarrollo basada en flujo para programación visual desarrollada originalmente por IBM para conectar dispositivos de hardware, API y servicios en línea como parte de Internet of Things. Para ir familiarizándose con el entorno de Node-Red se hará una conexión por comunicación seríal con el TSC-Lab. Procedimiento: Se necesita instalar Node-Red, a continuación se mostrará como hacerlo en un sistema operativo de Windows.  Instalar Node.js, puede descargarlo aquí . Cualqui

Practice 35: NodeRed (MQTT) + Telegram

✅ Práctica 35 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la vigésima sextapráctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Recibir los valores sensados de temperatura del TSC-Lab a Telegram.  Materiales: Node-Red TSC-Lab Introducción: En la práctica anterior se aprendió a información del TSC-Lab a Node-Red mediante Wi-Fi con protocolo HTTP. Ahora a mas de enviar dicha información se pretende recibirla y monitoreada desde Telegram, la cual es una aplicación enfocada en la mensajería instantánea, el envío de varios archivos y la comunicación en masa. Se la puede descargar desde la tienda de Google Play o App Store. También se la puede utilizar desde su sitio web o versión de escritorio. En esta práctica se crearrá un bot en Telegram el cual al recibir un comando en específico, enviará de manera instantanea el valor de temperatura solicitado. Procedimiento: Nota: se asume que está in

Practice 1 (VS Code): Initial setups and tests

✅ Práctica 1 (VS Code) Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez. (2021). Temperature and Speed Control Lab (TSC-Lab). IEEE Dataport. https://dx.doi.org/10.21227/8cty-6069 En el siguiente blog se presenta la cuadragésima tercerapráctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Descargar e instalar Visual Studio Code para programar el TSC-Lab utilizando el ESP-IDF (framework que recomienda su fabricante, Espressif) Materiales: Visual Studio Code TSC-Lab Introducción: A lo largo de todas estas prácticas se ha venido programando el ESP-32 del TSC-Lab en el IDE de Arduino. Sin embargo, esta no es la única forma de programarlo, una de ellas e inclusive la que recomienda su fabricante es utilizando el ESP-IDF, siendo este el framework de desarrollo

Practice 24: Firebase

✅ Práctica 24 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI When using this resource, please cite the original publication: Víctor Asanza, Kevin Chica-Orellana, Jonathan Cagua, Douglas Plaza, César Martín, Diego Hernan Peluffo-Ordóñez. (2021). Temperature and Speed Control Lab (TSC-Lab). IEEE Dataport. https://dx.doi.org/10.21227/8cty-6069 En el siguiente blog se presenta la cuadragésima primera práctica del laboratorio de control de temperatura y velocidad de un motor. Objetivo general: Sensar datos y subirlos a la Realtime Database de Firebase Materiales: Firebase TSC-Lab Introducción: Firebase es una plataforma para el desarrollo de aplicaciones web y aplicaciones móviles lanzada en 2011 y adquirida por Google en 2014.​ Es una plataforma ubicada en la nube, integrada con Google Cloud Platform, que usa un conjunto de herramientas para la creación y sincronización de proyectos que serán dotados de alta calidad, haciendo posible el crecimiento del número de usu

Práctica 7: Speed control using PWM

✅ Práctica 7 Github Repositories ▷  #TSCLab #TCLab #ESP32 #Arduino #Control #MACI En el siguiente blog se presenta la septima práctica y corresponde a la segunda del laboratorio de control de velocidad. Objetivo general: Entender el funcionamiento del motor DC con PWM para aumentar o bajar la velocidad usando código de programación en el IDE de Arduino. Objetivos específicos: Comparar los resultados de movimiento cambiando los parámetros. Materiales: PCB de Temperature Control Lab (TSC-Lab) Introducción: En la práctica anterior, al motor se le enviaba señales de High y Low para ponerlo en marcha. Sin embargo, dentro de la realidad a un motor no se lo controla así, en algunas ocasiones se lo requiere hacer girar con cierta velocidad y durante esta práctica para tener control sobre la misma se lo hace con señales PWM. Procedimiento: Se asume que la placa del ESP-32 ha sido previamente instalada en el IDE de Arduino. Copiar el código en el IDE de Arduino:           Repositories:  http