Taula de continguts:

Termòmetre de cocció de sonda de temperatura ESP32 NTP amb correcció de Steinhart-Hart i alarma de temperatura .: 7 passos (amb imatges)
Termòmetre de cocció de sonda de temperatura ESP32 NTP amb correcció de Steinhart-Hart i alarma de temperatura .: 7 passos (amb imatges)

Vídeo: Termòmetre de cocció de sonda de temperatura ESP32 NTP amb correcció de Steinhart-Hart i alarma de temperatura .: 7 passos (amb imatges)

Vídeo: Termòmetre de cocció de sonda de temperatura ESP32 NTP amb correcció de Steinhart-Hart i alarma de temperatura .: 7 passos (amb imatges)
Vídeo: 🟢Sensor de temperatura DHT11 y DHT22 en ESP32 2024, De novembre
Anonim
Image
Image
Termòmetre de cocció de sonda de temperatura ESP32 NTP amb correcció de Steinhart-Hart i alarma de temperatura
Termòmetre de cocció de sonda de temperatura ESP32 NTP amb correcció de Steinhart-Hart i alarma de temperatura

Encara estic en el camí per completar un "proper projecte", "Termòmetre de cocció de sonda de temperatura ESP32 NTP amb correcció de Steinhart-Hart i alarma de temperatura" és una instrucció que mostra com afegeixo una sonda de temperatura NTP, un brunzidor piezoelèctric i un programari al meu toc capacitiu. Entrada tàctil capacitiva ESP32 que utilitza "Taps de forat metàl·lic" per a botons "per crear un termòmetre de cocció senzill però precís amb una alarma de temperatura programable.

Els tres botons tàctils capacitius permeten configurar el nivell d'alarma de temperatura. En prémer el botó central es mostra la pantalla "Establir temperatura d'alarma", que permet als botons esquerre i dret reduir o augmentar la temperatura d'alarma respectivament. Si premeu i deixeu anar el botó esquerre es reduirà la temperatura de l'alarma un grau, mentre mantingueu premut el botó esquerre es reduirà contínuament la temperatura d'alarma fins que s'alliberi. De la mateixa manera, prement i deixant anar el botó dret augmentarà la temperatura de l'alarma un grau, mentre es manté premut el botó dret augmentarà contínuament la temperatura d'alarma fins que s'alliberi. Quan hàgiu acabat d'ajustar la temperatura de l'alarma, només cal que torneu a tocar el botó central per tornar a la pantalla de temperatura. En qualsevol moment la temperatura és igual o superior a la temperatura d'alarma, sonarà el brunzidor piezoelèctric.

I, com s’ha esmentat, s’utilitza una sonda de temperatura NTP juntament amb les equacions i coeficients de Steinhart-Hart necessaris per a lectures de temperatura precises. He inclòs una descripció excessivament detallada de l’equació de Steinhart-Hart, els coeficients de Steinhart-Hart, els divisors de tensió i l’àlgebra al pas 1 (com a bonificació, em posa a dormir cada vegada que el llegeixo, així que potser voldreu salteu el pas 1 i aneu directament al pas 2: muntatge de l'electrònica, tret que, per descomptat, necessiteu una migdiada).

Si decidiu construir aquest termòmetre de cocció, per a la personalització i la impressió 3D he inclòs els fitxers següents:

  • Fitxer Arduino "AnalogInput.ino" que conté el programari per al disseny.
  • Fitxers CAD d’Autodesk Fusion 360 per al cas que mostren com es va dissenyar el cas.
  • Els fitxers Cura 3.4.0 STL "Case, Top.stl" i "Case, Bottom.stl" preparats per a la impressió 3D.

També necessiteu familiaritzar-vos amb l’entorn Arduino, així com les habilitats i equips de soldadura, i, a més, és possible que necessiteu accés a ohmòmetres digitals precisos, termòmetres i fonts de temperatura per calibrar-los.

I, com de costum, probablement he oblidat un fitxer o dos o qui sap què més, així que si teniu alguna pregunta, no dubteu a preguntar-ho, ja que faig molts errors.

L’electrònica es va dissenyar amb llapis, paper i una calculadora solar alimentada per Radio Shack EC-2006a (núm. De cat. 65-962a).

El programari es va dissenyar amb Arduino 1.8.5.

El cas es va dissenyar amb Autodesk Fusion 360, es va tallar amb Cura 3.4.0 i es va imprimir en PLA en un Ultimaker 2+ Extended i un Ultimaker 3 Extended.

I una nota final, no rebo cap compensació de cap forma, inclosa, entre d'altres, mostres gratuïtes, per a cap dels components utilitzats en aquest disseny

Pas 1: matemàtiques, matemàtiques i molt més matemàtiques: Steinhart-Hart, coeficients i divisors de resistències

Matemàtiques, matemàtiques i molt més matemàtiques: Steinhart – Hart, coeficients i divisors de resistències
Matemàtiques, matemàtiques i molt més matemàtiques: Steinhart – Hart, coeficients i divisors de resistències

Els meus dissenys anteriors que incorporaven una sonda de temperatura NTC utilitzaven una tècnica de cerca de taula per convertir el voltatge entrant d’un divisor de resistències a temperatura. Com que l'ESP32 és capaç d'entrada analògica de dotze bits i, ja que estava dissenyant una major precisió, vaig decidir implementar l'equació "Steinhart-Hart" al codi per a la conversió de tensió a temperatura.

Publicada per primera vegada el 1968 per John S. Steinhart i Stanley R. Hart, l'equació de Steinhart-Hart defineix la relació resistència a temperatura d'una sonda de temperatura NTC de la següent manera:

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

on:

  • T és graus Kelvin.
  • A, B, C són els coeficients de Steinhart-Hart (més sobre això en un moment).
  • I el termistor és el valor de resistència del termistor de la sonda de temperatura a la temperatura actual.

Llavors, per què és necessària aquesta equació aparentment complicada de Steinhart-Hart per a un simple termòmetre digital basat en una sonda de temperatura NTC? Una sonda de temperatura NTC "ideal" proporcionaria una representació de resistència lineal de la temperatura real, per tant, una simple equació lineal que impliqués una entrada de tensió i un escalat donaria lloc a una presentació de temperatura precisa. No obstant això, les sondes de temperatura NTC no són lineals i, quan es combinen amb l'entrada analògica no lineal de pràcticament tots els processadors de placa única de baix cost com el WiFi Kit 32, produeixen entrades analògiques no lineals i, per tant, lectures de temperatura imprecises. Utilitzant una equació com Steinhart-Hart juntament amb un calibratge acurat, es poden aconseguir lectures de temperatura molt precises mitjançant sondes de temperatura NTC amb un processador de placa única de baix cost generant una aproximació molt estreta de la temperatura real.

De manera que tornem a l’equació de Steinhart-Hart. L'equació utilitza els tres coeficients A, B i C per determinar la temperatura en funció de la resistència del termistor. D’on provenen aquests tres coeficients? Alguns fabricants proporcionen aquests coeficients amb les seves sondes de temperatura NTC, i d'altres no. A més, els coeficients proporcionats pel fabricant poden ser o no per a la sonda de temperatura exacta que podeu comprar i, probablement, són coeficients representatius d’una gran mostra de totes les sondes de temperatura que fabriquen durant un període de temps. I, finalment, simplement no he pogut localitzar els coeficients de la sonda utilitzada en aquest disseny.

Sense els coeficients necessaris, vaig crear Steinhart-Hart Spreadsheet, una calculadora basada en fulls de càlcul que ajuda a generar els coeficients necessaris per a una sonda de temperatura NTC (vaig perdre l’enllaç a una calculadora web similar que vaig utilitzar fa molts anys, de manera que la vaig crear). Per determinar els coeficients d’una sonda de temperatura, començo mesurant el valor de la resistència de 33 k que s’utilitza al divisor de tensió amb un ohmímetre digital i introdueixo el valor a la zona groga del full de càlcul etiquetada com a “Resistència”. A continuació, col·loqueu la sonda de temperatura en tres entorns; la primera temperatura de l’habitació, la segona aigua gelada i la tercera aigua bullent, juntament amb un termòmetre digital precís conegut, i permeten estabilitzar la temperatura del termòmetre i el recompte d’entrada del termistor que apareix a la pantalla WiFi Kit 32 (més sobre això més endavant). Amb el recompte d’entrada de temperatura i de termistor estabilitzat, introdueixo la temperatura indicada pel termòmetre precís conegut i el recompte de termistor que apareix a la pantalla del kit WiFi 32 a la zona groga del full de càlcul amb l’etiqueta "Graus F del termòmetre" i "AD" Compteu des del kit WiFi de 32 "respectivament, per a cadascun dels tres entorns. Un cop introduïdes totes les mesures, la zona verda del full de càlcul proporciona els coeficients A, B i C requerits per l'equació de Steinhart-Hart que després es copien i enganxen al codi font.

Com s'ha esmentat anteriorment, la sortida de l'equació de Steinhart-Hart és en graus Kelvin, i aquest disseny mostra graus Fahrenheit. La conversió de graus Kelvin a graus Fahrenheit és la següent:

Primer, converteix els graus Kelvin en graus Celsius restant 273,15 (graus Kelvin) de l'equació de Steinhart-Hart:

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

I segon, converteix els graus Celsius a graus Fahrenheit de la següent manera:

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

Amb l'equació i els coeficients de Steinhart-Hart completats, es requereix una segona equació per llegir la sortida del divisor de resistències. Un model del divisor de resistències utilitzat en aquest disseny és:

vRef <--- Termistor <--- vOut <--- Resistor <--- Terra

on:

  • vRef en aquest disseny és de 3,3vdc.
  • El termistor és la sonda de temperatura NTC que s’utilitza en el divisor de resistències.
  • vOut és la sortida de tensió del divisor de resistències.
  • La resistència és la resistència de 33 k que s’utilitza en el divisor de resistències.
  • I el terra és, bé, terra.

vFora del divisor de resistències d’aquest disseny s’adjunta a l’entrada analògica A0 WiFi Kit 32 (pin 36) i la sortida de tensió del divisor de resistències es calcula de la següent manera:

vOut = vRef * Resistor / (Resistor + Termistor)

Tanmateix, tal com s’assenyala a l’equació de Steinhart-Hart, el valor de la resistència del termistor és necessari per obtenir la temperatura i no la sortida de tensió del divisor de resistències. Per tant, reorganitzar l’equació per generar el valor del termistor requereix l’ús d’una petita àlgebra de la següent manera:

Multipliqueu els dos costats per "(Resistor + Termistor)" resultant en:

vOut * (Resistor + Termistor) = vRef * Resistor

Dividiu els dos costats per "vOut", resultant en:

Resistor + Termistor = (vRef * Resistor) / vOut

Resteu "Resistor" d'ambdós costats, donant lloc a:

Termistor = (vRef * Resistor / vOut) - Resistència

I, finalment, mitjançant la propietat distributiva, simplifiqueu:

Termistor = resistència * ((vRef / vOut) - 1)

Substituint el recompte d’entrada analògica WiFi Kit 32 A0 de 0 a 4095 per vOut i substituint el valor de 4096 per vRef, l’equació del divisor de resistències que proporciona el valor de resistència del termistor requerit per l’equació de Steinhart-Hart es converteix en:

Termistor = resistència * ((4096 / Recompte d'entrades analògiques) - 1)

Així doncs, amb les matemàtiques darrere, muntem alguns components electrònics.

Pas 2: Muntatge de l'electrònica

Muntatge de l'electrònica
Muntatge de l'electrònica
Muntatge de l'electrònica
Muntatge de l'electrònica
Muntatge de l'electrònica
Muntatge de l'electrònica

Per a l'electrònica, prèviament havia muntat el demostrador tàctil capacitiu ESP32 https://www.instructables.com/id/ESP32-Capacitive … Amb aquest conjunt, es requereixen els components addicionals següents:

  • Cinc, 4 "trossos de filferro de 28awg (un vermell, un negre, un groc i dos verds).
  • Una, la sonda Maverick "ET-72 Temperature Probe" (https://www.maverickthermometers.com/product/pr-003/).
  • Un connector "de telèfon" de 2,5 mm, muntatge al tauler (https://www.mouser.com/ProductDetail/502-TR-2A).
  • Una resistència de 33k ohm 1% 1/8 watt.
  • Un, el piezo buzzer https://www.adafruit.com/product/160. Si seleccioneu un brunzidor piezoelèctric diferent, assegureu-vos que coincideixi amb les especificacions d’aquest (acció d’ona quadrada, <= sortida actual de l’ESP32).

Per muntar els components addicionals, he realitzat els passos següents:

  • Retireu i conserveu els extrems de cada cable de 4 "de longitud com es mostra.
  • Soldat un extrem del cable groc i un extrem de la resistència de 33 k ohmios al pin "Tip" del connector del telèfon.
  • Es va soldar un extrem del fil negre fins a l'extrem lliure de la resistència de 33 k ohm i es va retallar l'excés de fil de la resistència.
  • Tubs de contracció de calor aplicats sobre els cables i la resistència.
  • Soldat un dels extrems del cable vermell al pin "Sleeve" del connector del telèfon.
  • S'ha soldat l'extrem lliure del cable groc al pin 36 del kit WiFi 32.
  • S'ha soldat l'extrem lliure del cable negre al passador GND del kit WiFi 32.
  • S'ha soldat l'extrem lliure del cable vermell al pin 3V3 del kit WiFi 32.
  • Es va soldar un cable verd a un cable del brunzidor piezoelèctric.
  • Es va soldar el cable verd restant al cable restant del brunzidor piezoelèctric
  • S'ha soldat l'extrem lliure d'un dels cables piezo verds al pin 32 del kit WiFi 32.
  • S'ha soldat l'extrem lliure dels cables piezo verds restants al passador GND del kit WiFi 32.
  • Connecteu la sonda de temperatura al connector del telèfon.

Amb tot el cablejat complet, he comprovat de nou el meu treball.

Pas 3: Instal·lació del programari

Instal·lació del programari
Instal·lació del programari

El fitxer "AnalogInput.ino" és un fitxer d'entorn Arduino que conté el programari per al disseny. A més d’aquest fitxer, necessitareu la biblioteca de gràfics "U8g2lib" per a la pantalla OLED WiFi Kit32 (consulteu https://github.com/olikraus/u8g2/wiki per obtenir més informació sobre aquesta biblioteca).

Amb la biblioteca de gràfics U8g2lib instal·lada al directori Arduino i "AnalogInput.ino" carregat a l'entorn Arduino, compileu i descarregueu el programari al WiFi Kit 32. Un cop descarregat i executat, la línia superior de la pantalla OLED del kit WiFi 32 hauria de llegir "Temperatura" amb la temperatura actual que es mostra en text gran al centre de la pantalla.

Toqueu el botó central (T5) per mostrar la pantalla "Establir temperatura d'alarma". Ajusteu la temperatura de l'alarma prement el botó esquerre (T4) o el botó dret (T6) tal com es descriu a la introducció. Per provar l'alarma, ajusteu la temperatura de l'alarma perquè sigui igual o inferior a la temperatura actual i l'alarma hauria de sonar. Quan hàgiu acabat de configurar la temperatura de l'alarma, toqueu el botó central per tornar a la pantalla de temperatura.

Els valors dProbeA, dProbeB, dProbeC i dResistor del programari són els valors que he determinat durant el calibratge de la sonda que he utilitzat en aquest disseny i han de generar lectures de temperatura precises a uns quants graus. Si no, o si es desitja una precisió més alta, el següent és el calibratge.

Pas 4: calibració de la sonda de temperatura NTP

Calibració de la sonda de temperatura NTP
Calibració de la sonda de temperatura NTP

Els elements següents són necessaris per calibrar la sonda de temperatura:

  • Un ohmímetre digital.
  • Un termòmetre digital precís conegut capaç de 0 a 250 graus F.
  • Un got d’aigua gelada.
  • Una olla d’aigua bullent (tingueu molta, molta precaució!).

Comenceu per obtenir el valor real de la resistència de 33 k:

  • Traieu l’alimentació de la placa WiFi Kit 32.
  • Traieu la sonda de temperatura del connector del telèfon (pot ser que també sigui necessari dessoldar el cable negre del kit WiFi 32, segons el vostre ohmetre digital).
  • Obriu el full de càlcul de Steinhart-Hart.
  • Mesureu el valor de la resistència de 33 k ohmios amb l'ohmímetre digital i introduïu-lo al quadre "Resistor" groc del full de càlcul i a la variable "dResistor" del programari. Tot i que això pugui semblar excessiu, un resistent de 33k ohm 1% pot afectar la precisió de la visualització de la temperatura.
  • Connecteu la sonda de temperatura al connector del telèfon.

A continuació, obteniu els coeficients de Steinhart-Hart:

  • Activeu el conegut termòmetre digital precís.
  • Connecteu una font d'alimentació USB al WiFi Kit 32.
  • Simultàniament, manteniu premuts els botons esquerre (T4) i dret (T6) fins que aparegui la pantalla "Comptes del termistor".
  • Permet que tant el termòmetre digital com els termistors digitals s’estabilitzin.
  • Introduïu el recompte de temperatura i termistor a les columnes grogues "Graus F des del termòmetre" i "Comptes AD des de l'ESP32" de la fila "Habitació".
  • Introduïu el termòmetre digital i les sondes del termistor a l’aigua gelada i deixeu que les dues pantalles s’estabilitzin.
  • Introduïu el recompte de temperatura i termistor a les columnes grogues "Graus F des del termòmetre" i "Comptes AD des de l'ESP32" de la fila "Aigua freda".
  • Introduïu el termòmetre digital i les sondes del termistor a l’aigua bullent i deixeu que les dues pantalles s’estabilitzin.
  • Introduïu el recompte de temperatura i termistor a les columnes grogues "Graus F des del termòmetre" i "Comptes AD des de l'ESP32" de la fila "Aigua bullent".
  • Copieu el coeficient verd "A:" a la variable "dProbeA" del codi font.
  • Copieu el coeficient verd "B:" a la variable "dProbeB" del codi font.
  • Copieu el coeficient verd "C:" a la variable "dProbeC" del codi font.

Compileu i descarregueu el programari al WiFi Kit 32.

Pas 5: Impressió 3D de la caixa i muntatge final

Impressió 3D de la caixa i muntatge final
Impressió 3D de la caixa i muntatge final
Impressió 3D de la caixa i muntatge final
Impressió 3D de la caixa i muntatge final
Impressió 3D de la caixa i muntatge final
Impressió 3D de la caixa i muntatge final

Vaig imprimir tant "Case, Top.stl" com "Case, Bottom.stl" a una alçada de capa de 1 mm, un 50% de farciment, sense suports.

Amb la funda impresa, he muntat l’electrònica i la funda de la següent manera:

  • Vaig dessoldar els cables dels tres taps de forat, vaig prémer els taps de forat a la seva posició a "Case, Top.stl" i, a continuació, vaig tornar a soldar els cables als taps dels forats, observant acuradament l'esquerra (T4), el centre (T5) i la dreta (T6) i els respectius botons.
  • Assegureu el connector del telèfon al forat rodó de "Case, Bottom.stl" mitjançant la femella inclosa.
  • Col·loqueu el brunzidor piezoelèctric al conjunt inferior de la caixa al costat del connector del telèfon i fixeu-lo amb cinta adhesiva de doble cara.
  • Feu lliscar el kit WiFi 32 a la seva posició cap al conjunt inferior de la caixa, assegurant-vos que el port USB del kit WiFi 32 estigui alineat amb el forat oval de la caixa inferior (NO premeu la pantalla OLED per col·locar el kit WiFi 32 a la part inferior de la caixa assemblea, confieu en mi, no ho feu!).
  • Premeu el conjunt superior de la caixa sobre el conjunt inferior de la caixa i fixeu-lo al seu lloc mitjançant petits punts de cola gruixuda de cianoacrilat a les cantonades.

Pas 6: Quant al programari

Quant al programari
Quant al programari

El fitxer "AnalogInput.ino" és una modificació del fitxer "Buttons.ino" del meu anterior instructable "https://www.instructables.com/id/ESP32-Capacitive-Touch-Buttons/". He modificat les tres seccions de codi originals "setup ()", "loop ()" i "InterruptService ()" per incloure programari per a la sonda i l'alarma, i he afegit tres seccions de codi addicionals "Analog ()", "Buttons ()" i "Display ()" per netejar "loop ()" i afegir el programari necessari per a la sonda i l'alarma.

"Analog ()" conté el codi necessari per llegir el recompte de termistors en una matriu, fer una mitjana de la matriu de recomptes, utilitzar el divisor de tensió per generar el valor del termistor i, finalment, utilitzar les equacions de Steinhart-Hart i les equacions de conversió de temperatura per generar graus Fahrenheit.

"Buttons ()" conté el codi necessari per processar les pulsacions de botons i editar la temperatura de l'alarma.

"Display ()" conté el codi necessari per presentar la informació a la pantalla OLED.

Si teniu alguna pregunta o comentari sobre el codi o sobre qualsevol altre aspecte d’aquest instructiu, no dubteu a fer-ho i faré tot el possible per respondre-hi.

Espero que us hagi agradat (i que sigueu desperts)!

Pas 7: el "proper projecte"

El
El

El proper projecte, "Intelligrill® Pro", és un monitor de fumador de sonda de temperatura dual que inclou:

  • Càlculs de la sonda de temperatura de Steinhart-Hart (a diferència de les taules de "cerca") per a una major precisió, tal com s'incorpora en aquest manual.
  • Temps predictiu fins a la finalització de la sonda 1 que incorpora la major precisió derivada dels càlculs de Steinhart-Hart.
  • Una segona sonda, la sonda 2, per controlar la temperatura del fumador (limitada de 32 a 399 graus).
  • Controls d'entrada tàctils capacitius (com a l'anterior instructable).
  • Monitorització remota basada en WIFI (amb una adreça IP fixa, permet controlar el progrés del fumador des de qualsevol lloc on hi hagi una connexió a Internet disponible).
  • Rang de temperatura ampliat (de 32 a 399 graus).
  • Alarmes de finalització sonores tant al transmissor Intelligrill® com a la majoria de dispositius de monitoratge capaços de connectar-se a WiFi.
  • Visualització de la temperatura en graus F o graus C.
  • Format d’hora en HH: MM: SS o HH: MM. Visualització de la bateria en volts o en% de càrrega.
  • I sortida PID per a fumadors basats en barres.

"Intelligrill® Pro" encara està provant per convertir-se en Intelligrill® basat en HTML més precís, ple de funcions i fiable que he dissenyat. Encara està en proves, però amb els menjars que m’ajuda a preparar durant la prova, he guanyat més d’alguns quilos.

De nou, espero que us agradi!

Recomanat: