Go Down

Topic: Progetto Bollitore automatico (Read 191 times) previous topic - next topic

mariano67

May 11, 2019, 10:36 am Last Edit: May 11, 2019, 12:13 pm by mariano67
Carissimi,
per un mio hobby desidero utilizzare arduino regolare la temperatura di un bollitore. Mi spiego, utilizzando arduino con una termocoppia (max6675) ed un relay, desidero riscaldare l'acqua in vari step. esempio attivo relay al quale è collegato una resistenza, che scalda fino alla temperatura di 30°, pe poi riposare per 5 minuti, per poi riprendere fino a 40° per poi riprendere e così via dicendo.
ho utilizzato per questo progetto il seguente loop:

Code: [Select]
"/ Sample Arduino MAX6675 Arduino Sketch

#include "max6675.h"

int ktcSO = 12;
int ktcCS = 10;
int ktcCLK = 13;
int rele = 7;
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
float temperature = 0.0;
long time=0;


MAX6675 ktc(ktcCLK, ktcCS, ktcSO);

 
void setup() {
 Serial.begin(9600);
 // give the MAX a little time to settle
 delay(500);
 pinMode(led1, OUTPUT);
 pinMode(led2, OUTPUT);
 pinMode(led3, OUTPUT);
 pinMode(led4, OUTPUT);
 pinMode(rele, OUTPUT);
}

void loop() {
 // basic readout test
 
  Serial.print("Deg C = ");
  Serial.print(ktc.readCelsius());
  Serial.print("\t Time: ");
  time = (millis()/1000);
 
 //prints time since program started
  Serial.println(time);
 // wait a second so as not to send massive amounts of data
  delay(1000);

  temperature = ktc.readCelsius();
  digitalWrite (rele, HIGH);

  if(temperature>30){
   digitalWrite(led1, HIGH);
   digitalWrite(led2, LOW);
   digitalWrite(led3, LOW);
   digitalWrite(led4, LOW);
   digitalWrite(rele, LOW);
   delay(300000);
  }
 digitalWrite (rele, HIGH);
 delay(1000);

  if(temperature>40){
   digitalWrite(led1, LOW);
   digitalWrite(led2, HIGH);
   digitalWrite(led3, LOW);
   digitalWrite(led4, LOW);
   digitalWrite(rele, LOW);
   delay(1200000);

etc."



il problema è che dopo aver raggiunto la temperatura di 30° e quindi aver fatto la pausa, riprende il lavoro ma invece di passare al lavoro successivo, ovvero di raggiungere i 40° e quindi pausa, riprende quello precedente ovvero si ferma di nuovo a 30° ecc. sicuramente il problema  è dovuto al fatto che dopo la pausa il liquido scende di gradazione (al di sotto dei 30°) e quindi mi si ripete la prima parte del programma, e non passa alla fase successiva. Mi potreste aiutare. Grazie.

Standardoil

guarda:
io ti aiuto volentieri, ma metto un paio di paletti, (che se non li metto io, arriva Guglielmo e li pianta con la mazza del 18)
1) metti tra i tag code quel programma, oppure allegalo (meglio i tag code)
2) giura e spergiura che NON usi materiale e collegamenti a 230Vca, ma fai modellini a 12/24V
3) mettici un minimo di inventiva: se devi fare un riscaldamento a gradini (tanti o pochi) quello che ti serve è una "lista" di "informazioni accoppiate": a che temperatura arriva e quanto deve starci
da li, leggendo voce a voce dalla lista, puoi comandare sia il termostato che il timer
prova buttar giù qualcosa....
Prima legge di Nelson (che sono io): Se vuoi il mio aiuto dimostrami almeno che hai letto il nostro "aiutateCi ad aiutarVi"

Non bado a studenti, che copino altrove

Tu hai problema-Io ti domando-Tu non mi rispondi: vuol dire che non ti serve più

mariano67

Grazie Nelson, ok adesso provo a metter giù un un programmino con più informazioni (se ci riesco). In effetti ad essere onesto devo proprio comandare una resistenza a 230Vca (di 2000W), e non ti nascondo che l'ho già provato e, a parte  il problema riscontrato, non mi è sembrato rilevare problemi. sul relè c'è segnato che lavora con la 250 Vca 10A, quindi scusa l'ignoranza, quale potrebbe essere il problema?. Ciao
r

Standardoil

#3
May 11, 2019, 11:54 am Last Edit: May 11, 2019, 11:55 am by Standardoil
tre problemi:
1) non basta un relè adatto per garantire la sicurezza, ci sono anche altri fattori, il fatto che tu lo chieda implica che non sei in grado di affrontarli
2) quandanche i dati di targa del relè fossero reali (e se si tratta di relè cinesi non mi fiderei) comunque mancano ad esempio isolamento e classe di servizio del relè, che sono vitali per dire se adatto o no
3) comunque il parlare di questi argomenti è vietato, non hai letto il regolamento?

quindi, ripeto: o giuri e spergiuri di fare tutto in un riscaldatore modellino (es le stampanti 3d) oppure appena passa Guglielmo ti (S)tronca di brutto........
peggio ancora NON hai ancora messo a posto il primo post
Vorrei dire che il Sommo Moderatore tollera poco queste cose, ma sarei ottimista...

Prima legge di Nelson (che sono io): Se vuoi il mio aiuto dimostrami almeno che hai letto il nostro "aiutateCi ad aiutarVi"

Non bado a studenti, che copino altrove

Tu hai problema-Io ti domando-Tu non mi rispondi: vuol dire che non ti serve più

mariano67

ok Nelson, seguo i tuoi giusti consigli, ho messo i tag (e spero di averlo fatto bene), e userò questo post solo per modellismo (fintanto che non sarò in grado di poter valutare il tutto in totale sicurezza).

steve-cr

... oppure sappiamo che stai usando un riscaldatore ma non vogliamo sapere a che tensione lavora (perché siamo SICURI che lavora a 24Vac), tanto ci concentriamo solo sull'attivazione del tuo relé...

Quello che vuoi tu è un riscaldamento con algoritmo PID (cerca su google se sei curioso).
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

Claudio_FF

#6
May 11, 2019, 04:29 pm Last Edit: May 11, 2019, 05:19 pm by Claudio_FF
sul relè c'è segnato che lavora con la 250 Vca 10A
Anche parlando di 24V.... quei dati indicano voltampere massimi che non coincidono con i watt di potenza reale gestibile, che, a seconda del relé (bisogna leggere sul datasheet) si può attestare a valori decisamente inferiori, anche solo 150W. Per dire, i piccoli relé Songle dei moduli Arduino non sono adatti per gestire oltre 240W (datasheet) anche se guardando solo tensione e corrente si crede di poter gestire 2300W... come con i moduli sonoff che poi si incendiano e oh... why? ???


Per il resto credo che il problema si risolva semplicemente non lasciando sbollire il tutto per cinque minuti, ma in quei cinque minuti continuare a riaccendere/rispegnere il relé se la temperatura scende/sale. Quindi non si usa un delay lunghissimo, ma almeno un while locale in cui effettui le operazioni di cui sopra. Se nel while metti un piccolo delay da 1 secondo, allora basta contare N giri per uscire dopo il tempo (più o meno) corretto (credo che qui secondo più o secondo meno non cambi nulla). Diciamo che è la soluzione più semplice e comprensibile senza stravolgere la logica già impostata.
Una domanda ben posta è già mezza risposta.

Standardoil

a questo livello io direi che possiamo passare al punto tre della mia lista originale
prova a far qualcosa sull'organizzazione dei dati, per poi ciclare....
non mi sono chiare tutte quelle uscite led1234 che metti solo low
Prima legge di Nelson (che sono io): Se vuoi il mio aiuto dimostrami almeno che hai letto il nostro "aiutateCi ad aiutarVi"

Non bado a studenti, che copino altrove

Tu hai problema-Io ti domando-Tu non mi rispondi: vuol dire che non ti serve più

gpb01

#8
May 11, 2019, 05:41 pm Last Edit: May 11, 2019, 06:32 pm by gpb01
La finiamo di prenderci in giro? ... basta che mi assento è il REGOLAMENTO viene beatamente ignorato.

A questo thread NON si doveva rispondere sin dall'inizio e avverto tutti i partecipanti che in futuro sarò molto meno "tollerante" con chi rispnde a thread in chiara violazione del regolamento.

Ora, se l'OP ha bisogno di aiuto per costuire un PID, apre un thread in cui NON nomina alcunché sia oltre la "bassissima tensione", con potenze in gioco ragionevolmente non pericolose e nessuno dice nulle;   questo viene chiuso e tutti richiamati al rispetto del regolamento.

Guglielmo
Search is Your friend ... or I am Your enemy !

Go Up