Questo articolo dimostra come implementare un termostato impiegando il sensore di temperatura DHT22. L'articolo precedente (questo) descrive un termostato basato su una sonda di temperatura NTC. La domanda mi viene spontanea, quanto codice del precedente articolo posso riusare?
Una caratteristica qualitativa del codice è la riusabilità, se nel precedente articolo ho scritto codice di qualità eccellente mi devo aspettare una riusabilità eccellente.
Il motto è scrivi una sola volta il codice e riusalo tutte le volte che serve. Il codice scritto nel precedente articolo non è eccellente ma è riusabile e questa non è una caratteristica da sottovalutare.
Sicuramente la funzione checkTermostat()
è riusabile come pure la parte di codice presente nella funzione loop() che mi permette di regolare il setpoint
tramite il potenziometro. Le funzioni analog16samples()
e getTemperature()
non servono più e vengono quindi rimosse. Di seguito la funzione loop() modificata per lavorare con il DHT22:
Nel loop ci serve eseguire del codice con temporizzazione di 2 secondi, a questo serve la if (millis() - g_timer2sec .... Ogni due secondi interroghiamo il DHT22, la temperatura viene visualizzata sul display, poi convertita a int16_t e il valore salvato nella variabile g_temperature. Il resto del codice è quasi uguale a quello presente nel precedente articolo.
Per la conversione a int16_t
moltiplichiamo per 10 (es. 24.1°C x 10 = 241), il risultato della moltiplicazione viene assegnato alla variabile g_temperature e la conversione da tipo float a tipo int16_t viene fatta magicamente dal compilatore.
Moltiplichiamo per 10 poiché il sensore ha risoluzione di 0.1°C (decimi di grado), mentre con il sensore NTC moltiplicavamo per 100 così da avere risoluzione di 0.01°C (centesimi di grado).
- Nota sul relay: Il relay presente nel progetto è connesso direttamente ad un pin di arduino, ciò è possibile solo con il simulatore, nella pratica non si fa per non guastare arduino.
Poiché moltiplichiamo la temperatura per 10, facciamo la stessa cosa con il setpoint e l'isteresi. La modifica per il setpoint si riduce a:
Come sempre, per concludere il link al progetto con il simulatore online wokwi.
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale
Nessun commento:
Posta un commento