Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Kretser
- Trinn 2: Metode
- Trinn 3: TMP36 - Første prøveversjon
- Trinn 4: Potensiometers erstatningsresultater
- Trinn 5: Gjennomsnittlig avlesning og et resultat
- Trinn 6: DS18B20 - Første test
- Trinn 7: DS18B20 fungerer godt
- Trinn 8: DHT22 og DHT11
- Trinn 9: DHT22 -resultater
- Trinn 10: DTH11 -test
- Trinn 11: BME680
- Trinn 12: Hvilken skal jeg bruke?
- Trinn 13: Videre tanker og eksperimenter
- Trinn 14: Full graf
- Trinn 15: Konklusjoner
Video: Test av temperatursensorer - hvilken for meg ?: 15 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
En av de første sensorene som nykommere til fysisk databehandling ønsker å prøve ut, er noe for å måle temperaturen. Fire av de mest populære sensorene er TMP36, som har analog utgang og trenger en analog til digital omformer, DS18B20, som bruker en-leders tilkobling, DHT22 eller den litt billigere DHT11, som bare trenger en digital pin, men også gir en fuktighetsavlesning, og til slutt BME680 som bruker I2C (med SPI også på noen breakout boards) og gir temperatur, fuktighet, gass (VOC) og atmosfærisk trykk, men koster litt mer.
Jeg vil se hvor nøyaktige de er, og oppdage eventuelle fordeler eller ulemper. Jeg eier allerede et nøyaktig kvikksølvtermometer, til overs fra fargefotografisk utskrift i tiden med kjemisk behandling, for å sammenligne dem med. (Aldri kast noe - du trenger det senere!)
Jeg skal bruke CircuitPython og et Adafruit Itsybitsy M4 utviklingstavle for disse testene. Egnede drivere er tilgjengelige for alle enhetene.
Rekvisita
Min første liste:
- Itsybitsy M4 Express mikrokontroller
- mikro -USB -kabel - for programmering
- TMP36
- DS18B20
- 4,7K Ohm motstand
- DHT22
- BME680
- Multi-meter
- Brødbrett eller stripebrett
- Tilkoblingskabel
Trinn 1: Kretser
De oransje ledningene er 3,3 V
De svarte ledningene er GND
På bunnen av brettet er testpunkter for måling av spenninger. (3.3v, GND og TMP36 analog utgang)
Senterkontaktene er, venstre til høyre:
- TMP36: 3.3v, analogt signal ut, GND
- DS18B20: GND, digitalt signal ut, 3.3v
- DHT22: 3.3v, signal ut, tom, GND
- BME680: 3.3v, SDA, SCL, tom, GND
Den bakre kontakten, for tilkobling til IB M4E -kortet, venstre til høyre
- 3.3v
- TMP36 - analog ut til pin A2
- GND
- DS18B20 digital ut til pin D3 - grønn
- DHT22 digital ut til pin D2 - gul
- SDA - hvit
- SCL - rosa
Motstanden på 4,7K Ohm er en pullup fra signal til 3,3v for 0-ledningstilkobling på DS18B20.
Det er 2 kuttede spor på baksiden av brettet:
Under venstre ende av både de rosa og hvite ledningene. (Under den gule ledningen.)
Trinn 2: Metode
For hver sensor vil jeg skrive et kort skript for å lese temperatur (og andre elementer hvis tilgjengelig) flere ganger og sjekke temperaturen mot kvikksølv (Hg) termometeret mitt. Jeg vil se for å se hvor tett temperaturen er i forhold til kvikksølvavlesningen, og om avlesningene er jevne/konsistente.
Jeg vil også se på dokumentasjonen for å se om avlesningene passer innenfor den forventede nøyaktigheten, og om det er noe som kan gjøres for å gjøre forbedringer.
Trinn 3: TMP36 - Første prøveversjon
Venstre ben er 3,3v, høyre ben er GND og midtbenet er en analog spenning som representerer temperaturen ved hjelp av følgende formel. TempC = (millivolt - 500) / 10
Så, 750 millivolt gir en temperatur på 25 C.
Det ser ut til å være et par problemer her. Temperaturen fra det "normale" kvikksølvtermometeret er mye lavere enn fra TMP36, og avlesningene er ikke veldig konsistente - det er noe "rystelser" eller støy.
TMP36 -sensoren sender ut en spenning som er proporsjonal med temperaturen. Dette må leses av A/D -omformeren før temperaturen beregnes. La oss lese spenningen direkte fra sensorens midtben med en multimeter og sammenligne den med resultatet fra A/D. Avlesningen fra senterbenet med min multimeter er 722 millivolt, mye lavere og en veldig jevn lesing.
Det er to ting vi kan prøve. Erstatt et potensiometer for TMP36 og juster spenningen i beregningen til mikrokontrollerens faktiske spenning. Vi får da se om den beregnede spenningen er nærmere og om støyen/rystelsen reduseres.
La oss måle den faktiske spenningen som brukes med mikrokontrolleren og A/D. Dette ble antatt til 3.3v, men er faktisk bare 3.275v.
Trinn 4: Potensiometers erstatningsresultater
Dette er mye bedre. Avlesningene er innenfor et par millivolt med mye mindre støy. Dette antyder at støyen er fra TMP36 i stedet for A/D. Avlesningen på måleren er alltid jevn - ingen rystelser. (Måleren kan "jevne" ut den urolige utgangen.)
En måte å forbedre situasjonen på kan være å ta en gjennomsnittlig lesning. Ta ti avlesninger raskt og bruk gjennomsnittet. Jeg vil også beregne standardavviket mens jeg endrer programmet, for å gi en indikasjon på spredning av resultatene. Jeg vil også telle antall avlesninger innenfor 1 standardavvik for gjennomsnittet - jo høyere jo bedre.
Trinn 5: Gjennomsnittlig avlesning og et resultat
Det er fortsatt mye støy, og avlesningen fra TMP36 er fortsatt høyere enn fra kvikksølvtermometeret. For å redusere støy har jeg inkludert en 100NF kondensator mellom signal og GND
Jeg søkte deretter etter andre løsninger på internett og fant disse: https://www.doctormonk.com/2015/02/accurate-and-re… Dr Monk foreslår å inkludere en 47 k Ohm motstand mellom signal og GND.
www.desert-home.com/2015/03/battery-operate … Mens denne fyren foreslår å sortere 15 avlesninger i rekkefølge og gjennomsnitt av sentrum 5.
Jeg endret skriptet og kretsen for å inkludere disse forslagene og inkluderte en lesning fra kvikksølvtermometeret.
Endelig! Nå har vi jevne avlesninger innenfor nøyaktighetsområdet til enhetsbeskrivelsen.
Dette var ganske mye innsats for å få sensoren til å fungere som bare har produsentens nøyaktighet på:
Nøyaktighet - Høyeste (laveste): ± 3 ° C (± 4 ° C) De koster bare omtrent $ 1,50 (£ 2)
Trinn 6: DS18B20 - Første test
Vær veldig forsiktig. Denne pakken ligner veldig på TMP36, men beina er omvendt med 3.3v til høyre og GND til venstre. Signalet ut er i midten. For å få denne enheten til å fungere trenger vi en 4,7 k Ohm motstand mellom signal og 3,3 v. Denne enheten bruker en-leder-protokollen, og vi må laste ned et par drivere til lib-mappen på Itsybitsy M4 Express.
Dette koster omtrent $ 4 / £ 4 Tekniske spesifikasjoner:
- Brukbart temperaturområde: -55 til 125 ° C (-67 ° F til +257 ° F)
- 9 til 12 biters valgbar oppløsning
- Bruker 1 -Wire -grensesnitt - krever bare en digital pin for kommunikasjon
- Unik 64 biters ID brent inn i chip
- Flere sensorer kan dele en pin
- ± 0,5 ° C Nøyaktighet fra -10 ° C til +85 ° C
- Temperaturgrense alarmsystem
- Spørringstiden er mindre enn 750 ms
- Kan brukes med 3.0V til 5.5V strøm
Hovedproblemet med denne sensoren er at den bruker Dallas 1-Wire-grensesnittet, og ikke alle mikrokontrollere har en passende driver. Vi har flaks, det er en sjåfør for Itsybitsy M4 Express.
Trinn 7: DS18B20 fungerer godt
Dette viser et flott resultat.
Et jevnt sett med målinger uten ekstra arbeid og beregningsomkostninger. Målingene ligger innenfor det forventede nøyaktighetsområdet på ± 0,5 ° C sammenlignet med mitt kvikksølvtermometer.
Det er også en vanntett versjon på omtrent $ 10 som jeg har brukt tidligere med like stor suksess.
Trinn 8: DHT22 og DHT11
DHT22 bruker en termistor for å oppnå temperaturen og koster omtrent $ 10 / £ 10 og er den mer nøyaktige og dyre broren til den mindre DHT11. Den bruker også et en-leder grensesnitt, men er IKKE kompatibelt med Dallas-protokollen som brukes med DS18B20. Det registrerer fuktighet så vel som temperatur. Disse enhetene trenger noen ganger en trekkmotstand mellom 3,3 v og signalpinnen. Denne pakken har en allerede installert.
- Lav kostnad
- 3 til 5V strøm og I/O
- 2,5 mA maksimal bruk under konvertering (mens du ber om data)
- Bra for 0-100% fuktighetsavlesninger med 2-5% nøyaktighet
- Bra for -40 til 80 ° C temperaturavlesninger ± 0,5 ° C nøyaktighet
- Ikke mer enn 0,5 Hz samplingsfrekvens (en gang hvert 2. sekund)
- Kroppsstørrelse 27 mm x 59 mm x 13,5 mm (1,05 "x 2,32" x 0,53 ")
- 4 pinner, 0,1 "mellomrom
- Vekt (bare DHT22): 2,4 g
Sammenlignet med DHT11 er denne sensoren mer presis, mer nøyaktig og fungerer i et større temperatur-/fuktighetsområde, men den er større og dyrere.
Trinn 9: DHT22 -resultater
Dette er gode resultater med svært liten innsats. Avlesningene er ganske jevne og innenfor den forventede toleransen. Fuktighetsavlesningen er en bonus.
Du kan bare ta avlesninger hvert sekund.
Trinn 10: DTH11 -test
Mitt kvikksølvtermometer viste 21,9 grader C. Dette er en ganske gammel DHT11 jeg hentet fra et gammelt prosjekt, og fuktighetsverdien er veldig forskjellig fra DHT22 -målingene fra for noen minutter siden. Det koster omtrent $ 5 / £ 5.
Beskrivelsen inkluderer:
- Bra for 20-80% fuktighetsavlesninger med 5% nøyaktighet
- Bra for 0-50 ° C temperaturavlesninger ± 2 ° C nøyaktighet - mindre enn DTH22
Temperaturen ser ut til å være i nøyaktighetsområdet, men jeg stoler ikke på fuktighetsavlesningen fra denne gamle enheten.
Trinn 11: BME680
Denne sensoren inneholder temperatur, fuktighet, barometertrykk og VOC -gassmåling i en enkelt pakke, men er den dyreste av sensorene som er testet her. Det koster omtrent £ 18,50 / $ 22. Det er et lignende produkt uten gassensoren som er litt billigere.
Dette er en gullstandard sensor av de fem. Temperatursensoren er nøyaktig, og med passende drivere, veldig enkel å bruke. Denne versjonen bruker I2C, men Adafruit breakout board kan også bruke SPI.
I likhet med BME280 og BMP280 kan denne presisjonssensoren fra Bosch måle fuktighet med ± 3% nøyaktighet, barometrisk trykk med ± 1 hPa absolutt nøyaktighet og temperatur med ± 1,0 ° C nøyaktighet. Fordi trykket endres med høyden, og trykkmålingene er så gode, kan du også bruke den som en høydemåler med ± 1 meter eller bedre nøyaktighet!
Dokumentasjonen sier at den trenger litt "innbrenningstid" for gassensoren.
Trinn 12: Hvilken skal jeg bruke?
- TMP36 er veldig billig, liten og populær, men ganske vanskelig å bruke og kan være unøyaktig.
- DS18B20 er liten, nøyaktig, billig, veldig enkel å bruke og har en vanntett versjon.
- DTH22 indikerer også fuktighet, er rimelig og lett å bruke, men kan være for treg.
- BME680 gjør mye mer enn de andre, men er dyrt.
Hvis jeg bare vil ha temperatur, ville jeg brukt DS18B20 med ± 0,5 ° C nøyaktighet, men min favoritt er BME680 fordi den gjør så mye mer og kan tas i bruk i et stort antall forskjellige prosjekter.
En siste tanke. Sørg for at du holder temperatursensoren godt borte fra mikroprosessoren. Noen Raspberry Pi -hatter tillater varme fra hovedkortet å varme opp sensoren, noe som gir en falsk avlesning.
Trinn 13: Videre tanker og eksperimenter
Takk gulliverrr, ChristianC231 og pgagen for kommentarene dine om det jeg har gjort så langt. Jeg beklager forsinkelsen, men jeg har vært på ferie i Irland, uten tilgang til elektronikksettet mitt i et par uker.
Her er et første forsøk på å vise sensorene som fungerer sammen.
Jeg skrev et manus for å lese sensorene etter tur og skrive ut temperaturverdiene hvert 20. sekund eller så.
Jeg satte settet i kjøleskapet i en time for å avkjøle alt. Jeg koblet den til PC -en og fikk Mu til å skrive ut resultatene. Utgangen ble deretter kopiert, omgjort til en.csv -fil (kommaadskilte variabler) og grafer tegnet fra resultatene i Excel.
Det tok omtrent tre minutter fra jeg tok settet ut av kjøleskapet før resultatene ble registrert, så det hadde skjedd en viss temperaturstigning i dette intervallet. Jeg mistenker at de fire sensorene har forskjellige termiske kapasiteter, og derfor ville de varme opp med forskjellige hastigheter. Oppvarmingshastigheten forventes å falle når sensorene nærmer seg romtemperatur. Jeg registrerte dette som 24,4 ° C med mitt kvikksølvtermometer.
De store temperaturforskjellene ved begynnelsen av kurvene kan skyldes de forskjellige termiske kapasitetene til sensorene. Jeg er glad for å se at linjene konvergerer mot slutten når de nærmer seg romtemperatur. Jeg er bekymret for at TMP36 alltid er mye høyere enn de andre sensorene.
Jeg slo opp databladene for å sjekke den beskrevne nøyaktigheten til disse enhetene igjen
TMP36
- ± 2 ° C nøyaktighet over temperatur (typ)
- ± 0,5 ° C linearitet (typ)
DS18B20
± 0,5 ° C Nøyaktighet fra -10 ° C til +85 ° C
DHT22
temperatur ± 0,5 ° C
BME680
temperatur med ± 1,0 ° C nøyaktighet
Trinn 14: Full graf
Du kan nå se at sensorene til slutt jevnet seg ut og ble enige om temperaturen mer eller mindre innenfor deres beskrevne nøyaktighet. Hvis 1,7 grader er tatt av TMP36 -verdiene (± 2 ° C forventes) er det god samsvar mellom alle sensorene.
Første gang jeg kjørte dette eksperimentet forårsaket DHT22 -sensoren et problem:
main.py -utgang:
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
DHT -lesefeil: ('DHT -sensor ikke funnet, sjekk ledninger',)
Spor tilbake (siste samtale sist):
Fil "main.py", linje 64, in
Fil "main.py", linje 59, i get_dht22
NameError: lokal variabel referert til før tildeling
Så jeg endret skriptet for å takle dette problemet og startet innspillingen på nytt:
DHT -lesefeil: ('DHT -sensor ikke funnet, sjekk ledninger',)
25.9, 22.6, -999.0, 22.6
DHT -lesefeil: ('DHT -sensor ikke funnet, sjekk ledninger',)
25.9, 22.8, -999.0, 22.7
25.9, 22.9, 22.1, 22.8
25.9, 22.9, 22.2, 22.9
DHT -lesefeil: ('DHT -sensor ikke funnet, sjekk ledninger',)
27.1, 23.0, -999.0, 23.0
DHT -lesefeil: ('DHT -sensor ikke funnet, sjekk ledninger',)
27.2, 23.0, -999.0, 23.1
25.9, 23.3, 22.6, 23.2
DHT -lesefeil: ('DHT -sensor ikke funnet, sjekk ledninger',)
28.4, 23.2, -999.0, 23.3
DHT -lesefeil: ('DHT -sensor ikke funnet, sjekk ledninger',)
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
Jeg hadde ikke noe problem med det andre løpet. Adafruit -dokumentasjonen advarer om at noen ganger savner DHT -sensorene avlesninger.
Trinn 15: Konklusjoner
Denne kurven viser tydelig at den høyere termiske kapasiteten til noen sensorer øker reaksjonstiden.
Alle sensorene registrerer temperaturer som stiger og faller.
De er ikke veldig raske til å sette seg til en ny temperatur.
De er ikke veldig nøyaktige. (Er de gode nok for en værstasjon?)
Du må kanskje kalibrere sensoren din mot et pålitelig termometer.
Anbefalt:
Opplys meg! en LED-stripekontroll i sanntid på tvers av plattformer: 5 trinn (med bilder)
Opplys meg! en LED-stripekontroll i sanntid på tvers av plattformer: LightMeUp! er et system jeg oppfant for å kontrollere en RGB LED-stripe i sanntid, samtidig som kostnadene er lave og ytelsen høy. Serveren er skrevet i Node.js og derfor kryssplattformbar. I mitt eksempel bruker jeg en Raspberry Pi 3B for langtidsbruk
Lys meg opp !: 20 trinn (med bilder)
Light Me Up !: medlemmer av prosjektgruppen (Hyewon Shin, Eunjeong Ko, Junsung Yi) Hva om du kunne røre og designe lyset? Hvordan ville det føles hvis du hadde et vakkert lysmønster som du designet selv med en interessant animasjon? Lys meg opp vil være et jeg
Flere IR -temperatursensorer - MLX90614: 4 trinn
Flere IR temperatursensorer - MLX90614: Dette er en rask guide til hvordan du konfigurerer flere MLX90614B kontaktsløse temperatursensorer via I2C -bussen med en Arduino uno og viser avlesningene på den serielle skjermen til Arduino IDE. Jeg bruker de forhåndsbygde brettene, men hvis du kjøper sensoren b
Nettverk av temperatursensorer: 6 trinn
Nettverk av temperatursensorer: Temperatur og fuktighet er viktige data i laboratoriet, kjøkkenet, produksjonslinjen, kontoret, mordroboter og til og med hjemmet ditt. Hvis du trenger å overvåke flere steder eller rom eller mellomrom, trenger du noe som er pålitelig, kompakt, nøyaktig og
Arduino Nano og to DS18B20 temperatursensorer med I2C LCD: 5 trinn
Arduino Nano og to DS18B20 temperatursensorer med I2C LCD: I dag vil jeg vise deg hvordan du lager to temperatursensorer DS18B20 med Arduino Nano Clone og I2C LCD. en I2C displejem.Jeg bruker Arduino IDE 1.8.8 // Pouziv