salve ragazzi, dovrei comandare 4 relè mediante una sonda di temperatura e regolare con un potenziometro la temperatura a cui si desidera arrivare.
esempio: potenziometro impostato su 20 gradi
quando la sonda rileva 20 tutto fermo,
quando rileva 20,4 si accende il primo relè,
quando rileva 20.8 si accende il primo e il secondo relè,
quando rileva 21.2 si accende il primo il secondo e il terzo relè,
quando rileva 21.6 si accende il primo il secondo il terzo relè e il quarto relè.
come posso realizzare lo sketch? grazie in anticipo
Per prima cosa devi decidere che tipo di sonda per la temperatura utilizzare. Analogica o Digitale, un NTC o un LM35 o un DS18B20.
Poi scrivi uno sketch che rilevi la temperatura e la stampi su seriale. Trovi un milione di esempi su internet.
Infine con il dato della temperatura, tarata e calibrata, e una serie di IF comandi l'apertura e la chiusura dei relè (altro milione di esempi su internet).
Easy.
io sto usando un lm35.
e il potenziometro? ho notato che muovendo il potenziometro mi cambia anche la temperatura...
questo è il mio sketch non finito e incasinato
int led1=10;
int led2=6;
int led3=5;
int led4=3;
int pot=0;
int sens= A1;
float tempC;
int reading;
int potValue;
int buttonPin = 12;
int buttonState=0;
boolean pote=false;
void setup ()
{
Serial.begin(9600);
pinMode (buttonPin, INPUT);
pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
}
void loop(){
if (buttonState == HIGH) poten();
buttonState = digitalRead(buttonPin);
if (potValue == 1023) caso();
}
void poten()
{
if (pote==false){
potValue = analogRead(pot);
Serial.println(potValue);
delay(10000);
}
if(buttonState == LOW){
pote=true;
}
}
void caso()
{
reading = analogRead(sens);
tempC = reading * 0.48828125;
Serial.println(tempC);
if (tempC == 20);
{
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
}
if (tempC >= 20.4 && tempC <20.8);
{
digitalWrite (led1, HIGH);
}
if (tempC >= 20.8 && tempC <21.2);
{
digitalWrite (led1,HIGH);
digitalWrite (led2,HIGH);
}
if (tempC >= 21.2 && tempC <21.6);
{
digitalWrite (led1,HIGH);
digitalWrite (led2,HIGH);
digitalWrite (led3,HIGH);
}
if (tempC >= 21.6);
{
digitalWrite (led1,HIGH);
digitalWrite (led2,HIGH);
digitalWrite (led3,HIGH);
digitalWrite (led4,HIGH);
}
}
Posta i collegamenti del sensore e del potenziometro, quasi sicuramente il problema e li.
Non ti aspettare una tensione stabile di 5V dalla usb del PC, usa un alimentatore esterno da >7V <15V da inserire nella presa DC di arduino.
Inoltre c'è la possibilità di sfruttare il riferimento interno agli atmega, sempre che di atmega si tratti.
Nel forum cerca i post legati a LM35, ne troverai molti.