Obsah:

Teplotní sonda ESP32 NTP s teploměrem s korekcí Steinhart-Hart a teplotním alarmem: 7 kroků (s obrázky)
Teplotní sonda ESP32 NTP s teploměrem s korekcí Steinhart-Hart a teplotním alarmem: 7 kroků (s obrázky)

Video: Teplotní sonda ESP32 NTP s teploměrem s korekcí Steinhart-Hart a teplotním alarmem: 7 kroků (s obrázky)

Video: Teplotní sonda ESP32 NTP s teploměrem s korekcí Steinhart-Hart a teplotním alarmem: 7 kroků (s obrázky)
Video: Let’s test the ESP32 inbuilt temperature sensor. Tutorial how to use it with Arduino IDE. #esp32 2024, Červenec
Anonim
Image
Image
Teploměr na vaření teplotní sondy ESP32 NTP s korekcí Steinhart-Hart a teplotním alarmem
Teploměr na vaření teplotní sondy ESP32 NTP s korekcí Steinhart-Hart a teplotním alarmem

Stále na cestě k dokončení „připravovaného projektu“je „Teploměr na vaření teplotní sondy ESP32 NTP s korekcí a teplotním alarmem Steinhart-Hart“návod, který ukazuje, jak do své kapacitní dotykové instrukce lze přidat teplotní sondu NTP, piezový bzučák a software. Kapacitní dotykový vstup ESP32 pomocí „zástrček s kovovou dírou“pro tlačítka k vytvoření jednoduchého, ale přesného teploměru na vaření s programovatelným teplotním alarmem.

Tři kapacitní dotyková tlačítka umožňují nastavení úrovně teplotního alarmu. Stisknutím středového tlačítka se zobrazí obrazovka „Nastavit teplotu alarmu“, která umožňuje levým a pravým tlačítkem snížit nebo zvýšit teplotu alarmu. Stisknutím a uvolněním levého tlačítka se sníží teplota alarmu o jeden stupeň, zatímco stisknutím a podržením levého tlačítka se teplota alarmu nepřetržitě sníží, dokud se neuvolní. Podobně stisknutí a uvolnění pravého tlačítka zvýší teplotu alarmu o jeden stupeň, zatímco stisknutí a podržení pravého tlačítka teplotu alarmu nepřetržitě zvyšuje, dokud není uvolněno. Po dokončení nastavení teploty alarmu se opětovným dotykem středového tlačítka vrátíte na zobrazení teploty. Kdykoli je teplota stejná nebo vyšší než teplota alarmu, zazní piezový bzučák.

A jak již bylo zmíněno, v návrhu je použita teplotní sonda NTP spolu s Steinhart-Hartovými rovnicemi a koeficienty nezbytnými pro přesné odečty teplot. Do kroku 1 jsem zařadil příliš podrobný popis Steinhart-Hartovy rovnice, Steinhart-Hartových koeficientů, děličů napětí a algebry (jako bonus mě uspává pokaždé, když ji čtu, takže možná budete chtít přeskočte krok 1 a přejděte rovnou na krok 2: Sestavení elektroniky, pokud samozřejmě nepotřebujete šlofíka).

Pokud se rozhodnete postavit tento teploměr na vaření, pro přizpůsobení a 3D tisk jsem zahrnul následující soubory:

  • Soubor Arduino „AnalogInput.ino“obsahující software pro návrh.
  • Soubory CAD aplikace Autodesk Fusion 360 pro případ znázorňující, jak bylo pouzdro navrženo.
  • Soubory Cura 3.4.0 STL „Case, Top.stl“a „Case, Bottom.stl“připravené pro 3D tisk.

Budete také potřebovat znalost prostředí Arduino, pájecí dovednosti a vybavení a navíc pro kalibraci možná budete potřebovat přístup k přesným digitálním ohmmetrům, teploměrům a zdrojům teploty.

A jako obvykle jsem pravděpodobně zapomněl jeden nebo dva soubory nebo kdo ví co ještě, takže pokud máte nějaké dotazy, neváhejte se zeptat, protože dělám spoustu chyb.

Elektronika byla navržena pomocí tužky, papíru a solární kalkulačky Radio Shack EC-2006a (kat. Č. 65-962a).

Software byl navržen pomocí Arduino 1.8.5.

Pouzdro bylo navrženo pomocí Autodesk Fusion 360, rozřezáno na Cura 3.4.0 a vytištěno v PLA na Ultimaker 2+ Extended a Ultimaker 3 Extended.

A jedna poznámka na závěr, nedostávám žádnou kompenzaci v jakékoli formě, včetně, ale bez omezení na bezplatné vzorky, za jakékoli komponenty použité v tomto designu

Krok 1: Matematika, matematika a další matematika: Steinhart – Hart, koeficienty a děliče odporů

Matematika, matematika a další matematika: Steinhart – Hart, koeficienty a děliče odporu
Matematika, matematika a další matematika: Steinhart – Hart, koeficienty a děliče odporu

Mé dřívější návrhy zahrnující teplotní sondu NTC používaly pro vyhledávání vstupního napětí z odporového děliče na teplotu techniku vyhledávání v tabulce. Protože ESP32 je schopen dvanáctibitového analogového vstupu, a protože jsem navrhoval zvýšenou přesnost, rozhodl jsem se implementovat rovnici „Steinhart-Hart“do kódu pro převod napětí na teplotu.

Steinhart-Hartova rovnice, kterou poprvé publikovali v roce 1968 John S. Steinhart a Stanley R. Hart, definuje vztah odolnosti vůči teplotě teplotní sondy NTC následovně:

1 / T = A + (B * (log (termistor))) + (C * log (termistor) * log (termistor) * log (termistor))

kde:

  • T jsou stupně Kelvina.
  • A, B, C jsou Steinhart-Hartovy koeficienty (více o tom za okamžik).
  • A Termistor je hodnota odporu termistoru teplotní sondy při aktuální teplotě.

Proč je tedy tato zdánlivě komplikovaná Steinhart-Hartova rovnice nezbytná pro jednoduchý digitální teploměr založený na teplotní sondě NTC? „Ideální“teplotní sonda NTC by poskytovala lineární reprezentaci odporu skutečné teploty, takže jednoduchá lineární rovnice zahrnující napěťový vstup a změnu měřítka by vedla k přesné prezentaci teploty. Teplotní sondy NTC však nejsou lineární a v kombinaci s nelineárním analogovým vstupem prakticky všech levných procesorů s jednou deskou, jako je WiFi Kit 32, vytvářejí nelineární analogové vstupy, a tudíž nepřesné hodnoty teploty. Použitím rovnice, jako je Steinhart-Hart, spolu s pečlivou kalibrací lze dosáhnout vysoce přesných teplotních odečtů pomocí teplotních sond NTC s levným jednodeskovým procesorem generováním velmi těsné aproximace skutečné teploty.

Takže zpět k rovnici Steinhart-Hart. Rovnice využívá tři koeficienty A, B a C k určení teploty jako funkce odporu termistoru. Odkud pocházejí tyto tři koeficienty? Někteří výrobci poskytují tyto koeficienty svými teplotními sondami NTC, jiní nikoli. Navíc koeficienty poskytnuté výrobcem mohou, ale nemusí být pro přesnou teplotní sondu, kterou si můžete zakoupit, a jsou s největší pravděpodobností koeficienty reprezentující velký vzorek všech teplotních sond, které po určitou dobu vyrábějí. A nakonec jsem jednoduše nemohl najít koeficienty pro sondu použitou v tomto návrhu.

Bez potřebných koeficientů jsem vytvořil Steinhart-Hart Spreadsheet, kalkulačku založenou na tabulkách, která pomáhá při generování potřebných koeficientů pro teplotní sondu NTC (ztratil jsem odkaz na podobnou webovou kalkulačku, kterou jsem používal před mnoha lety, takže jsem vytvořil tuto). Abych určil koeficienty pro teplotní sondu, začnu změřením hodnoty odporu 33k použitého v děliči napětí digitálním ohmmetrem a zadám hodnotu do žluté oblasti tabulky označené „Rezistor“. Dále umístím teplotní sondu do tří prostředí; první pokojová teplota, druhá ledová voda a třetí vařící voda spolu se známým přesným digitálním teploměrem a nechají čas na stabilizaci teploty na teploměru a počtu vstupů termistoru na displeji WiFi Kit 32 (více o tom později). Když je počet vstupů teploty a termistoru stabilizován, zadám teplotu indikovanou známým přesným teploměrem a počet termistorů zobrazený na displeji sady WiFi 32 do žluté oblasti tabulky označené „Stupně F z teploměru“a „AD“Počítejte s 32palcovou WiFi soupravou pro každé ze tří prostředí. Jakmile jsou zadána všechna měření, zelená oblast tabulky poskytuje koeficienty A, B a C požadované Steinhartovou-Hartovou rovnicí, které jsou poté jednoduše zkopírovány a vloženy do zdrojového kódu.

Jak již bylo zmíněno, výstup Steinhart-Hartovy rovnice je ve stupních Kelvina a tento návrh zobrazuje stupně Fahrenheita. Převod ze stupňů Kelvina na stupně Fahrenheita je následující:

Nejprve převeďte stupně Kelvina na stupně Celsia odečtením 273,15 (stupňů Kelvina) z Steinhart-Hartovy rovnice:

Stupně C = (A + (B * (log (termistor))) + (C * log (termistor) * log (termistor) * log (termistor)) - 273,15

A za druhé, převeďte stupně Celsia na stupně Fahrenheita následujícím způsobem:

Stupně F = ((stupně C * 9) / 5) + 32

Po dokončení Steinhart-Hartovy rovnice a koeficientů je ke čtení výstupu děliče odporu nutná druhá rovnice. Model odporového děliče použitého v tomto návrhu je:

vRef <--- Termistor <--- vOut <--- Rezistor <--- Zem

kde:

  • vRef v tomto provedení je 3.3vdc.
  • Termistor je teplotní sonda NTC použitá v odporovém děliči.
  • vOut je napěťový výstup odporového děliče.
  • Rezistor je odpor 33k používaný v děliči odporů.
  • A země je, dobře, země.

vOd odporového děliče v tomto provedení je připojen k analogovému vstupu A0 sady WiFi Kit 32 (pin 36) a napěťový výstup odporového děliče se vypočítá následovně:

vOut = vRef * Rezistor / (Rezistor + Termistor)

Jak je však uvedeno v Steinhartově-Hartově rovnici, k získání teploty je nutná hodnota odporu termistoru, nikoli napěťový výstup odporového děliče. Přesměrování rovnice na výstup hodnoty termistoru vyžaduje použití malé algebry následovně:

Vynásobte obě strany „(odpor + termistor)“, což má za následek:

vOut * (odpor + termistor) = vRef * odpor

Rozdělte obě strany pomocí „vOut“, což má za následek:

Rezistor + termistor = (vRef * Rezistor) / vVýstup

Odečtěte „odpor“z obou stran, což má za následek:

Termistor = (vRef * Rezistor / vOut) - odpor

A nakonec pomocí distribuční vlastnosti zjednodušte:

Termistor = odpor * ((vRef / vOut) - 1)

Nahrazením počtu analogových vstupů WiFi Kit 32 A0 od 0 do 4095 pro vOut a nahrazením hodnoty 4096 pro vRef, rovnice děliče odporu poskytující hodnotu odporu termistoru požadovanou Steinhartovou-Hartovou rovnicí se stává:

Termistor = odpor * ((4096 / počet analogových vstupů) - 1)

Takže s matematikou za námi, pojďme sestavit nějakou elektroniku.

Krok 2: Sestavení elektroniky

Sestavení elektroniky
Sestavení elektroniky
Sestavení elektroniky
Sestavení elektroniky
Sestavení elektroniky
Sestavení elektroniky

Pokud jde o elektroniku, předtím jsem sestavil demonstrátor ESP32 Capacitive Touch https://www.instructables.com/id/ESP32-Capacitive… U této sestavy jsou vyžadovány následující další součásti:

  • Pět, 4 "kusy 28awg drátu (jeden červený, jeden černý, jeden žlutý a dva zelené).
  • Jedna sonda Maverick „Teplotní sonda ET-72“(https://www.maverickthermometers.com/product/pr-003/).
  • Jeden, 2,5 mm „telefonní“konektor, montáž na panel (https://www.mouser.com/ProductDetail/502-TR-2A).
  • Jeden, 33k ohm 1% 1/8 wattový odpor.
  • Jeden, piezoelektrický bzučák https://www.adafruit.com/product/160. Pokud vyberete jiný piezo bzučák, ujistěte se, že odpovídá specifikacím tohoto (čtvercová vlna, <= proudový výstup ESP32).

K sestavení dalších komponent jsem provedl následující kroky:

  • Odizolujte a pocínujte konce každého drátu o délce 4 palce, jak je znázorněno na obrázku.
  • Pájený jeden konec žlutého vodiče a jeden konec odporu 33 kOhm ke kolíku „Tip“konektoru telefonu.
  • Pájejte jeden konec černého vodiče na volný konec odporu 33 kOhm a ořízněte vodič přebytečného odporu.
  • Nanesené smršťovací bužírky přes vodiče a odpor.
  • Jeden konec červeného drátu připájejte ke kolíku „Sleeve“na konektoru telefonu.
  • Volný konec žlutého vodiče připájejte na kolík 36 na WiFi Kit 32.
  • Volný konec černého vodiče připájejte ke kolíku GND sady WiFi 32.
  • Volný konec červeného vodiče připájejte na 3V3 pin na WiFi Kit 32.
  • Pájený jeden zelený vodič na jeden vývod piezoelektrického bzučáku.
  • Zbývající zelený vodič připájejte ke zbývajícímu vedení piezoelektrického bzučáku
  • Pájet volný konec jednoho ze zelených piezo drátů na pin 32 na WiFi Kit 32.
  • Volný konec zbývajících zelených piezo drátů připájejte na pin GND na WiFi Kit 32.
  • Zapojte teplotní sondu do konektoru telefonu.

Když jsou všechny kabely hotové, dvakrát jsem zkontroloval svou práci.

Krok 3: Instalace softwaru

Instalace softwaru
Instalace softwaru

Soubor "AnalogInput.ino" je soubor prostředí Arduino obsahující software pro návrh. Kromě tohoto souboru budete potřebovat grafickou knihovnu „U8g2lib“pro OLED displej WiFi Kit32 (další informace o této knihovně najdete na

S nainstalovanou grafickou knihovnou U8g2lib ve vašem adresáři Arduino a načtením „AnalogInput.ino“do prostředí Arduino zkompilujte a stáhněte software do WiFi Kit 32. Po stažení a spuštění se zobrazí horní řádek OLED displeje v WiFi Kit 32 by mělo číst „Teplota“s aktuální teplotou zobrazenou ve velkém textu ve středu displeje.

Stisknutím středového tlačítka (T5) zobrazíte obrazovku „Nastavit teplotu alarmu“. Nastavte teplotu alarmu stisknutím levého tlačítka (T4) nebo pravého tlačítka (T6), jak je popsáno v úvodu. Chcete -li alarm otestovat, nastavte teplotu alarmu na stejnou nebo nižší než aktuální teplota a alarm by měl znít. Po dokončení nastavení teploty alarmu se stisknutím středového tlačítka vrátíte na zobrazení teploty.

Hodnoty dProbeA, dProbeB, dProbeC a dResistor v softwaru jsou hodnoty, které jsem určil během kalibrace sondy, kterou jsem použil v tomto návrhu, a měly by generovat odečty teploty s přesností na několik stupňů. Pokud ne, nebo pokud je požadována vyšší přesnost, pak je na řadě kalibrace.

Krok 4: Kalibrace teplotní sondy NTP

Kalibrace teplotní sondy NTP
Kalibrace teplotní sondy NTP

Ke kalibraci teplotní sondy jsou zapotřebí následující položky:

  • Jeden digitální ohmmetr.
  • Jeden známý přesný digitální teploměr schopný 0 až 250 stupňů F.
  • Jedna sklenice ledové vody.
  • Jeden hrnec vroucí vody (buďte velmi, velmi opatrní!).

Začněte získáním skutečné hodnoty odporu 33k:

  • Odpojte napájení z desky WiFi Kit 32.
  • Odpojte teplotní sondu z konektoru telefonu (může být také nutné odpájet černý vodič ze sady WiFi Kit 32, v závislosti na vašem digitálním ohmmetru).
  • Otevřete tabulku Steinhart-Hart.
  • Změřte hodnotu odporu 33 k ohmů pomocí digitálního ohmmetru a zadejte ji do žlutého pole „Rezistor“v tabulce a do proměnné „dResistor“v softwaru. I když se to může zdát přehnané, 1% odpor 33 k ohmů může skutečně ovlivnit přesnost zobrazení teploty.
  • Připojte teplotní sondu do konektoru telefonu.

Dále získejte Steinhart-Hartovy koeficienty:

  • Zapněte známý přesný digitální teploměr.
  • Připojte napájecí zdroj USB do sady WiFi 32.
  • Současně stiskněte a podržte levé (T4) a pravé (T6) tlačítko, dokud se nezobrazí displej „Termistor se počítá“.
  • Nechte stabilizovat displeje digitálního teploměru i počítadla termistorů.
  • Počty teploty a termistoru zadejte do žlutých sloupců „Stupně F z teploměru“a „Počet AD z ESP32“v řádku „Místnost“.
  • Vložte digitální teploměr i sondy termistoru do ledové vody a nechte oba displeje stabilizovat.
  • Počty teploty a termistoru zadejte do žlutých sloupců „Stupně F z teploměru“a „Počty AD z ESP32“v řádku „Studená voda“.
  • Vložte digitální teploměr a sondy termistoru do vroucí vody a nechte oba displeje stabilizovat.
  • Počty teploty a termistoru zadejte do žlutých sloupců „Stupně F z teploměru“a „Počet AD z ESP32“v řádku „Vroucí voda“.
  • Zkopírujte zelený koeficient „A:“do proměnné „dProbeA“ve zdrojovém kódu.
  • Zkopírujte zelený koeficient „B:“do proměnné „dProbeB“ve zdrojovém kódu.
  • Zkopírujte zelený koeficient „C:“do proměnné „dProbeC“ve zdrojovém kódu.

Zkompilovat a stáhnout software do WiFi Kit 32.

Krok 5: 3D tisk skříně a finální montáž

3D tisk skříně a finální montáž
3D tisk skříně a finální montáž
3D tisk skříně a finální montáž
3D tisk skříně a finální montáž
3D tisk skříně a finální montáž
3D tisk skříně a finální montáž

Tiskl jsem „Case, Top.stl“i „Case, Bottom.stl“na výšku vrstvy 0,1 mm, 50% výplň, bez podpěr.

Po vytištění pouzdra jsem sestavil elektroniku a pouzdro následujícím způsobem:

  • Odpojil jsem dráty ze tří zástrček otvorů, zatlačil zástrčky otvorů do polohy v "Case, Top.stl", poté jsem znovu připájel vodiče k zástrčkám otvorů, přičemž jsem si pečlivě všiml vlevo (T4), středu (T5) a vpravo (T6) a příslušná tlačítka.
  • Zajistěte konektor telefonu do kulatého otvoru v "Case, Bottom.stl" pomocí přiložené matice.
  • Umístil piezoelektrický bzučák do spodní sestavy pouzdra vedle konektoru telefonu a zajistil na místě oboustrannou páskou.
  • Zasuňte soupravu WiFi Kit 32 na místo do spodní sestavy pouzdra a ujistěte se, že je port USB na soupravě WiFi Kit 32 zarovnán s oválným otvorem ve spodní části pouzdra (NETLAČTE na displej OLED a umístěte soupravu WiFi 32 do spodní části pouzdra shromáždění, v tomto mi věřte, prostě to nedělejte!).
  • Zatlačte horní sestavu pouzdra na spodní sestavu pouzdra a zajistěte na místě pomocí malých teček silného kyanoakrylátového lepidla v rozích.

Krok 6: O softwaru

O softwaru
O softwaru

Soubor „AnalogInput.ino“je modifikací souboru „Buttons.ino“z mého předchozího Instructable „https://www.instructables.com/id/ESP32-Capacitive-Touch-Buttons/“. Upravil jsem původní tři kódové sekce „setup ()“, „loop ()“a „InterruptService ()“tak, aby obsahovaly software pro sondu a alarm, a přidal jsem další tři kódové sekce „Analog ()“„Tlačítka ()“a „Displej ()“k vyčištění „smyčky ()“a přidání potřebného softwaru pro sondu a alarm.

„Analog ()“obsahuje kód nezbytný ke čtení počtu termistorů do pole, průměrování pole počtů, použití děliče napětí ke generování hodnoty termistoru a nakonec použití Steinhart-Hartových rovnic a rovnic pro převod teploty ke generování stupňů Fahrenheita.

„Buttons ()“obsahuje kód nezbytný pro zpracování stisknutí tlačítek a úpravu teploty alarmu.

„Displej ()“obsahuje kód nezbytný k zobrazení informací na displeji OLED.

Pokud máte nějaké dotazy nebo připomínky ke kódu nebo k jinému aspektu tohoto Instructable, neváhejte se zeptat a já udělám vše pro to, abych na ně odpověděl.

Doufám, že jste si to užili (a jste stále vzhůru)!

Krok 7: „Připravovaný projekt“

The
The

Nadcházející projekt „Intelligrill® Pro“je kuřácký monitor se dvěma teplotními sondami, který obsahuje:

  • Výpočty teplotní sondy Steinhart-Hart (na rozdíl od „vyhledávacích“tabulek) pro zvýšení přesnosti, jak jsou zahrnuty v tomto Instructable.
  • Prediktivní čas do dokončení na sondě 1 zahrnující zvýšenou přesnost odvozenou z výpočtů Steinhart-Hart.
  • Druhá sonda, sonda 2, pro sledování teploty kuřáka (omezena na 32 až 399 stupňů).
  • Kapacitní dotykové ovládací prvky vstupu (jako v předchozím Instructable).
  • Vzdálené monitorování založené na WIFI (s pevnou IP adresou umožňuje sledování pokroku kuřáka odkudkoli, kde je k dispozici připojení k internetu).
  • Rozšířený teplotní rozsah (32 až 399 stupňů).
  • Zvukové alarmy dokončení jak ve vysílači Intelligrill®, tak na většině monitorovacích zařízení s podporou WiFi.
  • Zobrazení teploty ve stupních F nebo stupních C.
  • Časový formát buď v HH: MM: SS nebo HH: MM. Zobrazení baterie buď ve voltech, nebo v % nabitých.
  • A výstup PID pro kuřáky na bázi šneku.

„Intelligrill® Pro“stále testuje, aby se stal nejpřesnějším, funkcemi nabitým a spolehlivým Intelligrill® založeným na HTML, který jsem navrhl. Je to stále pod testem, ale s jídlem, které mi pomáhá připravit se během testování, jsem přibral více než pár liber.

Opět doufám, že si to užijete!

Doporučuje: