Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Kredsløb
- Trin 2: Metode
- Trin 3: TMP36 - Indledende prøve
- Trin 4: Potentiometers substitutionsresultater
- Trin 5: Gennemsnitlige aflæsninger og et resultat
- Trin 6: DS18B20 - Indledende test
- Trin 7: DS18B20 fungerer godt
- Trin 8: DHT22 og DHT11
- Trin 9: DHT22 -resultater
- Trin 10: DTH11 -test
- Trin 11: BME680
- Trin 12: Hvilken skal jeg bruge?
- Trin 13: Yderligere tanker og eksperimenter
- Trin 14: Fuld graf
- Trin 15: Konklusioner
Video: Test af temperatursensorer - hvilken for mig ?: 15 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
En af de første sensorer, som tilflyttere til fysisk computing vil prøve, er noget for at måle temperaturen. Fire af de mest populære sensorer er TMP36, som har analog udgang og har brug for en analog til digital konverter, DS18B20, der bruger en-tråds forbindelse, DHT22 eller den lidt billigere DHT11, som bare har brug for en digital pin, men også giver en fugtighedsaflæsning, og endelig BME680, der bruger I2C (med SPI også på nogle breakout boards) og giver temperatur, fugtighed, gas (VOC) og atmosfærisk tryk, men koster lidt mere.
Jeg vil se, hvor præcise de er, og opdage eventuelle fordele eller ulemper. Jeg ejer allerede et nøjagtigt kviksølvtermometer, der blev tilovers fra den fotografiske farveudskrivning tilbage i tiden med kemisk behandling, for at sammenligne dem med. (Smid aldrig noget ud - du får brug for det senere!)
Jeg vil bruge CircuitPython og et Adafruit Itsybitsy M4 udviklingskort til disse tests. Egnede drivere er tilgængelige til alle enheder.
Forbrugsvarer
Min første liste:
- Itsybitsy M4 Express mikrokontroller
- mikro USB -kabel - til programmering
- TMP36
- DS18B20
- 4,7K Ohm modstand
- DHT22
- BME680
- Multi-meter
- Brødbræt eller stripplade
- Tilslutningskabel
Trin 1: Kredsløb
De orange ledninger er 3,3 V
De sorte ledninger er GND
I bunden af tavlen er testpunkter til måling af spændinger. (3.3v, GND og TMP36 analog udgang)
Midterstikkontakterne er fra venstre mod højre:
- TMP36: 3.3v, analogt signal ud, GND
- DS18B20: GND, digitalt signal ud, 3,3v
- DHT22: 3,3v, signal ud, tom, GND
- BME680: 3.3v, SDA, SCL, tom, GND
Det bageste stik, til tilslutning til IB M4E -kortet, venstre til højre
- 3.3v
- TMP36 - analog ud til pin A2
- GND
- DS18B20 digital ud til pin D3 - grøn
- DHT22 digital ud til pin D2 - gul
- SDA - hvid
- SCL - lyserød
4.7K Ohm-modstanden er en pullup fra signal til 3,3v for 0ne-wire forbindelse på DS18B20.
Der er 2 afskårne spor på bagsiden af brættet:
Under venstre ende af både de lyserøde og hvide ledninger. (Under den gule ledning.)
Trin 2: Metode
For hver sensor vil jeg skrive et kort script til at aflæse temperatur (og andre emner, hvis de er tilgængelige) flere gange og kontrollere temperaturen mod mit kviksølv (Hg) termometer. Jeg vil se, hvor tæt temperaturen er i forhold til kviksølvaflæsning, og om målingerne er stabile/konsistente.
Jeg vil også se på dokumentationen for at se, om aflæsningerne passer til den forventede nøjagtighed, og om der er noget, der kan gøres for at foretage forbedringer.
Trin 3: TMP36 - Indledende prøve
Det venstre ben er 3,3v, det højre ben er GND og midterbenet er en analog spænding, der repræsenterer temperaturen ved hjælp af følgende formel. TempC = (millivolt - 500) / 10
Så 750 millivolt giver en temperatur på 25 C
Der ser ud til at være et par problemer her. Temperaturen fra det 'normale', kviksølvtermometer er meget lavere end fra TMP36, og målingerne er ikke særlig konsekvente - der er noget 'rystelser' eller støj.
TMP36 -sensoren udsender en spænding, der er proportional med temperaturen. Dette skal læses af A/D -omformeren, før temperaturen beregnes. Lad os læse spændingen direkte fra sensorens midterste ben med en multimeter og sammenligne den med resultatet fra A/D. Aflæsningen fra midterbenet med min multi-meter er 722 millivolt, meget lavere og en meget stabil aflæsning.
Der er to ting, vi kan prøve. Erstat et potentiometer for TMP36, og juster spændingen i beregningen til mikrokontrollerens faktiske spænding. Vi vil derefter se, om den beregnede spænding er tættere, og om støj/jitter reduceres.
Lad os måle den faktiske spænding, der bruges, min mikrokontroller og A/D. Dette blev antaget til 3.3v, men er faktisk kun 3.275v.
Trin 4: Potentiometers substitutionsresultater
Dette er meget bedre. Målingerne er inden for et par millivolt med meget mindre støj. Dette tyder på, at støjen er fra TMP36 frem for A/D. Aflæsningen på måleren er altid stabil - ingen rystelser. (Måleren kan 'udjævne' den urolige output.)
En måde at forbedre situationen på kan være at tage en gennemsnitlig læsning. Tag hurtigt ti aflæsninger og brug gennemsnittet. Jeg vil også beregne standardafvigelsen, mens jeg ændrer programmet, for at give en indikation af spredningen af resultaterne. Jeg vil også tælle antallet af aflæsninger inden for 1 standardafvigelse af middelværdien - jo højere jo bedre.
Trin 5: Gennemsnitlige aflæsninger og et resultat
Der er stadig meget støj, og aflæsningen fra TMP36 er stadig højere end fra kviksølvtermometeret. For at reducere støj har jeg inkluderet en 100NF kondensator mellem signal og GND
Jeg søgte derefter efter andre løsninger på internettet og fandt disse: https://www.doctormonk.com/2015/02/accurate-and-re… Dr. Monk foreslår at inkludere en 47 k Ohm modstand mellem signal og GND.
www.desert-home.com/2015/03/battery-operate … Mens denne fyr foreslår at sortere 15 aflæsninger i rækkefølge og udgøre et gennemsnit af midten 5.
Jeg ændrede scriptet og kredsløbet til at inkludere disse forslag og inkluderede en læsning fra kviksølvtermometeret.
Endelig! Nu har vi faste aflæsninger inden for nøjagtighedsområdet for enhedsbeskrivelsen.
Dette var en stor indsats for at få sensoren til at fungere, som kun har producentens nøjagtighed på:
Nøjagtighed - højeste (laveste): ± 3 ° C (± 4 ° C) De koster kun omkring $ 1,50 (£ 2)
Trin 6: DS18B20 - Indledende test
Vær meget forsigtig. Denne pakke ligner meget TMP36, men benene er omvendt med 3.3v til højre og GND til venstre. Signalet ud er i midten. For at få denne enhed til at fungere har vi brug for en 4,7 k Ohm modstand mellem signal og 3,3 v. Denne enhed bruger en-leder-protokollen, og vi skal downloade et par drivere til lib-mappen på Itsybitsy M4 Express.
Dette koster omkring $ 4 / £ 4 Tekniske specifikationer:
- Anvendeligt temperaturområde: -55 til 125 ° C (-67 ° F til +257 ° F)
- 9 til 12 bit valgbar opløsning
- Bruger 1 -Wire interface - kræver kun en digital pin til kommunikation
- Unikt 64 bit ID brændt ind i chip
- Flere sensorer kan dele en pin
- ± 0,5 ° C Nøjagtighed fra -10 ° C til +85 ° C
- Temperaturgrænse alarmsystem
- Forespørgselstiden er mindre end 750 ms
- Kan bruges med 3.0V til 5.5V effekt
Hovedproblemet med denne sensor er, at den bruger Dallas 1-Wire-grænsefladen, og ikke alle mikrokontrollere har en passende driver. Vi er heldige, der er en driver til Itsybitsy M4 Express.
Trin 7: DS18B20 fungerer godt
Dette viser et godt resultat.
Et stabilt sæt aflæsninger uden ekstra arbejde og beregningsomkostninger. Målingerne ligger inden for det forventede nøjagtighedsinterval på ± 0,5 ° C sammenlignet med mit kviksølvtermometer.
Der er også en vandtæt version til omkring $ 10, som jeg tidligere har brugt med lige stor succes.
Trin 8: DHT22 og DHT11
DHT22 bruger en termistor til at opnå temperaturen og koster omkring $ 10 / £ 10 og er den mere præcise og dyre bror til den mindre DHT11. Det bruger også en en-leder grænseflade, men er IKKE kompatibel med Dallas-protokollen, der bruges med DS18B20. Det registrerer fugtighed såvel som temperatur. Disse enheder har nogle gange brug for en pull -up -modstand mellem 3,3 v og signalstiften. Denne pakke har en allerede installeret.
- Lavpris
- 3 til 5V strøm og I/O
- 2,5mA maks. Nuværende brug under konvertering (mens der anmodes om data)
- God til 0-100% luftfugtighedsmålinger med 2-5% nøjagtighed
- God til -40 til 80 ° C temperaturmålinger ± 0,5 ° C nøjagtighed
- Ikke mere end 0,5 Hz samplingshastighed (en gang hvert 2. sekund)
- Kropsstørrelse 27 mm x 59 mm x 13,5 mm (1,05 "x 2,32" x 0,53 ")
- 4 ben, 0,1 "afstand
- Vægt (kun DHT22): 2,4 g
Sammenlignet med DHT11 er denne sensor mere præcis, mere præcis og fungerer i et større temperatur-/fugtighedsområde, men den er større og dyrere.
Trin 9: DHT22 -resultater
Disse er fremragende resultater med meget lille indsats. Aflæsningerne er ret stabile og inden for den forventede tolerance. Fugtighedsaflæsning er en bonus.
Du kan kun foretage aflæsninger hvert sekund.
Trin 10: DTH11 -test
Mit kviksølvtermometer viste 21,9 grader C. Dette er en temmelig gammel DHT11, jeg hentede fra et gammelt projekt, og fugtighedsværdien er meget forskellig fra DHT22 -målingerne fra et par minutter siden. Det koster omkring $ 5 / £ 5.
Beskrivelsen omfatter:
- God til 20-80% fugtighedsmålinger med 5% nøjagtighed
- God til 0-50 ° C temperaturmålinger ± 2 ° C nøjagtighed - mindre end DTH22
Temperaturen ser ud til stadig at være i nøjagtighedsområdet, men jeg stoler ikke på fugtighedsaflæsning fra denne gamle enhed.
Trin 11: BME680
Denne sensor indeholder temperatur, fugtighed, barometrisk tryk og VOC -gasføler i en enkelt pakke, men er den dyreste af sensorerne, der er testet her. Det koster omkring £ 18,50 / $ 22. Der er et lignende produkt uden gassensoren, som er en smule billigere.
Dette er en guldstandard sensor af de fem. Temperatursensoren er præcis og med passende drivere meget let at bruge. Denne version bruger I2C, men Adafruit breakout board kan også bruge SPI.
Ligesom BME280 & BMP280 kan denne præcisionssensor fra Bosch måle fugtighed med ± 3% nøjagtighed, barometrisk tryk med ± 1 hPa absolut nøjagtighed og temperatur med ± 1,0 ° C nøjagtighed. Fordi trykket ændres med højden, og trykmålingerne er så gode, kan du også bruge det som en højdemåler med ± 1 meter eller bedre nøjagtighed!
Dokumentationen siger, at den har brug for noget 'indbrændingstid' til gassensoren.
Trin 12: Hvilken skal jeg bruge?
- TMP36 er meget billig, lille og populær, men ret vanskelig at bruge og kan være unøjagtig.
- DS18B20 er lille, præcis, billig, meget let at bruge og har en vandtæt version.
- DTH22 angiver også fugtighed, er moderat prissat og let at bruge, men kan være for langsom.
- BME680 gør meget mere end de andre, men er dyrt.
Hvis jeg bare vil have temperatur, ville jeg bruge DS18B20 med ± 0,5 ° C nøjagtighed, men min favorit er BME680, fordi den gør så meget mere og kan tages i brug i et stort antal forskellige projekter.
En sidste tanke. Sørg for at holde din temperatursensor langt væk fra mikroprocessoren. Nogle Raspberry Pi HAT'er tillader varme fra hovedkortet at varme sensoren op, hvilket giver en falsk læsning.
Trin 13: Yderligere tanker og eksperimenter
Tak gulliverrr, ChristianC231 og pgagen for dine kommentarer til hvad jeg har gjort indtil nu. Jeg beklager forsinkelsen, men jeg har været på ferie i Irland uden adgang til mit elektronik -kit i et par uger.
Her er et første forsøg på at vise sensorerne, der arbejder sammen.
Jeg skrev et script til at læse sensorerne efter tur og udskrive temperaturværdierne hvert 20. sekund eller deromkring.
Jeg satte kittet i et køleskab i en time for at afkøle alt. Jeg sluttede den til pc'en og fik Mu til at udskrive resultaterne. Outputtet blev derefter kopieret, omdannet til en.csv -fil (kommaadskilte variabler), og grafer tegner fra resultaterne i Excel.
Det tog cirka tre minutter fra kittet blev taget ud af køleskabet, før resultaterne blev registreret, så der var sket en vis temperaturstigning i dette interval. Jeg formoder, at de fire sensorer har forskellige termiske kapaciteter og derfor ville varme op med forskellige hastigheder. Opvarmningshastigheden forventes at falde, når sensorerne nærmer sig stuetemperatur. Jeg registrerede dette som 24,4 ° C med mit kviksølvtermometer.
De store temperaturforskelle ved kurvens begyndelse kan skyldes sensorernes forskellige termiske kapacitet. Jeg er glad for at se, at linjerne konvergerer mod slutningen, når de nærmer sig stuetemperatur. Jeg er bekymret for, at TMP36 altid er meget højere end de andre sensorer.
Jeg slog databladene op for at kontrollere den beskrevne nøjagtighed på disse enheder igen
TMP36
- ± 2 ° C nøjagtighed over temperatur (typ)
- ± 0,5 ° C linearitet (typ)
DS18B20
± 0,5 ° C Nøjagtighed fra -10 ° C til +85 ° C
DHT22
temperatur ± 0,5 ° C
BME680
temperatur med ± 1,0 ° C nøjagtighed
Trin 14: Fuld graf
Du kan nu se, at sensorerne til sidst udlignede sig og blev enige om temperaturen mere eller mindre inden for deres beskrevne nøjagtighed. Hvis 1,7 grader tages af TMP36 -værdierne (± 2 ° C forventes) er der god overensstemmelse mellem alle sensorerne.
Første gang jeg kørte dette eksperiment forårsagede DHT22 -sensoren et problem:
main.py output:
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 -læsefejl: ('DHT -sensor ikke fundet, tjek ledninger',)
Spor tilbage (seneste opkald sidste):
Fil "main.py", linje 64, in
Fil "main.py", linje 59, i get_dht22
NameError: lokal variabel, der refereres til før tildeling
Så jeg ændrede scriptet for at klare dette problem og genstartede optagelsen:
DHT -læsefejl: ('DHT -sensor ikke fundet, tjek ledninger',)
25.9, 22.6, -999.0, 22.6
DHT -læsefejl: ('DHT -sensor ikke fundet, tjek 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 -læsefejl: ('DHT -sensor ikke fundet, tjek ledninger',)
27.1, 23.0, -999.0, 23.0
DHT -læsefejl: ('DHT -sensor ikke fundet, tjek ledninger',)
27.2, 23.0, -999.0, 23.1
25.9, 23.3, 22.6, 23.2
DHT -læsefejl: ('DHT -sensor ikke fundet, tjek ledninger',)
28.4, 23.2, -999.0, 23.3
DHT -læsefejl: ('DHT -sensor ikke fundet, tjek 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 havde ikke noget problem med det andet løb. Adafruit -dokumentationen advarer dog om, at nogle gange savner DHT -sensorerne aflæsninger.
Trin 15: Konklusioner
Denne kurve viser klart, at den højere termiske kapacitet for nogle sensorer øger deres reaktionstid.
Alle sensorer registrerer temperaturer, der stiger og falder.
De er ikke meget hurtige til at sætte sig til en ny temperatur.
De er ikke særlig præcise. (Er de gode nok til en vejrstation?)
Du skal muligvis kalibrere din sensor mod et pålideligt termometer.
Anbefalede:
"Alexa, Send mig teksten til _____": 9 trin (med billeder)
"Alexa, Send mig teksten til _____": Lytter du til en sang, som du vil synge sammen med? Du skulle normalt gå igennem den hårde opgave med at indtaste sangens navn i google efterfulgt af ordet " lyrics ". Du laver normalt også en rigelig mængde stavefejl, klikker forkert
Lys mig op! en LED-stripkontrol i realtid på tværs af platforme: 5 trin (med billeder)
Lys mig op! en LED-stripkontrol i realtid på tværs af platforme: LightMeUp! er et system, jeg opfandt til styring af en RGB LED-strip i realtid, samtidig med at omkostningerne blev holdt lave og ydeevnen høj. Serveren er skrevet i Node.js og derfor krydsplatformbar. I mit eksempel bruger jeg en Raspberry Pi 3B til langtidsbrug
Lys mig op !: 20 trin (med billeder)
Light Me Up !: projektgruppemedlemmer (Hyewon Shin, Eunjeong Ko, Junsung Yi) Hvad hvis du kunne røre og designe lyset? Hvordan ville det føles, hvis du havde et smukt lysmønster, som du selv designede med en interessant animation? Lys mig op, vil være et i
Arduino Nano og to DS18B20 temperatursensorer med I2C LCD: 5 trin
Arduino Nano og to DS18B20 temperatursensorer med I2C LCD: I dag vil jeg vise dig, hvordan du laver to temperatursensorer DS18B20 med Arduino Nano Clone og I2C LCD. en I2C displejem.I bruger Arduino IDE 1.8.8 // Pouziv
Dødens bold: eller hvordan jeg lærte at stoppe med at bekymre mig og elske Apple Pro -højttalere: 11 trin (med billeder)
Dødens bold: eller hvordan jeg lærte at stoppe med at bekymre mig og elske Apple Pro -højttalere: Jeg har altid sagt, at siden jeg bortskaffede den " beige æske " har Apple altid været førende inden for det industrielle designområde. Integrationen af form og funktion kan ikke berøres af nogen anden producent i nogen branche (Porsche kommer tæt på). Det er