1. FUNDACION UNIVERSITARIA LOS LIBERTADORES.
DOCUMENTO EXPOSICION SISTEMA DE INFERENCIA DIFUSO
MAMDANI
Adriana Marcela Romero Vargas
amromerov@libertadores.edu.co
Jairo Antonio Carreño Rodríguez
jacarrenor@libertadores.edu.co
CODIGO EN ARDIUNO DEL SISTEMA DE INFERENCIA MAMDANI BASADO EN UN CONTROL DE
TEMPERAARURA
float entrada; // Variable para la entrada
int referencia; // variable de referencia
float error; // variable del error
float av; //variable av
float frio; // variable de entrada de fuzificacíon
float tibio; // variable de entrada de fuzificacíon
float mediocaliente; // variable de entrada de fuzificacíon
float caliente; // variable de entrada de fuzificacíon
int salida; // variable salida
void setup() {
Serial.begin(9600); // Se inicia la comunicacion serial
}
void loop() {
entrada = analogRead(A0); // Lee el valor de entrada del pin A0 del puerto análogo
referencia=45; // valor de referencia
entrada=((entrada*500)/1023);
error=referencia-entrada; // calculo del error 45-valor leído pin A0
av=abs(error); // av es el valor absoluto del error
// Se describen cada uno de los conjuntos difusos de entrada
if (av<=20){
frio=1;
tibio=0;
mediocaliente=0;
caliente=0;
}
if ( av>20 && av<30){
frio=((30-av)/10);
tibio=((av-20/10));
mediocaliente=0;
caliente=0;
}
if ( av>30 && av<40){
frio=0;
tibio=1;
mediocaliente=0;
caliente=0;
1
2. FUNDACION UNIVERSITARIA LOS LIBERTADORES.
}
if ( av>40 && av<50){
frio=0;
tibio=((50-av)/10);
mediocaliente=((av-40)/10);
caliente=0;
}
if ( av>50 && av<60){
frio=0;
tibio=0;
mediocaliente=1;
caliente=0;
}
if ( av>60 && av<70){
frio=0;
tibio=0;
mediocaliente=((70-av)/10);
caliente=((av-60)/10);
}
if ( av>=70){
frio=0;
tibio=0;
mediocaliente=0;
caliente=1;
}
// Terminos para sacar el centro de masa o centroide.
salida= (((frio*15)+(tibio*35)+(mediocaliente*55)+(caliente*85))/(tibio+frio+mediocaliente+caliente));
// Accion de control, defuzzificador
salida=(salida-15)*3.64; //
// Para la salida del PWM
analogWrite(11,salida); //escribimos la salida en un pin analógico
// imprime la grafica de la funcion de control del sistema
Serial.print(salida); Serial.print("salida = ");
Serial.print(" entrada = ");
Serial.print(entrada);
Serial.print("referencia = ");
Serial.println(referencia);
delay(500); //espera 3 segundos para la siguiente medición
}
2
3. FUNDACION UNIVERSITARIA LOS LIBERTADORES.
CODIGO MATLAB
entrada = input('Entrada = '); % Se ingresa un valor de entrada
referencia = input('Referencia = '); % Se ingresa un valor referencia
error = referencia - entrada; % Calculo del error
hold on
% Se describen cada uno de los conjuntos difusos para el error
for error = 1 : 0.1 : 100
if error >= 0 && error < 15
A1 = 1;
A2 = 0;
A3 = 0;
A4 = 0;
A5 = 0;
end
if error >= 15 && error <= 30
A1 = (30-error)/15;
A2 = (error-15)/15;
A3 = 0;
A4 = 0;
A5 = 0;
end
if error >= 30 && error < 45
A1 = 0;
A2 = 1;
A3 = 0;
A4 = 0;
A5 = 0;
end
if error >= 45 && error <= 60
A1 = 0;
A2 = (60-error)/15;
A3 = (error-45)/15;
A4 = 0;
A5 = 0;
end
if error >= 60 && error < 75
A1 = 0;
A2 = 0;
A3 = 1;
A4 = 0;
A5 = 0;
end
if error >= 75 && error <= 90
A1 = 0;
A2 = 0;
A3 = (90-error)/15;
A4 = (error-75)/15;
A5 = 0;
end
if error >= 90 && error < 105
A1 = 0;
A2 = 0;
A3 = 0;
A4 = 1;
3
4. FUNDACION UNIVERSITARIA LOS LIBERTADORES.
A5 = 0;
end
if error >= 105 && error <= 120
A1 = 0;
A2 = 0;
A3 = 0;
A4 = (120-error)/15;
A5 = (error-105)/15;
end
if error >= 120 && error < 135
A1 = 0;
A2 = 0;
A3 = 0;
A4 = 0;
A5 = 1;
end
% calculo centtro de masa
if error >= 0
salida = ((A1*15)+(A2*47.5)+(A3*67.5)+(A4*97.5)+(A5*120))/(A1+A2+A3+A4+A5);
else
salida = 0;
end
plot(error,salida,'.r') % Imprime la grafica función de control
end
4
5. FUNDACION UNIVERSITARIA LOS LIBERTADORES.
Grafica 1. Funcion de control del sistema
Cuando se ingresa un valor de entrada de 15 se obtiene el siguiente centro de masa.
5
6. FUNDACION UNIVERSITARIA LOS LIBERTADORES.
Funcion de control para un valor de referencia de 45 y valor de entrada de 15.
Cuando se ingresa un valor de entrada de 50 se obtiene el siguiente centro de masa.
6
7. FUNDACION UNIVERSITARIA LOS LIBERTADORES.
Funcion de control para un valor de referencia de 45 y valor de entrada de 50.
Cuando se ingresa un valor de entrada de 70 se obtiene el siguiente centro de masa.
7
8. FUNDACION UNIVERSITARIA LOS LIBERTADORES.
Funcion de control para un valor de referencia de 45 y valor de entrada de 70.
BIBLIOGRAFIA
8
9. FUNDACION UNIVERSITARIA LOS LIBERTADORES.
http://www.dma.fi.upm.es/recursos/aplicaciones/logica_borrosa/web/fuzzy_inferencia/mamdani1.htm
9
10. FUNDACION UNIVERSITARIA LOS LIBERTADORES.
http://www.dma.fi.upm.es/recursos/aplicaciones/logica_borrosa/web/fuzzy_inferencia/mamdani1.htm
9