Tartalomjegyzék:
- Kellékek
- 1. lépés: Áramkörök
- 2. lépés: Módszer
- 3. lépés: TMP36 - Kezdeti próba
- 4. lépés: Potenciométer -helyettesítési eredmények
- 5. lépés: Átlagos értékek és eredmény
- 6. lépés: DS18B20 - Kezdeti tesztelés
- 7. lépés: A DS18B20 jól működik
- 8. lépés: DHT22 és DHT11
- 9. lépés: DHT22 eredmények
- 10. lépés: DTH11 teszt
- 11. lépés: BME680
- 12. lépés: Melyiket használjam?
- 13. lépés: További gondolatok és kísérletezés
- 14. lépés: Teljes grafikon
- 15. lépés: Következtetések
Videó: Hőmérséklet -érzékelők tesztelése - melyik számomra?: 15 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Az egyik első érzékelő, amelyet a fizikai számítástechnika újoncai kipróbálnak, a hőmérséklet mérése. A legnépszerűbb érzékelők közül négy a TMP36, amely analóg kimenettel rendelkezik, és analóg-digitális átalakítóra van szüksége, a DS18B20, amely egyvezetékes csatlakozást használ, a DHT22 vagy a valamivel olcsóbb DHT11, amelyhez csak egy digitális tüske szükséges. páratartalom leolvasást biztosít, és végül a BME680, amely I2C -t használ (SPI -vel is, néhány kitörési táblán), és hőmérsékletet, páratartalmat, gázt (VOC) és légköri nyomást ad, de valamivel többe kerül.
Látni akarom, hogy mennyire pontosak, és fel kell fedeznem az előnyöket vagy hátrányokat. Már van egy pontos higanyos hőmérőm, amely a kémiai feldolgozás idején maradt a színes fotónyomtatásból, hogy összehasonlítsam őket. (Soha ne dobjon ki semmit - később szüksége lesz rá!)
CircuitPython -t és egy Adafruit Itsybitsy M4 fejlesztőlapot fogok használni ezekhez a tesztekhez. Minden eszközhöz megfelelő illesztőprogramok állnak rendelkezésre.
Kellékek
Kezdeti listám:
- Itsybitsy M4 Express mikrovezérlő
- mikro USB kábel - a programozáshoz
- TMP36
- DS18B20
- 4.7K ohmos ellenállás
- DHT22
- BME680
- Többméteres
- Kenyeretábla vagy szalagdeszka
- Csatlakozó vezeték
1. lépés: Áramkörök
A narancssárga vezetékek 3,3 V feszültségűek
A fekete vezetékek GND
A tábla alján a feszültség mérésére szolgáló tesztpontok találhatók. (3.3v, GND és TMP36 analóg kimenet)
A középső aljzatok balról jobbra vannak:
- TMP36: 3.3v, analóg jel kimenet, GND
- DS18B20: GND, digitális jel kimenet, 3.3v
- DHT22: 3.3v, jel ki, üres, GND
- BME680: 3.3v, SDA, SCL, üres, GND
A hátsó csatlakozó, az IB M4E kártyához való csatlakoztatáshoz, balról jobbra
- 3.3v
- TMP36 - analóg kimenet az A2 érintkezőhöz
- GND
- DS18B20 digitális kimenet a D3 érintkezőhöz - zöld
- DHT22 digitális kimenet a D2 érintkezőhöz - sárga
- SDA - fehér
- SCL - rózsaszín
A 4,7 K ohmos ellenállás a DS18B20 0 n-vezetékes csatlakozásánál a jelről 3,3 V-ra húzódik.
A tábla hátoldalán 2 vágott pálya található:
Mind a rózsaszín, mind a fehér vezeték bal vége alatt. (A sárga vezeték alatt.)
2. lépés: Módszer
Minden érzékelőhöz írok egy rövid forgatókönyvet a hőmérséklet (és egyéb elemek, ha rendelkezésre állnak) többszörös leolvasására, és ellenőrzem a hőmérsékletet a higany (Hg) hőmérőmhöz képest. Meg fogom nézni, hogy a hőmérséklet milyen közel van a higany leolvasásához, és hogy a leolvasott értékek állandóak/konzisztensek -e.
Megnézem a dokumentációt is, hogy a leolvasott értékek megfelelnek -e az elvárt pontosságnak, és lehet -e tenni valamit a javítás érdekében.
3. lépés: TMP36 - Kezdeti próba
A bal láb 3,3 V, a jobb láb GND, a középső láb analóg feszültség, amely a hőmérsékletet képviseli a következő képlet segítségével. TempC = (millivolt - 500) / 10
Tehát 750 millivolt 25 C hőmérsékletet ad
Úgy tűnik, van itt egy -két probléma. A „normál” higanyhőmérő hőmérséklete jóval alacsonyabb, mint a TMP36 esetében, és a leolvasások nem túl következetesek - némi „remegés” vagy zaj.
A TMP36 érzékelő a hőmérséklettel arányos feszültséget küld. Ezt az A/D átalakítónak ki kell olvasnia a hőmérséklet kiszámítása előtt. Olvassa le a feszültséget közvetlenül az érzékelő középső lábáról egy multiméterrel, és hasonlítsa össze az A/D eredményével. A multiméterrel a középső lábról mért érték 722 millivolt, sokkal alacsonyabb és nagyon stabil.
Két dolgot kipróbálhatunk. Cserélje ki a TMP36 potenciométerét, és állítsa be a számításban a feszültséget a mikrokontroller tényleges feszültségéhez. Ezután látni fogjuk, hogy a számított feszültség közelebb van -e, és csökken -e a zaj/rezgés.
Mérjük meg a mikrokontroller és az A/D által használt tényleges feszültséget. Ezt 3.3v -nak feltételezték, de valójában csak 3.275v.
4. lépés: Potenciométer -helyettesítési eredmények
Ez sokkal jobb. A leolvasott értékek néhány millivolton belül vannak, sokkal kevesebb zajjal. Ez arra utal, hogy a zaj a TMP36 -ból származik, nem pedig az A/D -ből. A mérőkészülék mindig állandó - nem remeg. (Lehet, hogy a mérő „simítja” az ideges kimenetet.)
A helyzet javításának egyik módja lehet az átlagos leolvasás. Vegyen gyorsan tíz leolvasást, és használja az átlagot. A programmódosítás során kiszámítom a szórást is, hogy jelezzem az eredmények elterjedését. A leolvasások számát is az átlag 1 szórásán belül számolom - minél magasabb, annál jobb.
5. lépés: Átlagos értékek és eredmény
Még mindig nagy a zaj, és a TMP36 leolvasása még mindig magasabb, mint a higanyos hőmérő. A zaj csökkentése érdekében 100NF kondenzátort helyeztem a jel és a GND közé
Ezután más megoldásokat kerestem az interneten, és ezeket találtam: https://www.doctormonk.com/2015/02/accurate-and-re… Dr. Monk azt javasolja, hogy a jel és a GND közé 47 k ohmos ellenállást helyezzenek el.
www.desert-home.com/2015/03/battery-operate… Míg ez a fickó azt javasolja, hogy soroljanak sorba 15 leolvasást és átlagolják a centrumot 5.
Módosítottam a forgatókönyvet és az áramkört, hogy tartalmazzák ezeket a javaslatokat, és beírtam a higanyhőmérő leolvasását.
Végül! Most az eszközleírás pontossági tartományán belül állandó értékekkel rendelkezünk.
Ez elég sok erőfeszítés volt, hogy az érzékelő működjön, és csak a gyártó pontossága:
Pontosság - Legmagasabb (legalacsonyabb): ± 3 ° C (± 4 ° C) Csak körülbelül 1,50 dollárba kerülnek
6. lépés: DS18B20 - Kezdeti tesztelés
Légy nagyon óvatos. Ez a csomag nagyon hasonlít a TMP36 -hoz, de a lábak fordítva vannak: 3.3v a jobb oldalon és GND a bal oldalon. A kimenő jel középen van. Annak érdekében, hogy ez az eszköz működőképes legyen, szükség van egy 4,7 k ohmos ellenállásra a jel és a 3.3v között. Ez az eszköz az egyvezetékes protokollt használja, és le kell töltenünk néhány illesztőprogramot az Itsybitsy M4 Express lib mappájába.
Ez körülbelül 4 dollárba kerül. Műszaki adatok:
- Használható hőmérsékleti tartomány: -55 és 125 ° C (-67 ° F és +257 ° F) között
- 9-12 bites választható felbontás
- 1 vezetékes interfészt használ - csak egy digitális tű szükséges a kommunikációhoz
- Egyedi 64 bites azonosító chipbe égetve
- Több érzékelő is megoszthatja a tűt
- ± 0,5 ° C Pontosság -10 ° C és +85 ° C között
- Hőmérséklethatár-riasztó rendszer
- A lekérdezési idő kevesebb, mint 750 ms
- 3,0–5,5 V -os tápfeszültséggel használható
Ennek az érzékelőnek a fő problémája az, hogy a Dallas 1-Wire interfészt használja, és nem minden mikrokontroller rendelkezik megfelelő illesztőprogrammal. Szerencsénk van, van egy driver az Itsybitsy M4 Express -hez.
7. lépés: A DS18B20 jól működik
Ez remek eredményt mutat.
Folyamatos leolvasási sorozat minden további munka és számítási költségek nélkül. A leolvasott értékek ± 0,5 ° C várható pontossági tartományon belül vannak, összehasonlítva a higanyos hőmérőmmel.
Van egy vízálló verzió is, körülbelül 10 dollárért, amelyet a múltban ugyanolyan sikerrel használtam.
8. lépés: DHT22 és DHT11
A DHT22 termisztorral méri a hőmérsékletet, és körülbelül 10 dollár / 10 fontba kerül, és a kisebb DHT11 pontosabb és drágább testvére. Egyvezetékes interfészt is használ, de NEM kompatibilis a DS18B20 készülékkel használt Dallas protokollal. Érzi a páratartalmat és a hőmérsékletet is. Ezeknek az eszközöknek néha szükségük van egy 3,3 V és a jelzőcsap közötti felhúzó ellenállásra. Ez a csomag már telepítve van.
- Alacsony költségű
- 3-5 V tápellátás és I/O
- 2,5 mA maximális áramfelhasználás a konverzió során (adatok kérése közben)
- 0-100% -os páratartalom-mérésre alkalmas, 2-5% -os pontossággal
- Jó -40 és 80 ° C közötti hőmérséklet -leolvasáshoz ± 0,5 ° C pontossághoz
- Legfeljebb 0,5 Hz mintavételi frekvencia (2 másodpercenként)
- A test mérete 27 mm x 59 mm x 13,5 mm (1,05 x 2,32 x 0,53 hüvelyk)
- 4 csap, 0,1 "távolság
- Súly (csak a DHT22): 2,4 g
A DHT11 -hez képest ez az érzékelő pontosabb, pontosabb és nagyobb hőmérséklet/páratartalom tartományban működik, de nagyobb és drágább.
9. lépés: DHT22 eredmények
Ezek kiváló eredmények nagyon kevés erőfeszítéssel. A leolvasott értékek meglehetősen stabilak, és a várt tűréshatáron belül vannak. A páratartalom leolvasása bónusz.
Csak másodpercenként vehet leolvasást.
10. lépés: DTH11 teszt
A higanyos hőmérőm 21,9 fokot mutatott. Ez egy nagyon régi DHT11, amelyet egy régi projektből vettem, és a páratartalom értéke nagyon különbözik a néhány perccel ezelőtti DHT22 értékektől. Körülbelül 5 dollár / 5 fontba kerül.
Leírása a következőket tartalmazza:
- Jó a 20-80% -os páratartalom leolvasásához, 5% -os pontossággal
- 0-50 ° C hőmérséklet -leolvasásra alkalmas ± 2 ° C pontosság - kisebb, mint a DTH22
Úgy tűnik, hogy a hőmérséklet még mindig a pontossági tartományban van, de nem bízom a régi készülék páratartalmának leolvasásában.
11. lépés: BME680
Ez az érzékelő egyetlen csomagban tartalmazza a hőmérsékletet, a páratartalmat, a légköri nyomást és a VOC gázérzékelő képességeket, de az itt tesztelt érzékelők közül a legdrágább. Ára körülbelül 18,50 font / 22 dollár. Van egy hasonló termék gázérzékelő nélkül, ami egy kicsit olcsóbb.
Ez az öt aranyérzékelője. A hőmérséklet -érzékelő pontos, és megfelelő illesztőprogramokkal, nagyon könnyen használható. Ez a verzió I2C -t használ, de az Adafruit Breakout board SPI -t is használhat.
A BME280 & BMP280 -hoz hasonlóan ez a Bosch precíziós érzékelő ± 3% -os pontossággal, barometrikus nyomást ± 1 hPa abszolút pontossággal, és hőmérsékletet ± 1,0 ° C pontossággal képes mérni. Mivel a nyomás a magassággal változik, és a nyomásmérések olyan jók, magasságmérőként is használhatja ± 1 méter vagy jobb pontossággal!
A dokumentáció szerint „égési idő” szükséges a gázérzékelő számára.
12. lépés: Melyiket használjam?
- A TMP36 nagyon olcsó, kicsi és népszerű, de meglehetősen nehéz használni, és lehet, hogy pontatlan.
- A DS18B20 kicsi, pontos, olcsó, nagyon könnyen használható és vízálló verzióval rendelkezik.
- A DTH22 a páratartalmat is jelzi, közepes árú és könnyen használható, de lehet, hogy túl lassú.
- A BME680 sokkal többet tesz, mint a többi, de drága.
Ha csak hőmérsékletet akarok, akkor a DS18B20 -at ± 0,5 ° C pontossággal használnám, de a kedvencem a BME680, mert sokkal többet tesz, és sokféle projektben használható.
Egy utolsó gondolat. Ügyeljen arra, hogy a hőmérséklet -érzékelőt távol tartsa a mikroprocesszortól. Néhány Raspberry Pi HAT lehetővé teszi, hogy az alaplap hője felmelegítse az érzékelőt, ami hamis értéket eredményez.
13. lépés: További gondolatok és kísérletezés
Köszönöm gulliverrr, ChristianC231 és pgagen az eddigi tetteimhez fűzött megjegyzéseit. Elnézést kérek a késésért, de nyaraltam Írországban, pár hétig nem tudtam hozzáférni az elektronikai készletemhez.
Itt az első kísérlet, hogy bemutassuk az érzékelők együttműködését.
Írtam egy forgatókönyvet, hogy sorra olvassák le az érzékelőket, és körülbelül 20 másodpercenként nyomtassák ki a hőmérsékleti értékeket.
A készletet egy órára hűtőbe tettem, hogy minden kihűljön. Csatlakoztattam a PC -hez, és kaptam Mu -t, hogy kinyomtassa az eredményeket. A kimenetet ezután lemásolták, egy.csv fájlba (vesszővel elválasztott változók) alakították át, és a grafikonok az Excelből származó eredményekből merítettek.
Körülbelül három perc telt el a készlet hűtőből való kivételétől, mielőtt rögzítették az eredményeket, így ebben az időszakban némi hőmérséklet -emelkedés történt. Gyanítom, hogy a négy érzékelő különböző hőkapacitással rendelkezik, és ezért különböző sebességgel melegedne fel. A felmelegedés üteme várhatóan csökkenni fog, amint az érzékelők megközelítik a szobahőmérsékletet. Ezt 24,4 ° C -ra jegyeztem fel a higanyos hőmérőmmel.
A görbék kezdetén tapasztalható nagy hőmérsékleti különbségek az érzékelők különböző hőkapacitásaiból adódhatnak. Örömmel látom, hogy a vonalak a vég felé közelednek, ahogy közelednek a szobahőmérséklethez. Aggódom, hogy a TMP36 mindig sokkal magasabb, mint a többi érzékelő.
Megnéztem az adatlapokat, hogy ismét ellenőrizzem ezen eszközök leírt pontosságát
TMP36
- ± 2 ° C pontosság a hőmérséklet felett (tip)
- ± 0,5 ° C linearitás (tip)
DS18B20
± 0,5 ° C Pontosság -10 ° C és +85 ° C között
DHT22
hőmérséklet ± 0,5 ° C
BME680
hőmérséklet ± 1,0 ° C pontossággal
14. lépés: Teljes grafikon
Most láthatja, hogy az érzékelők végül kiegyenlítődtek, és többé -kevésbé megegyeznek a hőmérsékletről a leírt pontosságukon belül. Ha 1,7 fokot vesznek le a TMP36 értékekről (± 2 ° C várható), akkor az összes érzékelő között jó az egyetértés.
Amikor először hajtottam végre ezt a kísérletet, a DHT22 érzékelő problémát okozott:
main.py kimenet:
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 olvasási hiba: ("A DHT érzékelő nem található, ellenőrizze a vezetékeket",)
Traceback (legutóbbi utolsó hívás):
A "main.py" fájl 64. sora
A "main.py" fájl 59. sora a get_dht22 fájlban
NameError: a hozzárendelés előtt hivatkozott helyi változó
Tehát módosítottam a szkriptet, hogy megbirkózzon ezzel a problémával, és újraindítottam a felvételt:
DHT olvasási hiba: ("A DHT érzékelő nem található, ellenőrizze a vezetékeket",)
25.9, 22.6, -999.0, 22.6
DHT olvasási hiba: ("A DHT érzékelő nem található, ellenőrizze a vezetékeket",)
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 olvasási hiba: ("A DHT érzékelő nem található, ellenőrizze a vezetékeket",)
27.1, 23.0, -999.0, 23.0
DHT olvasási hiba: ("A DHT érzékelő nem található, ellenőrizze a vezetékeket",)
27.2, 23.0, -999.0, 23.1
25.9, 23.3, 22.6, 23.2
DHT olvasási hiba: ("A DHT érzékelő nem található, ellenőrizze a vezetékeket",)
28.4, 23.2, -999.0, 23.3
DHT olvasási hiba: ("A DHT érzékelő nem található, ellenőrizze a vezetékeket",)
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
A második futással nem volt gondom. Az Adafruit dokumentációja arra figyelmeztet, hogy a DHT -érzékelők néha hiányoznak a leolvasott értékekből.
15. lépés: Következtetések
Ez a görbe jól mutatja, hogy egyes érzékelők nagyobb hőkapacitása növeli a reakcióidőt.
Minden érzékelő rögzíti a hőmérséklet emelkedését és csökkenését.
Nem nagyon gyorsan tudnak új hőmérsékletre beállni.
Nem túl pontosak. (Elég jók egy meteorológiai állomáshoz?)
Előfordulhat, hogy kalibrálnia kell az érzékelőt egy megbízható hőmérővel.
Ajánlott:
Hőmérséklet leolvasása az LM35 hőmérséklet -érzékelő használatával Arduino Uno segítségével: 4 lépés
Hőmérséklet leolvasása az LM35 hőmérséklet -érzékelő használatával az Arduino Uno segítségével: Sziasztok, srácok, ebben az útmutatóban megtanuljuk, hogyan kell használni az LM35 -öt az Arduino -val. Az Lm35 egy hőmérséklet -érzékelő, amely -55 ° C és 150 ° C közötti hőmérséklet -értékeket képes leolvasni. Ez egy 3 kivezetésű eszköz, amely analóg feszültséget biztosít a hőmérséklettel arányosan. Hig
MAX7219 LED pontmátrix összeszerelése és tesztelése: 6 lépés (képekkel)
MAX7219 LED pontmátrix összeállítása és tesztelése: A pont-mátrix kijelző egy kijelző eszköz, amely fénykibocsátó diódákat tartalmaz mátrix formájában. Ez a pontmátrix kijelző olyan alkalmazásokban használatos, ahol szimbólum, grafika, karakter, ábécé, számjegy szükséges együtt jelenjenek meg
ESP32 NTP hőmérséklet szonda főzési hőmérő Steinhart-Hart korrekcióval és hőmérséklet riasztással: 7 lépés (képekkel)
ESP32 NTP hőmérséklet szonda főzési hőmérő Steinhart-Hart korrekcióval és hőmérséklet riasztással: Még mindig úton van egy "közelgő projekt" befejezéséhez, "ESP32 NTP hőmérséklet szonda főzési hőmérő Steinhart-Hart korrekcióval és hőmérséklet riasztással" egy utasítás, amely bemutatja, hogyan adhatok hozzá NTP hőmérséklet -szondát, piezo b
A Raspberry Pi stressz tesztelése: 6 lépés (képekkel)
A Raspberry Pi stressztesztelése: Amikor a Raspberry Pi először megjelent, felbuzdult a vásárlás, de végül több időt töltöttem az Arduino -val, mivel jobban megfelelnek az elektronikai projekteknek. Két eredeti Raspberry Pi -m van a fészerben, és azt hittem, hogy
Epee testzsinór tesztelése és javítása: 9 lépés (képekkel)
Epee testzsinór tesztelése és javítása: A modern, olimpiai stílusú vívás sportágában a pontozás elektromosan történik. Ahhoz, hogy az elektromos jel a fegyverből a pontozógépbe kerüljön, a jelnek tovább kell haladnia: a fegyverben lévő vezetéken (kivéve a kardot) felfelé és lefelé