Sommario:
- Forniture
- Passaggio 1: circuiti
- Passaggio 2: metodo
- Passaggio 3: TMP36 - Prova iniziale
- Passaggio 4: risultati della sostituzione del potenziometro
- Passaggio 5: letture medie e risultato
- Passaggio 6: DS18B20 - Test iniziale
- Passaggio 7: DS18B20 funziona bene
- Passaggio 8: DHT22 e DHT11
- Passaggio 9: risultati DHT22
- Passaggio 10: test DTH11
- Passaggio 11: BME680
- Passaggio 12: quale dovrei usare?
- Passaggio 13: ulteriori riflessioni e sperimentazioni
- Passaggio 14: grafico completo
- Passaggio 15: Conclusioni
Video: Test dei sensori di temperatura: quale fa per me?: 15 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Uno dei primi sensori che i neofiti dell'informatica fisica vogliono provare è qualcosa per misurare la temperatura. Quattro dei sensori più popolari sono il TMP36, che ha un'uscita analogica e necessita di un convertitore analogico-digitale, il DS18B20, che utilizza la connettività a un filo, il DHT22, o il DHT11 leggermente più economico, che necessita solo di un pin digitale, ma anche fornisce una lettura dell'umidità, e infine il BME680 che utilizza I2C (con SPI anche su alcune schede breakout) e fornisce temperatura, umidità, gas (VOC) e pressione atmosferica ma costa un po' di più.
Voglio vedere quanto sono accurati e scoprire eventuali vantaggi o svantaggi. Possiedo già un accurato termometro a mercurio, rimasto dalla stampa fotografica a colori ai tempi dell'elaborazione chimica, con cui confrontarli. (Non buttare mai niente - ne avrai bisogno in seguito!)
Userò CircuitPython e una scheda di sviluppo Adafruit Itsybitsy M4 per questi test. Sono disponibili driver adatti per tutti i dispositivi.
Forniture
La mia lista iniziale:
- Microcontrollore Itsybitsy M4 Express
- cavo micro USB - per la programmazione
- TMP36
- DS18B20
- Resistenza da 4,7K Ohm
- DHT22
- BME680
- Multimetro
- Tagliere o stripboard
- Cavo di collegamento
Passaggio 1: circuiti
I fili arancioni sono 3,3 V
I fili neri sono GND
Nella parte inferiore della scheda ci sono i punti di prova per misurare le tensioni. (Uscita analogica 3.3v, GND e TMP36)
Le prese centrali sono, da sinistra a destra:
- TMP36: 3.3v, uscita segnale analogico, GND
- DS18B20: GND, uscita segnale digitale, 3.3v
- DHT22: 3.3v, uscita segnale, vuoto, GND
- BME680: 3.3v, SDA, SCL, vuoto, GND
Il connettore posteriore, per il collegamento alla scheda IB M4E, da sinistra a destra
- 3.3v
- TMP36 - uscita analogica al pin A2
- GND
- DS18B20 uscita digitale al pin D3 - verde
- Uscita digitale DHT22 al pin D2 - giallo
- SDA - bianco
- SCL - rosa
Il resistore da 4,7 K Ohm è un pullup dal segnale a 3,3 V per la connessione a un filo sul DS18B20.
Ci sono 2 tracce tagliate sul retro del tabellone:
Sotto l'estremità sinistra di entrambi i fili rosa e bianco. (Sotto il filo giallo.)
Passaggio 2: metodo
Per ogni sensore scriverò un breve script per leggere la temperatura (e altri elementi se disponibili) più volte e controllare la temperatura rispetto al mio termometro a mercurio (Hg). Cercherò di vedere quanto la temperatura si avvicina alla lettura del mercurio e se le letture sono stabili/coerenti.
Guarderò anche la documentazione per vedere se le letture rientrano nell'accuratezza prevista e se c'è qualcosa che può essere fatto per apportare miglioramenti.
Passaggio 3: TMP36 - Prova iniziale
La gamba sinistra è 3,3 V, la gamba destra è GND e la gamba centrale è una tensione analogica che rappresenta la temperatura utilizzando la seguente formula. TempC = (millvolt - 500) / 10
Quindi, 750 millivolt danno una temperatura di 25 C
Sembra che ci siano un paio di problemi qui. La temperatura del termometro a mercurio "normale" è molto più bassa di quella del TMP36 e le letture non sono molto coerenti - c'è un po' di "jitter" o rumore.
Il sensore TMP36 invia una tensione proporzionale alla temperatura. Questo deve essere letto dal convertitore A/D prima che venga calcolata la temperatura. Leggiamo la tensione direttamente dalla gamba centrale del sensore con un multimetro e confrontiamola con il risultato dell'A/D. La lettura dalla gamba centrale con il mio multimetro è 722 millivolt, molto più bassa e una lettura molto stabile.
Ci sono due cose che possiamo provare. Sostituire un potenziometro per il TMP36 e regolare la tensione nel calcolo alla tensione effettiva del microcontrollore. Vedremo quindi se la tensione calcolata è più vicina e se il rumore/jitter è ridotto.
Misuriamo la tensione effettiva utilizzata dal microcontrollore e dall'A/D. Si presumeva che questo fosse 3.3v ma in realtà è solo 3.275v.
Passaggio 4: risultati della sostituzione del potenziometro
Questo è molto meglio. Le letture sono entro un paio di millivolt con molto meno rumore. Ciò suggerisce che il rumore provenga dal TMP36 piuttosto che dall'A/D. La lettura sul misuratore è sempre stabile - nessun jitter. (Il misuratore potrebbe "attenuare" l'uscita nervosa.)
Un modo per migliorare la situazione potrebbe essere quello di prendere una lettura media. Prendi dieci letture velocemente e usa la media. Calcolerò anche la deviazione standard mentre cambio programma, per dare un'indicazione della diffusione dei risultati. Conterò anche il numero di letture entro 1 deviazione standard della media: maggiore è, meglio è.
Passaggio 5: letture medie e risultato
C'è ancora molto rumore e la lettura del TMP36 è ancora più alta di quella del termometro a mercurio. Per ridurre il rumore ho incluso un condensatore da 100NF tra segnale e GND
Ho quindi cercato altre soluzioni su Internet e ho trovato queste: https://www.doctormonk.com/2015/02/accurate-and-re… Il Dr Monk suggerisce di includere un resistore da 47 k Ohm tra segnale e GND.
www.desert-home.com/2015/03/battery-operate… Mentre questo ragazzo suggerisce di ordinare 15 letture in ordine e fare una media del centro 5.
Ho modificato la sceneggiatura e il circuito per includere questi suggerimenti e ho incluso una lettura dal termometro a mercurio.
Alla fine! Ora abbiamo letture stabili all'interno dell'intervallo di precisione della descrizione del dispositivo.
Questo è stato un grande sforzo per far funzionare il sensore che ha solo una precisione del produttore di:
Precisione - Massima (minima): ±3°C (±4°C) Costano solo circa $ 1,50 (£2)
Passaggio 6: DS18B20 - Test iniziale
Essere molto attenti. Questo pacchetto sembra molto simile al TMP36 ma le gambe sono al contrario con 3.3v a destra e GND a sinistra. L'uscita del segnale è al centro. Per far funzionare questo dispositivo abbiamo bisogno di un resistore da 4,7 k Ohm tra segnale e 3,3 V. Questo dispositivo utilizza il protocollo a un filo e abbiamo bisogno di scaricare un paio di driver nella cartella lib dell'Itsybitsy M4 Express.
Questo costa circa $ 4 / £ 4 Specifiche tecniche:
- Intervallo di temperatura utilizzabile: da -55 a 125 °C (da -67 °F a +257 °F)
- Risoluzione selezionabile da 9 a 12 bit
- Utilizza l'interfaccia 1-Wire - richiede solo un pin digitale per la comunicazione
- ID univoco a 64 bit masterizzato nel chip
- Più sensori possono condividere un pin
- ±0,5°C Precisione da -10°C a +85°C
- Sistema di allarme per il limite di temperatura
- Il tempo di interrogazione è inferiore a 750 ms
- Utilizzabile con alimentazione da 3,0 V a 5,5 V
Il problema principale con questo sensore è che utilizza l'interfaccia Dallas 1-Wire e non tutti i microcontrollori hanno un driver adatto. Siamo fortunati, c'è un driver per l'Itsybitsy M4 Express.
Passaggio 7: DS18B20 funziona bene
Questo mostra un ottimo risultato.
Una serie costante di letture senza lavoro extra e costi di calcolo. Le letture rientrano nell'intervallo di precisione previsto di ±0,5°C rispetto al mio termometro a mercurio.
C'è anche una versione impermeabile a circa $ 10 che ho usato in passato con uguale successo.
Passaggio 8: DHT22 e DHT11
Il DHT22 utilizza un termistore per ottenere la temperatura e costa circa $ 10 / £ 10 ed è il fratello più accurato e costoso del più piccolo DHT11. Utilizza anche un'interfaccia a un filo ma NON è compatibile con il protocollo Dallas utilizzato con il DS18B20. Rileva sia l'umidità che la temperatura. Questi dispositivi a volte necessitano di un resistore di pull up tra 3,3 v e il pin del segnale. Questo pacchetto ne ha già uno installato.
- Basso costo
- Alimentazione da 3 a 5 V e I/O
- Utilizzo corrente max 2,5 mA durante la conversione (durante la richiesta dei dati)
- Buono per letture di umidità 0-100% con una precisione del 2-5%
- Buono per letture di temperatura da -40 a 80°C ±0,5°C di precisione
- Frequenza di campionamento non superiore a 0,5 Hz (una volta ogni 2 secondi)
- Dimensioni corpo 27 mm x 59 mm x 13,5 mm (1,05" x 2,32" x 0,53")
- 4 pin, spaziatura 0,1"
- Peso (solo il DHT22): 2,4 g
Rispetto al DHT11, questo sensore è più preciso, più accurato e funziona in un intervallo più ampio di temperatura/umidità, ma è più grande e più costoso.
Passaggio 9: risultati DHT22
Questi sono risultati eccellenti con pochissimo sforzo. Le letture sono abbastanza stabili e all'interno della tolleranza prevista. La lettura dell'umidità è un vantaggio.
Puoi eseguire solo letture ogni secondo.
Passaggio 10: test DTH11
Il mio termometro a mercurio ha mostrato 21,9 gradi C. Questo è un DHT11 piuttosto vecchio che ho recuperato da un vecchio progetto e il valore dell'umidità è molto diverso dalle letture DHT22 di pochi minuti fa. Costa circa $ 5 / £ 5.
La sua descrizione include:
- Buono per letture di umidità del 20-80% con una precisione del 5%
- Buono per letture di temperatura 0-50 ° C precisione ± 2 ° C - inferiore al DTH22
La temperatura sembra essere ancora nell'intervallo di precisione, ma non mi fido della lettura dell'umidità da questo vecchio dispositivo.
Passaggio 11: BME680
Questo sensore contiene capacità di rilevamento di temperatura, umidità, pressione barometrica e gas VOC in un unico pacchetto, ma è il più costoso dei sensori in prova qui. Costa circa £ 18,50 / $ 22. C'è un prodotto simile senza il sensore di gas che è un po' più economico.
Questo è un sensore gold standard dei cinque. Il sensore di temperatura è preciso e, con driver adeguati, è molto facile da usare. Questa versione utilizza I2C ma anche la breakout board Adafruit può utilizzare SPI.
Come il BME280 e il BMP280, questo sensore di precisione Bosch può misurare l'umidità con una precisione di ±3%, la pressione atmosferica con una precisione assoluta di ±1 hPa e la temperatura con una precisione di ±1,0°C. Poiché la pressione cambia con l'altitudine e le misurazioni della pressione sono così buone, puoi anche usarlo come altimetro con una precisione di ± 1 metro o migliore!
La documentazione dice che ha bisogno di un po' di "tempo di rodaggio" per il sensore di gas.
Passaggio 12: quale dovrei usare?
- Il TMP36 è molto economico, piccolo e popolare ma piuttosto difficile da usare e potrebbe essere impreciso.
- Il DS18B20 è piccolo, preciso, economico, molto facile da usare e ha una versione impermeabile.
- Il DTH22 indica anche l'umidità, ha un prezzo moderato ed è facile da usare ma potrebbe essere troppo lento.
- Il BME680 fa molto di più degli altri ma è costoso.
Se voglio solo la temperatura, userei il DS18B20 con una precisione di ±0,5°C, ma il mio preferito è il BME680 perché fa molto di più e può essere utilizzato in un gran numero di progetti diversi.
Un ultimo pensiero. Assicurati di tenere il sensore di temperatura ben lontano dal microprocessore. Alcuni HAT Raspberry Pi consentono al calore della scheda principale di riscaldare il sensore, fornendo una lettura errata.
Passaggio 13: ulteriori riflessioni e sperimentazioni
Grazie gulliverrr, ChristianC231 e pgagen per i tuoi commenti su ciò che ho fatto finora. Mi scuso per il ritardo ma sono stato in vacanza in Irlanda, senza accesso al mio kit di elettronica per un paio di settimane.
Ecco un primo tentativo di mostrare i sensori che lavorano insieme.
Ho scritto uno script per leggere a turno i sensori e stampare i valori di temperatura ogni 20 secondi circa.
Ho messo il kit in frigo per un'ora, per far raffreddare il tutto. L'ho collegato al PC e ho chiesto a Mu di stampare i risultati. L'output è stato quindi copiato, trasformato in un file.csv (variabili separate da virgole) e i grafici sono stati ricavati dai risultati in Excel.
Ci sono voluti circa tre minuti dall'estrazione del kit dal frigorifero prima che i risultati fossero registrati, quindi in questo intervallo si è verificato un aumento della temperatura. Sospetto che i quattro sensori abbiano capacità termiche diverse e quindi si riscalderebbero a velocità diverse. La velocità di riscaldamento dovrebbe diminuire man mano che i sensori si avvicinano alla temperatura ambiente. L'ho registrato come 24,4 ° C con il mio termometro a mercurio.
Le ampie differenze di temperatura all'inizio delle curve potrebbero essere dovute alle diverse capacità termiche dei sensori. Sono contento di vedere che le linee convergono verso la fine mentre si avvicinano alla temperatura ambiente. Mi preoccupa che il TMP36 sia sempre molto più alto degli altri sensori.
Ho consultato le schede tecniche per ricontrollare l'accuratezza descritta di questi dispositivi
TMP36
- Precisione ±2°C sulla temperatura (tip)
- ±0,5°C linearità (tip.)
DS18B20
±0,5°C Precisione da -10°C a +85°C
DHT22
temperatura ±0,5°C
BME680
temperatura con una precisione di ±1.0°C
Passaggio 14: grafico completo
Ora puoi vedere che i sensori alla fine si sono stabilizzati e concordano sulla temperatura più o meno entro la precisione descritta. Se si tolgono 1,7 gradi ai valori di TMP36 (è previsto ±2°C) c'è un buon accordo tra tutti i sensori.
La prima volta che ho eseguito questo esperimento il sensore DHT22 ha causato un problema:
output main.py:
14.9, 13.5, 10.3, 13.7
15.7, 14.6, 10.5, 14.0
16.6, 15.6, 12.0, 14.4
18.2, 16.7, 13.0, 15.0
18.8, 17.6, 14.0, 15.6
19.8, 18.4, 14.8, 16.2
21.1, 18.7, 15.5, 16.9
21.7, 19.6, 16.0, 17.5
22.4, 20.2, 16.5, 18.1
23.0, 20.7, 17.1, 18.7
Errore di lettura DHT: ('Sensore DHT non trovato, controllare il cablaggio',)
Traceback (ultima chiamata più recente):
File "main.py", riga 64, in
File "main.py", riga 59, in get_dht22
NameError: variabile locale referenziata prima dell'assegnazione
Quindi ho modificato lo script per far fronte a questo problema e ho riavviato la registrazione:
Errore di lettura DHT: ('Sensore DHT non trovato, controllare il cablaggio',)
25.9, 22.6, -999.0, 22.6
Errore di lettura DHT: ('Sensore DHT non trovato, controllare il cablaggio',)
25.9, 22.8, -999.0, 22.7
25.9, 22.9, 22.1, 22.8
25.9, 22.9, 22.2, 22.9
Errore di lettura DHT: ('Sensore DHT non trovato, controllare il cablaggio',)
27.1, 23.0, -999.0, 23.0
Errore di lettura DHT: ('Sensore DHT non trovato, controllare cablaggio',)
27.2, 23.0, -999.0, 23.1
25.9, 23.3, 22.6, 23.2
Errore di lettura DHT: ('Sensore DHT non trovato, controllare cablaggio',)
28.4, 23.2, -999.0, 23.3
Errore di lettura DHT: ('Sensore DHT non trovato, controllare il cablaggio',)
26.8, 23.1, -999.0, 23.3
26.5, 23.2, 23.0, 23.4
26.4, 23.3, 23.0, 23.5
26.4, 23.4, 23.1, 23.5
26.2, 23.3, 23.1, 23.6
Non ho avuto problemi con la seconda corsa. La documentazione di Adafruit avverte che a volte i sensori DHT non rilevano le letture.
Passaggio 15: Conclusioni
Questa curva mostra chiaramente che la maggiore capacità termica di alcuni sensori aumenta il loro tempo di reazione.
Tutti i sensori registrano l'aumento e la diminuzione della temperatura.
Non sono molto veloci ad assestarsi a una nuova temperatura.
Non sono molto precisi. (Sono abbastanza buoni per una stazione meteorologica?)
Potrebbe essere necessario calibrare il sensore rispetto a un termometro affidabile.
Consigliato:
Scegli i sostituti dei sensori nei circuiti Tinkercad: 3 passaggi (con immagini)
Scegli i sostituti del sensore in Tinkercad Circuits: In base alla progettazione, Tinkercad Circuits contiene una libreria limitata di componenti elettronici comunemente usati. Questa cura rende facile per i principianti navigare nella complessità del mondo dell'elettronica senza essere sopraffatti. Il rovescio della medaglia è che se
Come realizzare l'automazione domestica basata su IoT con il relè di controllo dei sensori NodeMCU: 14 passaggi (con immagini)
Come realizzare l'automazione domestica basata sull'IoT con il relè di controllo dei sensori NodeMCU: in questo progetto basato sull'IoT, ho realizzato l'automazione domestica con Blynk e il modulo relè di controllo NodeMCU con feedback in tempo reale. Nella modalità manuale, questo modulo relè può essere controllato da cellulare o smartphone e, interruttore manuale. In modalità automatica, questo smart
SUGGERIMENTI PER LA RISOLUZIONE DEI PROBLEMI DEI SENSORI ATLAS: 7 passaggi
SUGGERIMENTI PER LA RISOLUZIONE DEI PROBLEMI DEI SENSORI ATLAS: Questa documentazione mira a fornire alcune informazioni chiave che consentiranno il corretto utilizzo e le prestazioni dei sensori Atlas Scientific. Può aiutare con il debug poiché alcune delle aree su cui si concentrano sono problemi comuni riscontrati dagli utenti. È
Guida per principianti all'uso dei sensori DHT11/DHT22 con Arduino: 9 passaggi
Guida per principianti all'uso dei sensori DHT11/DHT22 con Arduino: puoi leggere questo e altri fantastici tutorial sul sito Web ufficiale di ElectroPeakPanoramicaIn questo tutorial, imparerai come impostare i sensori DHT11 e DHT22 e misurare la temperatura e l'umidità dell'ambiente. Impara: DHT11 e DHT22
Aumento della portata del segnale dei sensori per porte/finestre SimpliSafe: 6 passaggi (con immagini)
Aumento della portata del segnale dei sensori SimpliSafe per porte/finestre: i sensori SimpliSafe per porte/finestre aperte hanno notoriamente brevi portate. Ciò rende difficile l'utilizzo di sensori a più di 20 o 30 piedi di distanza dalla stazione base, se ci sono muri nel mezzo. Molti clienti SimpliSafe hanno chiesto all'azienda di pr