Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
SUPERIORES DE MONTERREY
A01201398
A01362841
A01065008
A01064461
Resumen
El objetivo del presente documento es disear e implementar 5
diferentes tipos de controladores como son el controlador on/off, on/off con
histresis, proporcional, proporcional integral y fuzzy para sistemas de primer
y segundo orden. Se buscar el mejor controlador de cada uno y se
compararn entre ellos.
El modulo que se utiliza para los sistemas de primer orden es el MTGN100, sistema que provee un ambiente idneo para el estudio de los
diferentes sistemas de control. Bsicamente cuenta con un motor de CD
acoplado mecnicamente a un generador de CD que servir de carga para el
motor.
El mdulo que se utiliza para los sistemas de segundo orden es el
ADCR100.
La
estructura
bsica
del
documento
cuenta
con
teora,
Contenido
Resumen ................................................................................................................ 2
1.
Introduccin ................................................................................................................................... 9
1.1.
1.1.1.
1.1.2.
1.1.3.
Descripcin del esquemtico del circuito de acondicionamiento y conexiones del
sistema en lazo cerrado. ............................................................................................................... 11
1.1.4.
Seleccin y justificacin matemtica de los componentes utilizados en el circuito de
acondicionamiento. ...................................................................................................................... 11
1.2.
1.2.1.
1.2.2.
1.2.3.
1.3.
1.3.1.
1.3.2.
1.3.3.
1.3.4.
1.3.5.
1.3.6.
1.3.7.
1.3.8.
1.3.9.
1.3.10.
Controlador PI ............................................................................................................... 24
1.3.11.
1.3.12.
1.3.13.
1.3.14.
1.3.15.
Controlador PI ............................................................................................................... 27
1.3.16.
1.3.17.
1.3.18.
1.3.19.
1.3.20.
1.3.21.
1.3.22.
1.3.23.
1.3.24.
1.3.25.
1.4.
1.5.
1.5.1.
1.5.2.
1.6.
1.6.1.
Contextualizacin .......................................................................................................... 59
1.6.2.
1.6.3.
1.7.
1.7.1.
1.7.2.
1.7.3.
1.7.4.
1.7.5.
1.7.6.
1.7.7.
1.7.8.
1.7.9.
1.7.10.
1.7.11.
1.8.
1.8.1.
1.8.2.
1.9.
1.10.
Anexos .................................................................................................................. 87
4
ndice de figuras
Figura 1 - Diagrama de bloques del sistema en lazo cerrado...................................................... 10.
Figura 1.1 - Sistema de linealidad ................................................................................................ 14.
Figura 1.2 - Respuesta real vs funcin de transferencia elegida. ................................................ 17.
Figura 1.3 - Controlador On/off respuesta al escaln y la perturbacin ...................................... 20.
Figura 1.4 - Controlador On/off con histresis. ............................................................................ 21.
Figura 1.5 - Sintonizacin emprica controlador On/Off variando el ancho de
ventana. ....................................................................................................................................... 22.
Figura 1.7 - Respuesta del sistema de un controlar P con variacin Kp ..................................... 26.
Figura 1.8 - Controlador P respuesta al escaln y la perturbacin .............................................. 26.
Figura 1.9 Kp= 0.5, Ki variable .................................................................................................. 32.
Figura 1.10 - Kp= 1, Ki variable. ................................................................................................... 32.
Figura 1.11 - Kp= 1.5, Ki variable. ................................................................................................ 33.
Figura 1.12 - Ki= 1, Kp variable. ................................................................................................... 33.
Figura 1.13 - Ki= 5, Kp variable .................................................................................................... 34.
Figura 1.14 - Ki= 7, Kp variable. ................................................................................................... 34.
Figura 1.15 - Controlador PI respuesta al escaln y la perturbacin ........................................... 35.
Figura 1.16 - Estructura del Sistema fuzzy.. ................................................................................ 38.
Figura 1.17 - Funcin de membresa forma triangular. ................................................................ 41.
Figura 1.18 - Funcin de membresa forma trapezoidal .............................................................. 41.
Figura 1.19 - Funcin de membresa forma de S. ..................................................................... 42.
5
Figura 1.22 - Definicin de la funcin de membresa para la seal del error (Lenta)
..................................................................................................................................................... 43.
Figura 1.23 - Definicin de la funcin de membresa para la seal del error (Error) ................... 44.
Figura 1.24 - Definicin de la funcin de membresa para la seal del error
(Segundo Orden) ......................................................................................................................... 44.
Figura 1.37 - Respuesta del sistema ante diferentes escalones (1V, 2V, 3V) ............................. 59.
Figura 1.38 - Respuesta de la funcin de transferencia promedio ante diferentes
escalones (1V, 2V, 3V) ................................................................................................................ 63.
Figura 1.47 - Funcin de membresa del error sin overshoot. ..................................................... 76.
Figura 1.48 - Funcin de membresa del error con overshoot. .................................................... 76.
Figura 1.49 - Funcin de membresa del error con final alrededor del 10% de
referencia ..................................................................................................................................... 76.
Figura 1.50 - Funcin de membresa de la salida Delta U sin Overshoot. .................................. 77.
Figura 1.51 - Funcin de membresa de la salida Delta U con Overshoot .................................. 78.
Figura 1.52 Funcin de membresa de la salida Delta U con final alrededor
del 10% de referencia .................................................................................................................. 78.
Figura 1.53 - Respuesta subamortiguada del sistema con 20% Overshoot. .............................. 79.
Figura 1.54 - Respuesta del sistema de segundo orden sin oscilaciones ................................... 80.
Figura 1.55 - Respuesta del sistema con error de estado estacionario final
alrededor del 10% de referencia.................................................................................................. 80.
Figura 1.56 - Respuesta del sistema con error de estado estacionario final
alrededor del 10% de referencia.................................................................................................. 81.
ndice de tablas
Tabla 1 Valores de cada parmetro .......................................................................................... 16.
Tabla 2 Funciones de transferencia .......................................................................................... 16.
Tabla 3 Rangos establecidos para variables Crisp. ................................................................... 40.
Tabla 4 Definicin de variables lingsticas. ............................................................................. 41.
Tabla 5 Matriz de decisin......................................................................................................... 47.
Tabla 6 Escaln 1 Volt, valores de , ......................................................................... 61.
Tabla 7 Escaln 2 Volts, valores de , ........................................................................ 61.
Tabla 8 Escaln 3 Volts, valores de , . ....................................................................... 62.
Tabla 9 Funciones tericas obtenidas ....................................................................................... 62.
Tabla 10 Valores de Kp y Ki fijos y variables ............................................................................ 70.
Tabla 11 Rango de las variables Crisp ..................................................................................... 74.
Tabla 12 Variables y valores lingusticos. ................................................................................. 74.
Tabla 13 Matriz de decisin....................................................................................................... 79.
Tabla 14 Evaluacin tcnica de desempeo............................................................................. 83.
1. Introduccin
Un sistema de control puede definirse como un sistema que recibe
variables de entrada y cuya respuesta a estas acciones externas (variables de
entrada) se les denomina variables de salida.
Las variables de entrada se dividen en: variables de control y
perturbaciones, las primeras pueden manipularse mientras que en las
segundas no existen ningn tipo de control.
Dentro de lo que se conoce como el sistema se encuentra el concepto
sistema de control, el cual se define como un sistema que cuenta con la
presencia de una serie de elementos que permiten la manipulacin de las
variables de control de modo que las variables de salida almacenen ciertos
valores definidos.
Un sistema de control ideal debe cumplir con los siguientes puntos:
1. Garantizar la estabilidad y ser robusto frente a perturbaciones y
errores que pueda presentar el modelo.
2. Tan eficiente como le sea posible, evitando comportamientos
bruscos e irreales.
3. Fcil implementacin y cmodo de operar en tiempo real.
El control automtico ha jugado un papel indispensable en el avance de
la ciencia y la ingeniera, esto se debe a que los avances en la teora y prctica
de control automtico brindan los medios necesarios para lograr el ptimo
funcionamiento de sistemas dinmicos, mejorar la calidad y bajar los costos de
produccin. Por medio de la teora de control, la cual sus aportaciones al
desarrollo y aplicacin de control vienen desde el siglo XVIII, se puede controlar
los sistemas complejos, los requisitos de eficiencia y precisin y una de las
cosas ms crticas, reducir los costos de las mltiples aplicaciones industriales.
Por todo lo anterior es muy importante el presente documento, en el que
se pueden ver el diseo y la implementacin de diferentes controladores para
un sistema de primer orden con el fin de seleccionar el que logre satisfacer las
especificaciones de control, basndonos en mtodos analticos y de
sintonizacin.
10
1
1
=
2 2
11
(1)
5=
1
= 318
2 100 106
previo
de
los
datos
registrados:
Corregir
12
13
( ) =
( ) + 1
(2)
() = (1 ) =
(3)
Donde:
=
()
() = (1 / )
(4)
M
1v
2v
()
0.8627
1.8626
k
0.8627
0.9313
15
()
0.5453
1.1773
0.128
0.103
3v
4v
5v
2.8626
3.8624
4.8627
0.9542
0.9656
0.97254
1.809
2.4415
3.0738
0.11
0.15
0.18
TF con un escaln de 1v
TF con un escaln de 2v
TF con un escaln de 3v
TF con un escaln de 4v
TF con un escaln de 5v
() =
.
. +
() =
0.9313
0.103 + 1
() =
0.9542
0.11 + 1
() =
0.9656
0.15 + 1
() =
0.9725
0.18 + 1
16
18
() = {
1 () > 0
2 () < 0
(5)
19
U(t)
4
5
6
7
t
Respuesta al sistema con un controlador On Off
10
10
Y(t)
3
2
1
0
5
t
20
() = {
1 () > W/2
2 () < W/2
(6)
22
u (t)
4
2
0
0.5
0.5
1.5
2.5
3
3.5
4
t
Respuesta al sistema con un controlador on-off con histresis con perturbacin
1.5
4.5
4.5
y (t)
3
2
1
0
2.5
t
3.5
podemos concluir que no es una buena opcin para ser seleccionado como el
mejor para implementarlo en un sistema de control.
1.3.10. Controlador PI
El tercer controlador a disear es el controlador PI, cuya magnitud de la
salida del controlador es proporcional al tamao del error, entre ms grande
sea el error, ms grande ser la salida del controlador.
=
Donde e es el error y es una constante.
() = ()
(7)
(8)
Si la seal de control u(k) es mayor a 255, la seal u(k) ser igual a 255
lo que representa la velocidad mxima del motor. Por otra parte si la seal de
control u(k) es menor a cero, la seal u(k) ser igual a cero lo que representa
la velocidad mnima del motor. De esta manera podemos asegurar que cuando
llegue a los lmites, no se generar un PWM diferente al que se requiere.
As el cdigo implementado en Arduino para el controlador P se
encuentra en la seccin de anexos.
25
u (t)
4
2
0
5
6
7
t
Respuesta al sistema de un controlador P con perturbacin
10
10
y (t)
2
1
0
5
t
26
1.3.15. Controlador PI
El cuarto controlador a disear es el controlador PI.
(9)
() = () +
()
()
1
()
1
= (1 + )
(10)
()
()
= +
1 1
1+ 1
(11)
(12)
28
()
= +
2 (1 1 )
()
(1 + 1 )
+ 1
)
(2 2 1 )
() =
2 () 2 ( 1) + () + ( 1) + 2( 1)
2
(2 + )
2
+ ( 1)
( 2 )
2
(13)
29
() = ( 1) + () + ( 1)
2+
2
2
2
= 1.0099
= .9901
Si la seal de control u(k) es mayor a 255, la seal u(k) ser igual a 255
lo que representa la velocidad mxima del motor. Por otra parte si la seal de
control u(k) es menor a cero, la seal u(k) ser igual a cero lo que representa
la velocidad mnima del motor. De esta manera podemos asegurar que cuando
llegue a los lmites, no se generar un PWM diferente al que se requiere.
As el pseudo-cdigo implementado en Arduino para el controlador P se
encuentra en la seccin de anexos.
1 + ()() = 0
30
(14)
31
32
33
34
Se puede decir de forma general todos los valores que usamos para
ste controlador nos ofrece un error en estado estacionario igual a cero. La
nica variante es el tiempo de estabilizacin.
u (t)
4
2
0
5
6
7
t
Respuesta al sistema con un control PI con perturbacin
10
10
y (t)
3
2
1
0
5
t
35
Variables Crisp
1.3.21.2.
() =
0.9656
0.15+1
(15)
= 2 (
1.5
150
) = 0.02 /
39
(16)
= [2, 2]
= [2(0.02), 2(0.02)]
= [0.04, 0.04]
= [2.04, 2.04]
La tabla 3 muestra los rangos finales obtenidos para cada variable Crisp.
Variable Crisp
Error
Delta U
Rango
-255 a 255
-2.04 a 2.04
1.3.21.3.
Variables Lingsticas
Variable Lingstica
Valor lingstico
Negativo
Nulo
Error
40
Positivo
Decremento
Cero
Incremento
Delta U
1.3.21.4.
Funciones de membresa
41
Sin Overshoot:
o Negativo {-255, -160, 0}
o Nulo {-80, 0, 80}
o Positivo {0, 160, 160, 255}
Lenta:
o Negativo {-255, -10, 0}
o Nulo {-80, 0, 80}
o Positivo {0, 10, 255}
42
Error:
o Negativo {-255, -100, -10}
o Nulo {-80, 0, 80}
o Positivo {10, 100, 255}
2do orden:
o Negativo {-255, -255, -60, 0}
o Nulo {-80, 0, 80}
o Positivo {0, 60, 255, 255}
Los valores 255 y -255 son los lmites. Las figuras 1.21, 1.22, 1.23 y 1.24
muestran las grfica obtenidas con Matlab de las funciones de membresa.
Figura 1.21. Definicin de la funcin de membresa para la seal del error (Sin Overshoot).
Figura 1.22. Definicin de la funcin de membresa para la seal del error (Lenta).
43
Figura 1.23. Definicin de la funcin de membresa para la seal del error (Error).
Figura 1.24. Definicin de la funcin de membresa para la seal del error (Segundo Orden).
Sin Overshoot
o Decremento {-2.04, -1.66, 0}
o Cero {-1.66, 0, 1.66}
o Incremento {0, 1.66, 1.66, 2.04}
Lenta
o Decremento {-2.04, -0.1, 0}
44
Error
o Decremento {-2.04, -1, 0.1}
o Cero {-0.83, 0, 0.83}
o Incremento {0.1, 1, 2.04}
2do Orden
o Decremento {-2.04, -2.04, -0.62, 0}
o Cero {-0.83, 0, 0.83}
o Incremento {0, 0.62, 2.04, 2.04}
Figura 1.25. Definicin de la funcin de membresa para la seal de salida DeltaU (Sin Overshoot).
45
Figura 1.26. Definicin de la funcin de membresa para la seal de salida DeltaU (Lenta).
Figura 1.27. Definicin de la funcin de membresa para la seal de salida DeltaU (Error).
Figura 1.28. Definicin de la funcin de membresa para la seal de salida DeltaU (Segundo
Orden).
46
1.3.21.5.
Matriz de decisin
Error
Negativo
Nulo
Positivo
Delta U
Decremento
Cero
Incremento
Tabla 5. Matriz de decisin.
47
1.3.21.6.
Mtodo de defusificacin
o Centro de Gravedad:
=
=1
=1
o Promedio de pesos:
=1
=1
48
u (t)
2
1
0
5
6
7
8
t
Respuesta al sistema con un control Fuzzy de Sin Overshoot
10
10
y (t)
2
1
0
5
t
u (t)
2
1
0
10
12
14
16
t
Respuesta al sistema con un control Fuzzy con respuesta Lenta
18
20
18
20
y (t)
2
1
0
10
t
12
14
16
49
u (t)
2
1
0
5
6
7
8
t
Respuesta al sistema con un control Fuzzy con un error del 10%
10
10
10
10
y (t)
2
1
0
5
t
u (t)
3
2
1
0
5
6
7
t
Respuesta al sistema con un control Fuzzy de segundo orden
y (t)
3
2
1
0
5
t
50
51
52
time,
max
overshoot,
etc)
Posteriormente
tras
realizar
la
ya
se
mencion
en
la
introduccin
del
reporte,
la
Nuestro sistema cumple con la respuesta de un sistema subamortiguado, cuya grfica se puede ver representada en la figura 1.33
54
Figura 1.34. Diagrama de bloques para un proceso de segundo orden hecho en Simulink.
55
() =
2 ++
(17)
(18)
2 =
2 =
2 =
((
(19)
))
100
2 + ((
))
100
40
( (100))
40
+ ( (100))
= 0.2799
Una vez obtenido el valores de , podemos obtener el valor de con
la ecuacin 20.
17 =
(20)
4
(0.2799)
= 0.8405
= 0.7066
= 0.6659
57
=1
2
2 + 2 + 2
0.8405
+ 0.4705 + 0.8405
Figura 1.36. Grfica obtenida por el mdulo ADCR100 con las ganancias encontradas.
58
Figura 1.37. Respuesta del sistema ante diferentes escalones (1V, 2V, 3V)
59
Escaln 1 Volt.
= 35.87%
= 15.162
( (100))
+ ( (
))
100
35.87
( ( 100 ))
35.87
+ ( ( 100 ))
= .
=
15.162 =
4
0.3102
= .
60
()
= .
0.3102
0.8504
0.9216
() 1 =
0.6664
2 + 0.5275 + 0.7231
= 46.47%
= 18.046
0.2369
0.9356
0.9705
61
() 2 =
0.8495
+ 0.4432 + 0.8754
Escaln 3 Volts.
= 27.795%
= 20.064
0.1424
1.40
0.987
() 3 =
1.934
+ 0.3987 + 1.96
.
()
+ . + .
0.8495
()
2 + 0.4432 + 0.8754
1.934
()
2 + 0.3987 + 1.96
= .
= .
= .
() =
0.2677
+ 0.3987 + 0.279
y (t)
3
2.5
2
1.5
1
0.5
0
10
12
14
t (seconds)
Figura 1.38. Respuesta de la funcin de transferencia promedio ante diferentes escalones (1V, 2V,
3V)
63
64
4
= 20.066
(0.3774)(0.5282)
20.066
= 0.20
100
65
u (t)
3
2
1
0
0
10
12
14
16
t
Respuesta al sistema de un controlador ON-OFF con perturbacin
18
20
18
20
y (t)
4
3
2
1
0
10
t
12
14
16
Figura 1.40. Comportamiento del controlador On/Off ante seales de escaln y perturbaciones.
66
0.2677
1 + () (2 +0.3987+0.279) = 0
(21)
+ 0.3987 + 0.279
Por lo tanto el rango para las variables Kp y Ki es:
> 1
> 1
Parmetro fijo
Ki/Kp variable
Ki= 1
Kp= 1
Ki= 2
Ki= 4
Ki= 7
Kp= 0
Ki= 2
Kp= 0.5
Kp= 3
Kp= 8
u (t)
4
kp=1
kp=2
kp=4
kp=7
2
0
-2
10
t
Respuesta al sistema con un kp=1 y un ki=1, 2, 4 y 7
15
y (t)
4
kp=1
kp=2
kp=4
kp=7
2
0
-2
10
t
70
15
u (t)
4
kp=0
kp=0.5
kp=3
kp=8
2
0
0
10
t
Respuesta al sistema con un ki=2 y un kp=0, 0.5, 3 y 8
15
kp=0
kp=0.5
kp=3
kp=8
2
0
0
10
15
u (t)
2
1
0
10
t
Respuesta al sistema con un kp=0 y un ki=0.5
15
3
2
y (t)
y (t)
1
0
10
t
Figura 1.44. Respuesta del sistema sin overshoot KP= 0 y Ki= 0.5.
71
15
u (t)
3
2
1
0
0
10
t
Respuesta al sistema con un kp=1 y un ki=2
15
y (t)
3
2
1
0
0
10
15
Figura 1.45. Respuesta del sistema con overshoot con valores ideales KP= 2 y Ki= 1.
u (t)
3
2
1
0
0
5
6
7
t
Respuesta al sistema de un controlador PI con perturbacin
10
10
y (t)
4
3
2
1
0
5
t
72
Estabilidad en el sistema.
()
0.2677
2 + 0.3987 + 0.279
Variable
Rango
Error
-255 a 255
-2.66 a 2.66
Variable lingstica
Valores lingsticos
Error
Delta U
74
Sin Overshoot
Con Overshoot
75
Figura 1.49. Funcin de membresa del error con final alrededor del 10% de referencia.
76
Sin Overshoot
Con Overshoot
77
Figura 1.52. Funcin de membresa de la salida Delta U con final alrededor del 10% de referencia
Error
Delta U
Negativo
Decremento
78
Nulo
Cero
Positivo
Incremento
u (t)
2
0
-2
5
6
7
8
t
Respuesta al sistema de un controlador Fuzzy con Overshoot de ms del 20%
10
10
y (t)
2
0
-2
5
t
79
u (t)
2
1
0
-1
5
6
7
8
t
Respuesta al sistema de un controlador Fuzzy sin Overshoot
10
10
y (t)
2
1
0
-1
5
t
Entrada al sistema de un controlador Fuzzy con un Ess cercano al 10% de la seal de referencia
3
u (t)
2
1
0
-1
5
6
7
8
9
t
Respuesta al sistema de un controlador Fuzzy con un Ess cercano al 10% de la seal de referencia
10
y (t)
2
0
-2
5
t
10
Figura 1.55. Respuesta del sistema con error de estado estacionario final alrededor del 10% de
referencia.
80
u (t)
3
2
1
0
0
10
12
14
t
Respuesta al sistema de un controlador PI con perturbacin
16
18
20
16
18
20
y (t)
4
3
2
1
0
10
t
12
14
Figura 1.56. Respuesta del sistema con error de estado estacionario final alrededor del 10% de
referencia.
Controlador
Evaluacin de desempeo
Estado transitorio: es un controlador que puede daar el
periodo de vida del actuador, ya que la seal de control
On/Off
81
Proporcional
82
Proporcional
Integral
Fuzzy
83
84
Anexos
87
Mdulo MT-GN100
88
double val=0.0;
String cont_ind ;
int adc=A0;
int pwm=5;
int tog=2;
int control=0;
//specify controller
double window=10;
double kpp=2.0;
double kppi=1.0;
double kipi=2.0;
int def = 0;
double adc_value = 0;
double adc_8bits = 0;
double error = 0.0;
double uk=0;
double val2;
double uk_ant=0;
double error_ant=0;
int t1, t2;
double A, B,C;
double delta_uk=0.0;
boolean toggle = HIGH;
double c1=-51;
double d1=-0;
double a2=-51;
double b2=0;
double c2=0;
double d2=51;
double a3=0;
double b3=51;
double c3=255;
double d3=255;
double a1=-255;
double b1=-255;
double c1=-160;
double d1=-0;
double a2=-160;
90
double b2=0;
double c2=0;
double d2=160;
double a3=0;
double b3=160;
double c3=255;
double d3=255;
void setup() {
pinMode(pwm, OUTPUT);
pinMode(tog, OUTPUT);
Serial.begin(9600);
}
double fuzzify (double x, double a, double b, double c, double d) //x= error input
{
91
double weight;
return weight;
}
double defuzzify_weightaverage(double W1, double W2, double W3) //receive Degree of Each
Membership function
{
double sum_weight;
double out;
sum_weight = W1 + W2 + W3; //sum of Degree of Membership function
out = ((W1*b4) + (W2*b5) +(W3*c6)/ (sum_weight));
return out;
}
double defuzzify_centerofgravity(double W1, double W2, double W3) //receive Degree of Each
Membership function
{
double sum_weight;
double out ;
double CG1, CG2, CG3;
CG1=(a4-d4)/2;
92
CG2=(d5-abs(a5))/2;
CG3=(d6-a6)/2;
return out;
}
float_value=atof(numeric_value);
return float_value;
}
numeric_value[i] = serial_command[i+1];
}
float_value=atof(numeric_value);
return float_value;
}
void loop() {
// put your main code here, to run repeatedly:
if(toggle == HIGH){
toggle = LOW;
}else{
toggle = HIGH;
}
digitalWrite(tog,toggle);
t1 = micros();
adc_value = analogRead(adc);
if(Serial.available()==5)
{
for(int i=0; i<5; i++){
comser[i] = Serial.read();
}
94
if(((comser[0]=='R')&&(comser[1]>='0')&&(comser[1]<='2')&&(comser[2]>='0')&&(comser[2]<='9')&
&(comser[3]>='0')&&(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9'))||((comser[0]=='R')&&
(comser[1]=='3')&&(comser[2]=='0')&&(comser[3]=='0')&&(comser[4]=='0'))) //validate format and
range
{
val=Get_numerical_value(comser); //cast a number character to its floating value
val2 = (val*255)/3000;
pin
}
else if(comser[0]=='T'){
control = comser[4]-48;
}
else
if((comser[0]=='W')&&(comser[3]>='0')&&(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
kpp = Get_numerical_value(comser)/10;
}
else if((comser[0]=='p')&&((comser[1]=='+')||(comser[1]==''))&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&(comser[3]<='9')&&(comser[4]>='0')
&&(comser[4]<='9')){
kppi = Get_numerical_value(comser)/10;
}
else if((comser[0]=='i')&&((comser[1]=='+')||(comser[1]==''))&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&(comser[3]<='9')&&(comser[4]>='0')
&&(comser[4]<='9')){
kipi = Get_numerical_value(comser)/10;
}
else
if((comser[0]=='a')&&(comser[1]=='1')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
a1 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='b')&&(comser[1]=='1')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
b1 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='c')&&(comser[1]=='1')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
c1 = Get_fuzzy_coordinates(comser)*(-1);
}
96
else
if((comser[0]=='d')&&(comser[1]=='1')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
d1 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='a')&&(comser[1]=='2')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
a2 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='b')&&(comser[1]=='2')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
b2 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='c')&&(comser[1]=='2')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
c2 = Get_fuzzy_coordinates(comser);
}
else
if((comser[0]=='d')&&(comser[1]=='2')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
d2 = Get_fuzzy_coordinates(comser);
}
else
if((comser[0]=='a')&&(comser[1]=='3')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
a3 = Get_fuzzy_coordinates(comser);
97
}
else
if((comser[0]=='b')&&(comser[1]=='3')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
b3 = Get_fuzzy_coordinates(comser);
}
else
if((comser[0]=='c')&&(comser[1]=='3')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
c3 = Get_fuzzy_coordinates(comser);
}
else
if((comser[0]=='d')&&(comser[1]=='3')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
d3 = Get_fuzzy_coordinates(comser);
}
else
if((comser[0]=='a')&&(comser[1]=='4')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
a4 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='b')&&(comser[1]=='4')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
b4 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='c')&&(comser[1]=='4')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
98
c4 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='d')&&(comser[1]=='4')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
d4 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='a')&&(comser[1]=='5')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
a5 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='b')&&(comser[1]=='5')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
b5 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='c')&&(comser[1]=='5')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
c5 = Get_fuzzy_coordinates(comser);
}
else
if((comser[0]=='d')&&(comser[1]=='5')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
d5 = Get_fuzzy_coordinates(comser);
}
else
if((comser[0]=='a')&&(comser[1]=='6')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
99
a6 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='b')&&(comser[1]=='6')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
b6 = Get_fuzzy_coordinates(comser)*(-1);
}
else
if((comser[0]=='c')&&(comser[1]=='6')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
c6 = Get_fuzzy_coordinates(comser);
}
else
if((comser[0]=='d')&&(comser[1]=='6')&&(comser[2]>='0')&&(comser[2]<='9')&&(comser[3]>='0')&&
(comser[3]<='9')&&(comser[4]>='0')&&(comser[4]<='9')){
d6 = Get_fuzzy_coordinates(comser);
}
else
if((comser[0]=='d')&&(comser[1]=='e')&&(comser[2]=='f')&&((comser[4]=='0')||(comser[4]=='1'))){
char defser[1];
defser[0]=comser[4];
def = atoi(defser);
}
else{
Serial.println("Format ERROR\n");
}
100
uk = (((val2)+15)*0.992063492);
break;
case 1:
{
//on/off controller algorithm
if(error>0){uk=255;}
else if(error<0){uk=0;}
}
break;
case 2:
{
//on/off with hysteresis controller algorithm
if(error>hyst){uk=255;}
else if(error<(0-hyst)){uk=0;}
}
break;
101
case 3:
{
//P controller algorithm
uk = kp*error;
if(uk>255){
uk=255;
}
else if(uk<0){
uk=0;
}
}
break;
case 4:
{
//PI controller algorithm
A = 1;
B = (2*kp + ki*T)/2;
C = (T*ki-2*kp)/2;
102
if(uk>255){
uk=255;
}
else if(uk<0){
uk=0;
}
uk_ant=uk;
error_ant=error;
}
break;
case 5:
{
//Fuzzy controller algorithm
if(def==0){
delta_uk= defuzzify_weightaverage(negper, zeroper, posper);
}
else{
delta_uk= defuzzify_centerofgravity(negper, zeroper, posper);
}
103
if(uk>255){
uk=255;
}
else if(uk<0){
uk=0;
}
uk_ant= uk;
}
}
analogWrite(pwm,uk);
t2 = micros();
Referencias
[1] Acadmica Cartagena. (2000). Funcin de transferencia - Sistema de primer orden. 29
de Febrero de 2016, de Dinmica y Control de procesos Sitio web:
http://www.cartagena99.com/recursos/alumnos/apuntes/7_FUNCION_DE_TRANSFE
RENCIA_PRIMER_ORDEN.pdf
[2] Arduino. (2004). What is an Arduino. 17 de Febrero de 2016, de Arduino Sitio web:
https://learn.sparkfun.com/tutorials/what-is-an-arduino
104
[3] Bigelow, K. (2000). Low pass filters. 17 de Febrero de 2016, de Sitio web:
http://www.play-hookey.com/ac_theory/filters/lo_pass_filters.html
[4] CATEDU. (2001). Controlador de accin Proporcional e Integral. 07 de Marzo de 2016, de
Centro
Aragons
de
Tecnologas
para
la
educacin
Sitio
web:
http://educativa.catedu.es/44700165/aula/archivos/repositorio//4750/4926/html/13_co
ntrolador_de_accin_proporcional_e_integral_pi.html
[5] ECE Tutorials. (2007). Continuous time LTI (Linear time invariant) systems. 23 de
Febrero de 2016, de Electronics and Control Systems Sitio web:
http://ecetutorials.com/signals-systems/continous-linear-time-invariantlti-systemswith-examples/
[6] FCEIA. (2003). Diseo de controladores Fuzzy. 29 de Marzo de 2016, de Control
Avanzado II Sitio web:
http://usuarios.fceia.unr.edu.ar/~spastel/CavII%20-%20Dise%C3%B1o%20de%20Co
ntroladores%20Fuzzy.pdf
105
106