Home
Accesso / Registrazione
 di 

SENSORE DI TEMPERATURA 9700AE E ARDUINO UNO

13 risposte [Ultimo post]
ritratto di Antonio SFERRA
Offline
Titolo: User
Utente
Ultima visita:
3 giorni 6 ore fa
Utente dal: 29/11/2013
Messaggi: 8
Utente PREMIUM

buonasera, sono un nuovo utente e ho un problema con arduino uno e i sensori 9700AE, in particolare ne ho collegato 1 al pin A0 e uno al pin A1. Per un paio di giorni leggevo a monitor i gradi centigradi con precisione al decimo di grado. Ho inserito una terza sonda, dello stesso tipo, sul pin A4 e sul pin A0 ho cominciato a leggere il valore 400 contro i 20,3 gradi della sonda collegata al pin A1 e pin A4. ho tolto dal programma il pin 4 e scollegato la sonda ma il problema persiste. Potete essere così gentili da trovare l'errore se è software o se bisogna inserire qualcosa sul sensore? i tre pin del sensore sono collegati al +, - e ingresso analogico. tensione di alimentazione 5V.
grazie

allego sketch.

/*
sferra
software di gestionne impianto ACS

descrizione ingressi uscite:
* A0 sensore bollitore
* A1 sensore scambiatore
* A2 sonda ambiente
* 1 ingresso solo bollitore = on = solo bollitore "se ingresso 1 e 2 a off impianto in automatico
* 2 ingresso solo riscaldamento ON = SOLO RISCALDAMENTO
* 12 Valvola deviatrice sanitaria (OFF manda su RUBINETTTO ON manda in CALDAIA)
* 13 Valvola deviatrice riscaldamento (OFF acqua a radiatori ON acqua a BOLLITORE)
* 11 LED 30°
* 10 LED 40°
* 9 LED 50°
* 8 LED 60°
* 7 LED 70°
* 6 LED 80°
* LED anodo pin lungo attaccato uscita
* LED catodo pin corto attacato al meno
*/

const float SONDABOLLITORE = A0; // SONDA BOLLITTORE
float TBOLLITORE = 0.0; // valore iniziale
const float SONDASCAMBIATORE = A1; // SONDA SCAMBIATORE
float TSCAMBIATORE = 0.0; // valore iniziale
const float SONDAAMBIENTE = A2; // SONDA AMBIENTE
float TAMBIENTE = 0.0; // valore iniziale

float setpoint1 = 23.0; // start acqua calda
float setpoint2 = 26.0; // stop acqua calda
float setpoint5 = 19.5; // minima temperatura ambiente per start bollitore

float setpoint3 = 42; // valore acqua X INGRESSO CALDAIA USCITA 12 HIGH
float setpoint4 = 47; // valore acqua X non ingresso CALDAIA USCITA 12 LOW
const int ingresso3 = 3; // variabile ingresso 1 estate inverno 0=estate
const int ingresso2 = 2; // variabile ingresso 2 on = solo riscaldamento
int D3 = 0; // 1 solo produzione acs
int D2 = 0; // 1 solo riscaldamento
boolean manbollitore = 0; // bit appogio bollitore manuale
boolean autbollitore = 0; // bit appogggio bollitore automatico

void setup() {
// DICHIARAZIONE INGRESSI USCITE:
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);

pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(ingresso3, INPUT);
pinMode(ingresso2, INPUT);
Serial.begin(9600);

}

void loop() {

TBOLLITORE = analogRead(SONDABOLLITORE)* 5.0/1024 ; // LEGGE TEMPERATURA BOLLITORE
TBOLLITORE = (TBOLLITORE -0.5); // OFFESET SENSORE
TBOLLITORE = (TBOLLITORE / 0.1); // GRADI C°
TSCAMBIATORE = analogRead(SONDASCAMBIATORE) * 5.0/1024 ; // LEGGE TEMPERATURA SCAMBIATORE
TSCAMBIATORE = (TSCAMBIATORE -0.5); // OFFESET SENSORE
TSCAMBIATORE = (TSCAMBIATORE / 0.01); // GRADI C°
TAMBIENTE = analogRead(SONDAAMBIENTE)*5.0/1024 ; // LEGGE TEMPERATURA SCAMBIATORE
TAMBIENTE = (TAMBIENTE -0.5); // OFFESET SENSORE
TAMBIENTE = (TAMBIENTE / 0.01); // GRADI C°
D3 = digitalRead(ingresso3); // legge ingresso 1 estate inverno
D2 = digitalRead(ingresso2); // legge ingresso 2 on = solo riscaldamento
Serial.print("bollitore: ");
Serial.println(TBOLLITORE);
Serial.print("scambiatore: ");
Serial.println(TSCAMBIATORE);
Serial.print("ambiente: ");
Serial.println(TAMBIENTE);
delay (1000);

// accendi led in funzione della temperatura
if (TBOLLITORE >= 10) {
digitalWrite(11, HIGH); // LED 30° ON
}
else {

digitalWrite(11, LOW);
}
if (TBOLLITORE >= 40) {
digitalWrite(10, HIGH); // LED 40° ON
}
else {

digitalWrite(10, LOW);
}
if (TBOLLITORE >= 50) {
digitalWrite(9, HIGH); // LED 50° ON
}
else {

digitalWrite(9, LOW);
}
if (TBOLLITORE >= 60) {
digitalWrite(8, HIGH); // LED 60° ON
}
else {

digitalWrite(8, LOW);
}
if (TBOLLITORE >= 70) {
digitalWrite(7, HIGH); // LED 70° ON
}
else {

digitalWrite(7, LOW);
}

if (TBOLLITORE >= 60)

{
digitalWrite(6, HIGH); // LED 80° ON
}
else {

digitalWrite(6, LOW);
}

if (TBOLLITORE <= setpoint3 ) {
digitalWrite(12, HIGH); // ingresso acqua caldaia
}

if (TBOLLITORE >= setpoint4 )
{
digitalWrite(12, LOW); // ingresso acqua caldaia
}

if

((((((TBOLLITORE<=setpoint1)|| (autbollitore==1)) && (D2==LOW)&&(D3==LOW)&&(TBOLLITORE<=setpoint2)&& (TAMBIENTE>setpoint5)))))

{
(autbollitore=1); // riscaldamento bollitore automatico
}
else
{

(autbollitore=0); // riscaldamento bollitore automatico
}

if (((((autbollitore==1)||(D3==HIGH)) && (TBOLLITORE <85) && (TBOLLITORE <=TSCAMBIATORE) && (D2==LOW) && (TSCAMBIATORE <90)))) // 13 ON se impianto in manuale o automatico; OFF se impianto in solo riscaldamento o supero 90°
{

digitalWrite(13, HIGH); // riscaldamento BOLLITORE
}

else
{
digitalWrite (13, LOW);
}

if (TSCAMBIATORE >90)
{

delay (300000); // attendi 5 minuti
}

else
{
delay (500);
}
}

ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
14 ore 29 min fa
Utente dal: 28/06/2011
Messaggi: 853
Utente PREMIUM
Buondì :)Una domanda, giusto

Buondì :)
Una domanda, giusto perchè non ho capito: il problema è iniziato quando hai collegato la sonda oppure quando hai messo mani al codice?!
Perchè in questo caso vorrei vedere il codice prima ;)

ritratto di Antonio SFERRA
Offline
Titolo: User
Utente
Ultima visita:
3 giorni 6 ore fa
Utente dal: 29/11/2013
Messaggi: 8
Utente PREMIUM
grazie per l'interessamento.

grazie per l'interessamento. il problema è il sensore in "corto" come diciamo in elettrotecnica dovuto all'immersione in acqua con cattivo isolante. Ho preso il tester è ho misurato la tensione tra la massa e il pin centrale del sensore che è risultata essere di quasi 5 volt, quindi fondo scala. Ho sostituito il sensore è tutto funziona perfettamente (in teoria). in pratica oggi ho testato il progetto realmente, quindi con la sonda scambiatore a 2m da arduino e la sonda bollitore a 10m da arduino.
la sonda scambiatore misura la temperatura in modo preciso (per la mia applicazione) con oscillazione massima di +/- 2°C, mentre la sonda bollitore ha avuto un oscillazione di +/- 10°C per circa due ore e dopo è andata in tilt, in particolare sul monitor veniva visualizzato -50.00°C e la tensione tra la massa e il pin centrale e zero.
La sonda è collegata con 3 dei 7 fili di un cavo fror, i restanti sono fase, neutro, terra e uno libero. adesso provo a utilizzare un cavo dedicato alla sonda ma devo prendere altre preucazioni? la temperatura della sonda dovrebbe variare tra 5 e 100°. saluti

ritratto di slovati
Offline
Titolo: User+
Utente+
Ultima visita:
18 ore 50 min fa
Utente dal: 12/01/2009
Messaggi: 28
Utente PREMIUM
9700 e Arduino

Ciao Antonio,
il sensore che stai utilizzando ha una sensibilità pari a 10 mV per grado centigrado. Quindi, nella formula che "calcola" la temperatura, occorre mettere come ultima istruzione una divisione per 0.01. Da una rapida controllata al codice allegato, vedo che questa divisione è correttamente eseguita per le variabili TAMBIENTE e TSCAMBIATORE, mentre per la variabile TBOLLITORE c'è una divisione per 0.1 anzichè per 0.01. Prova ad apportare questa modifica al codice e verifica se torna tutto a posto.
Saluti

ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
14 ore 29 min fa
Utente dal: 28/06/2011
Messaggi: 853
Utente PREMIUM
In effetti hai ragione. Però

In effetti hai ragione.
Però non so se basta solo questo sai?
Lui ha detto che p valori che legge son 400 a fronte di 20 e spiccioli...
Oddio, spero che i valori scritti si riferissero alle stesse temperature...

ritratto di Antonio SFERRA
Offline
Titolo: User
Utente
Ultima visita:
3 giorni 6 ore fa
Utente dal: 29/11/2013
Messaggi: 8
Utente PREMIUM
grazie per l'interessamento.

grazie per l'interessamento. La divisione per 0.1 è stata una prova per togliere le "centinaia", invece il problema era del sensore che mandava 5 Volt a arduino che procedeva correttamente ad eseguire le operazioni matematiche.
ciao, addesso ho il problema del sensore instabile e che invia 0 volt ad arduino anche se siamo a 30°C.

ritratto di Marven
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
7 settimane 1 giorno fa
Utente dal: 14/04/2013
Messaggi: 146
Utente PREMIUM
Ciao genteho dato una rapida

Ciao gente
ho dato una rapida occhiata e, oltre all'osservazione di slovati, noto che c'è un'incongruenza in queste linee

if (TBOLLITORE >= 60) <-- non dovrebbe essere 80???
{
digitalWrite(6, HIGH); // LED 80° ON
Ciao
Mario

ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
14 ore 29 min fa
Utente dal: 28/06/2011
Messaggi: 853
Utente PREMIUM
Well spotted out,

Well spotted out, Marven.;)

Chissà se si è risolto il problema... :D

ritratto di Antonio SFERRA
Offline
Titolo: User
Utente
Ultima visita:
3 giorni 6 ore fa
Utente dal: 29/11/2013
Messaggi: 8
Utente PREMIUM
in parte, perchè adesso non

in parte, perchè adesso non capisco perchè la sonda collegata a circa 10 metri da arduino ha funzionato, anche se male, per circa due ore e poi si è rotta.

ritratto di Antonio SFERRA
Offline
Titolo: User
Utente
Ultima visita:
3 giorni 6 ore fa
Utente dal: 29/11/2013
Messaggi: 8
Utente PREMIUM
Hai un occhio formidabile, in

Hai un occhio formidabile, in effetti oggi vedevo i led 80° spegnersi prima del led 70° e ho capito che qualcosa non andava e l'ho modificato.

ritratto di Marven
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
7 settimane 1 giorno fa
Utente dal: 14/04/2013
Messaggi: 146
Utente PREMIUM
Grazie Antonio :-)ho un po

Grazie Piero e Antonio :-)
ho un po perso la mano nella programmazione ma evidentemente "l'occhio" è rimasto ;-)
Ma alla fine funziona tutto adesso?
Ciao
Mario

ritratto di Antonio SFERRA
Offline
Titolo: User
Utente
Ultima visita:
3 giorni 6 ore fa
Utente dal: 29/11/2013
Messaggi: 8
Utente PREMIUM
ok con cavo "isolato" sta

ok con cavo "isolato" sta funzionando da 36 ore. il prossimo passo, purtroppo obbligatorio, è utilizzare un cavo schermato da posare in adiacenza ad altri cavi elettrici già presenti.

grazie.

ho una domanda:
Alla fine dello schetch ho messo un ritardo di 5 minuti in caso di supero dei 90 gradi, ma in realtà non dovrei fermare il programma ma mandare a off l'uscita 13 per 5 minuti o per un tempo impostato su una variabile (setpoint).

ritratto di Marven
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
7 settimane 1 giorno fa
Utente dal: 14/04/2013
Messaggi: 146
Utente PREMIUM
Ciao Antonio se ho capito

Ciao Antonio
se ho capito bene quello che hai scritto, secondo me basta aggiungere altre due righe di programma nel punto in cui hai inserito il "digitalWrite(300000)", una prima e una dopo come segue:
{
digitalWrite(13,LOW);
delay (300000); // attendi 5 minuti
digitalWrite(13,HIGH);

Spero di aver capito giusto
Ciao
Mario

ritratto di Antonio SFERRA
Offline
Titolo: User
Utente
Ultima visita:
3 giorni 6 ore fa
Utente dal: 29/11/2013
Messaggi: 8
Utente PREMIUM
scusa, mi sono spiegato male.

scusa, mi sono spiegato male. Quando la temperatura del sensore supera i 90 gradi l'uscita 13 va ad off in quanto la condizione di on non è più valida.
Al fine di evitare che l'uscita 13 diventi instabile perchè il sensore potrebbe lavorare a 89 o 88 o 90 0 91 per tempi inferiori al minuto, ho inserito un delay di 5 minuti alla fine del programma. questa funzione, nel punto dove l'ho messa (vedi fine schetch) arresta il loop, quindi ho bloccato il programma. Volevo evitare di bloccare il loop per 5 minuti ma mantenere l'uscita 13 a off per altri 5 minuti dopo che la temperatura sia ritornata sotto i 90 gradi.

grazie

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 2 utenti e 47 visitatori collegati.

Utenti online

Ultimi Commenti