INHOUDSOPGAWE:

ESP32 NTP Kooktermometer vir temperatuur sonde met Steinhart-Hart-regstelling en temperatuuralarm: 7 stappe (met foto's)
ESP32 NTP Kooktermometer vir temperatuur sonde met Steinhart-Hart-regstelling en temperatuuralarm: 7 stappe (met foto's)

Video: ESP32 NTP Kooktermometer vir temperatuur sonde met Steinhart-Hart-regstelling en temperatuuralarm: 7 stappe (met foto's)

Video: ESP32 NTP Kooktermometer vir temperatuur sonde met Steinhart-Hart-regstelling en temperatuuralarm: 7 stappe (met foto's)
Video: ESP8266/ESP32: Дата и время. Синхронизация, NTP-клиент 2024, Julie
Anonim
Image
Image
ESP32 NTP Temperatuurprobe-kooktermometer met Steinhart-Hart-regstelling en temperatuuralarm
ESP32 NTP Temperatuurprobe-kooktermometer met Steinhart-Hart-regstelling en temperatuuralarm

"ESP32 NTP Temperature Probe Cooking Thermometer With Steinhart-Hart Correction and Temperature Alarm" is nog steeds onderweg om 'n "komende projek" te voltooi, en is 'n instruksie wat wys hoe ek 'n NTP-temperatuursonde, piezo-zoemer en sagteware by my kapasitiewe aanraking voeg. ESP32 Kapasitiewe raakinvoer deur gebruik te maak van "Metaalgatproppe" vir knoppies "om 'n eenvoudige maar akkurate kooktermometer met 'n programmeerbare temperatuuralarm te skep.

Met die drie kapasitiewe aanraakknoppies kan die temperatuuralarmvlak ingestel word. Deur op die middelste knoppie te druk, verskyn die "Stel alarmtemperatuur" -skerm, waarmee die linker- en regterknoppies die alarmtemperatuur onderskeidelik kan verlaag of verhoog. Deur op die linkerknoppie te druk en dit los te laat, word die alarmtemperatuur met een graad verlaag, terwyl u die linkerknoppie ingedruk hou, sal die alarmtemperatuur voortdurend verminder totdat dit vrygestel word. Net so sal die alarmtemperatuur met een graad verhoog word deur op die regterknoppie te druk en dit los te laat, terwyl die regter knoppie ingedruk word, sal die alarmtemperatuur voortdurend verhoog word totdat dit vrygestel word. As u klaar is met die aanpassing van die alarmtemperatuur, raak u weer die middelste knoppie om terug te keer na die temperatuurskerm. Op enige tydstip is die temperatuur gelyk aan of hoër as die alarmtemperatuur, sal die piezo -zoemer klink.

En soos genoem, word 'n NTP-temperatuursonde in die ontwerp gebruik saam met die Steinhart-Hart-vergelykings en koëffisiënte wat nodig is vir akkurate temperatuurmetings. Ek het 'n uiters uitgebreide beskrywing van die Steinhart-Hart-vergelyking, die Steinhart-Hart-koëffisiënte, spanningsverdelers en algebra in stap 1 ingesluit (as 'n bonus, laat ek elke keer as ek dit lees, aan die slaap, sodat u dit moontlik wil doen slaan stap 1 oor en gaan reguit na stap 2: monteer die elektronika, tensy u natuurlik 'n dutjie nodig het).

As u besluit om hierdie kooktermometer te bou, het ek die volgende lêers ingesluit vir aanpassing en 3D -druk:

  • Arduino -lêer "AnalogInput.ino" wat die sagteware vir die ontwerp bevat.
  • Autodesk Fusion 360 CAD -lêers vir die saak wat wys hoe die saak ontwerp is.
  • Cura 3.4.0 STL -lêers "Case, Top.stl" en "Case, Bottom.stl" gereed vir 3D -druk.

U benodig ook kennis van die Arduino -omgewing, sowel as soldeervaardighede en toerusting, en u benodig ook toegang tot akkurate digitale ohmmeters, termometers en temperatuurbronne vir kalibrasie.

En soos gewoonlik het ek waarskynlik 'n lêer of twee vergeet, of wie weet wat nog meer, so as u enige vrae het, moet asseblief nie huiwer om dit te vra nie, want ek maak baie foute.

Die elektronika is ontwerp met potlood, papier en 'n sakrekenaar met sonskerm, EC-2006a (Cat. 65-962a), Radio Shack.

Die sagteware is ontwerp met behulp van Arduino 1.8.5.

Die omhulsel is ontwerp met Autodesk Fusion 360, gesny met Cura 3.4.0 en gedruk in PLA op 'n Ultimaker 2+ Extended en 'n Ultimaker 3 Extended.

En 'n laaste opmerking: ek ontvang geen vergoeding in enige vorm nie, insluitend maar nie beperk tot gratis monsters nie, vir enige van die komponente wat in hierdie ontwerp gebruik word

Stap 1: Wiskunde, wiskunde en meer wiskunde: Steinhart – Hart, koëffisiënte en weerstandsverdelers

Wiskunde, wiskunde en meer wiskunde: Steinhart – Hart, koëffisiënte en weerstandsverdelers
Wiskunde, wiskunde en meer wiskunde: Steinhart – Hart, koëffisiënte en weerstandsverdelers

My vroeëre ontwerpe met 'n NTC -temperatuursonde het 'n tabelopsoektegniek gebruik om die inkomende spanning van 'n weerstandsverdeler na temperatuur om te skakel. Aangesien die ESP32 in staat is tot twaalf bits analoog ingang, en omdat ek ontwerp het vir groter akkuraatheid, het ek besluit om die "Steinhart-Hart" vergelyking in die kode vir spanning na temperatuur omskakeling te implementeer.

Die Steinhart-Hart-vergelyking, wat eers in 1968 deur John S. Steinhart en Stanley R. Hart gepubliseer is, definieer die weerstand teen temperatuurverhouding van 'n NTC-temperatuursonde soos volg:

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

waar:

  • T is grade Kelvin.
  • A, B, C is die Steinhart-Hart-koëffisiënte (meer hieroor binne 'n oomblik).
  • En Thermistor is die termistorweerstandwaarde van die temperatuursonde by die huidige temperatuur.

Dus, waarom is hierdie oënskynlik ingewikkelde Steinhart-Hart-vergelyking nodig vir 'n eenvoudige NTC-temperatuur sonde gebaseerde digitale termometer? 'N' Ideale 'NTC -temperatuursonde sal 'n lineêre weerstandsvoorstelling van die werklike temperatuur bied, en 'n eenvoudige lineêre vergelyking wat spanninginvoer en skaal behels, sal 'n akkurate temperatuurvoorstelling tot gevolg hê. NTC-temperatuursondes is egter nie lineêr nie, en as dit gekombineer word met die nie-lineêre analoog insette van feitlik alle laekoste enkelbordverwerkers, soos die WiFi Kit 32, lewer dit nie-lineêre analoog insette en dus onakkurate temperatuurmetings. Deur 'n vergelyking soos Steinhart-Hart saam met noukeurige kalibrasie te gebruik, kan hoogs akkurate temperatuurmetings met behulp van NTC-temperatuursondes met 'n goedkoop enkelbordverwerker verkry word deur 'n baie noue benadering van die werklike temperatuur te verkry.

So terug na die Steinhart-Hart-vergelyking. Die vergelyking gebruik die drie koëffisiënte A, B en C om temperatuur te bepaal as 'n funksie van die termistorweerstand. Waar kom hierdie drie koëffisiënte vandaan? Sommige vervaardigers voorsien hul koëffisiënte met hul NTC -temperatuursondes, en ander nie. Verder het die vervaardiger koëffisiënte moontlik al dan nie vir die presiese temperatuursonde wat u kan koop, en is waarskynlik koëffisiënte verteenwoordigend van 'n groot steekproef van alle temperatuursondes wat hulle oor 'n tydperk vervaardig. En uiteindelik kon ek eenvoudig nie die koëffisiënte vir die sonde wat in hierdie ontwerp gebruik is, opspoor nie.

Sonder die nodige koëffisiënte, het ek Steinhart-Hart Spreadsheet geskep, 'n sakrekenaar-gebaseerde sakrekenaar wat help om die nodige koëffisiënte vir 'n NTC-temperatuursonde te genereer (ek het die skakel na 'n soortgelyke sakrekenaar wat ek baie jare gelede gebruik het, verloor, so ek het hierdie een gemaak). Om die koëffisiënte vir 'n temperatuursonde te bepaal, begin ek met die meet van die waarde van die 33k -weerstand wat in die spanningsverdeler gebruik word met 'n digitale ohmmeter, en voer die waarde in die geel gebied van die sigblad met die naam "Weerstand" in. Vervolgens plaas ek die temperatuursonde in drie omgewings; eerste kamertemperatuur, tweede yswater en derde kookwater, tesame met 'n bekende akkurate digitale termometer, en laat die temperatuur op die termometer en die termistor -insettelling op die WiFi Kit 32 -skerm (meer hieroor later) tyd stabiliseer. Terwyl die temperatuur en die ingangstelling van die termistor gestabiliseer is, voer ek die temperatuur in wat deur die bekende akkurate termometer aangedui word, en die termistortelling wat op die skerm van die WiFi -kit 32 verskyn, in die geel gebied van die sigblad met die etiket "grade F van termometer" en "AD Tel onderskeidelik uit WiFi Kit 32 "vir elk van die drie omgewings. Sodra alle metings ingevoer is, bied die groen gebied van die sigblad die A-, B- en C-koëffisiënte wat deur die Steinhart-Hart-vergelyking benodig word, wat dan eenvoudig gekopieer en in die bronkode geplak word.

Soos voorheen genoem, is die uitset van die Steinhart-Hart-vergelyking in grade Kelvin, en hierdie ontwerp toon grade Fahrenheit. Omskakeling van grade Kelvin na grade Fahrenheit is soos volg:

Omskakel eers grade Kelvin in grade Celsius deur 273,15 (grade Kelvin) van die Steinhart-Hart-vergelyking af te trek:

Grade C = (A + (B * (log (Thermistor))) + (C * log (Thermistor) * log (Thermistor) * log (Thermistor))) - 273.15

En tweedens, skakel grade Celsius in grade Fahrenheit soos volg om:

Grade F = ((grade C * 9) / 5) + 32

Met die Steinhart-Hart-vergelyking en koëffisiënte voltooi, is 'n tweede vergelyking nodig om die weerstandsverdelersuitset te lees. 'N Model van die weerstandsverdeler wat in hierdie ontwerp gebruik word, is:

vRef <--- Termistor <--- vOut <--- Weerstand <--- Grond

waar:

  • vRef in hierdie ontwerp is 3.3vdc.
  • Thermistor is die NTC -temperatuursonde wat in die weerstandsverdeler gebruik word.
  • vOut is die spanningsuitset van die weerstandsverdeler.
  • Weerstand is die 33k -weerstand wat in die weerstandsverdeler gebruik word.
  • En grond is, wel, grond.

v Uit die weerstandsverdeler word in hierdie ontwerp aan die analoog -ingang A0 van die WiFi Kit 32 gekoppel (pen 36), en die spanningsuitset van die weerstandsverdeler word soos volg bereken:

vOut = vRef * Weerstand / (Weerstand + termistor)

Soos aangedui in die Steinhart-Hart-vergelyking, is die termistorweerstandswaarde egter nodig om temperatuur te verkry, nie die spanningsuitset van die weerstandsverdeler nie. Om die vergelyking te herrangskik om die termistorwaarde uit te voer, vereis die gebruik van 'n klein algebra soos volg:

Vermenigvuldig albei kante met "(Weerstand + termistor)" wat lei tot:

vOut * (Weerstand + termistor) = vRef * Weerstand

Verdeel beide kante deur "vOut" wat lei tot:

Weerstand + termistor = (vRef * weerstand) / vOut

Trek "Weerstand" van beide kante af, wat lei tot:

Termistor = (vRef * Resistor / vOut) - Weerstand

En laastens, met die verspreidingseiendom, vereenvoudig:

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

Deur die WiFi Kit 32 A0 analoog inset telling van 0 tot 4095 vir vOut te vervang, en die waarde van 4096 vir vRef te vervang, word die weerstandsverdelingsvergelyking wat die termistorweerstandwaarde vereis deur die Steinhart-Hart vergelyking:

Termistor = Weerstand * ((4096 / analoog insette) - 1)

Met die wiskunde agter die rug, laat ons elektronika bymekaarmaak.

Stap 2: Monteer die elektronika

Die samestelling van die elektronika
Die samestelling van die elektronika
Die samestelling van die elektronika
Die samestelling van die elektronika
Die samestelling van die elektronika
Die samestelling van die elektronika

Vir die elektronika het ek voorheen die ESP32 Capacitive Touch-demonstrator bymekaargemaak https://www.instructables.com/id/ESP32-Capacitive… Met die samestelling is die volgende bykomende komponente nodig:

  • Vyf, 4 "stukke 28awg draad (een rooi, een swart, een geel en twee groen).
  • Een Maverick "ET-72 Temperature Probe" sonde (https://www.maverickthermometers.com/product/pr-003/).
  • Een 2,5 mm "telefoon" -aansluiting, paneelhouer (https://www.mouser.com/ProductDetail/502-TR-2A).
  • Een, 33k ohm 1% 1/8 watt weerstand.
  • Een, piezo -zoemer https://www.adafruit.com/product/160. As u 'n ander piezo -zoemer kies, moet u seker maak dat dit ooreenstem met die spesifikasies hiervan (vierkantgolf aangedryf, <= huidige uitset van die ESP32).

Om die bykomende komponente te monteer, het ek die volgende stappe uitgevoer:

  • Die ente van elke 4 "draadlengte gestroop en gebak, soos getoon.
  • Die een kant van die geel draad en die een kant van die 33k ohm weerstand is aan die "tip" -pen van die telefoonaansluiting gesoldeer.
  • Soldeer die een kant van die swart draad aan die vrye punt van die 33k ohm weerstand en sny die oortollige weerstandsdraad af.
  • Toegepaste hitte krimp buise oor die drade en weerstand.
  • Die een kant van die rooi draad is aan die "Sleeve" -pen op die telefoonaansluiting gesoldeer.
  • Soldeer die vrye punt van die geel draad aan pen 36 op die WiFi Kit 32.
  • Soldeer die vrye punt van die swart draad aan die GND -pen op die WiFi Kit 32.
  • Soldeer die vrye punt van die rooi draad aan die 3V3 -pen op die WiFi Kit 32.
  • Soldeer een groen draad aan een lood van die piëzo -zoemer.
  • Die oorblywende groen draad word aan die oorblywende lood van die piëzo -zoemer gesoldeer
  • Soldeer die vrye punt van een van die groen piëzo -drade aan pen 32 op die WiFi Kit 32.
  • Soldeer die vrye punt van die oorblywende groen piëzo -drade aan die GND -pen op die WiFi Kit 32.
  • Steek die temperatuursonde in die telefoonaansluiting.

Met al die bedrading voltooi, het ek my werk dubbel nagegaan.

Stap 3: Installeer die sagteware

Die installering van die sagteware
Die installering van die sagteware

Die lêer "AnalogInput.ino" is 'n Arduino -omgewingslêer wat die sagteware vir die ontwerp bevat. Benewens hierdie lêer, benodig u ook die "U8g2lib" grafiese biblioteek vir die WiFi Kit32 OLED -skerm (sien https://github.com/olikraus/u8g2/wiki vir meer inligting oor hierdie biblioteek).

Met die grafiese biblioteek U8g2lib geïnstalleer in u Arduino -gids en "AnalogInput.ino" in die Arduino -omgewing gelaai, stel u die sagteware saam en laai dit af in die WiFi Kit 32. Sodra dit afgelaai en uitgevoer is, is die boonste lyn van die OLED -skerm op die WiFi Kit 32 moet "Temperatuur" lees, met die huidige temperatuur in groot teks in die middel van die skerm.

Raak die middelste knoppie (T5) om die skerm "Stel alarmtemperatuur" te vertoon. Pas die alarmtemperatuur aan deur op die linkerknoppie (T4) of die regterknoppie (T6) te druk, soos beskryf in die inleiding. Om die alarm te toets, pas die alarmtemperatuur aan as gelyk aan of laer as die huidige temperatuur, en die alarm moet klink. As u klaar is met die instelling van die alarmtemperatuur, raak die middelste knoppie om terug te keer na die temperatuurskerm.

Die waardes dProbeA, dProbeB, dProbeC en dResistor in die sagteware is die waardes wat ek bepaal het tydens die kalibrasie van die sonde wat ek in hierdie ontwerp gebruik het en moet temperatuurmetings akkuraat tot binne 'n paar grade genereer. As dit nie die geval is nie, of as 'n hoër akkuraatheid verlang word, is die volgende kalibrasie.

Stap 4: Kalibreer die NTP -temperatuursonde

Kalibreer die NTP -temperatuursonde
Kalibreer die NTP -temperatuursonde

Die volgende items is nodig om die temperatuursonde te kalibreer:

  • Een digitale ohmmeter.
  • Een bekende akkurate digitale termometer wat 0 tot 250 grade F.
  • Een glas yswater.
  • Een pot kookwater (wees baie, baie versigtig!).

Begin deur die werklike weerstandwaarde van 33k te verkry:

  • Verwyder die krag van die WiFi Kit 32 -bord.
  • Verwyder die temperatuursonde uit die telefoonaansluiting (dit kan ook nodig wees om die swart draad van die WiFi Kit 32 te verwyder, afhangende van u digitale ohmmeter).
  • Maak die Steinhart-Hart-sigblad oop.
  • Meet die waarde van die 33k ohm weerstand met behulp van die digitale ohmmeter en voer dit in die geel "Resistor" boks in die sigblad en in die veranderlike "dResistor" in die sagteware. Alhoewel dit oormatig lyk, kan 'n weerstand van 33% ohm 1% inderdaad die akkuraatheid van die temperatuurweergawe beïnvloed.
  • Koppel die temperatuursonde in die telefoonaansluiting.

Verkry dan die Steinhart-Hart-koëffisiënte:

  • Skakel die bekende akkurate digitale termometer aan.
  • Koppel 'n USB -kragbron aan die WiFi -kit 32.
  • Hou die linker (T4) en regter (T6) knoppies gelyktydig ingedruk totdat die "Thermistor Counts" skerm verskyn.
  • Laat die skerms van die digitale termometer en die termistorteller stabiliseer.
  • Voer die temperatuur en termistortellings in die geel kolomme "grade F van termometer" en "AD tellings van ESP32" in die "kamer" -ry in.
  • Plaas beide die digitale termometer en termistorsondes in yswater en laat beide skerms stabiliseer.
  • Voer die temperatuur en termistortellings in die geel kolomme "grade F van termometer" en "AD tellings van ESP32" in die ry "Koue water" in.
  • Plaas beide die digitale termometer en termistorsondes in kookwater en laat beide skerms stabiliseer.
  • Voer die temperatuur en termistortellings in die geel kolomme "grade F van termometer" en "AD tellings van ESP32" in die ry "kookwater" in.
  • Kopieer die groen "A:" koëffisiënt in die veranderlike "dProbeA" in die bronkode.
  • Kopieer die groen "B:" koëffisiënt in die veranderlike "dProbeB" in die bronkode.
  • Kopieer die groen "C:" koëffisiënt in die veranderlike "dProbeC" in die bronkode.

Stel die sagteware saam en laai dit af in die WiFi Kit 32.

Stap 5: 3D -afdruk van die omhulsel en finale samestelling

3D -afdruk van die saak en finale vergadering
3D -afdruk van die saak en finale vergadering
3D -afdruk van die saak en finale vergadering
3D -afdruk van die saak en finale vergadering
3D -afdruk van die saak en finale vergadering
3D -afdruk van die saak en finale vergadering

Ek het beide "Case, Top.stl" en "Case, Bottom.stl" op.1mm laaghoogte gedruk, 50% vulsel, sonder ondersteunings.

Met die behuizing gedruk, het ek die elektronika en die omhulsel soos volg saamgestel:

  • Ek het die drade van die drie gatproppe losgesoldeer, die gatproppe in posisie in "Case, Top.stl" gedruk, en die drade weer aan die gatproppe gesoldeer, met aandag aan die linkerkant (T4), middel (T5) en regs (T6) drade en die onderskeie knoppies.
  • Bevestig die telefoonaansluiting aan die ronde gat in "Case, Bottom.stl" met behulp van die meegeleverde moer.
  • Plaas die piëzo -zoemer in die onderkant van die omhulsel langs die telefoonaansluiting en word vasgemaak met dubbelzijdige band.
  • Skuif die WiFi -kit 32 in sy posisie in die onderkant van die omhulsel, en maak seker dat die USB -poort op die WiFi -kit 32 in lyn is met die ovaalgat in die onderkant van die omhulsel (moenie op die OLED -skerm druk om die WiFi -kit 32 in die onderkant van die kas te plaas nie vergadering, vertrou my hieroor, moenie dit doen nie!).
  • Druk die boonste eenheid op die onderkant van die omhulsel vas en word vasgemaak met klein kolletjies dik cyanoakrylaatgom op die hoeke.

Stap 6: Oor die sagteware

Oor die sagteware
Oor die sagteware

Die lêer "AnalogInput.ino" is 'n verandering van die lêer "Buttons.ino" van my vorige Instructable "https://www.instructables.com/id/ESP32-Capacitive-Touch-Buttons/". Ek het die oorspronklike drie kode -afdelings "setup ()", "loop ()" en "InterruptService ()" aangepas om sagteware vir die sonde en alarm in te sluit, en ek het nog drie kode -afdelings "Analog ()" bygevoeg, "Buttons ()" en "Display ()" om "lus ()" skoon te maak en die nodige sagteware vir die sonde en alarm by te voeg.

'Analoog ()' bevat die kode wat nodig is om die termistortelling in 'n skikking te lees, die aantal tellings te gemiddelde, die spanningsverdeler te gebruik om die termistorwaarde te genereer en laastens die Steinhart-Hart-vergelykings en temperatuuromskakelingsvergelykings te gebruik om grade Fahrenheit te genereer.

"Buttons ()" bevat die kode wat nodig is om knoppies te druk en die alarmtemperatuur te wysig.

"Display ()" bevat die kode wat nodig is om die inligting op die OLED -skerm aan te bied.

As u enige vrae of kommentaar het oor die kode of enige ander aspek van hierdie instruksies, kan u dit gerus vra, en ek sal my bes doen om dit te beantwoord.

Ek hoop jy het dit geniet (en is nog steeds wakker)!

Stap 7: Die "komende projek"

Die
Die

Die komende projek, "Intelligrill® Pro", is 'n rokermonitor met dubbele temperatuur met:

  • Steinhart-Hart temperatuur sonde berekeninge (in teenstelling met "opsoek" tabelle) vir verhoogde akkuraatheid soos opgeneem in hierdie instruksies.
  • Voorspellingstyd tot voltooiing op sonde 1 met die verhoogde akkuraatheid wat uit die Steinhart-Hart-berekeninge verkry word.
  • 'N Tweede sonde, sonde 2, vir die monitering van rokertemperatuur (beperk tot 32 tot 399 grade).
  • Kapasitiewe aanraakinvoerkontroles (soos in die vorige instruksies).
  • WIFI -gebaseerde afstandmonitering (met 'n vaste IP -adres, maak dit moontlik om die vordering van die roker te monitor vanaf enige plek waar 'n internetverbinding beskikbaar is).
  • Uitgebreide temperatuurbereik (32 tot 399 grade).
  • Hoorbare voltooiingsalarme binne die Intelligrill® -sender en op die meeste WiFi -moniteringstoestelle.
  • Temperatuurweergawe in grade F of grade C.
  • Tydformaat in HH: MM: SS of HH: MM. Batteryvertoning in volt of % gelaai.
  • En PID -uitset vir rokers wat op aasbakke gebaseer is.

"Intelligrill® Pro" toets nog steeds of dit die mees akkurate, funksieverpakte en betroubare HTML -gebaseerde Intelligrill® word wat ek ontwerp het. Dit word nog steeds getoets, maar met die maaltye wat dit help om tydens die toets voor te berei, het ek meer as 'n paar kilogram opgetel.

Weereens, ek hoop jy geniet dit!

Aanbeveel: