Obsah:

Testování teplotních senzorů - který z nich pro mě?: 15 kroků (s obrázky)
Testování teplotních senzorů - který z nich pro mě?: 15 kroků (s obrázky)

Video: Testování teplotních senzorů - který z nich pro mě?: 15 kroků (s obrázky)

Video: Testování teplotních senzorů - který z nich pro mě?: 15 kroků (s obrázky)
Video: Arianka má na oku klíště?! 🐞🥹 Ach joooo! 😩 2024, Červenec
Anonim
Testování teplotních senzorů - který z nich je pro mě?
Testování teplotních senzorů - který z nich je pro mě?

Jedním z prvních senzorů, které chtějí vyzkoušet nováčci v oblasti fyzických počítačů, je měření teploty. Čtyři z nejpopulárnějších senzorů jsou TMP36, který má analogový výstup a potřebuje převodník analog na digitální, DS18B20, který používá jednovodičové připojení, DHT22 nebo o něco levnější DHT11, který potřebuje pouze digitální pin, ale také poskytuje odečet vlhkosti a nakonec BME680, který používá I2C (s SPI také na některých breakout deskách) a udává teplotu, vlhkost, plyn (VOC) a atmosférický tlak, ale stojí o něco více.

Chci vidět, jak jsou přesné, a zjistit všechny výhody nebo nevýhody. Již vlastním přesný rtuťový teploměr, který zbyl z barevného fotografického tisku v dobách chemického zpracování, abych je porovnal. (Nikdy nic nevyhazujte - budete to potřebovat později!)

Pro tyto testy použiji CircuitPython a vývojovou desku Adafruit Itsybitsy M4. Pro všechna zařízení jsou k dispozici vhodné ovladače.

Zásoby

Můj počáteční seznam:

  • Mikrokontrolér Itsybitsy M4 Express
  • kabel micro USB - pro programování
  • TMP36
  • DS18B20
  • Rezistor 4,7K Ohm
  • DHT22
  • BME680
  • Multimetr
  • Breadboard nebo pásová deska
  • Spojovací vodič

Krok 1: Obvody

Obvody
Obvody

Oranžové vodiče jsou 3,3 V.

Černé vodiče jsou GND

Ve spodní části desky jsou testovací body pro měření napětí. (Analogový výstup 3,3 V, GND a TMP36)

Středové zásuvky jsou zleva doprava:

  • TMP36: 3,3 V, výstup analogového signálu, GND
  • DS18B20: GND, výstup digitálního signálu, 3,3 V.
  • DHT22: 3,3 V, signál ven, prázdný, GND
  • BME680: 3,3v, SDA, SCL, prázdný, GND

Zadní konektor pro připojení k desce IB M4E zleva doprava

  • 3.3v
  • TMP36 - analogový výstup na pin A2
  • GND
  • Digitální výstup DS18B20 na pin D3 - zelený
  • Digitální výstup DHT22 na pin D2 - žlutý
  • SDA - bílá
  • SCL - růžová

Rezistor 4,7K Ohm je vytažením signálu ze 3,3 V pro 0nevodičové připojení na DS18B20.

Na zadní straně desky jsou 2 vyřezané stopy:

Pod levým koncem oba růžové a bílé dráty. (Pod žlutým drátem.)

Krok 2: Metoda

Metoda
Metoda

Pro každý senzor napíšu krátký skript, který několikrát odečte teplotu (a další položky, jsou -li k dispozici) a zkontroluje teplotu podle mého rtuťového (Hg) teploměru. Podívám se, jak blízko je teplota ve srovnání se čtením rtuti a zda jsou hodnoty stabilní/konzistentní.

Rovněž se podívám do dokumentace, abych zjistil, zda odečty odpovídají očekávané přesnosti a zda je možné něco zlepšit.

Krok 3: TMP36 - počáteční zkouška

TMP36 - Počáteční pokus
TMP36 - Počáteční pokus
TMP36 - Počáteční pokus
TMP36 - Počáteční pokus

Levá noha je 3,3 V, pravá je GND a střední noha je analogové napětí představující teplotu pomocí následujícího vzorce. TempC = (milivolty - 500) / 10

750 milivoltů tedy dává teplotu 25 ° C

Zdá se, že zde existuje několik problémů. Teplota z „normálního“rtuťového teploměru je mnohem nižší než z TMP36 a hodnoty nejsou příliš konzistentní - dochází k nějakému „chvění“nebo šumu.

Senzor TMP36 vysílá napětí úměrné teplotě. Toto musí odečíst A/D převodník, než se vypočítá teplota. Přečteme multimetrem napětí přímo ze střední nohy snímače a porovnáme to s výsledkem z A/D. Odečet ze střední nohy s mým multimetrem je 722 milivoltů, mnohem nižší a velmi stabilní čtení.

Můžeme vyzkoušet dvě věci. Nahraďte potenciometrem TMP36 a upravte napětí ve výpočtu na skutečné napětí mikrokontroléru. Poté uvidíme, zda je vypočítané napětí blíže a zda je snížen šum/jitter.

Pojďme změřit skutečné napětí, které se používá na mém mikrokontroléru a A/D. Toto bylo předpokládáno na 3,3 V, ale ve skutečnosti je pouze 3,275 V.

Krok 4: Výsledky substituce potenciometru

Výsledky substituce potenciometru
Výsledky substituce potenciometru

To je mnohem lepší. Odečty jsou v řádu milivoltů s mnohem menším šumem. To naznačuje, že šum je spíše z TMP36 než z A/D. Odečet na měřiči je vždy stabilní - žádné vibrace. (Měřič může „vyhlazovat“nervózní výstup.)

Jedním ze způsobů, jak situaci zlepšit, může být průměrné čtení. Rychle proveďte deset měření a použijte průměr. Během změny programu také vypočítám směrodatnou odchylku, abych dal indikaci šíření výsledků. Budu také počítat počet odečtů v rámci 1 standardní odchylky od průměru - čím vyšší, tím lepší.

Krok 5: Průměrné hodnoty a výsledek

Průměrné hodnoty a výsledek
Průměrné hodnoty a výsledek

Stále existuje velký hluk a hodnoty z TMP36 jsou stále vyšší než ze rtuťového teploměru. Aby se snížil šum, zapojil jsem mezi signál a GND kondenzátor 100NF

Pak jsem hledal jiná řešení na internetu a našel jsem tato: https://www.doctormonk.com/2015/02/accurate-and-re… Dr. Monk navrhuje zahrnout mezi signál a GND odpor 47 k Ohm.

www.desert-home.com/2015/03/battery-operate… Zatímco tento chlapík navrhuje seřazení 15 měření do průměru a průměrování centra 5.

Upravil jsem skript a obvod, aby zahrnoval tyto návrhy, a zahrnul čtení z rtuťového teploměru.

Nakonec! Nyní máme stabilní hodnoty v rozsahu přesnosti popisu zařízení.

To bylo docela hodně úsilí, aby senzor fungoval, který má pouze přesnost výrobce:

Přesnost - nejvyšší (nejnižší): ± 3 ° C (± 4 ° C) Stojí jen asi 1,50 $ (2 GBP)

Krok 6: DS18B20 - Počáteční testování

DS18B20 - Počáteční testování
DS18B20 - Počáteční testování

Buďte velmi opatrní. Tento balíček vypadá velmi podobně jako TMP36, ale nohy jsou naopak kulaté s 3,3 V vpravo a GND vlevo. Signál je uprostřed. Aby toto zařízení fungovalo, potřebujeme mezi signálem a 3,3 V odpor 4,7 k Ohm. Toto zařízení používá jednovodičový protokol a potřebujeme stáhnout několik ovladačů do složky lib v Itsybitsy M4 Express.

To stojí asi 4 $ / 4 £ Technické specifikace:

  • Použitelný teplotní rozsah: -55 až 125 ° C (-67 ° F až +257 ° F)
  • Volitelné rozlišení 9 až 12 bitů
  • Používá 1 -Wire rozhraní - ke komunikaci vyžaduje pouze jeden digitální pin
  • Unikátní 64bitové ID vypálené na čip
  • Několik senzorů může sdílet jeden pin
  • ± 0,5 ° C Přesnost od -10 ° C do +85 ° C
  • Alarmový systém teplotního limitu
  • Dotaz je kratší než 750 ms
  • Použitelné s napájením 3,0 V až 5,5 V.

Hlavním problémem tohoto senzoru je, že používá rozhraní Dallas 1-Wire a ne všechny mikrokontroléry mají vhodný ovladač. Máme štěstí, existuje ovladač pro Itsybitsy M4 Express.

Krok 7: DS18B20 funguje dobře

DS18B20 funguje dobře
DS18B20 funguje dobře

To ukazuje skvělý výsledek.

Stabilní sada měření bez jakékoli další práce a režie výpočtu. Odečty jsou v očekávaném rozsahu přesnosti ± 0,5 ° C ve srovnání s mým rtuťovým teploměrem.

K dispozici je také vodotěsná verze za přibližně 10 dolarů, kterou jsem v minulosti použil se stejným úspěchem.

Krok 8: DHT22 a DHT11

DHT22 a DHT11
DHT22 a DHT11

DHT22 používá termistor k získání teploty a stojí asi 10 $ / 10 £ a je přesnějším a dražším bratrem menšího DHT11. Používá také jednovodičové rozhraní, ale NENÍ kompatibilní s protokolem Dallas používaným s DS18B20. Snímá teplotu i vlhkost. Tato zařízení někdy potřebují stahovací odpor mezi 3,3 V a signálním kolíkem. Tento balíček již má jeden nainstalovaný.

  • Nízké náklady
  • Napájení 3 až 5 V a I/O
  • Maximální spotřeba proudu 2,5 mA během převodu (při požadavku na data)
  • Dobré pro měření vlhkosti 0-100% s přesností 2-5%
  • Dobré pro měření teploty -40 až 80 ° C s přesností ± 0,5 ° C
  • Ne více než 0,5 Hz vzorkovací frekvence (jednou za 2 sekundy)
  • Velikost těla 27 mm x 59 mm x 13,5 mm (1,05 palců x 2,32 palců x 0,53 palců)
  • 4 piny, rozteč 0,1"
  • Hmotnost (pouze DHT22): 2,4 g

Ve srovnání s DHT11 je tento senzor přesnější, přesnější a pracuje ve větším rozsahu teploty/vlhkosti, ale je větší a dražší.

Krok 9: Výsledky DHT22

Výsledky DHT22
Výsledky DHT22

To jsou vynikající výsledky s velmi malým úsilím. Odečty jsou docela stabilní a v rámci očekávané tolerance. Čtení vlhkosti je bonus.

Čtení můžete provádět pouze každou sekundu.

Krok 10: Test DTH11

Test DTH11
Test DTH11

Můj rtuťový teploměr ukazoval 21,9 stupňů C. Jedná se o docela starý DHT11, který jsem získal ze starého projektu a hodnota vlhkosti se velmi liší od hodnot DHT22 před několika minutami. Stojí to asi 5 $ / 5 £.

Jeho popis obsahuje:

  • Dobré pro hodnoty vlhkosti 20-80% s přesností 5%
  • Dobré pro měření teploty 0-50 ° C s přesností ± 2 ° C - méně než DTH22

Zdá se, že teplota je stále v rozsahu přesnosti, ale nedůvěřuji odečtu vlhkosti z tohoto starého zařízení.

Krok 11: BME680

BME680
BME680

Tento senzor obsahuje možnosti snímání teploty, vlhkosti, barometrického tlaku a plynu VOC v jednom balení, ale je nejdražším ze zde testovaných senzorů. Stojí to asi 18,50 GBP / 22 USD. Existuje podobný produkt bez plynového senzoru, který je o něco levnější.

Jedná se o zlatý standardní senzor z těchto pěti. Teplotní senzor je přesný a s vhodnými ovladači velmi snadno použitelný. Tato verze používá I2C, ale Adafruit breakout board může také používat SPI.

Stejně jako BME280 a BMP280 může tento přesný snímač od společnosti Bosch měřit vlhkost s přesností ± 3%, barometrický tlak s absolutní přesností ± 1 hPa a teplotu s přesností ± 1,0 ° C. Protože se tlak mění s nadmořskou výškou a měření tlaku je tak dobré, můžete jej také použít jako výškoměr s přesností ± 1 metr nebo lepší!

Dokumentace říká, že potřebuje nějaký „čas dohoření“pro plynový senzor.

Krok 12: Který mám použít?

Který mám použít?
Který mám použít?
  • TMP36 je velmi levný, malý a populární, ale poměrně obtížně se používá a může být nepřesný.
  • DS18B20 je malý, přesný, levný, velmi snadno se používá a má vodotěsnou verzi.
  • DTH22 také indikuje vlhkost, má střední cenu a snadno se používá, ale může být příliš pomalý.
  • BME680 dělá mnohem více než ostatní, ale je drahý.

Pokud chci jen teplotu, použil bych DS18B20 s přesností ± 0,5 ° C, ale můj oblíbený je BME680, protože toho dělá mnohem více a lze jej použít ve velkém počtu různých projektů.

Jedna poslední myšlenka. Udržujte teplotní senzor v dostatečné vzdálenosti od mikroprocesoru. Některé Raspberry Pi HAT umožňují teplo z hlavní desky k zahřátí senzoru, což vede k falešnému odečtu.

Krok 13: Další myšlenky a experimentování

Další myšlenky a experimentování
Další myšlenky a experimentování

Děkuji vám gulliverrr, ChristianC231 a pgagen za vaše komentáře k tomu, co jsem dosud dělal. Omlouvám se za zpoždění, ale byl jsem na dovolené v Irsku, bez přístupu ke své sadě elektroniky několik týdnů.

Zde je první pokus ukázat, jak senzory spolupracují.

Napsal jsem skript, abych postupně přečetl senzory a každých 20 sekund vytiskl hodnoty teploty.

Soupravu jsem vložil na hodinu do lednice, aby vše vychladlo. Zapojil jsem to do počítače a dostal Mu k vytištění výsledků. Výstup byl poté zkopírován, převeden do souboru.csv (proměnné oddělené čárkami) a grafy čerpají z výsledků v aplikaci Excel.

Vyjmutí soupravy z lednice trvalo asi tři minuty, než byly zaznamenány výsledky, takže v tomto intervalu došlo k určitému zvýšení teploty. Mám podezření, že čtyři senzory mají různé tepelné kapacity, a tak by se zahřívaly různými rychlostmi. Očekává se, že rychlost oteplování se sníží, jakmile se senzory přiblíží pokojové teplotě. Zaznamenal jsem to svým rtuťovým teploměrem jako 24,4 ° C.

Široké rozdíly teplot na začátku křivek by mohly být až na rozdílné tepelné kapacity senzorů. Těší mě, že se linky přibližují ke konci, když se blíží pokojové teplotě. Obávám se, že TMP36 je vždy mnohem vyšší než ostatní senzory.

Vyhledal jsem datové listy, abych znovu zkontroloval popsanou přesnost těchto zařízení

TMP36

  • Přesnost ± 2 ° C nad teplotou (typ)
  • ± 0,5 ° C linearita (typ.)

DS18B20

± 0,5 ° C Přesnost od -10 ° C do +85 ° C

DHT22

teplota ± 0,5 ° C

BME680

teplota s přesností ± 1,0 ° C

Krok 14: Úplný graf

Plný graf
Plný graf

Nyní vidíte, že se senzory nakonec srovnaly a souhlasily s teplotou víceméně v rámci své popsané přesnosti. Pokud je odebráno 1,7 stupně z hodnot TMP36 (očekává se ± 2 ° C), existuje dobrá shoda mezi všemi senzory.

Při prvním spuštění tohoto experimentu způsobil senzor DHT22 problém:

výstup main.py:

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

Chyba čtení DHT: ('Snímač DHT nebyl nalezen, zkontrolujte zapojení',)

Traceback (poslední hovor poslední):

Soubor „main.py“, řádek 64, v

Soubor "main.py", řádek 59, v get_dht22

NameError: místní proměnná odkazovaná před přiřazením

Upravil jsem tedy skript, abych se s tímto problémem vypořádal, a restartoval nahrávání:

Chyba čtení DHT: ('Snímač DHT nebyl nalezen, zkontrolujte zapojení',)

25.9, 22.6, -999.0, 22.6

Chyba čtení DHT: ('Snímač DHT nebyl nalezen, zkontrolujte zapojení',)

25.9, 22.8, -999.0, 22.7

25.9, 22.9, 22.1, 22.8

25.9, 22.9, 22.2, 22.9

Chyba čtení DHT: ('Snímač DHT nebyl nalezen, zkontrolujte zapojení',)

27.1, 23.0, -999.0, 23.0

Chyba čtení DHT: ('Snímač DHT nebyl nalezen, zkontrolujte zapojení',)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

Chyba čtení DHT: ('Snímač DHT nebyl nalezen, zkontrolujte zapojení',)

28.4, 23.2, -999.0, 23.3

Chyba čtení DHT: ('Snímač DHT nebyl nalezen, zkontrolujte zapojení',)

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

S druhou jízdou jsem neměl problém. Dokumentace Adafruit varuje, že někdy senzory DHT zmeškají odečty.

Krok 15: Závěry

Závěry
Závěry

Tato křivka jasně ukazuje, že vyšší tepelná kapacita některých senzorů prodlužuje jejich reakční dobu.

Všechny senzory zaznamenávají stoupající a klesající teploty.

Nejsou příliš rychlé na to, aby se usadily na novou teplotu.

Nejsou příliš přesné. (Jsou dost dobré pro meteorologickou stanici?)

Možná budete muset senzor kalibrovat na důvěryhodný teploměr.

Doporučuje: