Table des matières:

Thermomètre de cuisson à sonde de température ESP32 NTP avec correction Steinhart-Hart et alarme de température.: 7 étapes (avec photos)
Thermomètre de cuisson à sonde de température ESP32 NTP avec correction Steinhart-Hart et alarme de température.: 7 étapes (avec photos)

Vidéo: Thermomètre de cuisson à sonde de température ESP32 NTP avec correction Steinhart-Hart et alarme de température.: 7 étapes (avec photos)

Vidéo: Thermomètre de cuisson à sonde de température ESP32 NTP avec correction Steinhart-Hart et alarme de température.: 7 étapes (avec photos)
Vidéo: Build a Temperature Monitoring System with DS18B20 Sensor and TM1637 Display #shorts 2024, Juillet
Anonim
Image
Image
Thermomètre de cuisson à sonde de température ESP32 NTP avec correction Steinhart-Hart et alarme de température
Thermomètre de cuisson à sonde de température ESP32 NTP avec correction Steinhart-Hart et alarme de température

Toujours en route pour terminer un "projet à venir", "ESP32 NTP Temperature Probe Cooking Thermometer With Steinhart-Hart Correction and Temperature Alarm" est un Instructable montrant comment j'ajoute une sonde de température NTP, un buzzer piézo et un logiciel à ma touche capacitive Instructable " Entrée tactile capacitive ESP32 utilisant des "bouchons à trous métalliques" pour boutons" pour créer un thermomètre de cuisson simple mais précis avec une alarme de température programmable.

Les trois boutons tactiles capacitifs permettent de régler le niveau d'alarme de température. Appuyez sur le bouton central pour afficher l'affichage "Set Alarm Temperature", permettant aux boutons gauche et droit de réduire ou d'augmenter respectivement la température de l'alarme. Appuyer et relâcher le bouton gauche réduira la température de l'alarme d'un degré, tandis qu'appuyer et maintenir le bouton gauche réduira continuellement la température de l'alarme jusqu'à ce qu'il soit relâché. De même, appuyer et relâcher le bouton droit augmentera la température de l'alarme d'un degré, tandis qu'appuyer et maintenir le bouton droit augmentera continuellement la température de l'alarme jusqu'à ce qu'il soit relâché. Lorsque vous avez terminé de régler la température de l'alarme, appuyez simplement à nouveau sur le bouton central pour revenir à l'affichage de la température. À tout moment, la température est égale ou supérieure à la température d'alarme, le buzzer piézo retentira.

Et comme mentionné, une sonde de température NTP est utilisée dans la conception avec les équations et les coefficients de Steinhart-Hart nécessaires pour des lectures de température précises. J'ai inclus une description trop verbeuse de l'équation de Steinhart-Hart, des coefficients de Steinhart-Hart, des diviseurs de tension et de l'algèbre à l'étape 1 (en prime, cela m'endort à chaque fois que je la lis, alors vous voudrez peut-être sautez l'étape 1 et passez directement à l'étape 2: Assemblage de l'électronique, à moins bien sûr que vous ayez besoin d'une sieste).

Si vous décidez de construire ce thermomètre de cuisson, pour la personnalisation et l'impression 3D, j'ai inclus les fichiers suivants:

  • Fichier Arduino "AnalogInput.ino" contenant le logiciel pour la conception.
  • Fichiers cad Autodesk Fusion 360 pour le boîtier montrant comment le boîtier a été conçu.
  • Fichiers Cura 3.4.0 STL "Case, Top.stl" et "Case, Bottom.stl" prêts pour l'impression 3D.

Vous aurez également besoin de vous familiariser avec l'environnement Arduino ainsi que de compétences et d'équipements en soudage, et en plus, vous aurez peut-être besoin d'accéder à des ohmmètres numériques, des thermomètres et des sources de température précis pour l'étalonnage.

Et comme d'habitude, j'ai probablement oublié un fichier ou deux ou qui sait quoi d'autre, donc si vous avez des questions, n'hésitez pas à demander car je fais beaucoup d'erreurs.

L'électronique a été conçue à l'aide d'un crayon, de papier et d'une calculatrice solaire Radio Shack EC-2006a (Cat. No. 65-962a).

Le logiciel a été conçu en utilisant Arduino 1.8.5.

Le boîtier a été conçu à l'aide d'Autodesk Fusion 360, découpé à l'aide de Cura 3.4.0 et imprimé en PLA sur un Ultimaker 2+ Extended et un Ultimaker 3 Extended.

Et une dernière note, je ne reçois aucune compensation sous quelque forme que ce soit, y compris, mais sans s'y limiter, des échantillons gratuits, pour aucun des composants utilisés dans cette conception

Étape 1: Mathématiques, mathématiques et plus Mathématiques: Steinhart–Hart, coefficients et diviseurs de résistance

Mathématiques, mathématiques et plus de mathématiques: Steinhart-Hart, coefficients et diviseurs de résistance
Mathématiques, mathématiques et plus de mathématiques: Steinhart-Hart, coefficients et diviseurs de résistance

Mes conceptions antérieures incorporant une sonde de température NTC utilisaient une technique de recherche de table pour convertir la tension entrante d'un diviseur de résistance en température. Étant donné que l'ESP32 est capable d'une entrée analogique à douze bits et que je concevais pour une précision accrue, j'ai décidé d'implémenter l'équation "Steinhart-Hart" dans le code pour la conversion tension-température.

Publiée pour la première fois en 1968 par John S. Steinhart et Stanley R. Hart, l'équation de Steinhart-Hart définit la relation de résistance à la température d'une sonde de température NTC comme suit:

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

où:

  • T est en degrés Kelvin.
  • A, B, C sont les coefficients de Steinhart-Hart (plus de détails dans un instant).
  • Et la thermistance est la valeur de résistance de la thermistance de la sonde de température à la température actuelle.

Alors pourquoi cette équation de Steinhart-Hart apparemment compliquée est-elle nécessaire pour un simple thermomètre numérique basé sur une sonde de température NTC ? Une sonde de température NTC "idéale" fournirait une représentation de résistance linéaire de la température réelle, ainsi une simple équation linéaire impliquant une entrée de tension et une mise à l'échelle donnerait une présentation précise de la température. Cependant, les sondes de température NTC ne sont pas linéaires et, lorsqu'elles sont combinées avec l'entrée analogique non linéaire de pratiquement tous les processeurs monocarte à faible coût tels que le WiFi Kit 32, produisent des entrées analogiques non linéaires et donc des lectures de température inexactes. En utilisant une équation telle que Steinhart-Hart avec un étalonnage minutieux, des lectures de température très précises à l'aide de sondes de température NTC avec un processeur monocarte à faible coût peuvent être obtenues en générant une approximation très proche de la température réelle.

Revenons donc à l'équation de Steinhart-Hart. L'équation utilise les trois coefficients A, B et C pour déterminer la température en fonction de la résistance de la thermistance. D'où viennent ces trois coefficients ? Certains fabricants fournissent ces coefficients avec leurs sondes de température NTC, d'autres non. De plus, les coefficients fournis par le fabricant peuvent ou non être pour la sonde de température exacte que vous pouvez acheter, et sont très probablement des coefficients représentatifs d'un large échantillon de toutes les sondes de température qu'ils fabriquent sur une période de temps. Et enfin, je n'ai tout simplement pas pu localiser les coefficients de la sonde utilisée dans cette conception.

Sans les coefficients nécessaires, j'ai créé Steinhart-Hart Spreadsheet, une calculatrice basée sur une feuille de calcul qui aide à générer les coefficients nécessaires pour une sonde de température NTC (j'ai perdu le lien vers une calculatrice Web similaire que j'utilisais il y a de nombreuses années, j'ai donc créé celle-ci). Pour déterminer les coefficients d'une sonde de température, je commence par mesurer la valeur de la résistance de 33k utilisée dans le diviseur de tension avec un ohmmètre numérique, et j'entre la valeur dans la zone jaune de la feuille de calcul intitulée "Résistance". Ensuite, je place la sonde de température dans trois environnements; première température ambiante, deuxième eau glacée et troisième eau bouillante, ainsi qu'un thermomètre numérique précis et connu, et laissez le temps à la température sur le thermomètre et au nombre d'entrées de la thermistance apparaissant sur l'écran du kit WiFi 32 (plus de détails plus loin) de se stabiliser. Une fois la température et le nombre d'entrées de thermistance stabilisés, j'entre la température indiquée par le thermomètre précis connu et le nombre de thermistance apparaissant sur l'écran du kit WiFi 32 dans la zone jaune de la feuille de calcul intitulée « Degrés F du thermomètre » et « AD Comptez à partir du Kit WiFi 32" respectivement, pour chacun des trois environnements. Une fois toutes les mesures saisies, la zone verte de la feuille de calcul fournit les coefficients A, B et C requis par l'équation de Steinhart-Hart qui sont ensuite simplement copiés et collés dans le code source.

Comme mentionné précédemment, la sortie de l'équation de Steinhart-Hart est en degrés Kelvin, et cette conception affiche des degrés Fahrenheit. La conversion des degrés Kelvin en degrés Fahrenheit est la suivante:

Tout d'abord, convertissez les degrés Kelvin en degrés Celsius en soustrayant 273,15 (degrés Kelvin) de l'équation de Steinhart-Hart:

Degrés C = (A + (B * (log(Thermistance))) + (C * log(Thermistance) * log(Thermistance) * log(Thermistance))) - 273,15

Et deuxièmement, convertissez les degrés Celsius en degrés Fahrenheit comme suit:

Degrés F = ((Degrés C * 9) / 5) + 32

Une fois l'équation et les coefficients de Steinhart-Hart terminés, une deuxième équation est requise pour lire la sortie du diviseur de résistance. Un modèle du diviseur de résistance utilisé dans cette conception est:

vRef<---Thermistance<---vOut<---Résistance<---Masse

où:

  • vRef dans cette conception est 3.3vdc.
  • La thermistance est la sonde de température NTC utilisée dans le diviseur de résistance.
  • vOut est la tension de sortie du diviseur de résistance.
  • La résistance est la résistance de 33k utilisée dans le diviseur de résistance.
  • Et le sol est, eh bien, le sol.

vLe diviseur de résistance de cette conception est connecté à l'entrée analogique A0 du kit WiFi 32 (broche 36), et la tension de sortie du diviseur de résistance est calculée comme suit:

vOut = vRef * Résistance / (Résistance + Thermistance)

Cependant, comme indiqué dans l'équation de Steinhart-Hart, la valeur de résistance de la thermistance est requise pour obtenir la température, et non la tension de sortie du diviseur de résistance. Donc, réorganiser l'équation pour sortir la valeur de la thermistance nécessite l'utilisation d'un peu d'algèbre comme suit:

Multipliez les deux côtés par "(Résistance + Thermistance)" pour obtenir:

vOut * (Résistance + Thermistance) = vRef * Résistance

Divisez les deux côtés par "vOut" résultant en:

Résistance + Thermistance = (vRef * Résistance) / vOut

Soustrayez « Résistance » des deux côtés, ce qui donne:

Thermistance = (vRef * Résistance / vOut) - Résistance

Et enfin, en utilisant la propriété distributive, simplifiez:

Thermistance = Résistance * ((vRef / vOut) - 1)

En remplaçant le nombre d'entrées analogiques du kit WiFi 32 A0 de 0 à 4095 pour vOut et en substituant la valeur de 4096 à vRef, l'équation du diviseur de résistance fournissant la valeur de résistance de la thermistance requise par l'équation de Steinhart-Hart devient:

Thermistance = Résistance * ((4096 / Nombre d'entrées analogiques) - 1)

Donc, avec les maths derrière nous, assemblons quelques appareils électroniques.

Étape 2: Assemblage de l'électronique

Assemblage de l'électronique
Assemblage de l'électronique
Assemblage de l'électronique
Assemblage de l'électronique
Assemblage de l'électronique
Assemblage de l'électronique

Pour l'électronique, j'avais préalablement assemblé le démonstrateur ESP32 Capacitive Touch https://www.instructables.com/id/ESP32-Capacitive… Avec cet assemblage, les composants supplémentaires suivants sont nécessaires:

  • Cinq morceaux de 4" de fil 28awg (un rouge, un noir, un jaune et deux verts).
  • L'une, la sonde Maverick "ET-72 Temperature Probe" (https://www.maverickthermometers.com/product/pr-003/).
  • Un connecteur "téléphone" de 2,5 mm, montage sur panneau (https://www.mouser.com/ProductDetail/502-TR-2A).
  • Une résistance 33k ohm 1% 1/8 watt.
  • Un, buzzer piézo https://www.adafruit.com/product/160. Si vous sélectionnez un autre buzzer piézo, assurez-vous qu'il correspond aux spécifications de celui-ci (conduite par onde carrée, <= sortie courant de l'ESP32).

Pour assembler les composants supplémentaires, j'ai effectué les étapes suivantes:

  • Dénudez et étamez les extrémités de chaque longueur de fil de 4" comme indiqué.
  • Soudé une extrémité du fil jaune et une extrémité de la résistance de 33k ohms à la broche "Tip" du connecteur téléphonique.
  • Soudé une extrémité du fil noir à l'extrémité libre de la résistance de 33k ohms et coupé l'excès de fil de résistance.
  • Gaine thermorétractable appliquée sur les fils et la résistance.
  • Soudé une extrémité du fil rouge à la broche "Sleeve" sur le connecteur du téléphone.
  • Soudé l'extrémité libre du fil jaune à la broche 36 du WiFi Kit 32.
  • Soudé l'extrémité libre du fil noir à la broche GND sur le WiFi Kit 32.
  • Soudé l'extrémité libre du fil rouge à la broche 3V3 sur le WiFi Kit 32.
  • Soudé un fil vert à un fil du buzzer piézo.
  • Soudé le fil vert restant au fil restant du buzzer piézo
  • Soudé l'extrémité libre de l'un des fils piézo verts à la broche 32 du kit WiFi 32.
  • Soudé l'extrémité libre des fils piézo verts restants à la broche GND sur le WiFi Kit 32.
  • Branché la sonde de température dans le connecteur du téléphone.

Avec tout le câblage terminé, j'ai revérifié mon travail.

Étape 3: Installation du logiciel

Installation du logiciel
Installation du logiciel

Le fichier "AnalogInput.ino" est un fichier d'environnement Arduino contenant le logiciel pour la conception. En plus de ce fichier, vous aurez besoin de la bibliothèque graphique "U8g2lib" pour l'écran OLED WiFi Kit32 (voir https://github.com/olikraus/u8g2/wiki pour plus d'informations sur cette bibliothèque).

Avec la bibliothèque graphique U8g2lib installée dans votre répertoire Arduino et "AnalogInput.ino" chargé dans l'environnement Arduino, compilez et téléchargez le logiciel dans le WiFi Kit 32. Une fois téléchargé et exécuté, la ligne supérieure de l'écran OLED sur le WiFi Kit 32 doit lire "Température" avec la température actuelle affichée en gros texte au centre de l'écran.

Appuyez sur le bouton central (T5) pour afficher l'affichage « Régler la température d'alarme ». Réglez la température de l'alarme en appuyant sur le bouton gauche (T4) ou le bouton droit (T6) comme décrit dans l'introduction. Pour tester l'alarme, réglez la température de l'alarme pour qu'elle soit égale ou inférieure à la température actuelle et l'alarme devrait sonner. Lorsque vous avez terminé de régler la température de l'alarme, appuyez sur le bouton central pour revenir à l'affichage de la température.

Les valeurs dProbeA, dProbeB, dProbeC et dResistor dans le logiciel sont les valeurs que j'ai déterminées lors de l'étalonnage de la sonde que j'ai utilisée dans cette conception et devraient générer des lectures de température précises à quelques degrés près. Si ce n'est pas le cas, ou si une plus grande précision est souhaitée, alors l'étalonnage est le suivant.

Étape 4: Étalonnage de la sonde de température NTP

Étalonnage de la sonde de température NTP
Étalonnage de la sonde de température NTP

Les éléments suivants sont nécessaires pour étalonner la sonde de température:

  • Un ohmmètre numérique.
  • Un thermomètre numérique précis connu capable de 0 à 250 degrés F.
  • Un verre d'eau glacée.
  • Une casserole d'eau bouillante (soyez très, très prudent !).

Commencez par obtenir la valeur réelle de la résistance 33k:

  • Coupez l'alimentation de la carte WiFi Kit 32.
  • Retirez la sonde de température du connecteur téléphonique (il peut être également nécessaire de dessouder le fil noir du Kit WiFi 32, selon votre ohmmètre numérique).
  • Ouvrez la feuille de calcul Steinhart-Hart.
  • Mesurez la valeur de la résistance de 33k ohms à l'aide de l'ohmmètre numérique et entrez-la dans la case jaune "Résistance" de la feuille de calcul et dans la variable "dResistor" du logiciel. Bien que cela puisse sembler excessif, une résistance de 33k ohms à 1% peut en effet affecter la précision de l'affichage de la température.
  • Branchez la sonde de température dans le connecteur du téléphone.

Obtenez ensuite les coefficients de Steinhart-Hart:

  • Allumez le thermomètre numérique précis connu.
  • Branchez une source d'alimentation USB dans le WiFi Kit 32.
  • Appuyez simultanément sur les boutons gauche (T4) et droit (T6) et maintenez-les enfoncés jusqu'à ce que l'affichage « Thermistor Counts » apparaisse.
  • Laissez les deux affichages du thermomètre numérique et de la thermistance se stabiliser.
  • Entrez la température et le nombre de thermistance dans les colonnes jaunes "Degrés F du thermomètre" et "Comptes AD de ESP32" sur la ligne "Pièce".
  • Insérez le thermomètre numérique et les sondes de thermistance dans de l'eau glacée et laissez les deux affichages se stabiliser.
  • Entrez la température et le nombre de thermistance dans les colonnes jaunes « Degrés F du thermomètre » et « Décomptes AD de l'ESP32 » sur la ligne « Eau froide ».
  • Insérez à la fois le thermomètre numérique et les sondes de thermistance dans de l'eau bouillante et laissez les deux affichages se stabiliser.
  • Entrez la température et le nombre de thermistance dans les colonnes jaunes « Degrés F du thermomètre » et « Comptes AD de ESP32 » sur la ligne « Eau bouillante ».
  • Copiez le coefficient vert "A:" dans la variable "dProbeA" dans le code source.
  • Copiez le coefficient vert "B:" dans la variable "dProbeB" dans le code source.
  • Copiez le coefficient vert "C:" dans la variable "dProbeC" dans le code source.

Compilez et téléchargez le logiciel dans le WiFi Kit 32.

Étape 5: Impression 3D du boîtier et assemblage final

Impression 3D du boîtier et assemblage final
Impression 3D du boîtier et assemblage final
Impression 3D du boîtier et assemblage final
Impression 3D du boîtier et assemblage final
Impression 3D du boîtier et assemblage final
Impression 3D du boîtier et assemblage final

J'ai imprimé à la fois "Case, Top.stl" et "Case, Bottom.stl" à une hauteur de couche de 0,1 mm, 50 % de remplissage, sans aucun support.

Une fois le boîtier imprimé, j'ai assemblé l'électronique et le boîtier comme suit:

  • J'ai dessoudé les fils des bouchons à trois trous, enfoncé les bouchons en position dans "Case, Top.stl", puis ressoudé les fils aux bouchons de trous, en notant soigneusement la gauche (T4), le centre (T5) et la droite (T6) et les boutons correspondants.
  • Fixez le connecteur du téléphone au trou rond dans "Case, Bottom.stl" à l'aide de l'écrou inclus.
  • Positionné le buzzer piézo dans l'assemblage inférieur du boîtier à côté du connecteur du téléphone et fixé en place avec du ruban adhésif double face.
  • Faites glisser le kit WiFi 32 en position dans l'assemblage du bas du boîtier, en vous assurant que le port USB du kit WiFi 32 est aligné avec le trou ovale dans le bas du boîtier (n'appuyez PAS sur l'écran OLED pour positionner le kit WiFi 32 dans le bas du boîtier assemblée, croyez-moi sur ce coup-là, ne le faites pas !).
  • Pressé l'assemblage supérieur du boîtier sur l'assemblage inférieur du boîtier et fixé en place à l'aide de petits points de colle cyanoacrylate épaisse sur les coins.

Étape 6: À propos du logiciel

À propos du logiciel
À propos du logiciel

Le fichier "AnalogInput.ino" est une modification du fichier "Buttons.ino" de mon précédent Instructable "https://www.instructables.com/id/ESP32-Capacitive-Touch-Buttons/". J'ai modifié les trois sections de code d'origine "setup()", "loop()" et "InterruptService()" pour inclure un logiciel pour la sonde et l'alarme, et j'ai ajouté trois sections de code supplémentaires "Analog()", "Buttons()" et "Display()" pour nettoyer "loop()" et ajouter le logiciel nécessaire pour la sonde et l'alarme.

"Analog()" contient le code nécessaire pour lire le nombre de thermistance dans un tableau, faire la moyenne du tableau de comptes, utiliser le diviseur de tension pour générer la valeur de la thermistance et enfin utiliser les équations de Steinhart-Hart et les équations de conversion de température pour générer des degrés Fahrenheit.

"Buttons()" contient le code nécessaire pour traiter les pressions sur les boutons et modifier la température d'alarme.

"Display()" contient le code nécessaire pour présenter les informations sur l'écran OLED.

Si vous avez des questions ou des commentaires sur le code, ou tout autre aspect de ce Instructable, n'hésitez pas à demander et je ferai de mon mieux pour y répondre.

J'espère que ça vous a plu (et que vous êtes encore éveillé) !

Étape 7: Le « Projet à venir »

Les
Les

Le projet à venir, "Intelligrill® Pro", est un moniteur de fumeur à double sonde de température comprenant:

  • Calculs de sonde de température Steinhart-Hart (par opposition aux tables de « recherche ») pour une précision accrue, comme incorporé dans ce Instructable.
  • Temps prédictif d'achèvement sur la sonde 1 intégrant la précision accrue dérivée des calculs Steinhart-Hart.
  • Une deuxième sonde, la sonde 2, pour surveiller la température du fumeur (limitée à 32 à 399 degrés).
  • Commandes d'entrée tactile capacitives (comme dans le précédent Instructable).
  • Surveillance à distance basée sur le WIFI (avec une adresse IP fixe, permet de surveiller la progression du fumeur depuis n'importe où une connexion Internet est disponible).
  • Plage de température étendue (32 à 399 degrés).
  • Alarmes d'achèvement sonores à la fois dans l'émetteur Intelligrill® et sur la plupart des appareils de surveillance compatibles WiFi.
  • Affichage de la température en degrés F ou en degrés C.
  • Format de l'heure au format HH:MM:SS ou HH:MM. Affichage de la batterie en volts ou en % de charge.
  • Et sortie PID pour les fumeurs à vis sans fin.

"Intelligrill® Pro" teste toujours pour devenir l'Intelligrill® HTML le plus précis, riche en fonctionnalités et fiable que j'ai conçu. C'est encore en cours de test, mais avec les repas qu'il aide à préparer pendant les tests, j'ai pris plus de quelques kilos.

Encore une fois, j'espère que ça vous plaira !

Conseillé: