Kazalo:
- Zaloge
- 1. korak: Vezja
- 2. korak: Metoda
- 3. korak: TMP36 - Začetni preizkus
- 4. korak: Rezultati zamenjave potenciometra
- 5. korak: povprečni odčitki in rezultat
- 6. korak: DS18B20 - Začetno preskušanje
- 7. korak: DS18B20 dobro deluje
- 8. korak: DHT22 in DHT11
- 9. korak: Rezultati DHT22
- 10. korak: Test DTH11
- 11. korak: BME680
- 12. korak: Katerega naj uporabim?
- 13. korak: Nadaljnje misli in eksperimentiranje
- Korak 14: Celoten graf
- Korak 15: Zaključki
Video: Testiranje temperaturnih senzorjev - kateri zame?: 15 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
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
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
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
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
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
Š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
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
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 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
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
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
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?
- 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
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
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
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:
Kako narediti avtomatizacijo doma na osnovi IoT s krmilnim relejem senzorjev NodeMCU: 14 korakov (s slikami)
Kako narediti domačo avtomatizacijo na osnovi IoT s krmilnim relejem senzorjev NodeMCU: V tem projektu, ki temelji na IoT, sem naredil domačo avtomatizacijo z modulom krmilnega releja Blynk in NodeMCU s povratnimi informacijami v realnem času. V ročnem načinu lahko ta relejni modul upravljate z mobilnega telefona ali pametnega telefona in z ročnim stikalom. V samodejnem načinu je ta pametnejši
Grafiranje temperaturnih sprememb zaradi podnebnih sprememb v Pythonu: 6 korakov
Grafiranje temperaturnih sprememb zaradi podnebnih sprememb v Pythonu: Podnebne spremembe so velik problem. In veliko ljudi zdaj ne ve, koliko se je povečalo. V tem navodilu bomo prikazali temperaturne spremembe podnebja zaradi podnebnih sprememb. Za goljufijo si lahko spodaj ogledate datoteko python
Več IR temperaturnih senzorjev - MLX90614: 4 koraki
Več temperaturnih senzorjev IR - MLX90614: To je kratek vodnik o tem, kako nastaviti več brezkontaktnih temperaturnih senzorjev MLX90614B prek vodila I2C z Arduino uno in prikazati odčitke na serijskem monitorju Arduino IDE. Uporabljam vnaprej izdelane plošče, če pa kupite senzor b
Mreža temperaturnih senzorjev: 6 korakov
Mreža temperaturnih senzorjev: Temperatura in vlažnost sta pomembna podatka v vašem laboratoriju, kuhinji, proizvodni liniji, pisarni, robotih morilcih in celo v vašem domu. Če morate spremljati več lokacij ali prostorov ali prostorov, potrebujete nekaj zanesljivega, kompaktnega, natančnega in ustreznega
POVEZAVA VEČ SENZORJEV NA MALINO PI: 6 korakov (s slikami)
POVEZAVA VEČ SENZORJEV Z MALINO PI: V tem projektu bomo povezali tri senzorje EZO Atlas Scientific (pH, raztopljeni kisik in temperaturo) na Raspberry Pi 3B+. Namesto ožičenja vezij na Raspberry Pi bomo uporabili ščitnik Tentacle T3 Whitebox Labs. T