Ennesimo controllo di temperatura; un'occhiata al mio sketch, pls?

Ciao Forum,

Qualche giorno fa, chiacchieravo con un utente FB a proposito di Arduino; mi dice che aveva problemi a controllare la temperatura di un certo processo che non ricordo manco cosa fosse (fermentazione? Boh…) e che non si trattava di un semplice termostato OFF/ON ma le esigenze erano un po’ più complesse. Nello specifico 1) Il sistema che realizza la regolazione può sia scaldare che raffreddare 2) Non può essere semplicemente acceso o spento ma la corrente deve essere data e tolta gradualmente.

Così mi son messo a scrivere lo sketch, e prima di dettagliare passo al finale della storia: l’utente nel frattempo ne aveva trovato uno in rete e quindi il problema è venuto meno. Ma io sono curioso di natura e spero sempre di imparare qualcosa in ogni occasione, sicché sono lo stesso contento di aver avuto un problema con cui cimentarmi. Sono però andato completamente a naso e non so se funzionerebbe. Vorrei chiedervi di darci un’occhiata alla luce dei punti seguenti:

  1. Si tratta di uno scheletro, non certo di qualcosa che può funzionare così come sta. Come potete vedere l’uscita è un numero compreso tra due limiti definibili dall’utente. Al valore inferiore il dispositivo deve erogare il massimo raffreddamento e al valore superiore il massimo riscaldamento. Oltre, non so.

  2. Ho dimenticato praticamente tutto dei miei passati studi, per giunta “controlli automatici” non faceva parte degli esami previsti e non ne so niente. Vado solo a tentoni. La questione è sapere se - come credo - ho implementato un PID in cui manca il termine della derivata. Se non è così: come si chiama quello che ho fatto? :smiley:

  3. Altra mia curiosità: essendo un sistema retroazionato (o almeno vorrebbe esserlo) ci saranno insiemi di valori per cui è stabile e altri in cui non lo è. Per quanto ne sapete c’è una procedura per determinare a priori le costanti del sistema oppure si dovrebbe andare per tentativi?

  4. Non ho potuto provare niente, non avendo i sensori. Poiché posso essere certo che ci saranno 15.600 sketch migliori e, soprattutto, collaudati, l’ottica con cui valutarlo dovrebbe essere solo un’occhiata al volo per aiutarmi a capire se ci sono errori macroscopici di impostazione, così se mi dovesse capitare un problema analogo avrei qualche nozione in più.

  5. Se ci sono brutture eccessive di programmazione mi farebbe piacere come posso migliorarle.

  6. Last but not least, so che esiste la libreria PID e so che è sempre una cattiva idea reinventare la ruota. Pertanto ho preso la stesura dello sketch come un esercizio nell’ottica di cui sopra.

Tutto ciò detto, lo sketch è in allegato, e vi ringrazio per qualsiasi osservazione vorrete condividere.

ciao!

Apx

PS - la parte del codice che legge le sonde me l’ha passata l’utente di cui dicevo. Se qualcuno sa di chi è sarei contento di sistemare i “credits” nella sezione iniziale. Non credo certo che quel che ho scritto meriti di essere diffuso ma ci tengo lo stesso.

thermo.ino (23 KB)

Perchè non hai allegato il file sul forum come fanno tutti? Dovrei creare un account dropbox per darci un'occhiata?

non avevo fatto caso che si possono allegare, ora provvedo.