Tabla de contenido:

Termómetro de cocina con sonda de temperatura ESP32 NTP con corrección Steinhart-Hart y alarma de temperatura: 7 pasos (con imágenes)
Termómetro de cocina con sonda de temperatura ESP32 NTP con corrección Steinhart-Hart y alarma de temperatura: 7 pasos (con imágenes)

Video: Termómetro de cocina con sonda de temperatura ESP32 NTP con corrección Steinhart-Hart y alarma de temperatura: 7 pasos (con imágenes)

Video: Termómetro de cocina con sonda de temperatura ESP32 NTP con corrección Steinhart-Hart y alarma de temperatura: 7 pasos (con imágenes)
Video: COMO MEDIR la TEMPERATURA, con este pequeño SENSOR ? 2024, Mes de julio
Anonim
Image
Image
Termómetro de cocción con sonda de temperatura ESP32 NTP con corrección Steinhart-Hart y alarma de temperatura
Termómetro de cocción con sonda de temperatura ESP32 NTP con corrección Steinhart-Hart y alarma de temperatura

Todavía en camino para completar un "proyecto próximo", "Termómetro de cocción con sonda de temperatura ESP32 NTP con corrección Steinhart-Hart y alarma de temperatura" es un Instructable que muestra cómo agrego una sonda de temperatura NTP, un zumbador piezoeléctrico y un software a mi Instructable táctil capacitivo " Entrada táctil capacitiva ESP32 usando "tapones metálicos" para botones "para crear un termómetro de cocina simple pero preciso con una alarma de temperatura programable.

Los tres botones táctiles capacitivos permiten configurar el nivel de alarma de temperatura. Al presionar el botón central se muestra la pantalla "Establecer temperatura de alarma", lo que permite que los botones izquierdo y derecho reduzcan o aumenten la temperatura de la alarma respectivamente. Presionar y soltar el botón izquierdo reducirá la temperatura de la alarma en un grado, mientras que presionar y mantener presionado el botón izquierdo reducirá continuamente la temperatura de la alarma hasta que se suelte. De manera similar, presionar y soltar el botón derecho aumentará la temperatura de la alarma en un grado, mientras que presionar y mantener presionado el botón derecho aumentará continuamente la temperatura de la alarma hasta que se suelte. Cuando termine de ajustar la temperatura de la alarma, simplemente toque el botón central nuevamente para volver a la pantalla de temperatura. En cualquier momento que la temperatura sea igual o superior a la temperatura de la alarma, sonará el zumbador piezoeléctrico.

Y como se mencionó, se utiliza una sonda de temperatura NTP en el diseño junto con las ecuaciones y coeficientes de Steinhart-Hart necesarios para lecturas de temperatura precisas. He incluido una descripción demasiado detallada de la ecuación de Steinhart-Hart, los coeficientes de Steinhart-Hart, los divisores de voltaje y el álgebra en el Paso 1 (como beneficio adicional, me pone a dormir cada vez que lo leo, por lo que es posible que desee omita el Paso 1 y diríjase directamente al Paso 2: Montaje de los componentes electrónicos, a menos que, por supuesto, necesite una siesta).

Si decide construir este termómetro de cocina, para personalizarlo e imprimirlo en 3D, he incluido los siguientes archivos:

  • Archivo Arduino "AnalogInput.ino" que contiene el software para el diseño.
  • Archivos CAD de Autodesk Fusion 360 para el caso que muestran cómo se diseñó el caso.
  • Archivos STL de Cura 3.4.0 "Case, Top.stl" y "Case, Bottom.stl" listos para la impresión 3D.

También necesitará estar familiarizado con el entorno Arduino, así como habilidades y equipos de soldadura, y además puede necesitar acceso a ohmímetros digitales, termómetros y fuentes de temperatura precisos para la calibración.

Y, como de costumbre, probablemente olvidé uno o dos archivos o quién sabe qué más, así que si tiene alguna pregunta, no dude en preguntar, ya que cometo muchos errores.

Los componentes electrónicos se diseñaron con lápiz, papel y una calculadora de energía solar Radio Shack EC-2006a (Cat. No. 65-962a).

El software fue diseñado usando Arduino 1.8.5.

La carcasa se diseñó con Autodesk Fusion 360, se cortó con Cura 3.4.0 e se imprimió en PLA en una Ultimaker 2+ Extended y una Ultimaker 3 Extended.

Y una nota final, no recibo compensación de ninguna forma, incluidas, entre otras, muestras gratuitas, por cualquiera de los componentes utilizados en este diseño.

Paso 1: Matemáticas, matemáticas y más matemáticas: Steinhart-Hart, coeficientes y divisores de resistencias

Matemáticas, matemáticas y más matemáticas: Steinhart-Hart, coeficientes y divisores de resistencias
Matemáticas, matemáticas y más matemáticas: Steinhart-Hart, coeficientes y divisores de resistencias

Mis diseños anteriores que incorporaban una sonda de temperatura NTC usaban una técnica de búsqueda de tablas para convertir el voltaje entrante de un divisor de resistencia a temperatura. Dado que el ESP32 es capaz de una entrada analógica de doce bits, y dado que estaba diseñando para una mayor precisión, decidí implementar la ecuación "Steinhart-Hart" en el código para la conversión de voltaje a temperatura.

Publicada por primera vez en 1968 por John S. Steinhart y Stanley R. Hart, la ecuación de Steinhart-Hart define la relación de resistencia a la temperatura de una sonda de temperatura NTC de la siguiente manera:

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

dónde:

  • T son grados Kelvin.
  • A, B, C son los coeficientes de Steinhart-Hart (más sobre eso en un momento).
  • Y el termistor es el valor de la resistencia del termistor de la sonda de temperatura a la temperatura actual.

Entonces, ¿por qué es necesaria esta ecuación de Steinhart-Hart aparentemente complicada para un termómetro digital simple basado en una sonda de temperatura NTC? Una sonda de temperatura NTC "ideal" proporcionaría una representación de resistencia lineal de la temperatura real, por lo que una ecuación lineal simple que involucre la entrada de voltaje y el escalado daría como resultado una presentación de temperatura precisa. Sin embargo, las sondas de temperatura NTC no son lineales y, cuando se combinan con la entrada analógica no lineal de prácticamente todos los procesadores de placa única de bajo costo, como el WiFi Kit 32, producen entradas analógicas no lineales y, por lo tanto, lecturas de temperatura inexactas. Mediante el uso de una ecuación como Steinhart-Hart junto con una calibración cuidadosa, se pueden obtener lecturas de temperatura altamente precisas utilizando sondas de temperatura NTC con un procesador de placa única de bajo costo generando una aproximación muy cercana de la temperatura real.

Así que volvamos a la ecuación de Steinhart-Hart. La ecuación utiliza los tres coeficientes A, B y C para determinar la temperatura en función de la resistencia del termistor. ¿De dónde provienen estos tres coeficientes? Algunos fabricantes proporcionan estos coeficientes con sus sondas de temperatura NTC y otros no. Además, los coeficientes proporcionados por el fabricante pueden ser o no para la sonda de temperatura exacta que puede comprar, y lo más probable es que sean coeficientes representativos de una gran muestra de todas las sondas de temperatura que fabrican durante un período de tiempo. Y finalmente, simplemente no pude ubicar los coeficientes de la sonda utilizada en este diseño.

Sin los coeficientes necesarios, creé Steinhart-Hart Spreadsheet, una calculadora basada en hojas de cálculo que ayuda a generar los coeficientes necesarios para una sonda de temperatura NTC (perdí el enlace a una calculadora web similar que usé hace muchos años, así que creé esta). Para determinar los coeficientes de una sonda de temperatura, empiezo midiendo el valor de la resistencia de 33k utilizada en el divisor de voltaje con un ohmímetro digital, e ingreso el valor en el área amarilla de la hoja de cálculo etiquetada como "Resistencia". A continuación, coloco la sonda de temperatura en tres ambientes; la primera temperatura ambiente, la segunda agua helada y la tercera agua hirviendo, junto con un termómetro digital de precisión conocida, y deje tiempo para que la temperatura en el termómetro y el recuento de entrada del termistor que aparecen en la pantalla del Kit WiFi 32 (más sobre esto más adelante) se estabilicen. Con la temperatura y el recuento de entrada del termistor estabilizados, ingreso la temperatura indicada por el termómetro de precisión conocida y el recuento del termistor que aparece en la pantalla del kit WiFi 32 en el área amarilla de la hoja de cálculo etiquetada "Grados F del termómetro" y "AD Cuente desde el Kit WiFi de 32 "respectivamente, para cada uno de los tres entornos. Una vez que se ingresan todas las mediciones, el área verde de la hoja de cálculo proporciona los coeficientes A, B y C requeridos por la ecuación de Steinhart-Hart que luego simplemente se copian y pegan en el código fuente.

Como se mencionó anteriormente, la salida de la ecuación de Steinhart-Hart está en grados Kelvin, y este diseño muestra grados Fahrenheit. La conversión de grados Kelvin a grados Fahrenheit es la siguiente:

Primero, convierta grados Kelvin a grados Celsius restando 273.15 (grados Kelvin) de la ecuación de Steinhart-Hart:

Grados C = (A + (B * (log (Termistor))) + (C * log (Termistor) * log (Termistor) * log (Termistor))) - 273.15

Y segundo, convierta grados Celsius a grados Fahrenheit de la siguiente manera:

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

Con la ecuación de Steinhart-Hart y los coeficientes completos, se requiere una segunda ecuación para leer la salida del divisor de resistencia. Un modelo del divisor de resistencia utilizado en este diseño es:

vRef <--- Termistor <--- vOut <--- Resistencia <--- Tierra

dónde:

  • vRef en este diseño es 3.3vdc.
  • El termistor es la sonda de temperatura NTC utilizada en el divisor de resistencia.
  • vOut es la salida de voltaje del divisor de resistencia.
  • La resistencia es la resistencia de 33 k que se utiliza en el divisor de resistencia.
  • Y el suelo es, bueno, suelo.

v La salida del divisor de resistencia en este diseño se conecta a la entrada analógica A0 del kit WiFi 32 (pin 36), y la salida de voltaje del divisor de resistencia se calcula de la siguiente manera:

vOut = vRef * Resistencia / (Resistencia + Termistor)

Sin embargo, como se indica en la ecuación de Steinhart-Hart, se requiere el valor de resistencia del termistor para obtener la temperatura, no la salida de voltaje del divisor de resistencia. Entonces, reorganizar la ecuación para generar el valor del termistor requiere el uso de un poco de álgebra de la siguiente manera:

Multiplica ambos lados por "(Resistencia + Termistor)", lo que da como resultado:

vOut * (Resistencia + Termistor) = vRef * Resistencia

Dividir ambos lados por "vOut" resultando en:

Resistencia + Termistor = (vRef * Resistencia) / vOut

Resta "Resistencia" de ambos lados, lo que da como resultado:

Termistor = (vRef * Resistencia / vOut) - Resistencia

Y finalmente, usando la propiedad distributiva, simplifique:

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

Sustituyendo el recuento de entrada analógica WiFi Kit 32 A0 de 0 a 4095 por vOut, y sustituyendo el valor de 4096 por vRef, la ecuación del divisor de resistencia que proporciona el valor de resistencia del termistor requerido por la ecuación de Steinhart-Hart se convierte en:

Termistor = Resistencia * ((4096 / Contador de entrada analógica) - 1)

Entonces, con las matemáticas detrás de nosotros, ensamblemos algunos componentes electrónicos.

Paso 2: Montaje de la electrónica

Montaje de la electrónica
Montaje de la electrónica
Montaje de la electrónica
Montaje de la electrónica
Montaje de la electrónica
Montaje de la electrónica

Para la electrónica, había ensamblado previamente el demostrador táctil capacitivo ESP32 https://www.instructables.com/id/ESP32-Capacitive… Con ese ensamblaje, se requieren los siguientes componentes adicionales:

  • Cinco piezas de 4 "de alambre de 28 awg (una roja, una negra, una amarilla y dos verdes).
  • Una, sonda Maverick "ET-72 Temperature Probe" (https://www.maverickthermometers.com/product/pr-003/).
  • Un conector "telefónico" de 2,5 mm, montaje en panel (https://www.mouser.com/ProductDetail/502-TR-2A).
  • Una resistencia de 33k ohmios 1% 1/8 vatios.
  • Uno, zumbador piezoeléctrico https://www.adafruit.com/product/160. Si selecciona un zumbador piezoeléctrico diferente, asegúrese de que coincida con las especificaciones de este (accionado por onda cuadrada, <= salida actual del ESP32).

Para ensamblar los componentes adicionales, realicé los siguientes pasos:

  • Pele y estañe los extremos de cada cable de 4 "de largo como se muestra.
  • Soldado un extremo del cable amarillo y un extremo de la resistencia de 33 k ohmios al pin "Tip" del conector del teléfono.
  • Soldó un extremo del cable negro al extremo libre de la resistencia de 33 k ohmios y cortó el cable sobrante de la resistencia.
  • Tubo termorretráctil aplicado sobre los cables y la resistencia.
  • Soldado un extremo del cable rojo al pin "Sleeve" en el conector del teléfono.
  • Soldó el extremo libre del cable amarillo al pin 36 del Kit WiFi 32.
  • Soldado el extremo libre del cable negro al pin GND en el Kit WiFi 32.
  • Soldó el extremo libre del cable rojo al pin 3V3 del Kit WiFi 32.
  • Soldado un cable verde a un cable del zumbador piezoeléctrico.
  • Soldó el cable verde restante al cable restante del zumbador piezoeléctrico
  • Soldado el extremo libre de uno de los cables piezoeléctricos verdes al pin 32 en el Kit WiFi 32.
  • Soldado el extremo libre de los cables piezoeléctricos verdes restantes al pin GND en el Kit WiFi 32.
  • Enchufó la sonda de temperatura en el conector del teléfono.

Con todo el cableado completo, verifiqué mi trabajo dos veces.

Paso 3: instalación del software

Instalación del software
Instalación del software

El archivo "AnalogInput.ino" es un archivo de entorno Arduino que contiene el software para el diseño. Además de este archivo, necesitará la biblioteca de gráficos "U8g2lib" para la pantalla OLED WiFi Kit32 (consulte https://github.com/olikraus/u8g2/wiki para obtener más información sobre esta biblioteca).

Con la biblioteca de gráficos U8g2lib instalada en su directorio Arduino y "AnalogInput.ino" cargado en el entorno Arduino, compile y descargue el software en el Kit WiFi 32. Una vez descargado y en ejecución, la línea superior de la pantalla OLED en el Kit WiFi 32 debe leer "Temperatura" con la temperatura actual mostrada en texto grande en el centro de la pantalla.

Toque el botón central (T5) para mostrar la pantalla "Establecer temperatura de alarma". Ajuste la temperatura de la alarma presionando el botón izquierdo (T4) o el botón derecho (T6) como se describe en la introducción. Para probar la alarma, ajuste la temperatura de la alarma para que sea igual o inferior a la temperatura actual y la alarma debería sonar. Cuando termine de configurar la temperatura de la alarma, toque el botón central para volver a la pantalla de temperatura.

Los valores dProbeA, dProbeB, dProbeC y dResistor en el software son los valores que determiné durante la calibración de la sonda que utilicé en este diseño y deberían generar lecturas de temperatura con una precisión de unos pocos grados. Si no es así, o si se desea una mayor precisión, el siguiente paso es la calibración.

Paso 4: Calibración de la sonda de temperatura NTP

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

Se requieren los siguientes elementos para calibrar la sonda de temperatura:

  • Un ohmímetro digital.
  • Un termómetro digital de precisión conocido capaz de 0 a 250 grados F.
  • Un vaso de agua helada.
  • Una olla de agua hirviendo (¡ten mucho, mucho cuidado!).

Comience obteniendo el valor real de la resistencia de 33k:

  • Desconecte la alimentación de la placa WiFi Kit 32.
  • Retire la sonda de temperatura del conector del teléfono (también puede ser necesario desoldar el cable negro del Kit WiFi 32, dependiendo de su ohmímetro digital).
  • Abra la hoja de cálculo Steinhart-Hart.
  • Mida el valor de la resistencia de 33k ohmios usando el ohmímetro digital e introdúzcalo en el cuadro amarillo "Resistor" en la hoja de cálculo y en la variable "dResistor" en el software. Si bien esto puede parecer excesivo, una resistencia de 33 k ohmios al 1% puede afectar la precisión de la visualización de la temperatura.
  • Enchufe la sonda de temperatura en el conector telefónico.

A continuación, obtenga los coeficientes de Steinhart-Hart:

  • Encienda el termómetro digital de precisión conocida.
  • Conecte una fuente de alimentación USB al kit WiFi 32.
  • Presione y mantenga presionados simultáneamente los botones izquierdo (T4) y derecho (T6) hasta que aparezca la pantalla "Termistor Counts".
  • Permita que tanto el termómetro digital como el termistor se estabilicen.
  • Ingrese los conteos de temperatura y termistor en las columnas amarillas "Grados F del termómetro" y "Conteos AD de ESP32" en la fila "Habitación".
  • Inserte tanto el termómetro digital como las sondas del termistor en agua helada y permita que ambas pantallas se estabilicen.
  • Ingrese los conteos de temperatura y termistor en las columnas amarillas "Grados F del termómetro" y "Conteos AD de ESP32" en la fila "Agua fría".
  • Inserte tanto el termómetro digital como las sondas del termistor en agua hirviendo y deje que ambas pantallas se estabilicen.
  • Ingrese los conteos de temperatura y termistor en las columnas amarillas "Grados F del termómetro" y "Conteos AD de ESP32" en la fila "Agua hirviendo".
  • Copie el coeficiente verde "A:" en la variable "dProbeA" en el código fuente.
  • Copie el coeficiente verde "B:" en la variable "dProbeB" en el código fuente.
  • Copie el coeficiente verde "C:" en la variable "dProbeC" en el código fuente.

Compile y descargue el software en el Kit WiFi 32.

Paso 5: Impresión 3D de la carcasa y ensamblaje final

Impresión 3D de la carcasa y montaje final
Impresión 3D de la carcasa y montaje final
Impresión 3D de la carcasa y montaje final
Impresión 3D de la carcasa y montaje final
Impresión 3D de la carcasa y montaje final
Impresión 3D de la carcasa y montaje final

Imprimí "Case, Top.stl" y "Case, Bottom.stl" a una altura de capa de.1 mm, 50% de relleno, sin soportes.

Con la caja impresa, armé la electrónica y la caja de la siguiente manera:

  • Desolé los cables de los tapones de tres orificios, presioné los tapones de los orificios en su posición en "Case, Top.stl", luego volví a soldar los cables a los tapones de los orificios, observando cuidadosamente la izquierda (T4), el centro (T5) y la derecha. (T6) cables y los botones respectivos.
  • Asegure el conector del teléfono al orificio redondo en "Case, Bottom.stl" usando la tuerca incluida.
  • Colocó el zumbador piezoeléctrico en el conjunto de la parte inferior de la caja junto al conector del teléfono y asegúrelo en su lugar con cinta adhesiva de doble cara.
  • Deslice el Kit WiFi 32 en su posición en el conjunto de la parte inferior de la carcasa, asegurándose de que el puerto USB del Kit WiFi 32 esté alineado con el orificio ovalado en la parte inferior de la carcasa (NO presione en la pantalla OLED para colocar el Kit WiFi 32 en la parte inferior de la carcasa montaje, confía en mí en este caso, ¡simplemente no lo hagas!).
  • Presione el conjunto de la parte superior de la caja sobre el conjunto de la parte inferior de la caja y asegúrelo en su lugar con pequeños puntos de pegamento de cianoacrilato espeso en las esquinas.

Paso 6: Acerca del software

Acerca del software
Acerca del software

El archivo "AnalogInput.ino" es una modificación del archivo "Buttons.ino" de mi Instructable anterior "https://www.instructables.com/id/ESP32-Capacitive-Touch-Buttons/". Modifiqué las tres secciones de código originales "setup ()", "loop ()" e "InterruptService ()" para incluir software para la sonda y la alarma, y agregué tres secciones de código adicionales "Analog ()", "Botones ()" y "Pantalla ()" para limpiar el "lazo ()" y agregar el software necesario para la sonda y la alarma.

"Analog ()" contiene el código necesario para leer el conteo del termistor en una matriz, promediar la matriz de conteos, usar el divisor de voltaje para generar el valor del termistor y finalmente usar las ecuaciones de Steinhart-Hart y las ecuaciones de conversión de temperatura para generar grados Fahrenheit.

"Botones ()" contiene el código necesario para procesar las pulsaciones de botones y editar la temperatura de la alarma.

"Display ()" contiene el código necesario para presentar la información en la pantalla OLED.

Si tiene alguna pregunta o comentario sobre el código, o cualquier otro aspecto de este Instructable, no dude en preguntar y haré todo lo posible para responderlos.

¡Espero que lo hayas disfrutado (y aún estés despierto)!

Paso 7: el "próximo proyecto"

los
los

El próximo proyecto, "Intelligrill® Pro", es un monitor fumador con sonda de temperatura dual que incluye:

  • Cálculos de la sonda de temperatura Steinhart-Hart (a diferencia de las tablas de "consulta") para una mayor precisión, como se incorpora en este Instructable.
  • Tiempo predictivo hasta la finalización en la sonda 1 que incorpora la mayor precisión derivada de los cálculos de Steinhart-Hart.
  • Una segunda sonda, sonda 2, para monitorear la temperatura del fumador (limitada a 32 a 399 grados).
  • Controles de entrada táctil capacitiva (como en el Instructable anterior).
  • Monitoreo remoto basado en WIFI (con una dirección IP fija, permite monitorear el progreso del fumador desde cualquier lugar donde haya una conexión a Internet disponible).
  • Rango de temperatura extendido (32 a 399 grados).
  • Alarmas audibles de finalización tanto dentro del transmisor Intelligrill® como en la mayoría de los dispositivos de monitoreo con capacidad WiFi.
  • Visualización de temperatura en grados F o grados C.
  • Formato de hora en HH: MM: SS o HH: MM. Visualización de la batería en voltios o% de carga.
  • Y salida PID para fumadores con sinfín.

"Intelligrill® Pro" todavía está probando para convertirse en el Intelligrill® basado en HTML más preciso, lleno de funciones y confiable que he diseñado. Todavía está bajo prueba, pero con las comidas que está ayudando a preparar durante la prueba, he ganado más de unas pocas libras.

Una vez más, ¡espero que lo disfruten!

Recomendado: