Innholdsfortegnelse:

Test av temperatursensorer - hvilken for meg ?: 15 trinn (med bilder)
Test av temperatursensorer - hvilken for meg ?: 15 trinn (med bilder)

Video: Test av temperatursensorer - hvilken for meg ?: 15 trinn (med bilder)

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

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

Kretser
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

Metode
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

TMP36 - Første prøveperiode
TMP36 - Første prøveperiode
TMP36 - Første prøveperiode
TMP36 - Første prøveperiode

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

Potensiometers erstatningsresultater
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

Gjennomsnittlig avlesning og et resultat
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

DS18B20 - Første test
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

DS18B20 Fungerer bra
DS18B20 Fungerer bra

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 og DHT11
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

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

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

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

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

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

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

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