Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Lettura sensore "con isteresi"

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[1] Lettura sensore "con isteresi"

Messaggioda Foto Utentecaesar753 » 4 dic 2021, 23:12

Salve a tutti,

scrivo questo post perché ho un problema "concettuale" e non riesco a trasporlo a livello logico-informatico: mi sono costruito un cronotermostato con arduino, funziona bene e fa quello che voglio ma ho un problema con la lettura del sensore di temperatura. Ho un sensore di temperatura DS18B20 che restituisce un numero a due cifre decimali, lo converto in int con l'opportuno arrotondamento (<0.50 -> n; >=0.50 ->n+1) e lo faccio confrontare con la temperatura impostata t, finché le due temperature sono distanti funziona bene, il problema è quando la lettura del sensore si avvicina a quella impostata: il valore letto, infatti, comincia ad oscillare tra t-1 e t (immagino perché la temperatura letta oscilli tra t.49 e t.50 o giù di lì) il che fa scattare continuamente il relay che attacca/stacca la caldaia.

Come faccio ad avere una certa "isteresi" o comunque una soglia di trigger più ampia? Ho provato a fare la media ma non ha funzionato granchè, ho provato anche ad aggiungere/togliere un certo valore prefissato, ma questo non fa che spostare più giù o più su il problema...

Grazie a chi risponderà
Avatar utente
Foto Utentecaesar753
809 2 6 7
Expert
Expert
 
Messaggi: 577
Iscritto il: 4 giu 2011, 12:53
Località: Pisa

2
voti

[2] Re: Lettura sensore "con isteresi"

Messaggioda Foto Utenteelfo » 4 dic 2021, 23:54

Pseudocodice
Codice: Seleziona tutto
Thi=20.2 //soglia superiore
Tlo=19.8 //soglia inferiore Thi-Tlo = isteresi
Tt=Tlo //imposto la soglia di scatto

Do loop

Ta=read_ta //leggo temperatura ambiente
If Ta < Tt //fa freddo
(istruzione per accendere la caldaia) // accendo caldaia
Tt=Th //imposto la soglia di scatto al valore superiore
else  //fa caldo
(istruzione per spengere la caldaia) //spengo caldaia
Tt=Tl //imposto la soglia di scatto al valore inferiore

end loop


Leggi anche (prima voce trovata con google "hysteresis arduino")

Hysteresis
https://forum.arduino.cc/t/hysteresis/506190
Avatar utente
Foto Utenteelfo
6.819 4 5 7
G.Master EY
G.Master EY
 
Messaggi: 2828
Iscritto il: 15 lug 2016, 13:27

0
voti

[3] Re: Lettura sensore "con isteresi"

Messaggioda Foto Utentestefanopc » 4 dic 2021, 23:59

Secondo me prima di tutto devi rallentare la frequenza con cui il micro compie il controllo e utilizzare magari una media su molte letture ad esempio.
Una lettura al secondo e ogni cento fai la media e il confronto.
Puoi introdurre anche una piccola isteresi per limitare gli interventi allontanando la soglia esattamente come succede nei comparatori analogici con la reazione positiva.
Altrimenti c'è il sistema Pid che con un micro non è eccessivamente complicato da implementare.
In rete e anche su EY si trova molto materiale per studiare e affrontare l'argomento.
https://www.electroyou.it/vis_resource. ... zio&id=166
Ciao
600 Elettra
Avatar utente
Foto Utentestefanopc
13,3k 5 9 13
Master EY
Master EY
 
Messaggi: 5567
Iscritto il: 4 ago 2020, 9:11

0
voti

[4] Re: Lettura sensore "con isteresi"

Messaggioda Foto Utentecaesar753 » 5 dic 2021, 1:47

Foto Utenteelfo il tuo pseudocodice è stato illuminante, grazie!
Avatar utente
Foto Utentecaesar753
809 2 6 7
Expert
Expert
 
Messaggi: 577
Iscritto il: 4 giu 2011, 12:53
Località: Pisa


Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti