Escolar Documentos
Profissional Documentos
Cultura Documentos
Funcionamiento:
El Arduino tiene una alimentación de 12V y en él va conectado un sensor de
temperatura LM35 en el pin A0 y una resistencia de 10Ω en el pin 3 que tiene la
función para PWM que permite regular la potencia que se le administra para que se
caliente a cierta temperatura y el sensor detecte esas diferentes temperaturas a un
determinado tiempo.
Resultados
void setup() {
analogWrite (pinPWM, 128);
TemperaturaDeseada= 29;
Serial.begin(9600);
Serial.print(0);
Serial.print(" ");
Serial.print(40);
Serial.print(" ");
}
void loop() {
LecturaA0=0;
for (i=0;i<20;i++) {
delay(1000);
}
Lógica Difusa
const int TemperaturaPin=A0, PWMPin=5;
float TemperaturaActual, TemperaturaDeseada, FlotantePWM;
int LecturaA0,i,PWM;
float TemperaturaAnterior;
float Negativo;
float Cero;
float Positivo;
float Pendiente;
float Sube, Baja, Estable, Error, Decrementar, Incrementar,
Mantener, Cambio, R1, R2, R3, R4, R5, R6, R7, R8, R9;
float PorcentajePWM;
void setup()
void loop()
{
TemperaturaAnterior=TemperaturaActual;
LecturaA0 = 0;
for (i=0;i<20;i++) {
LecturaA0 += analogRead(TemperaturaPin);
delay(200);
}
TemperaturaActual = (LecturaA0 / 1023.0) * 5 * 5;
Serial.println(TemperaturaActual);
//Pertenencia
if(Error < -4)
{
Negativo=1;
Cero=0;
Positivo=0;
}
if(Error > 4)
{
Negativo=0;
Cero=0;
Positivo=1;
}
if((Error > -4)&&(Error < 0))
{
Negativo=1-Cero;
Cero= (4-Error)/4;
Positivo=0;
//Reglas
R1= min(Negativo,Baja);
R2= min(Negativo,Estable);
R3= min(Negativo,Sube);
R4= min(Cero,Baja);
R5= min(Cero,Estable);
R6= min(Cero,Sube);
R7= min(Positivo,Baja);
R8= min(Positivo,Estable);
R9= min(Positivo,Sube);
Cambio=((Decrementar* -
10)+(Mantener*0)+(Incrementar*10))/(Decrementar+Mantener+
Incrementar);
//Salida;
FlotantePWM=FlotantePWM+Cambio;
if(FlotantePWM > 255) (FlotantePWM = 255);
if(FlotantePWM<0) (FlotantePWM=0);
PWM=FlotantePWM;
analogWrite (PWMPin,PWM);
PorcentajePWM = (PWM / 255.0)*100;
Serial.print("Temperatura Actual: ");
Serial.print(TemperaturaActual);
Serial.print(" ");
Serial.print("Temperatura Deseada: ");
Serial.print(TemperaturaDeseada);
Serial.print(" ");
Serial.print("%PWM:");
Serial.print(PorcentajePWM);
Serial.print(" ");
SAN NICOLÁS DE LOS GARZA, NUEVO LEÓN 27/09/2018
Serial.print("Error: ");
Serial.print(Error);
Serial.print(" ");
}
Pruebas Previas
Bibliografía:
http://www.iescamp.es/miarduino/2016/01/21/placa-
arduino-uno/
http://www.geekbotelectronics.com/producto/lm35-sensor-
de-temperatura/