Kazalo:

Testiranje temperaturnih senzorjev - kateri zame?: 15 korakov (s slikami)
Testiranje temperaturnih senzorjev - kateri zame?: 15 korakov (s slikami)

Video: Testiranje temperaturnih senzorjev - kateri zame?: 15 korakov (s slikami)

Video: Testiranje temperaturnih senzorjev - kateri zame?: 15 korakov (s slikami)
Video: Высокая плотность 2022 2024, November
Anonim
Testiranje temperaturnih senzorjev - kateri zame?
Testiranje temperaturnih senzorjev - kateri zame?

Eden prvih senzorjev, ki jih želijo preizkusiti novinci v fizičnem računalništvu, je merjenje temperature. Štirje najbolj priljubljeni senzorji so TMP36, ki ima analogni izhod in potrebuje analogno-digitalni pretvornik, DS18B20, ki uporablja enožično povezljivost, DHT22 ali nekoliko cenejši DHT11, ki potrebuje le digitalni pin, ampak tudi zagotavlja odčitavanje vlažnosti in na koncu BME680, ki uporablja I2C (s SPI tudi na nekaterih odmičnih ploščah) in daje temperaturo, vlažnost, plin (VOC) in atmosferski tlak, vendar stane nekoliko več.

Želim videti, kako natančni so, in odkriti vse prednosti ali slabosti. Že imam v lasti natančen živosrebrni termometer, ki je ostal v barvnem fotografskem tisku v dneh kemične obdelave, da jih primerjam. (Nikoli ničesar ne zavrzite - pozneje boste potrebovali!)

Za te teste bom uporabil CircuitPython in razvojno ploščo Adafruit Itsybitsy M4. Za vse naprave so na voljo ustrezni gonilniki.

Zaloge

Moj začetni seznam:

  • Mikrokrmilnik Itsybitsy M4 Express
  • mikro USB kabel - za programiranje
  • TMP36
  • DS18B20
  • 4,7K ohmski upor
  • DHT22
  • BME680
  • Večmetrski
  • Deska ali lesena deska
  • Priključna žica

1. korak: Vezja

Vezja
Vezja

Oranžne žice so 3,3 V.

Črne žice so GND

Na dnu plošče so preskusne točke za merjenje napetosti. (Analogni izhod 3.3V, GND in TMP36)

Sredinske vtičnice so od leve proti desni:

  • TMP36: 3,3 V, analogni signal izhod, GND
  • DS18B20: GND, izhod digitalnega signala, 3.3v
  • DHT22: 3,3 V, signal izhod, prazen, GND
  • BME680: 3,3 V, SDA, SCL, prazno, GND

Zadnji konektor za povezavo s ploščo IB M4E od leve proti desni

  • 3.3v
  • TMP36 - analogni izhod na pin A2
  • GND
  • DS18B20 digitalni izhod na pin D3 - zelen
  • DHT22 digitalni izhod na pin D2 - rumen
  • SDA - bela
  • SCL - roza

4.7K ohmski upor je dvig od signala do 3.3v za 0-žilno povezavo na DS18B20.

Na zadnji strani plošče sta 2 odrezani sledi:

Pod levim koncem rožnatih in belih žic. (Pod rumeno žico.)

2. korak: Metoda

Metoda
Metoda

Za vsak senzor bom napisal kratek scenarij za večkratno odčitavanje temperature (in drugih elementov, če so na voljo) in preverjanje temperature glede na živosrebrni (Hg) termometer. Poskušal bom videti, kako blizu je temperatura v primerjavi z odčitkom živega srebra in ali so odčitki enakomerni/dosledni.

Prav tako bom pogledal dokumentacijo, ali se odčitki ujemajo s pričakovano natančnostjo in ali je mogoče kaj narediti za izboljšave.

3. korak: TMP36 - Začetni preizkus

TMP36 - Začetno sojenje
TMP36 - Začetno sojenje
TMP36 - Začetno sojenje
TMP36 - Začetno sojenje

Leva noga je 3,3 V, desna noga je GND, osrednja pa analogna napetost, ki predstavlja temperaturo po naslednji formuli. TempC = (milivolti - 500) / 10

Torej, 750 milivoltov daje temperaturo 25 ° C

Zdi se, da je tukaj nekaj težav. Temperatura "normalnega", živosrebrnega termometra je veliko nižja kot pri TMP36, odčitki pa niso ravno skladni - obstaja nekaj "trepetanja" ali hrupa.

Senzor TMP36 pošilja napetost, sorazmerno s temperaturo. To mora A/D pretvornik prebrati, preden se izračuna temperatura. Preberite napetost neposredno iz srednje noge senzorja z večmetrom in jo primerjajte z rezultatom iz A/D. Odčitek s sredinskega dela mojega večmetrskega merilnika je 722 milivoltov, precej nižji in zelo stabilen.

Dve stvari lahko poskusimo. Zamenjajte potenciometer za TMP36 in napetost v izračunu prilagodite dejanski napetosti mikrokrmilnika. Nato bomo videli, ali je izračunana napetost bližje in ali se hrup/trepetanje zmanjša.

Izmerimo dejansko napetost, ki se uporablja v mikrokrmilniku in A/D. Predvideno je, da je to 3.3V, v resnici pa le 3.275V.

4. korak: Rezultati zamenjave potenciometra

Rezultati zamenjave potenciometra
Rezultati zamenjave potenciometra

To je veliko bolje. Odčitki so znotraj nekaj milivoltov z veliko manj hrupa. To kaže, da hrup prihaja iz TMP36 in ne iz A/D. Odčitki na merilniku so vedno stabilni - brez trepetanja. (Merilnik morda "zgladi" tresenje.)

Eden od načinov za izboljšanje stanja je lahko povprečno branje. Hitro vzemite deset odčitkov in uporabite povprečje. Med spreminjanjem programa bom izračunal tudi standardni odklon, da bom pokazal širjenje rezultatov. Števil bom tudi število odčitkov v okviru 1 standardnega odstopanja od povprečja - višje, bolje.

5. korak: povprečni odčitki in rezultat

Povprečni odčitki in rezultat
Povprečni odčitki in rezultat

Še vedno je veliko hrupa in odčitek TMP36 je še vedno višji kot pri živosrebrnem termometru. Za zmanjšanje hrupa sem med signal in GND vključil kondenzator 100NF

Nato sem poiskal druge rešitve na internetu in našel te: https://www.doctormonk.com/2015/02/accurate-and-re… Dr Monk predlaga, da se med signal in GND vključi 47 k ohmski upor.

www.desert-home.com/2015/03/battery-operate… Ta tip predlaga razvrščanje 15 odčitkov v vrstni red in povprečenje središča 5.

Scenarij in vezje sem spremenil tako, da sem vključil te predloge in vključil odčitek iz živosrebrnega termometra.

Končno! Zdaj imamo stalne odčitke v območju natančnosti opisa naprave.

To je bilo kar precej napora za delovanje senzorja, ki ima natančnost le proizvajalca:

Natančnost - najvišja (najnižja): ± 3 ° C (± 4 ° C) Stanejo le približno 1,50 USD (2 £)

6. korak: DS18B20 - Začetno preskušanje

DS18B20 - Začetno preskušanje
DS18B20 - Začetno preskušanje

Bodite zelo previdni. Ta paket je zelo podoben TMP36, vendar so noge obratno s 3,3 V na desni in GND na levi. Izhodni signal je na sredini. Za delovanje te naprave potrebujemo 4,7 k Ohmski upor med signalom in 3,3 V. Ta naprava uporablja enožični protokol, zato moramo v mapo lib svojega Itybitsy M4 Express naložiti nekaj gonilnikov.

To stane približno 4 USD / 4 £ Tehnične specifikacije:

  • Uporabno temperaturno območje: -55 do 125 ° C (-67 ° F do +257 ° F)
  • 9 do 12 bitna ločljivost
  • Uporablja vmesnik 1 -Wire - za komunikacijo potrebuje le en digitalni pin
  • Edinstven 64 -bitni ID je zapisan v čip
  • Več senzorjev lahko deli en pin
  • ± 0,5 ° C Natančnost od -10 ° C do +85 ° C
  • Alarmni sistem za omejitev temperature
  • Čas poizvedbe je manj kot 750 ms
  • Uporablja se z močjo od 3,0 do 5,5 V.

Glavna težava tega senzorja je, da uporablja vmesnik Dallas 1-Wire in nimajo vsi mikrokrmilniki ustreznega gonilnika. Imamo srečo, obstaja voznik za Itsybitsy M4 Express.

7. korak: DS18B20 dobro deluje

DS18B20 dobro deluje
DS18B20 dobro deluje

To kaže na odličen rezultat.

Stalen niz odčitkov brez dodatnega dela in stroškov za izračun. Odčitki so v pričakovanem območju natančnosti ± 0,5 ° C v primerjavi z mojim živosrebrnim termometrom.

Obstaja tudi vodotesna različica za približno 10 USD, ki sem jo v preteklosti uporabljal z enakim uspehom.

8. korak: DHT22 in DHT11

DHT22 in DHT11
DHT22 in DHT11

DHT22 uporablja termistor za doseganje temperature in stane približno 10 USD / 10 £ in je natančnejši in dražji brat manjšega DHT11. Uporablja tudi enožični vmesnik, vendar NI združljiv s protokolom Dallas, ki se uporablja z DS18B20. Zaznava vlago in temperaturo. Te naprave včasih potrebujejo vlečni upor med 3,3 V in signalnim zatičem. Ta paket ima enega že nameščenega.

  • Poceni
  • Napajanje 3 do 5V in V/I
  • 2,5 mA max trenutna poraba med pretvorbo (pri zahtevanju podatkov)
  • Dobro za odčitke 0-100% vlažnosti z natančnostjo 2-5%
  • Dobro za odčitke temperature od -40 do 80 ° C ± 0,5 ° C natančnost
  • Največja frekvenca vzorčenja 0,5 Hz (enkrat na 2 sekundi)
  • Velikost telesa 27 mm x 59 mm x 13,5 mm (1,05 "x 2,32" x 0,53 ")
  • 4 zatiči, razmik 0,1"
  • Teža (samo DHT22): 2,4 g

V primerjavi z DHT11 je ta senzor natančnejši, natančnejši in deluje v večjem razponu temperature/vlažnosti, vendar je večji in dražji.

9. korak: Rezultati DHT22

Rezultati DHT22
Rezultati DHT22

To so odlični rezultati z zelo malo truda. Odčitki so precej stabilni in v okviru pričakovane tolerance. Odčitavanje vlažnosti je bonus.

Odčitke lahko berete le vsako sekundo.

10. korak: Test DTH11

Test DTH11
Test DTH11

Moj živosrebrni termometer je pokazal 21,9 stopinj C. To je precej star DHT11, ki sem ga dobil iz starega projekta, vrednost vlažnosti pa se zelo razlikuje od odčitkov DHT22 izpred nekaj minut. Stane približno 5 USD / 5 £.

Njegov opis vključuje:

  • Dobro za odčitke 20-80% vlažnosti s 5% natančnostjo
  • Dobro za odčitke temperature 0-50 ° C ± natančnost 2 ° C - manj kot DTH22

Zdi se, da je temperatura še vedno v območju natančnosti, vendar ne zaupam odčitku vlažnosti te stare naprave.

11. korak: BME680

BME680
BME680

Ta senzor vsebuje zmožnosti zaznavanja temperature, vlažnosti, barometričnega tlaka in hlapnih organskih spojin v enem paketu, vendar je najdražji od preizkušenih senzorjev. Stane približno 18,50 GBP / 22 USD. Obstaja podoben izdelek brez senzorja za plin, ki je nekoliko cenejši.

To je senzor petih zlatih standardov. Senzor temperature je natančen in z ustreznimi gonilniki zelo enostaven za uporabo. Ta različica uporablja I2C, vendar lahko plošča Adafruit uporablja tudi SPI.

Tako kot BME280 in BMP280 lahko tudi ta Boschev natančni senzor izmeri vlažnost z natančnostjo ± 3%, barometrični tlak z absolutno natančnostjo ± 1 hPa in temperaturo z natančnostjo ± 1,0 ° C. Ker se tlak spreminja z nadmorsko višino in so meritve tlaka tako dobre, ga lahko uporabite tudi kot višinomer z natančnostjo ± 1 meter ali boljšo!

Dokumentacija pravi, da za senzor plina potrebuje nekaj časa izgorevanja.

12. korak: Katerega naj uporabim?

Katerega naj uporabim?
Katerega naj uporabim?
  • TMP36 je zelo poceni, majhen in priljubljen, vendar precej težaven za uporabo in je lahko netočen.
  • DS18B20 je majhen, natančen, poceni, zelo enostaven za uporabo in ima vodoodporno različico.
  • DTH22 prav tako označuje vlažnost, ima zmerno ceno in je enostaven za uporabo, vendar je lahko prepočasen.
  • BME680 naredi veliko več kot drugi, vendar je drag.

Če želim samo temperaturo, bi uporabil DS18B20 z natančnostjo ± 0,5 ° C, vendar mi je najljubši BME680, ker naredi veliko več in ga lahko uporabimo v številnih različnih projektih.

Še zadnja misel. Temperaturni senzor držite stran od mikroprocesorja. Nekateri HAT -i Raspberry Pi omogočajo toploto iz glavne plošče, da segreje senzor, kar daje lažno odčitavanje.

13. korak: Nadaljnje misli in eksperimentiranje

Nadaljnje misli in eksperimentiranje
Nadaljnje misli in eksperimentiranje

Hvala gulliverrr, ChristianC231 in pgagen za komentarje o tem, kar sem doslej storil. Oprostite za zamudo, vendar sem bil na počitnicah na Irskem, nekaj tednov nisem imel dostopa do elektronskega kompleta.

Tukaj je prvi poskus prikazati, kako senzorji delujejo skupaj.

Napisal sem scenarij za branje senzorjev in izpisovanje temperaturnih vrednosti vsakih 20 sekund.

Komplet sem za eno uro dal v hladilnik, da se vse ohladi. Priključil sem ga v računalnik in Mu natisnil rezultate. Izhod je bil nato kopiran, spremenjen v datoteko.csv (spremenljivke, ločene z vejicami), grafi pa iz rezultatov v Excelu.

Od snemanja kompleta iz hladilnika so trajale približno tri minute, preden so bili zabeleženi rezultati, zato je v tem intervalu prišlo do nekaj zvišanja temperature. Sumim, da imajo štirje senzorji različne toplotne zmogljivosti in bi se zato segrevali z različnimi hitrostmi. Hitrost segrevanja naj bi se zmanjšala, ko bi se senzorji približali sobni temperaturi. To sem z živosrebrnim termometrom zabeležil kot 24,4 ° C.

Velike razlike v temperaturi na začetku krivulj so lahko posledica različnih toplotnih zmogljivosti senzorjev. Veseli me, da se linije približujejo koncu, ko se približajo sobni temperaturi. Skrbi me, da je TMP36 vedno veliko višji od ostalih senzorjev.

Pogledal sem v podatkovne liste, da bi ponovno preveril opisano natančnost teh naprav

TMP36

  • ± 2 ° C natančnost nad temperaturo (tip)
  • ± 0,5 ° C linearnost (tip)

DS18B20

± 0,5 ° C Natančnost od -10 ° C do +85 ° C

DHT22

temperatura ± 0,5 ° C

BME680

temperaturo s ± 1,0 ° C natančnostjo

Korak 14: Celoten graf

Celoten graf
Celoten graf

Zdaj lahko vidite, da so se senzorji sčasoma izravnali in se bolj ali manj dogovorili o temperaturi v okviru opisane natančnosti. Če se vrednosti TMP36 dvignejo za 1,7 stopinje (pričakuje se ± 2 ° C), se vsi senzorji dobro ujemajo.

Ko sem prvič izvedel ta poskus, je senzor DHT22 povzročil težavo:

main.py izhod:

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

Napaka pri branju DHT: ('Tipala DHT ni mogoče najti, preverite ožičenje',)

Sledenje (zadnji klic zadnji):

Datoteka "main.py", vrstica 64, v

Datoteka "main.py", 59. vrstica, v get_dht22

NameError: lokalna spremenljivka, na katero se sklicuje pred dodelitvijo

Zato sem za odpravo te težave spremenil skript in znova zagnal snemanje:

Napaka pri branju DHT: ('Tipala DHT ni mogoče najti, preverite ožičenje',)

25.9, 22.6, -999.0, 22.6

Napaka pri branju DHT: ('Tipala DHT ni mogoče najti, preverite ožičenje',)

25.9, 22.8, -999.0, 22.7

25.9, 22.9, 22.1, 22.8

25.9, 22.9, 22.2, 22.9

Napaka pri branju DHT: ('Tipala DHT ni mogoče najti, preverite ožičenje',)

27.1, 23.0, -999.0, 23.0

Napaka pri branju DHT: ('Tipala DHT ni mogoče najti, preverite ožičenje',)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

Napaka pri branju DHT: ('Tipala DHT ni mogoče najti, preverite ožičenje',)

28.4, 23.2, -999.0, 23.3

Napaka pri branju DHT: ('Tipala DHT ni mogoče najti, preverite ožičenje',)

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

Z drugo vožnjo nisem imel težav. Dokumentacija Adafruit opozarja, da včasih senzorji DHT pogrešajo odčitke.

Korak 15: Zaključki

Sklepi
Sklepi

Ta krivulja jasno kaže, da večja toplotna zmogljivost nekaterih senzorjev poveča njihov reakcijski čas.

Vsi senzorji beležijo naraščajoče in padajoče temperature.

Ne prehitro se usedejo na novo temperaturo.

Niso zelo natančni. (So dovolj dobri za vremensko postajo?)

Morda boste morali kalibrirati senzor proti zaupanja vrednemu termometru.

Priporočena: