sensore di temperatura con relè

salve a tutti, sono alle prime armi con arduino e ho bisogno di aiuto XD
il mio intento è quello di riuscire a far scattare il relè arrivato ad una determinata temperatura.
sono quasi riuscito nell’intento ma ho un piccolo problema : arrivato alla temperatura scelta, il relè scattando manda in tilt il sensore che di botto sale, mettendoci una vita ad abbassarsi di temperatura. chiedo il vostro aiuto :slight_smile:

Untitled Sketch.fzz (13.6 KB)

DISPLAY_RELE.ino (1.05 KB)

Ti invitiamo a presentarti qui: http://forum.arduino.cc/index.php?topic=113640.0 e a leggere il regolamento: http://forum.arduino.cc/index.php?topic=149082.0 - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: http://forum.arduino.cc/index.php?topic=146152.0 - qui le pinout delle varie schede by xxxPighi: http://forum.arduino.cc/index.php?topic=151646.0 - qui una serie di link utili: http://forum.arduino.cc/index.php?topic=126861.0

Quale sensore stai usando e quale relé. Come stai alimentando Arduino. Ciao Uwe

il relè è SMI-05VDC-SL-2C e il sensore è LM35. il circuito è alimentato dai 5 volt di arduino alimentato dal computer

come dico sempre, è megli allegare lo ashema elettrico, cosi si vede il tutto comè collegato ;) (e magari una bella foto del circuito reale..no fritzing)

questo è lo schema con fritzing la foto la metterò successivamente

attendo lo schema no fritzing, ma quello classino con i componeti disegnati

Fermi, non è un problema di schema elettrico. Nel tuo sketch ci sono un bel pò di problemi.

  1. prima di tutto tu calcoli in tempC la temperatura e stampi questo valore su lcd. Usi una variabile float con tutti i calcoli con virgola (ovvero costanti come 5.0) e questo è okay.
    Poi fai un if per verificare se superi 28 MA ricalcoli la temperatura ripartendo da valore facendo calcoli SENZA le virgole. :fearful:
    O ripeti gli stessi calcoli oppure utilizzi semplicemente tempC:
if (tempC > 28.0) { // invece di if ((5*valore*100/1024) > 28){
  1. poi che è sto macello?
 long valore = analogRead (A0);
  lcd.print("Temperatura"); // stampa della prima riga sull'lcd
  tempC = analogRead(tempPin);           //lettura valore del sensore
  tempC = (5.0 * tempC * 100.0)/1024.0;  //conversione del dato analogico in temperatura

Il sensore di temperatura è su A0, perchè poi leggi con analogRead(tempPin) ? tempPin=0 quindi stai leggendo da pin 0, non ha senso.

Codice che mi pare corretto:

 long valore = analogRead (A0);
  lcd.print("Temperatura"); // stampa della prima riga sull'lcd
  tempC = (5.0 * float(valore) * 100.0)/1024.0;  //conversione del dato analogico in temperatura

si, e' un errore, ma in questo caso non ha influenza, visto che

analogRead(A0)
analogRead(0)
analogRead(14)

sono la stessa cosa

per quanto riguarda il circuito? credo sia li il problema

a occhi sembra correto, ma come gia detto, dipende come lo hai fatto realmente e con fritzing non lo si capisce, per cui sarebbe meglio vedere lo schema e una bella foto su come è fatto (se ne nedono di cose curiose!)

per il programma lascia la parola agli altri :) (in effetti sembra piu un problema software)

SE NON VA BENE CON FLIZTING DIMMI TE CON QUALE PROGRAMMA TE LE DEVO FARE IL CIRCUITO

ciao delay

allora, per cominciare dai sfogo al tuo nik (se si scrive cosi), chiudi gli occhi, respira, attendi un po (delay), relax ecc. poi, non urlare che non serve a niente, anzi a volte porta a non avere più aiuto dagli altri utenti del forum. detto questo immagino che a matrinix non importi quale programma usi per disegnare lo schema, basta che alla fine lo possa vedere (lo schema). anche carta e penna seguita da foto immagino vada benissimo ;)

ciao pippo72

scusi per prima ma ero in agitazione perchè ho una scadenza e cercavo di fare più infrenta possibile scusate davvero

ero talmente di fretta che avevo inserita la maiuscola , e non ho fatto caso ,ma davvero non ce l'ho con voi ,per cortesia aiutatemi ora vi invierò la foto grazie e scusate ancora per l'equivoco

ecco qui lo schema disegnato ( spero si legga bene)

mmh.. azardo... se la cosa [u]non è software[/u] potrebbe esssere che quando il rele è eccitato (quindi consuma corrente) essendo che relè e sensore son sullo stesso "canalae" di alimentazione, non vorrei che esso (il relè) andasse a immettere rumore o creasse problemi a quella linea (sbalzini di tensione) che possa andar a compremettere la lettura... prova magari a mettere tra l'ngresso della tensione del sensore e massa un condensatorino (10nF dicono i DS).

http://www.ti.com/lit/ds/symlink/lm35.pdf

Puoi anche provare ad usare 2 alimentazioni separate (una per il rele e Arduino per il resto) con GND in comune.

Per il software, il primo punto può funzionare ma non facendo due analogRead() una in coda all'altra. Per il punto due, quel tuo if è errato (rifai i calcoli senza float). Hai corretto il codice? Hai riprovato?

buon giorno , ho fatto come mi avevate consigliato voi ,il probelma è che mi visualizza sempre i soliti valori tipo 27,32 ecc… come potrei fare per visualizzare ogni tipo di temperatura ?? vi sarei grato se mi aiutasse per favore

non capisco se ora funziona o no... (forse il caffè deve fare ancora effetto..)