Facultad de Ingenierı́a
Escuela de Ingenierı́a Eléctrica
Implementación de un controlador
adaptativo para un proceso de laboratorio,
utilizando la plataforma Arduino
Por:
Julio de 2014
Implementación de un controlador
adaptativo para un proceso de laboratorio,
utilizando la plataforma Arduino
Por:
Macarena Céspedes Quesada
v
Agradecimientos
Le agradezco al profesor Dr. Jose David Rojas Fernández por su tiempo y
disposición para aconsejarme durante la elaboración del presente trabajo.
A mis compañeros que se han convertido en amigos y que formaron parte de
este proceso.
A las personas que me han apoyado a lo largo de la carrera.
Profundamente agradecida con la Universidad de Costa Rica.
vii
Resumen
El objetivo primordial del presente trabajo fue implementar un control adap-
tativo utilizando la plataforma Arduino en un proceso de laboratorio.
El proceso que requirió control es de primer orden, por lo tanto se estudiaron
distintas técnicas de control adaptativo y se decidió utilizar el control adapta-
tivo por modelo de referencia (MRAC), estableciendo un modelo deseado de
primer orden más rápido. La regla de adaptación se obtuvo con la teorı́a de
estabilidad de Lyapunov para garantizar la estabilidad del sistema.
Para realizar la actualización de los parámetros del controlador se utiliza el
método numérico Runge-Kutta de segundo orden, ya que mostró mejores re-
sultados entre las múltiples pruebas y simulaciones que se realizaron en Matlab
implementando distintos métodos.
La implementación del control se realizó utilizando un Arduino UNO, que se
encarga de ejecutar el algoritmo de control.
Una vez implementado el controlador el sistema logra el seguimiento del valor
de referencia, de igual forma, ante perturbaciones y variaciones de parámetros
del proceso, logra retomar el valor de referencia propuesto.
ix
Índice general
Nomenclatura xv
1 Introducción 1
1.1 Alcance del proyecto . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Metodologı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Antecedentes 3
2.1 Control Adaptativo . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Reguladores autoajustables . . . . . . . . . . . . . . . . . . . . 4
2.3 Controladores adaptativos por modelo de referencia . . . . . . . 5
2.4 Método del gradiente (Regla del MIT) . . . . . . . . . . . . . . 6
2.5 Teorı́a de estabilidad de Lyapunov para sistemas dinámicos . . 7
2.6 Métodos numéricos . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.7 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 Desarrollo 17
3.1 Proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Implementación en Simulink . . . . . . . . . . . . . . . . . . . . 19
3.3 Selección del método numérico . . . . . . . . . . . . . . . . . . 23
5 Resultados 37
5.1 Implementación en el proceso . . . . . . . . . . . . . . . . . . . 37
5.2 Seguimiento del valor de referencia . . . . . . . . . . . . . . . . 37
5.3 Rapidez del Sistema . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4 Comportamiento ante perturbaciones . . . . . . . . . . . . . . . 42
6 Conclusiones y recomendaciones 51
6.1 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
xi
6.2 Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Bibliografı́a 53
xii
Índice de figuras
xiii
5.3 Salida del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.4 Error entre el proceso y el modelo de referencia . . . . . . . . . . . 39
5.5 Señal de control del sistema . . . . . . . . . . . . . . . . . . . . . . 40
5.6 Valor promedio de la señal de control del sistema . . . . . . . . . . 40
5.7 Salida del sistema para 100 ms . . . . . . . . . . . . . . . . . . . . 41
5.8 Parámetros del controlador para 100 ms . . . . . . . . . . . . . . . 41
5.9 Errores producidos para 100 ms . . . . . . . . . . . . . . . . . . . . 42
5.10 Cambio en el código para τm =0,6 . . . . . . . . . . . . . . . . . . . 42
5.11 Señal del controlador para τm =0,6 . . . . . . . . . . . . . . . . . . 43
5.12 Orificio al 50 % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.13 Señal de salida del sistema con pertubación al 50 % . . . . . . . . . 44
5.14 Señal de error del sistema con pertubación al 50 % . . . . . . . . . 45
5.15 Señal de control del sistema con pertubación al 50 % . . . . . . . . 45
5.16 Orificio al 100 % . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.17 Salida del sistema con pertubación al 100 % . . . . . . . . . . . . . 46
5.18 Comportamiento de θ1 y θ2 con perturbación al 100 % . . . . . . . 47
5.19 Aumento en la tensión de la señal de control. . . . . . . . . . . . . 47
5.20 Secuencia de la variación de las ganancias . . . . . . . . . . . . . . 47
5.21 Salida del sistema con variaciones en la ganancia. . . . . . . . . . . 48
5.22 Variación de la ganancia. . . . . . . . . . . . . . . . . . . . . . . . 48
5.23 Salida del sistema con variación en la ganancia. . . . . . . . . . . . 49
5.24 Comportamiento de θ1 y θ2 para variación en la ganancia. . . . . . 49
5.25 Cambio en la tensión para variación en la ganancia. . . . . . . . . 50
xiv
Nomenclatura
a parámetro del proceso.
dt paso de integración.
γ ganancia de adaptación.
h paso de integración.
I integral
K Ganancia de la planta.
J ı́ndice de desempeño.
xv
M IT Massachusetts Institute of Technology.
M RAC model reference adaptive control.
ms milisegundos.
NI national instruments.
p1 parámetro para aproximar θ1 .
p2 parámetro para aproximar θ1 .
φ pendiente estimada en método Runge-Kutta.
ϕ vector de señales de r y y.
PWM pulse-width modulation.
r entrada al sistema.
s segundos.
ST R self tuning regulator.
t tiempo.
T constante de tiempo de la planta.
Tm constante de tiempo del modelo de referencia.
τ constante de tiempo de la planta.
τm constante de tiempo del modelo de referencia.
θ1 parámetro del controlador.
θ2 parámetro del controlador.
u señal de control.
Uact señal de control.
V volts, unidad de tensión.
V (x) función de Lyapunov.
Yf valor final de la salida.
yi valor actual de la salida.
yi+1 aproximación del siguiente valor de la salida.
ym salida del modelo de referencia.
xvi
1 Introducción
La intención del trabajo fue el estudio del control adaptativo, que es una téc-
nica de control avanzado, con la finalidad de implementar un controlador uti-
lizando esta técnica para un proceso de laboratorio, empleando como recurso
principal la plataforma de desarrollo Arduino. Para tal objetivo fue necesario
considerar las caracterı́sticas del proceso, y con esta información se analizó
cual metodologı́a de control adaptativo se ajustaba a los intereses y alcances
del proyecto. Logrado esto, se diseñó el controlador con la metodologı́a que
se consideró adecuada y se implementó en una tarjeta de pruebas. Se realiza-
ron múltiples ensayos controlando un proceso que utiliza señales estándar de
tensión y se verificó el funcionamiento del controlador con el diseño propuesto.
1.2 Objetivos
Objetivo general
Implementar un prototipo de controlador adaptativo en la plataforma de desa-
rrollo Arduino de manera que pueda controlar un proceso a nivel de laborato-
rio.
Objetivos especı́ficos
Para el desarrollo de este proyecto se establecieron los siguientes objetivos:
• Investigar sobre las metodologı́as que existen alrededor del control adap-
tativo y documentar dicha investigación.
1
2 1 Introducción
1.3 Metodologı́a
El desarrollo del trabajo incluyó los siguientes pasos y procedimientos, listados
en secuencia:
3
4 2 Antecedentes
1
Z
J= e2 dt, (2.1)
2
La regla del MIT también puede ser utilizada cuando se requieren ajustar
muchos parámetros, según Åström y Wittermark (2008), “El sı́mbolo θ debe
ser interpretado como un vector, y (2.6) como el gradiente del error con res-
pecto a los parámetros”. Sin embargo este método no garantiza la estabilidad
a lazo cerrado de un sistema adaptativo. “El sistema puede hacerse inestable
si el modelo de referencia no se escoge adecuadamente o si la ganancia de
adaptación se elige demasiado grande” (Rubio y Sánchez, 1996).
V (x) → ∞ para k x k→ ∞
V (0) = 0
por lo tanto, para comprobar que el sistema es estable basta con demostrar
que V̈ (x) es acotada” (Åström y Wittermark, 2008).
Según Rubio y Sánchez (1996) para obtener la ley de adaptación con esta
teorı́a es necesario seguir los pasos:
2. Encontrar una función de Lyapunov como una función del error entre
las señales y del error en los parámetros del controlador.
u = θ1 r − θ2 y (2.12)
e = y − ym , (2.13)
dV 1 dθ2 1 dθ1
= −am e2 + (bθ2 + a − am )( − γye) + (bθ1 − bm )( + γre) (2.19)
dt γ dt γ dt
Entonces, es claro que para que esta función sea siempre negativa, se requiere
que los parámetros del controlador, θ1 y θ2 , tomen los valores:
dθ1
= −γre (2.20)
dt
10 2 Antecedentes
dθ2
= γye , (2.21)
dt
con lo que se llega a que:
dV
= −am e2 (2.22)
dt
Como se señaló anteriormente, V̇ (x) es negativa semi − def inida, por lo tanto
es necesario obtener la segunda derivada.
dV 2 de
2
= −2am e (2.23)
dt dt
Sustituyendo ė por (2.16):
dV 2
= −2am e (−am e − (bθ2 + a − am )y + (bθ1 − bm )r) , (2.24)
dt2
como se demuestra en (2.24), la segunda derivada de la función de Lyapunov
depende de la entrada al sistema r, de la salida del sistema y y del error e,
que son señales acotadas, lo cual implica que V̈ (x) es también acotada.
Por lo tanto se garantiza la estabilidad del sistema y la ley de control puede
escribirse:
dθ
= γϕe, (2.25)
dt
donde ϕ es el vector de señales.
h = ti+1 − ti , (2.29)
• Método de Euler
donde:
k1 = f (xi , yi ) (2.32)
k2 = f (xi + p1 h, yi + q11 k1 h) (2.33)
2.6. Métodos numéricos 13
a1 + a2 = 1 (2.34)
1
a 2 p1 = (2.35)
2
1
a2 q11 = (2.36)
2
Según Chapra y Canale (2010): “como hay una incógnita más que el nú-
mero de ecuaciones, no existe un conjunto único de constantes que satisfaga
las ecuaciones. Sin embargo considerando un valor para una de las constantes,
es posible determinar el valor de las otras tres.”
Dando un valor a a2 , se resuelven las ecuaciones, sin embargo hay infinitos va-
lores que a2 puede tomar, lo que conlleva a infinitos métodos de Runge-Kutta
de segundo orden.
a1 = a2 = 1 (2.38)
p1 = q11 = 1 (2.39)
Por lo tanto (2.31) adquiere la forma:
1 1
yi+1 = yi + k1 + k2 h, (2.40)
2 2
donde k1 y k2 se calculan:
k1 = f (xi , yi ) (2.41)
k2 = f (xi + h, yi + k1 h) (2.42)
2.7 Arduino
Como se mencionó con anterioridad, el algoritmo de control será implementado
en la plataforma Arduino, por lo tanto, es necesario conocer funciones que
pueden ser de utilidad para implementar en el controlador.
En la figura 2.5 se tiene la imagen de un Arduino UNO, se va a trabajar con
este modelo porque cumple con la caracterı́stica de que trabaja con rangos de
tensión de 0 V a 5 V, al igual que el proceso a controlar, como se verá más
adelante.
Funciones de Arduino
Entre la gran variedad de funciones que se encuentran disponibles, se explican
las siguientes de acuerdo a (www.arduino.cc, 2014), que son de utilidad para
el desarrollo del presente trabajo.
2.7. Arduino 15
• digitalRead(pin) y digitalWrite(pin,value)
Estas funciones permiten utilizar pines como entradas o salidas digitales res-
pectivamente. En el paréntesis se debe escribir el número del pin que se em-
pleará. Primero se requiere habilitar el pin a utilizar especificando si es una
salida o entrada. Si es una salida, digitalWrite() pondrá en la salida BAJO o
ALTO, dependiendo de la instrucción dada en value. Si es una entrada, digi-
talRead lee en la entrada BAJO para 0 V o ALTO para 5 V.
Si el pin especificado como entrada no se conecta, la función digitaRead() pue-
de leer BAJO o ALTO.
Los pines que sirven para estas funciones son los que en 2.5 están identificados
de 0 al 13.
• analogRead(pin)
Esta función permite leer los valores en la entrada de los pines designados
como analógicos, los cuales son A0, A1, A2, A3, A4 y A5.
Se pueden leer tensiones entre 0 V y 5 V, cuentan con un convertidor analógico
digital de 10 bits que transforma la variable entre un rango de 0 a 1023 unida-
des. Esto quiere decir que cada unidad equivale a 0,0049 V aproximadamente.
• analogWrite(pin,value)
• millis() y delay()
Ambas funciones son llamadas de tiempo, esto porque millis() permite medir
el tiempo en milisegundos que el arduino tarda en ejecutar un programa o
función. La función delay() espera el tiempo especificado, en milisegundos,
dentro de su paréntesis para realizar la próxima actividad.
3 Desarrollo
3.1 Proceso
El proceso de laboratorio en el que se implementa el control adaptativo es el
de flujo y temperatura que se encuentra en el Control Engineering Research
Laboratory (CERLab), ubicado en la Escuela de Ingenierı́a Eléctrica de la
Universidad de Costa Rica. El proceso se muestra en la figura 3.1.
A pesar de que el proceso abarca flujo y temperatura, solo se va a trabajar
controlando la parte de flujo. Como se observa, para controlar el flujo se pue-
den utilizar entradas de tensión que varı́an de 0 V a 5V o de corriente que van
de 4 mA a 20 mA, como se muestra en la figura 3.2
Además el proceso permite la introducción de perturbaciones mediante un
orificio en la parte superior, dependiendo de la distancia que se abra, el com-
portamiento del proceso varı́a.
Es necesario contar con el modelo de la planta para efectuar simulaciones del
sistema. Para esto, se precisa que la planta trabaje en un punto de operación
en estado estacionario. Aplicando un cambio en la entrada se observa el cam-
bio que se presente en la salida y empleando un método de identificación se
obtiene una estimación del modelo.
Se procedió a aplicar 2,5 V a la entrada del proceso y luego se realizó un cam-
bio del 20 % que corresponde a 0,5 V para registrar la variación en la salida.
En la figura 3.4 se muestra el gráfico con la entrada y la salida del proceso, el
comportamiento corresponde a una planta de primer orden según la curva de
reacción.
La fórmula del modelo de primer orden según Alfaro (2013).
17
18 3 Desarrollo
K
P (s) = (3.1)
τs + 1
En donde la ganancia del proceso se calcula con la ecuación:
∆Y
K= , (3.2)
∆R
∆Y representa el cambio en la salida del proceso y ∆R representa el cambio
en la entrada. Por lo tanto aplicando (3.2) se obtiene que K = 1,35.
3,175 − 2,5
K= = 1,35 (3.3)
3 − 2,5
Para obtener la constante de tiempo T se necesita calcular el 63,2 %del valor
final de la salida Y .
Yf = 3,175 − 2,5 = 0,675 (3.4)
0,632 ∗ 0,675 = 0,4266 (3.5)
2,5 + 0,4266 = 2,9266 (3.6)
Localizando en la gráfica el valor de (3.6) se obtiene el periodo de tiempo T .
entrada al proceso no debe ser muy cercana al lı́mite permitido, que son 5V
en este caso.
Los resultados anteriores indican que el modelo matemático más acertado es
el de Runge-Kutta, por lo tanto es el escogido para introducir en el algoritmo
de control.
Es importante aclarar que los análisis anteriores se basaron en que el cam-
bio en la entrada es 0,5 V, o sea, de un 10 %, pero es necesario observar el
comportamiento de la señal de control para cambios mayores en el valor de
referencia. Como el sistema se encuentra trabajando al 50 %, el mayor cambio
que podrı́a sufrir es del 50 %, como se observa en la figura 3.18. La señal de
control alcanza el 90 % aproximadamente como valor máximo.
Se hacen pruebas conservando 50 % en la referencia, pero aumentando la
rapidez del modelo deseado, como se presenta en la figura 3.19. Se concluye
que valor óptimo de τm es el unitario, ya que con valores menores a este, si
se producen cambios grandes en el valor de referencia, la entrada al proceso
sobrepasarı́a el lı́mite, lo cual incurrirı́a en un mal funcionamiento o posible
daño del sistema.
26 3 Desarrollo
Figura 3.14: Código para Método de Euler y para Regla del Trapecio
31
32 4 Implementación del Controlador
en la figura 4.3.
La entrada A0 se encarga de leer el valor de referencia y requiere la misma
conversión utilizada para la lectura de la salida del proceso.
Con base en esto, se calcula el valor del error y la señal de control, seguidamen-
te la señal de control se crea utilizando una salida PWM, para esto se calcula
el ciclo al cual debe trabajar la señal, de tal manera que el valor promedio
corresponda al requerido según el controlador.
Se habilita el pin 3, el cual es para salidas de este tipo, como se aprecia en 4.3.
Los valores de la señal del controlador se encuentran entre 0 V y 5 V, como
se mencionó en el capı́tulo 2 el ciclo de trabajo se especifica en valores entre
0 y 255, por lo tanto es necesario realizar la conversión presentada en (4.1),
donde Uact es el valor actual de la señal de control.
Uact
ciclo = ∗ 255 (4.1)
5
Se divide entre 5 para obtener la proporción del valor total de la señal de
control y luego se multiplica por 255 para obtener su equivalencia entre 0 y
255. La ecuación se escribe de la siguiente forma en el código:
4.3 Conexiones
El diagrama de componentes del sistema se muestra en la figura 4.6, también
se dibujaron las conexiones entre los componentes. La salida del proceso se
conecta a la tarjeta NI para que guarde los valores, y se conecta al pin A1 del
Arduino para que realice los cálculos necesarios como se mencionó anterior-
36 4 Implementación del Controlador
mente.
La señal de control se trasmnite por el pin 3 y también es capturada por la
tarjeta NI. La señal de referencia se difunde de la tarjeta NI hacia el Arduino
para que realice los cálculos respectivos. El resto son conexiones a tierra, in-
cluyendo el pin 7 del arduino, que debe estar en BAJO para que realice los
procedimientos.
5 Resultados
37
38 5 Resultados
a través del puerto serial, lo que afecta la rapidez del mismo. Sin embargo, esto
se realizó para analizar el comportamiento de los parámetros del controlador.
En la figura 5.7 se observa la salida del sistema ante la referencia y en la figura
5.8 se observa el comportamiento de los parámetros del controlador, además
en la figura 5.9 se muestran los errores producidos entre la entrada del sistema
y la salida del modelo deseado.
42 5 Resultados
Se modificó la ganancia del proceso utilizando la perilla con la cual se fijan los
parámetros del sensor de flujo, esto para simular una perturbación que afecte
los parámetros del proceso. El cambio de la ganancia se realizó de acuerdo a
la secuencia mostrada en la figura 5.20. En la posición 1 es cuando la planta
se encuentra funcionando normalmente, seguidamente se ajusta la ganancia
5.4. Comportamiento ante perturbaciones 45
6.1 Conclusiones
Utilizando el controlador diseñado el sistema presenta un buen seguimiento del
valor de referencia en las pruebas realizadas, además actúa de manera efectiva
tanto para cambios en los parámetros del proceso como ante perturbaciones,
lo que lo convierte en una herramienta útil para controlar el proceso. Por lo
tanto se cumple el objetivo principal del presente trabajo.
Una de las ventajas del control adaptativo es que no se diseña para un punto
de operación en particular, lo que proporciona cierta flexibilidad en el sistema
para trabajar en varios puntos de operación.
El método numérico Runge-Kutta de segundo orden proporciona es efectivo
para la actualización de los parámetros del controlador. Se pudo haber esco-
gido un método que utilizara mayor cantidad de valores iniciales para obtener
aproximaciones más exactas, como la regla de Simpson, sin embargo, se podrı́a
comprometer la memoria del Arduino.
Utilizar Arduino fue una gran ventaja, ya que además de ser un componente
económico y de software gratuito, utiliza un lenguaje sencillo. Posee gran va-
riedad de funciones para manipular el hardware lo que facilita y disminuye el
tiempo de programación.
A pesar de que la plataforma Arduino no posee salidas de tensión directa que
varı́en en un determinado rango, las salidas PWM son una alternativa útil,
ya que el ciclo de trabajo de la señal se configura fácilmente para obtener el
valor deseado de tensión.
6.2 Recomendaciones
Se puede mejorar el rendimiento del controlador utilizando un microprocesador
que posea una mayor frecuencia de reloj lo que permitirı́a que los cálculos se
ejecuten con mayor rapidez.
Existen otras plataformas que poseen mayor resolución en los convertidores
analógicos digitales, lo cual producirı́a mejor exactitud en la lectura y escritura
de valores. El Arduino Due cumple este requisito, además la frecuencia de reloj
es de 84 MHz, mucho mayor en comparación al Arduino Uno que trabaja a
16 MHz. Sin embargo la tensión a la que trabaja el sistema es de 3,3 V, por
51
52 6 Conclusiones y recomendaciones
www.arduino.cc (2014).
53