Cuprins:

Termometru de gătit cu sondă de temperatură ESP32 NTP cu corectare Steinhart-Hart și alarmă de temperatură .: 7 pași (cu imagini)
Termometru de gătit cu sondă de temperatură ESP32 NTP cu corectare Steinhart-Hart și alarmă de temperatură .: 7 pași (cu imagini)

Video: Termometru de gătit cu sondă de temperatură ESP32 NTP cu corectare Steinhart-Hart și alarmă de temperatură .: 7 pași (cu imagini)

Video: Termometru de gătit cu sondă de temperatură ESP32 NTP cu corectare Steinhart-Hart și alarmă de temperatură .: 7 pași (cu imagini)
Video: Termometru Digital TP101 pentru Bucatarie Unboxing 2024, Noiembrie
Anonim
Image
Image
Termometru de gătit cu sondă de temperatură ESP32 NTP cu corecție Steinhart-Hart și alarmă de temperatură
Termometru de gătit cu sondă de temperatură ESP32 NTP cu corecție Steinhart-Hart și alarmă de temperatură

Încă în călătorie pentru a finaliza un „viitor proiect”, „Termometru de gătit cu sondă de temperatură ESP32 NTP cu corecție Steinhart-Hart și alarmă de temperatură” este un instructabil care arată cum adaug o sondă de temperatură NTP, un buzzer piezo și software la atingerea mea capacitivă Instructabil” Intrare tactilă capacitivă ESP32 Utilizând „dopuri metalice” pentru butoane „pentru a crea un termometru de gătit simplu, dar precis, cu o alarmă de temperatură programabilă.

Cele trei butoane tactile capacitive permit setarea nivelului de alarmă de temperatură. Apăsând butonul central se afișează afișajul „Setare temperatură alarmă”, permițând butoanelor stânga și dreapta să reducă sau, respectiv, să mărească temperatura alarmei. Apăsarea și eliberarea butonului stâng va reduce temperatura alarmei cu un grad, în timp ce apăsarea și menținerea apăsată a butonului stâng va reduce continuu temperatura alarmei până la eliberare. În mod similar, apăsând și eliberând butonul din dreapta va crește temperatura de alarmă cu un grad, în timp ce apăsând și ținând apăsat butonul din dreapta va crește continuu temperatura de alarmă până când este eliberată. La terminarea reglării temperaturii alarmei, pur și simplu atingeți din nou butonul central pentru a reveni la afișajul temperaturii. În orice moment, temperatura este egală sau mai mare decât temperatura de alarmă, se va auzi un buzzer piezo.

Și, după cum sa menționat, o sondă de temperatură NTP este utilizată în proiectare împreună cu ecuațiile și coeficienții Steinhart-Hart necesari pentru citiri precise ale temperaturii. Am inclus o descriere prea exagerată a ecuației Steinhart-Hart, a coeficienților Steinhart-Hart, a divizoarelor de tensiune și a algebrei la Pasul 1 (ca bonus, mă adoarme de fiecare dată când o citesc, așa că poate doriți să săriți pasul 1 și mergeți direct la pasul 2: Asamblarea dispozitivelor electronice, cu excepția cazului în care, desigur, aveți nevoie de un pui de somn).

Dacă decideți să construiți acest termometru de gătit, pentru personalizare și imprimare 3D am inclus următoarele fișiere:

  • Fișier Arduino „AnalogInput.ino” care conține software-ul pentru proiectare.
  • Fișierele cad Autodesk Fusion 360 pentru carcasă care arată cum a fost proiectat carcasa.
  • Fișierele Cura 3.4.0 STL „Case, Top.stl” și „Case, Bottom.stl” gata pentru imprimare 3D.

De asemenea, veți avea nevoie de cunoștințe cu mediul Arduino, precum și abilități și echipamente de lipit și, în plus, este posibil să aveți nevoie de acces la ohmmetre digitale precise, termometre și surse de temperatură pentru calibrare.

Și, ca de obicei, probabil că am uitat un dosar sau două sau cine știe ce altceva, așa că, dacă aveți întrebări, vă rog să nu ezitați să întrebați, deoarece fac multe greșeli.

Componentele electronice au fost proiectate folosind creion, hârtie și un calculator Radio Shack EC-2006a (nr. Cat. 65-962a) cu energie solară.

Software-ul a fost proiectat folosind Arduino 1.8.5.

Carcasa a fost proiectată folosind Autodesk Fusion 360, tăiată cu Cura 3.4.0 și tipărită în PLA pe un Ultimaker 2+ Extended și un Ultimaker 3 Extended.

Și o notă finală, nu primesc nicio compensație sub nici o formă, inclusiv, dar fără a se limita la eșantioane gratuite, pentru oricare dintre componentele utilizate în acest design

Pasul 1: Matematică, matematică și altele Matematică: Steinhart – Hart, coeficienți și divizoare de rezistență

Matematică, matematică și multe altele matematică: Steinhart – Hart, coeficienți și divizoare de rezistență
Matematică, matematică și multe altele matematică: Steinhart – Hart, coeficienți și divizoare de rezistență

Proiectele mele anterioare care încorporează o sondă de temperatură NTC foloseau o tehnică de căutare a tabelului pentru conversia tensiunii de intrare de la un divizor de rezistență la temperatură. Întrucât ESP32 este capabil de intrare analogică pe 12 biți și din moment ce proiectam pentru o precizie sporită, am decis să implementez ecuația „Steinhart-Hart” în cod pentru conversia tensiunii în temperatură.

Publicată pentru prima dată în 1968 de John S. Steinhart și Stanley R. Hart, ecuația Steinhart-Hart definește relația rezistență la temperatură a unei sonde de temperatură NTC după cum urmează:

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

Unde:

  • T este grade Kelvin.
  • A, B, C sunt coeficienții Steinhart-Hart (mai multe despre asta într-un moment).
  • Și Termistor este valoarea rezistenței termistorului sondei de temperatură la temperatura actuală.

Deci, de ce este necesară această ecuație Steinhart-Hart, aparent complicată, pentru un termometru digital simplu bazat pe sondă de temperatură NTC? O sondă de temperatură NTC „ideală” ar oferi o reprezentare a rezistenței liniare a temperaturii reale, astfel o ecuație liniară simplă care implică intrarea de tensiune și scalarea ar duce la o prezentare precisă a temperaturii. Cu toate acestea, sondele de temperatură NTC nu sunt liniare și, atunci când sunt combinate cu intrarea analogică neliniară a tuturor procesoarelor cu o singură placă cu cost redus, cum ar fi WiFi Kit 32, produc intrări analogice neliniare și, astfel, citiri de temperatură inexacte. Utilizând o ecuație precum Steinhart-Hart împreună cu o calibrare atentă, se pot obține citiri de temperatură foarte precise folosind sonde de temperatură NTC cu un procesor cu o singură placă cu cost redus, generând o aproximare foarte apropiată a temperaturii reale.

Deci, înapoi la ecuația Steinhart-Hart. Ecuația utilizează cei trei coeficienți A, B și C pentru a determina temperatura în funcție de rezistența termistorului. De unde provin acești trei coeficienți? Unii producători furnizează acești coeficienți cu sondele de temperatură NTC, iar alții nu. În plus, coeficienții furnizați de producător pot fi sau nu pentru sonda de temperatură exactă pe care o puteți achiziționa și sunt cel mai probabil coeficienți reprezentativi pentru un eșantion mare de sonde de temperatură pe care le fabrică pe o perioadă de timp. Și, în cele din urmă, pur și simplu nu am putut localiza coeficienții pentru sonda utilizată în acest design.

Fără coeficienții necesari, am creat Steinhart-Hart Spreadsheet, un calculator bazat pe foaie de calcul care ajută la generarea coeficienților necesari pentru o sondă de temperatură NTC (am pierdut linkul către un calculator similar bazat pe web pe care l-am folosit acum mulți ani, așa că l-am creat pe acesta). Pentru a determina coeficienții unei sonde de temperatură, încep prin măsurarea valorii rezistorului de 33k utilizat în divizorul de tensiune cu un ohmmetru digital și introduc valoarea în zona galbenă a foii de calcul etichetată "Rezistor". Apoi, plasez sonda de temperatură în trei medii; prima temperatură a camerei, a doua apă cu gheață și a treia apă clocotită, împreună cu un termometru digital precis cunoscut, și permit timp stabilizării temperaturii de pe termometru și a numărului de intrări ale termistorului care apare pe afișajul WiFi Kit 32 (mai multe despre aceasta mai târziu). Atât temperatura cât și numărul de intrări ale termistorului stabilizate, introduc temperatura indicată de termometrul exact cunoscut și numărul de termistor care apare pe afișajul kitului WiFi 32 în zona galbenă a foii de calcul etichetate „Gradele F de la termometru” și „AD Numărați din WiFi Kit 32 ", respectiv, pentru fiecare dintre cele trei medii. Odată introduse toate măsurătorile, zona verde a foii de calcul furnizează coeficienții A, B și C ceruți de ecuația Steinhart-Hart care sunt apoi pur și simplu copiați și lipiți în codul sursă.

După cum sa menționat anterior, ieșirea ecuației Steinhart-Hart este în grade Kelvin, iar acest design afișează grade Fahrenheit. Conversia de la grade Kelvin la grade Fahrenheit este după cum urmează:

În primul rând, convertiți grade Kelvin în grade Celsius scăzând 273,15 (grade Kelvin) din ecuația Steinhart-Hart:

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

Și în al doilea rând, convertiți grade Celsius în grade Fahrenheit după cum urmează:

Gradele F = ((Gradele C * 9) / 5) + 32

Cu ecuația și coeficienții Steinhart-Hart completi, este necesară o a doua ecuație pentru a citi ieșirea divizorului de rezistență. Un model al separatorului de rezistență utilizat în acest design este:

vRef <--- Termistor <--- vOut <--- Rezistor <--- Masă

Unde:

  • vRef în acest design este de 3,3vdc.
  • Termistorul este sonda de temperatură NTC utilizată în divizorul de rezistență.
  • vOut este ieșirea de tensiune a divizorului de rezistență.
  • Rezistorul este rezistorul de 33k utilizat în divizorul de rezistență.
  • Și terenul este, bine, terenul.

vOut din divizorul de rezistențe din acest design este atașat la intrarea analogică A0 WiFi Kit 32 (pinul 36), iar ieșirea de tensiune a divizorului de rezistență este calculată după cum urmează:

vOut = vRef * Rezistor / (Rezistor + Termistor)

Cu toate acestea, așa cum sa menționat în ecuația Steinhart-Hart, valoarea rezistenței termistorului este necesară pentru a obține temperatura, nu tensiunea de ieșire a divizorului de rezistență. Deci, rearanjarea ecuației pentru a genera valoarea termistorului necesită utilizarea unei algebre mici după cum urmează:

Înmulțiți ambele părți cu „(Rezistor + Termistor)” rezultând:

vOut * (Rezistor + Termistor) = vRef * Rezistor

Împărțiți ambele părți cu „vOut”, rezultând:

Rezistor + Termistor = (vRef * Rezistor) / vOut

Scădeți „Rezistor” din ambele părți rezultând:

Termistor = (vRef * Rezistor / vOut) - Rezistor

Și, în cele din urmă, folosind proprietatea distributivă, simplificați:

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

Înlocuind numărul de intrări analogice WiFi Kit 32 A0 de la 0 la 4095 cu vOut și înlocuind valoarea de 4096 cu vRef, ecuația împărțitorului de rezistență care oferă valoarea rezistenței termistorului cerută de ecuația Steinhart-Hart devine:

Termistor = Rezistor * ((4096 / Număr intrări analogice) - 1)

Deci, cu matematica în spatele nostru, să asamblăm niște electronice.

Pasul 2: Asamblarea electronice

Asamblarea electronice
Asamblarea electronice
Asamblarea electronice
Asamblarea electronice
Asamblarea electronice
Asamblarea electronice

Pentru electronică, am asamblat anterior demonstratorul ESP32 Capacitive Touch https://www.instructables.com/id/ESP32-Capacitive … Cu acest ansamblu, sunt necesare următoarele componente suplimentare:

  • Cinci, 4 "bucăți de sârmă de 28awg (una roșie, una neagră, una galbenă și două verzi).
  • Una, sonda Maverick „ET-72 Temperature Probe” (https://www.maverickthermometers.com/product/pr-003/).
  • Un conector „telefon” de 2,5 mm, montare pe panou (https://www.mouser.com/ProductDetail/502-TR-2A).
  • Un rezistor de 33k ohm 1% 1/8 watt.
  • Unul, piezo buzzer https://www.adafruit.com/product/160. Dacă selectați un alt buzzer piezo, asigurați-vă că se potrivește cu specificațiile acestuia (undă pătrată, <= ieșire curentă a ESP32).

Pentru a asambla componentele suplimentare, am parcurs următorii pași:

  • Îndepărtați și conservați capetele fiecărei lungimi de sârmă de 4 "așa cum se arată.
  • S-a lipit un capăt al firului galben și un capăt al rezistorului de 33 k ohmi la pinul „Sfat” al conectorului telefonului.
  • S-a lipit un capăt al firului negru până la capătul liber al rezistorului de 33 k ohm și a tăiat firul rezistorului în exces.
  • Tuburi termocontractabile aplicate peste fire și rezistor.
  • S-a lipit un capăt al firului roșu la pinul „Sleeve” de pe conectorul telefonului.
  • Am lipit capătul liber al firului galben la pinul 36 de pe WiFi Kit 32.
  • Am lipit capătul liber al firului negru la pinul GND de pe kitul WiFi 32.
  • Am lipit capătul liber al firului roșu la pinul 3V3 de pe WiFi Kit 32.
  • S-a lipit un fir verde pe un fir al sonerului piezo.
  • S-a lipit firul verde rămas pe firul rămas al sonorului piezo
  • S-a lipit capătul liber al unuia dintre firele piezo verzi la pinul 32 de pe WiFi Kit 32.
  • Am lipit capătul liber al firelor piezo verzi rămase la pinul GND de pe kitul WiFi 32.
  • Conectați sonda de temperatură la conectorul telefonului.

Cu toate cablurile terminate, mi-am verificat de două ori munca.

Pasul 3: Instalarea software-ului

Instalarea software-ului
Instalarea software-ului

Fișierul „AnalogInput.ino” este un fișier de mediu Arduino care conține software-ul pentru proiectare. În plus față de acest fișier, veți avea nevoie de biblioteca grafică "U8g2lib" pentru afișajul WiFi Kit32 OLED (consultați https://github.com/olikraus/u8g2/wiki pentru informații suplimentare despre această bibliotecă).

Cu biblioteca grafică U8g2lib instalată în directorul dvs. Arduino și „AnalogInput.ino” încărcat în mediul Arduino, compilați și descărcați software-ul în kitul WiFi 32. Odată descărcat și rulat, linia superioară a afișajului OLED de pe kitul WiFi 32 ar trebui să citească „Temperatură” cu temperatura actuală afișată în text mare în centrul afișajului.

Atingeți butonul central (T5) pentru a afișa afișajul „Setare temperatură alarmă”. Reglați temperatura alarmei apăsând fie butonul stânga (T4), fie butonul drept (T6) așa cum este descris în introducere. Pentru a testa alarma, reglați temperatura alarmei pentru a fi egală sau mai mică decât temperatura curentă și alarma ar trebui să sune. Când ați terminat setarea temperaturii alarmei, atingeți butonul central pentru a reveni la afișajul temperaturii.

Valorile dProbeA, dProbeB, dProbeC și dResistor din software sunt valorile pe care le-am determinat în timpul calibrării sondei pe care am folosit-o în acest design și ar trebui să genereze citiri de temperatură corecte până la câteva grade. Dacă nu, sau dacă se dorește o precizie mai mare, atunci calibrarea este următoarea.

Pasul 4: Calibrarea sondei de temperatură NTP

Calibrarea sondei de temperatură NTP
Calibrarea sondei de temperatură NTP

Pentru calibrarea sondei de temperatură sunt necesare următoarele elemente:

  • Un ohmmetru digital.
  • Un termometru digital precis, cunoscut, capabil de la 0 la 250 de grade F.
  • Un pahar de apă cu gheață.
  • Un vas cu apă clocotită (fii foarte, foarte atent!).

Începeți prin obținerea valorii reale a rezistorului de 33 k:

  • Scoateți alimentarea de pe placa WiFi Kit 32.
  • Scoateți sonda de temperatură din conectorul telefonului (poate fi necesar, de asemenea, să dezlipiți firul negru din WiFi Kit 32, în funcție de ohmmetrul dvs. digital).
  • Deschideți foaia de calcul Steinhart-Hart.
  • Măsurați valoarea rezistorului de 33 k ohm utilizând ohmmetrul digital și introduceți-l în caseta galbenă "Rezistor" din foaia de calcul și în variabila "dResistor" din software. Deși acest lucru poate părea excesiv, o rezistență de 33 k ohm 1% poate afecta într-adevăr acuratețea afișării temperaturii.
  • Conectați sonda de temperatură la conectorul telefonului.

Apoi obțineți coeficienții Steinhart-Hart:

  • Porniți termometrul digital cunoscut.
  • Conectați o sursă de alimentare USB la WiFi Kit 32.
  • Apăsați simultan și țineți apăsat butoanele stânga (T4) și dreapta (T6) până când apare afișajul „Thermistor Counts”.
  • Lăsați atât afișajul termometrului digital, cât și al termistorului să se stabilizeze.
  • Introduceți temperatura și numărul de termistori în coloanele galbene „Gradele F de la termometru” și „Numărul de AD de la ESP32” de pe rândul „Cameră”.
  • Introduceți termometrul digital și sondele termistorului în apa cu gheață și permiteți stabilizarea ambelor afișaje.
  • Introduceți temperatura și numărul de termistor în coloanele galbene „Gradele F de la termometru” și „Numărul de AD de la ESP32” de pe rândul „Apă rece”.
  • Introduceți termometrul digital și sondele termistorului în apă clocotită și lăsați ambele afișaje să se stabilizeze.
  • Introduceți temperatura și numărul de termistor în coloanele galbene „Gradele F de la termometru” și „Numărul de AD de la ESP32” de pe rândul „Apă clocotită”.
  • Copiați coeficientul verde "A:" în variabila "dProbeA" din codul sursă.
  • Copiați coeficientul verde "B:" în variabila "dProbeB" din codul sursă.
  • Copiați coeficientul verde "C:" în variabila "dProbeC" din codul sursă.

Compilați și descărcați software-ul în WiFi Kit 32.

Pasul 5: Imprimarea 3D a carcasei și asamblarea finală

Imprimarea 3D a carcasei și asamblarea finală
Imprimarea 3D a carcasei și asamblarea finală
Imprimarea 3D a carcasei și asamblarea finală
Imprimarea 3D a carcasei și asamblarea finală
Imprimarea 3D a carcasei și asamblarea finală
Imprimarea 3D a carcasei și asamblarea finală

Am tipărit atât „Case, Top.stl”, cât și „Case, Bottom.stl” la înălțimea stratului de.1mm, umplutură de 50%, fără suporturi.

Cu carcasa tipărită, am asamblat electronica și carcasa după cum urmează:

  • Am desoldat firele de la cele trei dopuri de gaură, am apăsat dopurile de găuri în poziție în „Case, Top.stl”, apoi am re-lipit firele de la dopurile de gaură, notând cu atenție stânga (T4), centru (T5) și dreapta (T6) fire și butoanele respective.
  • Așezați conectorul telefonului la orificiul rotund din „Carcasă, Bottom.stl” folosind piulița inclusă.
  • Așezați buzzer-ul piezo în ansamblul inferior al carcasei lângă conectorul telefonului și fixați-l cu bandă dublă.
  • Glisați kitul WiFi 32 în poziție în ansamblul inferior al carcasei, asigurându-vă că portul USB al kitului WiFi 32 este aliniat cu gaura ovală din partea inferioară a carcasei (NU apăsați pe afișajul OLED pentru a poziționa kitul WiFi 32 în carcasa inferioară adunare, ai încredere în mine în asta, pur și simplu nu o faci!).
  • Apăsați ansamblul superior al carcasei pe ansamblul inferior al carcasei și fixați-l la loc folosind mici puncte de clei gros de cianoacrilat pe colțuri.

Pasul 6: Despre software

Despre software
Despre software

Fișierul „AnalogInput.ino” este o modificare a fișierului „Buttons.ino” din versiunea mea instructabilă anterioară „https://www.instructables.com/id/ESP32-Capacitive-Touch-Buttons/”. Am modificat cele trei secțiuni de cod originale „setup ()”, „loop ()” și „InterruptService ()” pentru a include software pentru sondă și alarmă și am adăugat încă trei secțiuni de cod „Analog ()”, "Buttons ()" și "Display ()" pentru a curăța "loop ()" și pentru a adăuga software-ul necesar pentru sondă și alarmă.

„Analog ()” conține codul necesar pentru citirea numărului de termistori într-o matrice, media matricei de numărătoare, utilizați divizorul de tensiune pentru a genera valoarea termistorului și în cele din urmă utilizați ecuațiile Steinhart-Hart și ecuațiile de conversie a temperaturii pentru a genera grade Fahrenheit.

„Butoane ()” conține codul necesar procesării apăsărilor de butoane și editării temperaturii alarmei.

„Afișaj ()” conține codul necesar pentru prezentarea informațiilor pe afișajul OLED.

Dacă aveți întrebări sau comentarii cu privire la cod sau la orice alt aspect al acestui instructabil, nu ezitați să întrebați și voi face tot posibilul să le răspund.

Sper că ți-a plăcut (și încă ești treaz)!

Pasul 7: „Proiectul viitoare”

The
The

Viitorul proiect, „Intelligrill® Pro”, este un monitor pentru fumători cu sondă cu temperatură dublă, care conține:

  • Calculele sondei de temperatură Steinhart-Hart (spre deosebire de tabelele „de căutare”) pentru o precizie sporită, așa cum este încorporat în acest instructabil.
  • Timp predictiv până la finalizare pe sonda 1 încorporând precizia crescută derivată din calculele Steinhart-Hart.
  • O a doua sondă, sonda 2, pentru monitorizarea temperaturii fumătorului (limitată la 32 până la 399 grade).
  • Comenzi capacitive de intrare tactilă (ca în instructabilul anterior).
  • Monitorizare la distanță bazată pe WIFI (cu o adresă IP fixă, permite monitorizarea progresului fumătorului de oriunde este disponibilă o conexiune la internet).
  • Domeniu extins de temperatură (32 până la 399 grade).
  • Alarme sonore de finalizare atât în cadrul transmițătorului Intelligrill®, cât și pe majoritatea dispozitivelor de monitorizare compatibile WiFi.
  • Afișarea temperaturii fie în grade F, fie în grade C.
  • Formatul orei fie în HH: MM: SS, fie în HH: MM. Afișarea bateriei fie în volți, fie în% încărcat.
  • Și ieșire PID pentru fumătorii pe bază de melc.

„Intelligrill® Pro” încă testează pentru a deveni cel mai precis, mai bogat în funcții și mai fiabil bazat pe Intelligrill® pe care l-am proiectat. Este încă sub test, dar cu mesele pe care le ajută să le pregătesc în timpul testării, am câștigat mai mult de câteva kilograme.

Din nou, sper să vă placă!

Recomandat: