Lettura sensore "con isteresi"
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à
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à