Vous êtes sur la page 1sur 9

Institución Universitaria CESMAG.

Santacruz Juan José, Quiñones Daniel David, Paredes Mateo José 1


Informe Control Digital Nº. 4

Informe Control Digital Nº. 5: Control de una Planta


de Nivel de Agua
Santacruz Juan José, Quiñones Daniel David, Paredes Mateo José
{jj.santa.97, danielaudiopro, matiazoviedo}@gmail.com
Institución Universitaria CESMAG

ir acoplado con una polea y un flotador con su respectivo


I. INTRODUCCIÓN contrapeso, el cual tiene que subir o bajar dependiendo del
nivel de agua del tanque superior de la planta.
En el informe se presenta el diseño de un controlador para
una planta de nivel. El objetivo de un controlador consiste La principal función del driver L293D es integrar la etapa
en que la planta de nivel llegue a una referencia de agua, de potencia y manejo del PWM del motor que compone
teniendo en cuenta el caudal de salida y de entrada del la motobomba con el Arduino UNO ya que este último no
sistema. El caudal de entrada consiste en una motobomba, suministra la corriente necesaria para encender el motor
que con ayuda de un motor DC impulsa agua teniendo en DC.
cuenta un PWM generado por un Arduino UNO.
En la figura 1 se puede observar el montaje físico
En forma general, para el desarrollo del controlador de la realizado de la planta nivel de agua con sus respectivos
planta de nivel se deben seguir los siguientes pasos: componentes.

1. Identificación de la función de transferencia por medio


del toolbox de MATLAB denominado ident. Figura 1. Montaje de la planta de nivel de agua

2. Realizar el controlador analógico por cualquier B. Identificación de la función de transferencia


método conocido anteriormente (Ziegler-Nichols,
Cohen-Coon o por LGR).
El primer paso para realizar el proceso de identificación
3. Discretización del controlador PID, para esto se utiliza de la función de transferencia consiste en programar un
un método de discretización (Euler I, Euler II o código en la IDE de Arduino que simplemente genera un
Tustin). PWM que enciende el motor para proveer agua a la planta.
Cabe resaltar que el mapeo se lo realizo desde 0 a 1023
4. Aplicación del controlador digital por medio de un donde la relación es 0 V y 5 V respectivamente.
Arduino UNO.
El proceso de toma de datos consiste en retirar el
Los pasos anteriormente mencionados se mostrarán a lo potenciómetro de referencia de la planta y sustituirlo por
largo del desarrollo del informe. De igual forma se una entrada de la tarjeta de adquisición myDAQ, esto con
mencionarán diferentes pasos secundarios que serán el objetivo de controlar la referencia desde un programa
importantes para el diseño y aplicación del controlador de LabVIEW. Dentro del programa se debe establecer un
digital. escalón, en este caso de 4 a 4.5 V, luego se espera que el
sistema se estabilice en primer valor, después de un
tiempo se hace el salto de 4 a 4.5 V, y como en el primer
II. DESCRIPCIÓN DEL PROCESO caso se debe esperar el sistema se estabilice en el valor
final.

A. Planta de nivel de agua La planta de nivel tardo en hacer el proceso de toma de


datos en aproximadamente 256 segundos, en este
Para el montaje de la planta se utilizó una motobomba con intervalo la tarjeta de adquisición myDAQ registro 820
un motor DC de 9V, dos potenciómetros (referencia y datos, para poder realizar la gráfica Voltaje Sensor vs.
sensor) y un driver L293D. El potenciómetro sensor debe Tiempo es necesario calcular el tiempo de muestreo.
Institución Universitaria CESMAG. Santacruz Juan José, Quiñones Daniel David, Paredes Mateo José 2
Informe Control Digital Nº. 4

820 muestras
= 3.2 muestras⁄segundo
256 segundos

El tiempo de muestreo es en inverso del anterior


resultado:

1
T. M = ≈ 0.312 segundos
3.2

La programación de bloques que se realizó en LabVIEW


se la puede observar en la figura 2. Figura 3. Interfaz System Identification Toolbox
(ident) para la obtención de modelo de proceso

C. Diseño del controlador analógico

Cabe resaltar que, aunque el control que se realiza en el


sistema propuesto es digital, primero de debe diseñar
controlador analógico, el método de diseño que se eligió
fue por LGR.

Anteriormente se obtuvo la función de transferencia de la


Figura 2. Programación en LabVIEW para la
planta, la cual es la siguiente:
obtención de datos del sistema
0.13457
Una vez obtenidos los datos en una hoja de cálculo, se P(s) =
exportan los datos al ident de MATLAB, donde la entrada 1 + 74.063s
y salida corresponden al voltaje de entrada y el voltaje
Como se puede observar, la planta corresponde a un
medido por el potenciómetro sensor, respectivamente.
sistema de primer orden, por lo que solamente tiene un
polo. Para conocer la ubicación del polo se factoriza la
Una vez importados los datos al toolbox se aproxima un
anterior función de transferencia.
modelo matemático para la planta. En la interfaz que tiene
el ident (figura 3) se puede obtener diferentes acoples a la 0.13457 0.00181
señal original obtenida a partir de los datos. Para esta P(s) = =
1 s + 0.0135
74.063 ∙ (s +
planta y teniendo en cuenta los datos se obtuvo una 74.063)
función de transferencia de primer orden.
En la anterior planta el polo se encuentra en -0.0135 sobre
Process model with transfer function: el eje real del lugar geométrico.

Kp Teniendo en cuenta lo anterior se procede a diseñar el


G(s)= -------- controlador PID. Como primer paso se establece los
1+Tp1*s
parámetros de sobrepaso (ov) y tiempo de asentamiento
Kp = 0.13457 deseado en la planta cuando se aplica el control (t sc).
Tp1 = 74.063
ov = 5%
t sc = 60 seg

Una vez establecidos los anteriores parámetros se procede


a encontrar el ángulo θ, con el cual se encontrará el factor
de amortiguamiento (ρ).

π
θ = tan−1 (− )
ln(ov)
Institución Universitaria CESMAG. Santacruz Juan José, Quiñones Daniel David, Paredes Mateo José 3
Informe Control Digital Nº. 4

encontrar los ángulos ∝1 , ∝2 , 𝛽1 y 𝛽2 . Los ángulos ∝ se


−1
π los calcula con funciones trigonométricas y los ángulos 𝛽
θ = tan (− ) = 46.36°
ln(0.05) con el criterio de ángulo.

Para calcular el factor de amortiguamiento se utiliza la 0.06


siguiente fórmula: ∝1 = 180° − tan−1 ( ) = 135°
0.06

ρ = cos(θ) 0.06
∝2 = 180° − tan−1 ( ) = 127.7°
0.06 − 0.0135
ρ = cos(46.36°) = 0.69
β1 + β2 − 135° − 127.7° = −180°
Obtenido el valor del factor de amortiguamiento se
procede a encontrar la frecuencia natural del sistema Se debe tener en cuenta que los dos ceros en la posición 𝑎
(ωn ). están sobrepuestos y por ende sus ángulos también. Por lo
tanto β1 = β2 = β1,2 .
4
ωn =
ρ ∙ t sc 2β1,2 = −180° + 135° + 127.7° = 82.7°

4 82.7°
ωn = = 0.096 β1 = β2 = 41.35°
(0.69) ∙ (60) 2

Como siguiente paso se reemplaza los valores Para encontrar el valor de la ubicación de los ceros cero
anteriormente encontrados en la siguiente ecuación, la (𝑎), se puede realizar por medio de un triángulo
cual corresponde a los polos de un sistema rectángulo (figura 5) obtenido a partir de la figura 4 ya
subamortiguado, esto con el objetivo de encontrar el valor que se conoce el valor 𝛽1,2 y el cateto opuesto (C. O), lo
de los polos deseados. que queda por encontrar es el cateto adyacente, que se lo
representa con la letra 𝑥.
s = −ρ ∙ ωn ± ωn ∙ 𝑗√1 − ρ2
C. O
tan(β1,2 ) =
s = −(0.69) ∙ (0.096) ± (0.096) ∙ 𝑗(√1 − 0.692 ) 𝑥
C. O 0.06
s ≈ −0.06 ± 𝑗0.06 𝑥= = = 0.068
tan(β1,2 ) tan(41.35°)

Figura 4. Diagrama de polos y ceros de 𝐏(𝐬) Figura 5. Triangulo rectángulo para calcular 𝒂

En la figura 4 se puede observar la ubicación de los polos Finalmente, el resultado de 𝑎 es el siguiente:


deseados y del polo de la planta. De la misma forma se
puede apreciar un polo en el origen y dos ceros, estos 𝑎 = 0.068 + 0.06 = 0.128
elementos son propios del controlador PID. Los ceros
están en la ubicación 𝑎, el objetivo es encontrar este valor, Teniendo en cuenta el anterior resultado, las componentes
ya que a partir de este se encuentra la componente integral integral y derivativa se las realiza de la siguiente forma:
y derivativa del controlador, pro como primer se deben
Institución Universitaria CESMAG. Santacruz Juan José, Quiñones Daniel David, Paredes Mateo José 4
Informe Control Digital Nº. 4

1 1 2 ∙ Td T
2∙𝑎 = → Td = = 3.9 𝑞1 = K p ∙ (−1 − + )
Td 2 ∙ (0.128) T Ti

1 1 Td
𝑎2 = → Ti = = 15.65 𝑞2 = K p ∙ ( )
Td ∙ Ti (0.128)2 ∙ (3.9) T

Para encontrar la componente proporcional (K p ) se Donde T es el tiempo de muestreo. Este tiempo no se lo


procede a utilizar el criterio de magnitud, el cual está debe confundir con el calculado anteriormente para el
establecido como: diseño del controlador analógico (T. M). El tiempo de
muestreo se utilizará en el código de Arduino como un
|F. Tcontrolador ∙ F. Tplanta | =1 delay para que en determinado tiempo el programa
polo deseado realice una acción de control y actualice valores como
𝑢k−1 , 𝑒k−1 y 𝑒k−2 .
K p ∙ Td ∙ (s + 𝑎)2 5.167
| ∙ | =1
s s + 5.172 s=−0.06+j0.06 Uno de varios métodos para calcular el tiempo de
muestreo es analizar el diagrama de Bode de la función de
K p ∙ 3.9 ∙ (s + 0.128)2 0.00182 transferencia. Este diagrama proporciona la frecuencia de
| ∙ | =1 corte que es necesaria para calcular el tiempo de muestreo
s s + 0.0135 s=−0.06+j0.06 para el controlador digital.

Se evalúa en el polo deseado y se obtiene: El proceso para calcular el tiempo de muestreo consiste
en observar en el diagrama de Bode una caída de -3dB del
K p ∙ |−0.009 + 𝑗0.0000112| = 1 valor máximo de magnitud del sistema. En la figura 6 se
puede observar el diagrama con su respectivo valor
Despejando K p , da como resultado: máximo y su caída.

K p = 1.11

En resumen: Ti = 15.65
Td = 3.9
K p = 1.11

D. Discretización del controlador PID

Existen varios métodos de discretización de


controladores, los cuales son aproximación Euler hacia
adelante (Euler I), Euler hacia atrás (Euler II) y Tustin o
trapezoidal. Para este sistema se implementó la
aproximación Euler hacia adelante.

Para discretizar el controlador PID diseñado Figura 6. Diagrama de Bode de la función de


anteriormente se debe utilizar la siguiente expresión: transferencia

𝑢k = 𝑢k−1 + 𝑞0 𝑒k + 𝑞1 𝑒k−1 + 𝑞2 𝑒k−2 Teniendo en cuenta los datos proporcionados en la figura


6, se procede a calcular el tiempo de muestreo T por
La anterior expresión consiste en la acción de control que medio de la siguiente formula:
se le aplicará a la planta. Las constantes 𝑞0 , 𝑞1 y 𝑞2 se las
puede calcular con las siguientes ecuaciones: 1
fs ≥ 10 ∙ fc → T=
fs
Td
𝑞0 = K p ∙ (1 + )
T
Institución Universitaria CESMAG. Santacruz Juan José, Quiñones Daniel David, Paredes Mateo José 5
Informe Control Digital Nº. 4

Donde: fs : Frecuencia de muestreo (rad/s)


fc : Frecuencia de corte (rad/s)

La frecuencia de corte que se tiene es la de caída, la cual


es 0.0135 rad/s. Por lo tanto, el tiempo de muestreo es:

1
fs ≥ 0.135 → T= = 7.4 seg
0.135

Una vez obtenido el tiempo de muestreo, se puede Figura 7. Gráfica de datos Voltaje Sensor vs. Tiempo
calcular las constantes 𝑞0 , 𝑞1 y 𝑞2 las cuales dan como a partir de la hoja cálculo
resultado:
En la figura 8 se puede observar la validación de la gráfica
0.019 7, ya que al ingresar los datos al toolbox ident se ajustan
𝑞0 = 4.87 ∙ (1 + ) = 5.48
0.15 y además se ajusta el tiempo establecido de 113 segundos.
De la misma forma en la parte inferior se observa el
2 ∙ (0.019) 0.15 escalón de 3 a 4 cm que se aplicó.
𝑞1 = 4.87 ∙ (−1 − + ) = 3.02
0.15 0.08

0.019
𝑞2 = 4.87 ∙ ( ) = 0.61
0.15

Teniendo en cuenta todo lo anterior, el programa en el


IDE de Arduino deberá cumplir con el siguiente
algoritmo:

1. Esperar a que se cumpla el tiempo de muestreo.


2. Leer el sensor yk y la referencia rk de la planta.
3. Calcular el error (𝑒k = rk − yk )
4. Calcular 𝑢k
5. Aplicar 𝑢k
Figura 8. Grafica de datos Voltaje Sensor vs. Tiempo
6. Actualizar valores 𝑢k−1 , 𝑒k−1 y 𝑒k−2 .
a partir de ident

En la figura 9 se observa la respuesta del modelo


III. RESULTADOS
aproximado de la planta por parte del toolbox ident de
MATLAB.
A. Identificación de la función de transferencia

La grafica de los datos obtenidos a partir de la hoja de


cálculo se la puede observar en la figura 7.

Como se puede observar en la figura 7, la señal inicia en


valores cercanos a 3 y termina de igual manera en 4, sin
embargo, el sistema no llega a las referencias establecidas
simplemente oscila en valores aproximados a la
referencia, lo que se puede decir que la señal puede ser
considerada con componentes de ruido. De la misma
forma se puede ver que la señal se ajusta al tiempo de
finalización de 113 segundos.

Figura 9. Grafica obtenida a partir de MATLAB del


modelo estimado
Institución Universitaria CESMAG. Santacruz Juan José, Quiñones Daniel David, Paredes Mateo José 6
Informe Control Digital Nº. 4

En la anterior figura se pueden observar dos curvas, una las oscilaciones vistas en la figura 7 con el objetivo de que
de color negro, la cual corresponde a los datos obtenidos la planta llegue a la referencia deseada.
anteriormente y la curva azul es la estimación de la curva
de color negro. Además, esta segunda curva define el
B. Diseño del controlador analógico
porcentaje de adaptación a la curva de los datos, en este
caso el acople fue del 82.93%.
Después de obtener los valores de K p , Ti y Td del
La función de transferencia se simuló en Simulink, con el controlador, se procede a realizar la simulación en
fin de observar el tiempo de establecimiento en lazo Simulink con el objetivo de verificar el cumplimiento del
abierto de la planta. El bloque step fue configurado a un tiempo de asentamiento y el sobrepaso para el cual se
valor final de 1 y con un tiempo de escalón igual a 0. diseñó el controlador.

En la figura 12 se indica el diagrama de bloques del


controlador en Simulink sin sintonizar, y en la figura 13
se muestra la respuesta de la planta a este control.

Figura 12. Diagrama de bloques del controlador sin


Figura 10. Diagrama de bloques implementado en sintonización en Simulink
Simulink

Figura 13. Respuesta de la planta al control PID sin


Figura 11. Respuesta de la función de transferencia en sintonizar
lazo abierto
Como se puede observar en la figura 13 tiempo de
Como se puede observar en la figura 11, el tiempo de asentamiento es mayor a 0.4 segundos y existe un
estabilizacion de la respuesta en lazo abierto es sobrepaso mayor al 5%, para hacer un mejor tiempo se
aproximadamente 1.5 segundos. Este tiempo se lo utilizó sintoniza el controlador (K p = 10, Ti = 0.08 y , Td =
en la anterior sección de descripción del proceso para 0.0019), obteniendo su respuesta en la figura 14. De la
calcular las constantes de la acción de control. misma manera, el step está configurado a un valor final
de 1.
De igual forma en la figura 11 se mira que el tiempo de
estabilización es bueno y además no tiene sobrepaso, sin En la figura 14 se puede ver que el tiempo de
embargo, se debe diseñar el controlador por dos razones, asentamiento mejoró con respecto a la respuesta vista en
la primera mejorar el tiempo de estabilización y eliminar la figura 14. Sin embargo, no se logró eliminar el
Institución Universitaria CESMAG. Santacruz Juan José, Quiñones Daniel David, Paredes Mateo José 7
Informe Control Digital Nº. 4

sobrepaso del sistema, pero se lo redujo a un máximo de Kp ∙ T


5% de su valor final. K p_discreto = K p − ( )
2 ∙ T𝑖

De igual forma se colocan las variables 𝑢k−1 , 𝑒k−1 y 𝑒k−2


en 0, para asegurar este valor en la primera iteración.

Kp = 5; Ti = 0.08; Td = 0.02;
ts = 0.1;
Kp_d = Kp-((Kp*ts)/(2.0*Ti));

// Euler hacia adelante (Euler I)


q0 = Kp_d*(1.0+(Td/ts));
q1= Kp_d*(-1.0-(2.0*(Td/ts))+(ts/Ti));
q2 = Kp_d*(Td/ts);
Uk_1 = 0; ek_1 = 0; ek_2 = 0;
Uk_max = 40938.76;
Figura 14. Respuesta de la planta al control PID con
sintonización
Aparece una constante denominada 𝑢k_max. Es muy
importante conocer este valor ya que se mapeará una
C. Discretización del controlador PID nueva referencia de la planta, como se había dicho antes
la planta ya está retroalimentada (figura 3), sin embargo,
Anteriormente se realizó la respectiva sintonización del al aplicar el control se retroalimenta nuevamente el
controlador, por lo que las constantes 𝑞0 , 𝑞1 y 𝑞2 que sistema, con la diferencia de que existe el bloque del
contiene la expresión de la acción de control cambian. Las controlador, por lo que ahora se tiene dos errores: 𝑒k y
constantes dan como resultado: 𝑒planta . Esto se puede observar en la figura 15.

0.0019
𝑞0 = 10 ∙ (1 + ) = 10.12
0.15

2 ∙ (0.0019) 0.15
𝑞1 = 10 ∙ (−1 − + ) = 8.53 Figura 15. Diagrama de bloques de la planta con su
0.15 0.08
controlador
0.0019
𝑞2 = 10 ∙ ( ) = 0.12 Para calcular la constante 𝑢k_max se debe suponer que el
0.15
error 𝑒k es el máximo, este es el peor de los casos que
Sin embargo, para el desarrollo del código en la IDE de puede ocurrir en la planta y la acción de control es
Arduino se decidió trasladar las formas de las ecuaciones máxima, por lo tanto se debe calcular la acción de control
para que el programa las calcule, esto facilita en el caso 𝑢k manualmente. Además, se deberán realizar 4
que se tenga que sintonizar el controlador o cambio del iteraciones del algoritmo de discretización del controlador
tiempo de muestreo para evitarse el recálculo de las PID cuando el error es máximo, el procedimiento es el
constantes 𝑞0 , 𝑞1 y 𝑞2 . siguiente:

Para la programación del código se utilizó el algoritmo 𝑒k1 : Error 𝑒k en la iteración 1


visto en la sección de descripción del proceso. A 𝑒k2 : Error 𝑒k en la iteración 2
continuación, se mostrará la explicación del código que se 𝑒k3 : Error 𝑒k en la iteración 3
implementó, mostrando las partes del algoritmo para la
discretización de un controlador PID. 𝑢k1 : Acción de control 𝑢k en la iteración 1
𝑢k2 : Acción de control 𝑢k en la iteración 2
En el siguiente segmento de código se muestra el cálculo 𝑢k3 : Acción de control 𝑢k en la iteración 3
de las constantes 𝑞0 , 𝑞1 y 𝑞2 . Además se calcula un K p
discreto, el cual está dado por la fórmula: Se nombra diferentes 𝑒k1 , 𝑒k2 y 𝑒k3 para diferenciar el
error 𝑒k en las diferentes iteraciones, este va ser 1023 en
las iteraciones 1, 2 y 3. De la misma forma se realiza
Institución Universitaria CESMAG. Santacruz Juan José, Quiñones Daniel David, Paredes Mateo José 8
Informe Control Digital Nº. 4

diferentes 𝑢k , por la misma razón anterior. La acción de cuenta los resultados que se obtuvieron en el primer
control 𝑢k3 es igual a 𝑢k_max. segmento de código.

Iteración 0: delay(ts*100);
valorpote_ref = analogRead(A0);
𝑒k1 = 𝑒k3 = 𝑒k3 = 0 valorpote_sen = analogRead(A1);
𝑒k−1 = 𝑒k−2 = 0 ek = valorpote_ref - valorpote_sen;
Uk=Uk_1+((q0*ek) +(q1*(ek_1))+(q2*(ek_2)))
𝑢k1 = 𝑢k3 = 𝑢k3 = 0
𝑢k−1 = 0
En el siguiente segmento de código se realiza el proceso
Iteración 1: de saturación de la acción de control, en esta parte es muy
importante el valor de 𝑢k_max, ya que se mapea la nueva
𝑒k1 = 1023 referencia entre 0 a 𝑢k_max y 0 a 1023. Además, se
𝑢1 = 𝑢k−1 + 𝑞0 𝑒k1 + 𝑞1 𝑒k−1 + 𝑞2 𝑒k−2 programa condiciones para 𝑢k . Si 𝑢k es menor a 0 𝑢k = 0
𝑢1 = 𝑞0 𝑒k1 con esta condición se asegura que la acción de control sea
𝑢k−1 = 10352.76 siempre positiva. Y por último, si 𝑢k es mayor a 𝑢k_max ;
𝑢k_ = 𝑢k_max. Si no se cumple las anteriores condiciones
𝑒k1 = 𝑒k−1 = 0 𝑢k = 𝑢k_ .
𝑒k−1 = 𝑒k−2 = 0
𝑢k−1 = 𝑢k1 = 10352.76 if (Uk<0){
Uk = 0;
Iteración 2: }
else if (Uk>Uk_max){
𝑒k2 = 1023 Uk = Uk_max;
}
𝑢2 = 𝑢k−1 + 𝑞0 𝑒k2 + 𝑞1 𝑒k−1 + 𝑞2 𝑒k−2 else{
𝑢2 = 𝑢k−1 + 𝑞0 𝑒k2 + 𝑞1 𝑒k−1 Uk;
𝑢2 = 29431.71 }
set_point = map(Uk, 0, Uk_max, 0, 1023);
𝑒k2 = 𝑒k−1 = 1023
𝑒k−1 = 𝑒k−2 = 𝑒k2 = 1023 La línea de código en donde se encuentra el set_point
𝑢k−1 = 𝑢k2 = 29431.71 consiste en la nueva referencia de la planta, como se
puede observar en la figura 15.
Iteración 3:
Luego, se muestra el código de la planta, con su respectiva
𝑒k3 = 1023 retroalimentación, donde se puede observar distintas
𝑢k3 = 𝑢k−1 + 𝑞0 𝑒k1 + 𝑞1 𝑒k−1 + 𝑞2 𝑒k−2 condiciones para el manejo del PWM dependiendo del
𝑢k3 = 𝑢k_max = 40938.76 error de la planta 𝑒planta . Además se muestra el último
paso del algoritmo del control PID, el cual consiste en
Teniendo en cuenta lo anterior, el siguiente segmento de
actualizar valores de 𝑢k−1 , 𝑒k−1 y 𝑒k−2 .
código corresponde al primer y segundo paso del
algoritmo los cuales consisten en comprobar el tiempo de
e_planta = set_point - valorpote_sen;
muestreo y en leer el valor de la referencia (potenciómetro
if (e_planta<0){
No. 1) y el valor del sensor (potenciómetro No. 2). Esto digitalWrite(pin2,HIGH);
se realiza por medio de los puertos análogos del Arduino digitalWrite(pin7,LOW);
UNO. Como se puede observar el tiempo de muestreo se e_planta = e_planta*-1;
lo debe multiplicar por un factor de 100 ya que el valor }
calculado anteriormente se lo había calculado en else if (e_planta>0){
digitalWrite(pin2,LOW);
segundos y la función delay en el IDE de Arduino solo digitalWrite(pin7,HIGH);
admite el tiempo en milisegundos. }
else{
Además se realiza el tercer paso, el cual consiste en digitalWrite(pin2,LOW);
encontrar el valor del error externo del sistema 𝑒k (figura digitalWrite(pin7,LOW);
}
15) y se calcula la acción de control 𝑢k3 teniendo en
Institución Universitaria CESMAG. Santacruz Juan José, Quiñones Daniel David, Paredes Mateo José 9
Informe Control Digital Nº. 4

pwm1 = map(e_planta, 0,1023,100,255);  Como se puede observar 11 la respuesta de la planta


analogWrite(pinEn,pwm1); en lazo abierto muestra que no necesita control
alguno, sin embargo, el rizado visto en la figura 7
ek_1 = ek_2; muestra todo lo contrario.
ek_2 = ek;
Uk_1 = Uk;

IV. CONCLUSIONES

 En la figura 9 se puede observar que el acople de la


estimación para el modelo de la función de
transferencia es del 82.93%, esto sucede ya que la
planta oscilaba con valores cercanos a la referencia,
este efecto se lo puede ver con más claridad en la
figura 7.

 En primera instancia el tiempo de muestro para la


discretización del controlador se lo realizó con 0.15
segundos, sin embargo, al momento de comprobar el
funcionamiento del control a la planta existía un
pequeño rizado, por lo que se decidió disminuir este
tiempo a 0.1 segundos.

 De la misma manera, se tuvo que realizar


nuevamente una sintonización del controlador en el
código de Arduino, aunque, los valores son muy
cercanos a los vistos en la figura 12, se obtuvo
valores de K p = 5, Ti = 0.08 y , Td = 0.02. Esto
sucede ya que la simulación en Simulink es
relativamente es perfecta y cuando se aplica el
control a la planta real puede ocurrir rizados,
sobrepaso o tiempos de asentamiento elevados.

 En el PWM que se aplica en el motor puede tener una


zona muerta, por lo que se decidió mapear desde 100
a 250, ya que por debajo del mínimo valor (100) el
motor no encendía.

 Para observar el valor de las referencias y errores se


implementó en el código diferentes Serial.print,
sin embargo, esto hace que el programa aumente el
tiempo en el que se repita el algoritmo de
discretización y por ende el tiempo de muestreo.
Teniendo en cuenta lo anterior se eliminó este
segmento de código con el objetivo de optimizar el
programa.

 Algunas veces el error de la planta 𝑒planta , resultaba


negativo, por lo que en el código de Arduino se lo
multiplico por -1, con el objetivo de garantizar que
el error de la planta siempre sea positivo.

Vous aimerez peut-être aussi