hola a todos, que pena es que estoy haciendo una programación que permita a una placa peitier por medio de detección de temperatura que vaya de 44°C a 18°C y cuando el lm35 detecte estos picos haga loops, ayuda pls subo progama y circuito.
progama:
#define temp A1
float temper;
int peltierh=3;
int peltierc=5;
int coolervalue;
int icv;
double temps;
double ptemp=0;
double atemp;
int m,cs,hs;
int x,n;
int cva;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(temp,INPUT);
pinMode(peltierh,OUTPUT);
pinMode(peltierc,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
tempmeasurement();
if(Serial.available()>0){
m=Serial.parseInt();
cs=Serial.parseInt(); //Algún parámetro sobre la etapa de frío (COOL)
hs=Serial.parseInt(); //Algún parámetro sobre la etapa de calor (HOT)
if(Serial.read()=='\n'){ //El valor que toma m es lo que escoge el usuario en la aplicación para habilitar automático o manual entre calor o frío
if(m==2){
manualcool();
}else if(m==3){
manualheat();
else{
off();
}
}
}else{
if(m==2){
manualcool();
}else if(m==3){
manualheat();
}else{
off();
}
}
void tempmeasurement() { //Lee el valor que tomar el sensor de temperatura LM35, ETAPA DIFERENCIAL PARA LA MEDICIÓN DE LA TEMPERATURA
ptemp=0;
for(n=1;n<2001;n++){ //conteo de n tomando valores de 1 hasta 2000 para leer el LM35 y hacer la conversión, el conteo se hace con el fin de hacer un promedio de la temperatura que tiene del ambiente
temper=analogRead(temp);
temps=temper*0.48828125;
ptemp+=temps;
}
atemp=ptemp/2000;
temps=atemp;
Serial.print(atemp);
Serial.print("\n\n\n");
}
void coolingloop(){ //ETAPA DE FRÍO
for(x=0;x<6;x++){
cva=coolervalue+icv*x;
analogWrite(peltierc,cva);
digitalWrite(peltierh,LOW);
delay(1000);
if(x==5){
delay(1000);
}
if(Serial.available()>0){
break;
}
}
}
void heatingloop(){
for(x=0;x<6;x++){
cva=coolervalue+icv*x;
analogWrite(peltierh,cva);
digitalWrite(peltierc,LOW);
delay(1000);
if(x==5){
delay(1000);
}
if(Serial.available()>0){
break;
}
}
}
gracias