Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Anexo 16
Anexo 16
#define SSR 36
#define pinData 2
#define led 13
#define tiempoCiclo 1000
double Setpoint, Input, Output;
double Kp=10, Ki=3, Kd=500;
float temperatura=0; //Se crea una variable flotante para
almacenar la temperatura
float temperatura1=0; //Se crea una variable flotante para
almacenar la temperatura
float temperatura2=0;
float temperatura3=0;
float temperatura4=0;
float temperatura5=0;
float temperatura6=0;
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3,
POSITIVE); // Seteamos la direccion I2C
void setup() {
lcd.begin(20,4);
lcd.createChar(7,newcaracter1);
lcd.createChar(3,newcaracter2);
lcd.createChar(6,newcaracter3);
lcd.createChar(5,newcaracter4);
Setpoint=170; // VARIAR AQUI LA TEMPERATURA ---------
-------------------------------------------------------------------------------
--------------
myPID.SetOutputLimits(0, tiempoCiclo);
myPID.SetSampleTime(tiempoCiclo);
myPID.SetMode(AUTOMATIC);
Serial.begin(115200);
pinMode(SSR,OUTPUT);
digitalWrite(SSR,LOW);
pinMode(led, OUTPUT);
digitalWrite(led,LOW);
//inicializa el LCD.
//lcd.begin(16, 2);
//delay(500);
lcd.setCursor(3,3);
delay(1000);
lcd.print("TESIS DE GRADO");
delay(3000);
Serial.begin(9600);
delay(500);
}
void loop() {
if (millis()-respuestaUltimaTemperatura>=tiempoCiclo){
temperatura6=ktg.readCelsius();
Input=(double)temperatura6;
myPID.Compute();
lasPIDCalculation=millis();
Serial.print(temperatura6);
Serial.print(" , ");
Serial.println(Output/50);
respuestaUltimaTemperatura = millis();
temperatura=kta.readCelsius();
Input=(double)temperatura;
temperatura1=ktb.readCelsius();
Input=(double)temperatura1;
temperatura2=ktc.readCelsius();
Input=(double)temperatura2;
temperatura3=ktd.readCelsius();
Input=(double)temperatura3;
temperatura4=kte.readCelsius();
Input=(double)temperatura4;
temperatura5=ktf.readCelsius();
Input=(double)temperatura5;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print( "TEMPERATURA EN (" );
lcd.setCursor(16,0);
lcd.write(3);
lcd.setCursor(17,0);
lcd.print("C)");
Serial.print("Temperatura = ");
Serial.print(temperatura);
Serial.println("C");
lcd.setCursor(0, 1);
lcd.print( "T1=" );
lcd.print(temperatura );
Serial.print("Temperatura = ");
Serial.print(temperatura1);
Serial.println("C");
lcd.setCursor(0, 2);
lcd.print( "T2=" );
lcd.print(temperatura1 );
Serial.print("Temperatura = ");
Serial.print(temperatura2);
Serial.println("C");
lcd.setCursor(0, 3);
lcd.print( "T3=" );
lcd.print(temperatura2 );
Serial.print("Temperatura = ");
Serial.print(temperatura3);
Serial.println("C");
lcd.setCursor(11, 1);
lcd.print( "T4=" );
lcd.print(temperatura3 );
Serial.print("Temperatura = ");
Serial.print(temperatura4);
Serial.println("C");
lcd.setCursor(11, 2);
lcd.print( "T5=" );
lcd.print(temperatura4 );
Serial.print("Temperatura = ");
Serial.print(temperatura5);
Serial.println("C");
lcd.setCursor(11, 3);
lcd.print( "T6=" );
lcd.print(temperatura5 );
}
control();
}
void control()
{
if((millis() <= (lasPIDCalculation +
Output))||(Output==tiempoCiclo))
{
//Power on:
digitalWrite(SSR, HIGH);
digitalWrite(led,HIGH);
}
else
{
//Power off:
digitalWrite(SSR, LOW);
digitalWrite(led,LOW);
}
}