Sommario:

Termometro da cucina con sonda di temperatura NTP ESP32 con correzione Steinhart-Hart e allarme temperatura.: 7 passaggi (con immagini)
Termometro da cucina con sonda di temperatura NTP ESP32 con correzione Steinhart-Hart e allarme temperatura.: 7 passaggi (con immagini)

Video: Termometro da cucina con sonda di temperatura NTP ESP32 con correzione Steinhart-Hart e allarme temperatura.: 7 passaggi (con immagini)

Video: Termometro da cucina con sonda di temperatura NTP ESP32 con correzione Steinhart-Hart e allarme temperatura.: 7 passaggi (con immagini)
Video: Replacing The Stock Thermometer In The Weber Smokey Mountain Cooker - The Virtual Weber Bullet 2024, Novembre
Anonim
Image
Image
Termometro da cucina con sonda di temperatura NTP ESP32 con correzione Steinhart-Hart e allarme temperatura
Termometro da cucina con sonda di temperatura NTP ESP32 con correzione Steinhart-Hart e allarme temperatura

Ancora in viaggio per completare un "progetto imminente", "ESP32 NTP Temperature Probe Cooking Thermometer With Steinhart-Hart Correction and Temperature Alarm" è un Instructable che mostra come aggiungo una sonda di temperatura NTP, un cicalino piezoelettrico e un software al mio tocco capacitivo Instructable " Ingresso tattile capacitivo ESP32 Utilizzo di "tappi per fori metallici" per pulsanti" per creare un termometro da cucina semplice ma accurato con un allarme di temperatura programmabile.

I tre pulsanti touch capacitivi consentono di impostare il livello di allarme della temperatura. Premendo il pulsante centrale viene visualizzato il display "Imposta temperatura allarme", consentendo rispettivamente ai pulsanti sinistro e destro di ridurre o aumentare la temperatura di allarme. Premendo e rilasciando il pulsante sinistro si ridurrà la temperatura dell'allarme di un grado, mentre tenendo premuto il pulsante sinistro si ridurrà continuamente la temperatura dell'allarme fino al rilascio. Allo stesso modo, premendo e rilasciando il pulsante destro si aumenterà la temperatura dell'allarme di un grado, mentre tenendo premuto il pulsante destro si aumenterà continuamente la temperatura dell'allarme fino al rilascio. Al termine della regolazione della temperatura dell'allarme, toccare nuovamente il pulsante centrale per tornare alla visualizzazione della temperatura. In qualsiasi momento la temperatura è uguale o superiore alla temperatura di allarme, il cicalino piezo suonerà.

E come accennato, nella progettazione viene utilizzata una sonda di temperatura NTP insieme alle equazioni e ai coefficienti di Steinhart-Hart necessari per letture accurate della temperatura. Ho incluso una descrizione eccessivamente dettagliata dell'equazione di Steinhart-Hart, i coefficienti di Steinhart-Hart, i divisori di tensione e l'algebra nel passaggio 1 (come bonus, mi fa addormentare ogni volta che lo leggo, quindi potresti voler salta il passaggio 1 e vai direttamente al passaggio 2: assemblaggio dell'elettronica, a meno che, ovviamente, non sia necessario un pisolino).

Se decidi di costruire questo termometro da cucina, per la personalizzazione e la stampa 3D ho incluso i seguenti file:

  • File Arduino "AnalogInput.ino" contenente il software per la progettazione.
  • File CAD di Autodesk Fusion 360 per il caso che mostrano come è stato progettato il caso.
  • Cura 3.4.0 File STL "Case, Top.stl" e "Case, Bottom.stl" pronti per la stampa 3D.

Avrai anche bisogno di familiarità con l'ambiente Arduino, nonché abilità e attrezzature di saldatura, e inoltre potrebbe essere necessario l'accesso a ohmmetri digitali, termometri e sorgenti di temperatura accurati per la calibrazione.

E come al solito, probabilmente ho dimenticato un file o due o chissà cos'altro, quindi se hai domande, non esitare a chiedere perché faccio molti errori.

L'elettronica è stata progettata utilizzando matita, carta e un calcolatore a energia solare Radio Shack EC-2006a (Cat. No. 65-962a).

Il software è stato progettato utilizzando Arduino 1.8.5.

La custodia è stata progettata utilizzando Autodesk Fusion 360, affettata utilizzando Cura 3.4.0 e stampata in PLA su Ultimaker 2+ Extended e Ultimaker 3 Extended.

E un'ultima nota, non ricevo alcun compenso in alcuna forma, inclusi ma non limitati a campioni gratuiti, per nessuno dei componenti utilizzati in questo progetto

Passaggio 1: matematica, matematica e ancora matematica: Steinhart-Hart, coefficienti e divisori di resistori

Matematica, matematica e ancora matematica: Steinhart-Hart, coefficienti e divisori di resistori
Matematica, matematica e ancora matematica: Steinhart-Hart, coefficienti e divisori di resistori

I miei progetti precedenti che incorporavano una sonda di temperatura NTC utilizzavano una tecnica di ricerca in tabella per convertire la tensione in ingresso da un divisore di resistori in temperatura. Poiché ESP32 è in grado di fornire un ingresso analogico a dodici bit e poiché stavo progettando per una maggiore precisione, ho deciso di implementare l'equazione "Steinhart-Hart" nel codice per la conversione da tensione a temperatura.

Pubblicata per la prima volta nel 1968 da John S. Steinhart e Stanley R. Hart, l'equazione di Steinhart-Hart definisce la relazione tra resistenza e temperatura di una sonda di temperatura NTC come segue:

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

dove:

  • T è gradi Kelvin.
  • A, B, C sono i coefficienti di Steinhart-Hart (ne parleremo tra poco).
  • E il termistore è il valore di resistenza del termistore della sonda di temperatura alla temperatura corrente.

Allora perché questa equazione di Steinhart-Hart apparentemente complicata è necessaria per un semplice termometro digitale basato su sonda di temperatura NTC? Una sonda di temperatura NTC "ideale" fornirebbe una rappresentazione lineare della resistenza della temperatura effettiva, quindi una semplice equazione lineare che coinvolga l'ingresso di tensione e il ridimensionamento risulterebbe in una presentazione accurata della temperatura. Tuttavia, le sonde di temperatura NTC non sono lineari e, se combinate con l'ingresso analogico non lineare di praticamente tutti i processori a scheda singola a basso costo come il WiFi Kit 32, producono ingressi analogici non lineari e quindi letture di temperatura imprecise. Utilizzando un'equazione come Steinhart-Hart insieme a un'attenta calibrazione, è possibile ottenere letture di temperatura altamente accurate utilizzando sonde di temperatura NTC con un processore a scheda singola a basso costo generando un'approssimazione molto ravvicinata della temperatura effettiva.

Quindi torniamo all'equazione di Steinhart-Hart. L'equazione utilizza i tre coefficienti A, B e C per determinare la temperatura in funzione della resistenza del termistore. Da dove vengono questi tre coefficienti? Alcuni produttori forniscono questi coefficienti con le loro sonde di temperatura NTC, altri no. Inoltre, i coefficienti forniti dal produttore possono o meno corrispondere all'esatta sonda di temperatura che si può acquistare e molto probabilmente sono coefficienti rappresentativi di un ampio campione di tutte le sonde di temperatura che producono in un periodo di tempo. E infine, semplicemente non riuscivo a individuare i coefficienti per la sonda utilizzata in questo progetto.

Senza i coefficienti necessari, ho creato Steinhart-Hart Spreadsheet, un calcolatore basato su fogli di calcolo che aiuta a generare i coefficienti necessari per una sonda di temperatura NTC (ho perso il collegamento a un calcolatore web simile che usavo molti anni fa, quindi ho creato questo). Per determinare i coefficienti per una sonda di temperatura, inizio misurando il valore del resistore da 33k utilizzato nel partitore di tensione con un ohmmetro digitale e inserisco il valore nell'area gialla del foglio di calcolo etichettata "Resistor". Successivamente, posiziono la sonda di temperatura in tre ambienti; prima temperatura ambiente, seconda acqua ghiacciata e terza acqua bollente, insieme a un noto termometro digitale accurato, e consentono di stabilizzare la temperatura sul termometro e il conteggio dell'ingresso del termistore visualizzato sul display del kit WiFi 32 (ne parleremo più avanti). Con la temperatura e il conteggio dell'ingresso del termistore stabilizzati, inserisco la temperatura indicata dal termometro preciso noto e il conteggio del termistore che appare sul display del Kit WiFi 32 nell'area gialla del foglio di calcolo etichettata "Gradi F dal termometro" e "AD Contare da WiFi Kit 32" rispettivamente, per ciascuno dei tre ambienti. Una volta inserite tutte le misurazioni, l'area verde del foglio di calcolo fornisce i coefficienti A, B e C richiesti dall'equazione di Steinhart-Hart che vengono quindi semplicemente copiati e incollati nel codice sorgente.

Come accennato in precedenza, l'output dell'equazione di Steinhart-Hart è in gradi Kelvin e questo disegno mostra gradi Fahrenheit. La conversione da gradi Kelvin a gradi Fahrenheit è la seguente:

Innanzitutto, converti i gradi Kelvin in gradi Celsius sottraendo 273,15 (gradi Kelvin) dall'equazione di Steinhart-Hart:

Gradi C = (A + (B * (log(Termistore))) + (C * log(Termistore) * log(Termistore) * log(Termistore))) - 273,15

E secondo, converti i gradi Celsius in gradi Fahrenheit come segue:

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

Con l'equazione di Steinhart-Hart e i coefficienti completi, è necessaria una seconda equazione per leggere l'uscita del divisore del resistore. Un modello del divisore del resistore utilizzato in questo progetto è:

vRef<---Termistore<---vOut<---Resistore<---Massa

dove:

  • vRef in questo design è 3.3vdc.
  • Il termistore è la sonda di temperatura NTC utilizzata nel partitore resistivo.
  • vOut è l'uscita di tensione del partitore del resistore.
  • Il resistore è il resistore da 33k utilizzato nel divisore del resistore.
  • E il terreno è, beh, terreno.

vOut del divisore del resistore in questo progetto è collegato all'ingresso analogico A0 del kit WiFi 32 (pin 36) e l'uscita di tensione del divisore del resistore viene calcolata come segue:

vOut = vRef * Resistenza / (resistenza + termistore)

Tuttavia, come notato nell'equazione di Steinhart-Hart, per ottenere la temperatura è necessario il valore della resistenza del termistore, non l'uscita di tensione del partitore del resistore. Quindi riorganizzare l'equazione per produrre il valore del termistore richiede l'uso di un po' di algebra come segue:

Moltiplica entrambi i lati per "(Resistor + Thermistor)" ottenendo:

vOut * (resistenza + termistore) = vRef * resistenza

Dividi entrambi i lati per "vOut" ottenendo:

Resistenza + Termistore = (vRef * Resistenza) / vOut

Sottrai "Resistore" da entrambi i lati ottenendo:

Termistore = (vRef * Resistenza / vOut) - Resistenza

E infine, usando la proprietà distributiva, semplifica:

Termistore = Resistenza * ((vRef / vOut) - 1)

Sostituendo il conteggio dell'ingresso analogico WiFi Kit 32 A0 da 0 a 4095 per vOut e sostituendo il valore di 4096 per vRef, l'equazione del divisore del resistore che fornisce il valore di resistenza del termistore richiesto dall'equazione di Steinhart-Hart diventa:

Termistore = Resistenza * ((4096 / Conteggio ingresso analogico) - 1)

Quindi, con la matematica alle spalle, assembliamo un po' di elettronica.

Passaggio 2: assemblaggio dell'elettronica

Assemblaggio dell'elettronica
Assemblaggio dell'elettronica
Assemblaggio dell'elettronica
Assemblaggio dell'elettronica
Assemblaggio dell'elettronica
Assemblaggio dell'elettronica

Per l'elettronica, avevo precedentemente assemblato il dimostratore ESP32 Capacitive Touch https://www.instructables.com/id/ESP32-Capacitive… Con quell'assemblaggio, sono necessari i seguenti componenti aggiuntivi:

  • Cinque pezzi da 4" di filo 28awg (uno rosso, uno nero, uno giallo e due verdi).
  • Una sonda Maverick "ET-72 Temperature Probe" (https://www.maverickthermometers.com/product/pr-003/).
  • Un connettore "telefono" da 2,5 mm, montaggio a pannello (https://www.mouser.com/ProductDetail/502-TR-2A).
  • Un resistore da 33k ohm 1% 1/8 watt.
  • Uno, cicalino piezo https://www.adafruit.com/product/160. Se si seleziona un cicalino piezoelettrico diverso, assicurarsi che corrisponda alle specifiche di questo (guida ad onda quadra, <= uscita corrente dell'ESP32).

Per assemblare i componenti aggiuntivi, ho eseguito i seguenti passaggi:

  • Spelato e stagnato le estremità di ogni lunghezza di filo da 4 "come mostrato.
  • Saldare un'estremità del filo giallo e un'estremità del resistore da 33k ohm al pin "Tip" del connettore del telefono.
  • Saldare un'estremità del filo nero all'estremità libera del resistore da 33k ohm e tagliare il filo del resistore in eccesso.
  • Guaina termorestringente applicata sui fili e sulla resistenza.
  • Saldare un'estremità del filo rosso al pin "Sleeve" sul connettore del telefono.
  • Saldare l'estremità libera del filo giallo al pin 36 del WiFi Kit 32.
  • Saldare l'estremità libera del filo nero al pin GND sul WiFi Kit 32.
  • Saldare l'estremità libera del filo rosso al pin 3V3 del WiFi Kit 32.
  • Saldato un filo verde a un cavo del cicalino piezoelettrico.
  • Saldare il filo verde rimanente al cavo rimanente del cicalino piezo
  • Saldare l'estremità libera di uno dei fili piezoelettrici verdi al pin 32 del kit WiFi 32.
  • Saldare l'estremità libera dei restanti fili piezoelettrici verdi al pin GND sul WiFi Kit 32.
  • Inserito la sonda di temperatura nel connettore del telefono.

Con tutto il cablaggio completo, ho ricontrollato il mio lavoro.

Passaggio 3: installazione del software

Installazione del software
Installazione del software

Il file "AnalogInput.ino" è un file di ambiente Arduino contenente il software per la progettazione. Oltre a questo file, avrai bisogno della libreria grafica "U8g2lib" per il display OLED WiFi Kit32 (vedi https://github.com/olikraus/u8g2/wiki per ulteriori informazioni su questa libreria).

Con la libreria grafica U8g2lib installata nella directory Arduino e "AnalogInput.ino" caricato nell'ambiente Arduino, compila e scarica il software nel Kit WiFi 32. Una volta scaricato ed eseguito, la riga superiore del display OLED sul Kit WiFi 32 dovrebbe leggere "Temperatura" con la temperatura corrente visualizzata in caratteri grandi al centro del display.

Toccare il pulsante centrale (T5) per visualizzare il display "Imposta temperatura allarme". Regolare la temperatura di allarme premendo il pulsante sinistro (T4) o il pulsante destro (T6) come descritto nell'introduzione. Per testare l'allarme, regolare la temperatura dell'allarme in modo che sia uguale o inferiore alla temperatura corrente e l'allarme dovrebbe suonare. Al termine dell'impostazione della temperatura dell'allarme, toccare il pulsante centrale per tornare alla visualizzazione della temperatura.

I valori dProbeA, dProbeB, dProbeC e dResistor nel software sono i valori che ho determinato durante la calibrazione della sonda che ho usato in questo progetto e dovrebbero generare letture di temperatura accurate entro pochi gradi. In caso contrario, o se si desidera una maggiore precisione, la calibrazione è successiva.

Passaggio 4: calibrazione della sonda di temperatura NTP

Calibrazione della sonda di temperatura NTP
Calibrazione della sonda di temperatura NTP

Per calibrare la sonda di temperatura sono necessari i seguenti elementi:

  • Un ohmmetro digitale.
  • Un noto termometro digitale preciso in grado di variare da 0 a 250 gradi F.
  • Un bicchiere di acqua ghiacciata.
  • Una pentola di acqua bollente (stai molto, molto attento!).

Inizia ottenendo il valore effettivo del resistore 33k:

  • Rimuovere l'alimentazione dalla scheda WiFi Kit 32.
  • Rimuovi la sonda di temperatura dal connettore del telefono (potrebbe anche essere necessario dissaldare il filo nero dal WiFi Kit 32, a seconda del tuo ohmmetro digitale).
  • Apri il foglio di calcolo Steinhart-Hart.
  • Misurare il valore della resistenza da 33k ohm utilizzando l'ohmmetro digitale e inserirlo nella casella gialla "Resistor" nel foglio di calcolo e nella variabile "dResistor" nel software. Anche se questo può sembrare eccessivo, un resistore all'1% da 33k ohm può effettivamente influire sulla precisione della visualizzazione della temperatura.
  • Collegare la sonda di temperatura al connettore del telefono.

Quindi ottenere i coefficienti di Steinhart-Hart:

  • Accendi il noto termometro digitale preciso.
  • Collega una fonte di alimentazione USB al WiFi Kit 32.
  • Tenere premuti contemporaneamente i pulsanti sinistro (T4) e destro (T6) finché non viene visualizzato il display "Conteggi termistore".
  • Consentire a entrambi i display del conteggio del termometro digitale e del termistore di stabilizzarsi.
  • Immettere la temperatura e il conteggio del termistore nelle colonne gialle "Gradi F dal termometro" e "Conteggi AD da ESP32" sulla riga "Stanza".
  • Inserire sia il termometro digitale che le sonde a termistore nell'acqua ghiacciata e consentire a entrambi i display di stabilizzarsi.
  • Immettere la temperatura e il conteggio del termistore nelle colonne gialle "Gradi F dal termometro" e "Conteggi AD da ESP32" sulla riga "Acqua fredda".
  • Inserire sia il termometro digitale che le sonde a termistore nell'acqua bollente e lasciare che entrambi i display si stabilizzino.
  • Immettere la temperatura e il conteggio del termistore nelle colonne gialle "Gradi F dal termometro" e "Conteggi AD da ESP32" sulla riga "Acqua bollente".
  • Copia il coefficiente "A:" verde nella variabile "dProbeA" nel codice sorgente.
  • Copia il coefficiente verde "B:" nella variabile "dProbeB" nel codice sorgente.
  • Copia il coefficiente verde "C:" nella variabile "dProbeC" nel codice sorgente.

Compila e scarica il software nel WiFi Kit 32.

Passaggio 5: stampa 3D della custodia e assemblaggio finale

Stampa 3D della custodia e assemblaggio finale
Stampa 3D della custodia e assemblaggio finale
Stampa 3D della custodia e assemblaggio finale
Stampa 3D della custodia e assemblaggio finale
Stampa 3D della custodia e assemblaggio finale
Stampa 3D della custodia e assemblaggio finale

Ho stampato sia "Case, Top.stl" che "Case, Bottom.stl" con un'altezza dello strato di 0,1 mm, riempimento del 50%, senza supporti.

Con la custodia stampata, ho assemblato l'elettronica e la custodia come segue:

  • Ho dissaldato i fili dai tre tappi, ho premuto i tappi in posizione in "Case, Top.stl", quindi ho risaldato i fili ai tappi, annotando con attenzione il sinistro (T4), il centro (T5) e il destro (T6) e i rispettivi pulsanti.
  • Fissare il connettore del telefono al foro rotondo in "Case, Bottom.stl" utilizzando il dado incluso.
  • Posizionato il cicalino piezoelettrico nel gruppo inferiore del case accanto al connettore del telefono e fissato in posizione con nastro biadesivo.
  • Fai scorrere il Kit WiFi 32 in posizione nel gruppo inferiore della custodia, assicurandoti che la porta USB sul Kit WiFi 32 sia allineata con il foro ovale nella parte inferiore della custodia (NON premere sul display OLED per posizionare il Kit WiFi 32 nella parte inferiore della custodia montaggio, fidati di me su questo, non farlo!).
  • Ha premuto il gruppo superiore del case sul gruppo inferiore del case e fissato in posizione utilizzando piccoli punti di colla cianoacrilica spessa sugli angoli.

Passaggio 6: informazioni sul software

Informazioni sul software
Informazioni sul software

Il file "AnalogInput.ino" è una modifica del file "Buttons.ino" dal mio precedente Instructable "https://www.instructables.com/id/ESP32-Capacitive-Touch-Buttons/". Ho modificato le tre sezioni di codice originali "setup()", "loop()" e "InterruptService()" per includere il software per la sonda e l'allarme, e ho aggiunto altre tre sezioni di codice "Analog()", "Buttons()" e "Display()" per ripulire "loop()" e per aggiungere il software necessario per la sonda e l'allarme.

"Analog()" contiene il codice necessario per leggere il conteggio del termistore in un array, calcolare la media dell'array dei conteggi, utilizzare il divisore di tensione per generare il valore del termistore e infine utilizzare le equazioni di Steinhart-Hart e le equazioni di conversione della temperatura per generare gradi Fahrenheit.

"Pulsanti()" contiene il codice necessario per elaborare le pressioni dei pulsanti e modificare la temperatura di allarme.

"Display()" contiene il codice necessario per presentare le informazioni sul display OLED.

Se hai domande o commenti sul codice o su qualsiasi altro aspetto di questo Instructable, non esitare a chiedere e farò del mio meglio per rispondere.

Spero che vi sia piaciuto (e che siate ancora svegli)!

Passaggio 7: il "progetto in arrivo"

Il
Il

Il prossimo progetto, "Intelligrill® Pro", è un monitor per fumatori a doppia sonda con:

  • Calcoli della sonda di temperatura Steinhart-Hart (al contrario delle tabelle "look-up") per una maggiore precisione come incorporato in questo Instructable.
  • Tempo predittivo per il completamento sulla sonda 1 che incorpora la maggiore precisione derivata dai calcoli Steinhart-Hart.
  • Una seconda sonda, sonda 2, per il monitoraggio della temperatura dell'affumicatore (limitata da 32 a 399 gradi).
  • Controlli di input touch capacitivi (come nel precedente Instructable).
  • Monitoraggio remoto basato su WIFI (con un indirizzo IP fisso, consente il monitoraggio dei progressi del fumatore da qualsiasi luogo sia disponibile una connessione Internet).
  • Intervallo di temperatura esteso (da 32 a 399 gradi).
  • Allarmi sonori di completamento sia all'interno del trasmettitore Intelligrill® che sulla maggior parte dei dispositivi di monitoraggio compatibili con WiFi.
  • Visualizzazione della temperatura in gradi F o gradi C.
  • Formato dell'ora in HH:MM:SS o HH:MM. Visualizzazione della batteria in volt o % di carica.
  • E uscita PID per fumatori a coclea.

"Intelligrill® Pro" sta ancora testando per diventare l'Intelligrill® basato su HTML più accurato, ricco di funzionalità e affidabile che ho progettato. È ancora in fase di test, ma con i pasti che sta aiutando a preparare durante i test, ho guadagnato più di qualche chilo.

Ancora una volta, spero che ti piaccia!

Consigliato: