Indholdsfortegnelse:

Test af temperatursensorer - hvilken for mig ?: 15 trin (med billeder)
Test af temperatursensorer - hvilken for mig ?: 15 trin (med billeder)

Video: Test af temperatursensorer - hvilken for mig ?: 15 trin (med billeder)

Video: Test af temperatursensorer - hvilken for mig ?: 15 trin (med billeder)
Video: Почему тесто на закваске липкое? Разбираем причины и делаем тесто на закваске упругим и эластичным! 2024, November
Anonim
Test af temperatursensorer - hvilken for mig?
Test af temperatursensorer - hvilken for mig?

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

Kredsløb
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

Metode
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

TMP36 - Indledende prøve
TMP36 - Indledende prøve
TMP36 - Indledende prøve
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

Potentiometer udskiftningsresultater
Potentiometer udskiftningsresultater

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

Gennemsnitlige aflæsninger og et resultat
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

DS18B20 - Indledende test
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

DS18B20 fungerer godt
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 og DHT11
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

DHT22 Resultater
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

DTH11 test
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

BME680
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?

Hvilken skal jeg bruge?
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

Yderligere tanker og eksperimenter
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

Fuld graf
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

Konklusioner
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: