You are on page 1of 14

Universidad del Valle de Mxico

Control de motores con Arduino

Control Digital
Maestro: Rafael Verde

Edwin Armando Villegas Martnez


#270002553

Control de motores con Arduino: Caso


estudiado basado en modelados y diseo
de control
Por: Pravallika Vinnakota, Math Works
Ajustar un controlador en un prototipo fsico o hardware planta puede hacer a
que haya condiciones inseguras al operar y as pueda daar el hardware. Una
manera ms confiable es construir un modelo de planta y simularlo para
verificar el controlador en diferentes condiciones de operacin con el fin de
ejecutarlo en algn escenario sin tener algn riesgo.
Cuando los principales modelados no son posibles, una alternativa es
desarrollar modelos a partir de medidas de entradas (inputs) y salidas
(outputs) de la planta. La orden inferior, modelo lineal debe ser suficiente para
el diseo bsico para un control bsico. El anlisis detallado y el diseo de un
rendimiento ms alto del controlador requiere mayor fidelidad y posiblemente
un modelo no linear.
Usar un sistema simple de control para un motor DC (corriente directa) como
un ejemplo, este articulo nos muestra cmo identificar un modelo planta a
partir de las entradas o salidas, usar el modelo sealado para disear un
controlador e implementarlo. El flujo de trabajo incluye los siguientes pasos: la
adquisicin de datos, la identificacin de modelos de plantas lineales o no
lineales, diseando y simulando la retroalimentacin de controladores, e
implementando estos controladores en un procesador embebido en vida real.

Motor DC; Control de objetivos de diseo


El sistema fsico es un motor DC conectado a un Arduino Uno a travs de un
controlador. Queremos disear un control de retroalimentacin para este motor
para darle seguimiento a una posicin de referencia. El controlador generara el
voltaje apropiado para el motor basado en la posicin de referencia. Cuando
apliquemos el voltaje a este motor causaremos que el motor genere torque que
para as mover el eje del motor. Usaremos un potencimetro para medir el
ngulo de rotacin del eje del motor, alimentar este ngulo devuelta al
controlador.

Figura 1. Placa Arduino conectada al motor DC


El controlador del motor integrado en el circuito incrementa la capacidad de
corriente y puede accionar el motor en ambas direcciones. Recibimos el dato
de la posicin del motor a travs de una entrada anloga del arduino y
calculamos el error entre la referencia y el dato actual (la entrada del
controlador). Mandamos un voltaje (salida del controlador) a dos salidas
anlogas al board (tabla) como seales de PWM. Estas seales se alimentan al
controlador IC que proporciona el motor con las corrientes apropiadas.
El controlado debe de mantener el sistema estable y proporcionar una
referencia rpida con el mnimo error de estado y exceso.

Adquisicin y Procesamiento de Datos


Conectamos el host PC al Arduino usando Simulink que permite generar un
archivo ejecutable y correrlo en el hardware. La figura 2 muestra la librera del
Simulink para el uso con el Arduino.

Figura 2. Bloque librera de Simulink: Tarjeta para uso con el hardware del
Arduino
Para coleccionar los datos, el Arduino enviara voltajes al motor y medir los
ngulos del motor. Crearemos un modelo en Simulink para permitir la
recoleccin de datos. El host del equipo debe comunicarse con el Arduino para
mandar el voltaje y recibir el dato del ngulo. Crearemos un segundo modelo
para permitir la comunicacin.
En el modelo que ejecutaremos en el Arduino uno (Figura 3), el MATLAB funcin
bloque de voltaje lee el puerto serial y las rutas de voltaje a las terminales.
Usamos el protocolo de comunicacin serial para activar el host de la
computadora para comunicarse con el Arduino. En el subsistema Crear
mensaje (CreateMessage), se genera un mensaje serial del dato de la posicin
del motor obtenido de uno de los pines de entrada anloga del board.

Figura 3. Modelo Simulink se ejecutara en el Arduino


Creamos una aplicacin en tiempo real desde el modelo seleccionando
Herramientas > Ejecutar en Hardware > Ejecutar. Estamos listos para adquirir
los datos de la entrada/salida usando el modelo que ejecutaremos en el equipo
(Figura 4).

Figura 4. El modelo que se ejecutara en la maquina


Enviamos varios perfiles de voltaje para estimular el sistema y grabar y
registrar los datos de posicin correspondientes. Al final de la simulacin, la
seal de registro de caractersticas en Simulink creara un objeto de conjunto de
datos de Simulink en el espacio de trabajo conteniendo todas las seales
registradas como objetos de series de tiempo.
A continuacin, prepararemos los datos para la estimulacin y validacin. El
uso de los siguiente comandos, convertimos los datos en iddata objetos para
importar en la herramienta de identificacin del sistema en el sistema de
identificacin de herramientas.
>> logsout
logsout =
Simulink.SimulationData.Dataset
Package: Simulink.SimulationData
Characteristics:
Name: logsout
Total Elements: 2
Elements:
1: Voltage
2: Angle
-Use getElement to access elements by index or name.
-Use addElement or setElement to add or modify elements.

Methods, Superclasses
>> u = logsout.getElement(1).Values.Data;
>> y = logsout.getElement(2).Values.Data;
>> bounds1 = iddata(y,u,0.01,InputName,Voltage,OutputName,Angle,...
...InputUnit,V,OutputUnit,deg)
Time domain data set with 1001 samples.
Sample time: 0.01 seconds
Outputs Unit (if specified)
Angle deg
Inputs Unit (if specified)
Voltage V

Vamos a trabajar con 12 conjuntos de datos. Estos conjuntos de datos son


seleccionados para asegurar la estimulacin adecuada del sistema y
proporcionar suficientes datos para la validacin del modelo.

Desarrollo de modelos de planta de datos


experimentados
El desarrollo de modelos planta usando tcnicas de identificacin de sistema
implica un equilibrio entre el modelo de fidelidad y el modelo de esfuerzo. El
modelo ms preciso, el mayor costo en trminos de esfuerzo y tiempo
computacional. El objetivo es encontrar el modelo ms simple que deba
capturar adecuadamente la dinmica del sistema.
Seguimos el flujo de trabajo para la identificacin de sistema: Empezamos por
estimar un sistema lineal simple y despus estimar ms detallado un modelo
no lineal que es una representacin del motor y captura el comportamiento no
lineal. Mientras que un modelo lineal es suficiente para la mayora de
aplicaciones de diseo de controladores, un modelo no lineal permite ms
precisin en la simulacin del comportamiento del sistema y el diseo del
controlador a travs de un rango de puntos de operacin.

Identificacin del sistema lineal


Usando los objetos iddata, primero estimamos un modelo lineal dinmico para
la planta como un tiempo-continuo funcin de transferencia. Para esta
estimacin, especificamos el nmero de polos y ceros. Sistema de
identificacin de herramientas luego automticamente determina sus
ubicaciones para maximizar el ajuste a los datos seleccionados.
Presentamos el sistema de identificacin de herramientas por ejecucin
>> ident

Podemos importar los conjuntos de datos en las herramientas de la base del


rea de trabajo usando el men desplegable importar datos (Figura 5). Tambin

tenemos la opcin para reprocesar los datos importados. Para empezar la


estimacin de proceso, seleccionamos los datos de trabajo que usaremos para
estimar el modelo y la validacin de los datos contra el cual probaremos el
sistema estimado ser probado. Podemos usar el mismo conjunto de datos
para ambas estimaciones y validaciones iniciales, y despus usar el conjunto
de datos para confirmar nuestros resultados. Figura 5 muestra el sistema de
identificacin de herramienta con el conjunto de datos importados.
El conjunto de estimacin de datos, el conjunto de datos 11, viene de un
experimento diseado para evitar estimulaciones no-linealidades en el
sistema.

Figura 5. El sistema de identificacin de herramienta con el dato importado


Ahora podemos aproximar una funcin de transferencia continua para estos
datos. En nuestro ejemplo, aproximaremos a 2 polos, no cero, tiempo-continuo
en funcin transferencia.

Figura 6. Funcin transferencia continua aproximada GUI


Comparamos la respuesta de estimulacin del modelo estimado con los datos
medidos checando la casilla de salida del modelo en el sistema de

identificacin de herramientas. El ajuste entre las respuesta y el estmulo de


modelo lineal y la estimacin de datos es 93.62% (Figura 7).

Figura 7. Grafica comparando el modelo aproximado y el dato aproximado.


Para asegurarse que la funcin de transferencia aproximada representa la
dinmica del motor, debemos validar contra el conjunto de datos
independiente. Para este propsito seleccionamos el conjunto de datos 12,
donde el motor trabaja lineal como nuestra validacin de datos. Logramos un
ajuste exacto razonable (Figura 8).

Figura 8. Grafica comparando la respuesta del modelo aproximado con la


validacin de datos.
Mientras el ajuste no es perfecto, la funcin transferencia que identificamos
hace un buen trabajo capturando la dinmica del sistema. Podemos usar la
funcin transferencia para disear el controlador del sistema.
Tambin podemos analizar el efecto de incertidumbre de la planta. Modelos
obtenidos con el sistema de identificacin de herramientas contienen

informacin no solo de los valores del parmetro nominal pero tambin acerca
del parmetro encapsulado por la matriz de covarianza del parmetro. Una
medida de la fiabilidad del modelo, la incertidumbre calculada es influenciada
por disturbios externos afectando as el sistema, no modelando
dinmicamente, y la cantidad de datos recopilados. Podemos ver la
incertidumbre trazando su efecto en la respuesta del modelo. Por ejemplo,
podemos generar el diagrama de Bode de la estimacin de la funcin de
transferencia mostrando una desviacin estndar atado alrededor de la
respuesta nominal (Figura9).

Figura 9. La grafica de Bode del modelo aproximado mostrando la


incertidumbre del modelo.

Sistema de identificacin no lineal


Un modelo lineal de la dinmica del motor, creado mediante el uso de datos
recolectados de una regin lineal de su funcionamiento, es til para disear un
controlador efectivo. De cualquier manera, este modelo planta no puede
capturar el comportamiento no lineal mostrado por el motor. Por ejemplo, el
conjunto de datos 2 muestra que la respuesta del motor satura alrededor de
100, y el conjunto de datos 3 muestra que el motor no responde a pequeos
voltajes que podra ser por la friccin.
En este paso, crearemos un modelo de fidelidad mayor del motor DC. Para
hacer esto, estimamos un modelo no lineal para el motor DC. Una inspeccin
ms cerca de los datos revelan que el cambio en la pendiente de la respuesta
no es linealmente relacionada al cambio de voltaje.
Esta tendencia sugiere comportamientos no lineales de histresis similares. Los
modelos ARX no lineales (NLARX) ofrecen una flexibilidad considerable,

permitindonos capturar los comportamientos usando un amplio conjunto de


funciones no lineales, tales como wavelets y redes sigmoides. Adems, estos
modelos nos dejan incorporar lo que tenemos descubierto acerca de las no
linealidades del sistema usando regresores personalizados.
Para el modelado NLARX sea efectivo, necesitamos datos amplios en
informacin acerca de las no linealidades. Fusionamos tres conjuntos de datos
para crear el dato estimado. Fusionamos otros cinco conjunto de datos para
crear un largo multi-experimento de validacin de conjunto de datos.
>> mergedD = merge(z7,z3,z6)
Time domain data set containing 3 experiments.
Experiment Samples Sample Time
Exp1 5480 0.01
Exp2 980 0.01
Exp3 980 0.01
Outputs Unit (if specified)
Angle deg
Inputs Unit (if specified)
Voltage V
>> mergedV = merge(z1,z2,z4,z5,z8);

El modelo no lineal tiene varios componentes ajustables. Ajustamos el modelo


de rdenes, retrasos, tipo de funcin no lineal, y el nmero de unidades en la
funcin no lineal. Sumamos regresores que representan saturacin y
comportamiento de una zona muerta. Despus de varias interacciones,
escogemos un modelo de estructura que emplea una red sigmoidea con una
funcin lineal paralela y se us un subconjunto de regresores como entradas. El
parmetro de este modelo estimado fue aproximado para lograr las mejores
respuestas de simulado (Figura 10).

Figura 10. Modelo no lineal ARX con aproximacin GUI.

El modelo resultado tiene un excelente ajuste de <90% para los datos


aproximados as como para los datos de validacin. Este modelo puede ser
usado para el diseo del controlador as como para el anlisis y la prediccin.

Diseando el controlador
Estamos listos para disear un control PID para el modelo lineal con mayor
fidelidad. Tenemos que linealizar el modelo no lineal en un punto de
funcionamiento que usted elija y despus disear un controlador para este
modelo lineal. Ajustamos el control PID y seleccionamos sus parmetros (Figura
11).

Figura 11. Interfaz del sintonizador PID.


Tambin checamos como el controlador se ejecuta en el modelo no lineal. La
figura 12 muestra el modelo de Simulink que usamos para obtener la respuesta
de simulacin del modelo ARX no lineal.

Figura 12. Modelo de Simulink para probar el controlador del modelo lineal
aproximado.

Despus comparamos la respuesta del modelo lineal con el no lineal para una
posicin de referencia deseada de 60 (Figura 13).

Figura 13. Grafica respuesta escaln comparando las respuestas de las


simulaciones de modelos lineales y no lineales.

Probando el controlador en el hardware


Creamos un modelo en Simulink con el controlador y colocndolo en el Arduino
Uno utilizando soporte integrado de Simulink para desplegar los modelos en el
hardware (Figura 14).

Figura 14. Modelo con el controlador implementado en el Arduino. El


subsistema obtiene el ngulo recibido de una seal de referencia del puerto
serial y la convierte en el ngulo deseado del motor. El subsistema del motor
DC configura el Arduino para conectarse fsicamente con el motor.
Diseamos un controlador linealizando el modelo estimado ARX no lineal sobre
un punto especfico. El resultado para este controlador muestra que la
respuesta del hardware est muy cerca de los resultados de la simulacin
(Figura 15).

Figura 15. Esta grafica muestra la comparacin de la simulacin con la


respuesta en referencia escalonada para el controlador diseado usando un
modelo lineal
Tambin probamos que tan bueno es el controlador siguiendo una referencia al
azar. Podemos ver que el rendimiento de seguimiento del hardware est muy
cerca del que obtuvimos en la simulacin (Figura 16).

Figure 16. Esta grafica muestra el rendimiento de seguimiento simulado y en el


hardware para el diseo del controlador usando un modelo no lineal estimado.
Este ejemplo captura los pasos esenciales para el control de datos.
Recolectamos las entradas y salidas de datos de una tarjeta de hardware
determinada y usando el sistemas de identificacin de herramienta para la
construccin de modelos del sistema. Enseamos como puedes crear modelos
de baja y alta fidelidad y disear controladores usando modelos aproximados.
Verificamos el desempeo de nuestro controlador actual.

Conclusin
Podemos ver que el arduino es una herramienta universal en el rea de control,
ya que es una plataforma de cdigo abierto basada en un microcontrolador y
desarrollo de varios programas para as crear lo que hoy conocemos como
Arduino.
Por qu usar Arduino?
Existen varios tipos de microcontroladores solo que para programar algn otro
microcontrolador da ms trabajo o es ms complicado para quien lo use. Con el
arduino podemos simplificar la complejidad de programacin y su sistema de
hardware nos ayuda tener todo de una manera ms fcil
Por qu usar Simulink?
Es un programa que nos proporciona Matlab para modelar, simular y para
analizar sistemas dinmicos en tiempo real. Tambin nos proporciona una
interfaz de usuario grafica llamada GUI de la cual se habl muy poco en el
artculo. Para algunos usuarios es ms como usar Simulink por la programacin
en bloques.
Estos fueron los pasos que usamos en el ejemplo: la adquisicin de datos, la
identificacin de modelos de plantas lineales o no lineales, diseando y
simulando la retroalimentacin de controladores, e implementando estos
controladores en un procesador embebido en vida real.
Este artculo nos ensea a identificar un modelo planta a partir de las entradas
y salidas que usamos en el ejemplo, as mismo nos ensea a usar un modelo
para poder disear un controlador y poder implementarlo en el rea.

You might also like