Índice:

ESP32 NTP Temperatura Sonda Cozinhar Termômetro com Correção Steinhart-Hart e alarme de temperatura: 7 etapas (com fotos)
ESP32 NTP Temperatura Sonda Cozinhar Termômetro com Correção Steinhart-Hart e alarme de temperatura: 7 etapas (com fotos)

Vídeo: ESP32 NTP Temperatura Sonda Cozinhar Termômetro com Correção Steinhart-Hart e alarme de temperatura: 7 etapas (com fotos)

Vídeo: ESP32 NTP Temperatura Sonda Cozinhar Termômetro com Correção Steinhart-Hart e alarme de temperatura: 7 etapas (com fotos)
Vídeo: CONCEPTOS BÁSICOS SOBRE SATÉLITES - Webinar IoT 2024, Julho
Anonim
Image
Image
ESP32 NTP Temperature Probe Cooking Thermometer Com correção Steinhart-Hart e alarme de temperatura
ESP32 NTP Temperature Probe Cooking Thermometer Com correção Steinhart-Hart e alarme de temperatura

Ainda na jornada para concluir um "próximo projeto", "ESP32 NTP Temperature Probe Cooking Thermometer with Steinhart-Hart Correction and Temperature Alarm" é um Instructable que mostra como eu adiciono uma sonda de temperatura NTP, campainha piezoelétrica e software ao meu toque capacitivo Instructable " ESP32 Capacitive Touch Input Usando "Metallic Hole Plugs" for Buttons "para criar um termômetro de cozimento simples, mas preciso, com um alarme de temperatura programável.

Os três botões de toque capacitivos permitem que o nível de alarme de temperatura seja definido. Pressionar o botão central exibe a exibição "Definir temperatura do alarme", habilitando os botões esquerdo e direito para reduzir ou aumentar a temperatura do alarme, respectivamente. Pressionar e soltar o botão esquerdo reduzirá a temperatura do alarme em um grau, enquanto pressionar e segurar o botão esquerdo reduzirá continuamente a temperatura do alarme até que seja liberado. Da mesma forma, pressionar e soltar o botão direito aumentará a temperatura do alarme em um grau, enquanto pressionar e segurar o botão direito aumentará continuamente a temperatura do alarme até que seja liberado. Quando terminar de ajustar a temperatura do alarme, basta tocar no botão central novamente para retornar à exibição de temperatura. A qualquer momento em que a temperatura for igual ou superior à temperatura do alarme, o alarme piezoelétrico soará.

E, como mencionado, uma sonda de temperatura NTP é usada no projeto junto com as equações de Steinhart-Hart e os coeficientes necessários para leituras de temperatura precisas. Incluí uma descrição excessivamente detalhada da equação de Steinhart-Hart, dos coeficientes de Steinhart-Hart, divisores de voltagem e álgebra na Etapa 1 (como um bônus, isso me faz dormir toda vez que leio, então você pode querer pule a Etapa 1 e vá direto para a Etapa 2: Montando a Eletrônica, a menos, é claro, que você precise de um cochilo.

Se você decidir construir este termômetro de cozinha, para personalização e impressão 3D, incluí os seguintes arquivos:

  • Arquivo Arduino "AnalogInput.ino" contendo o software para o design.
  • Arquivos cad do Autodesk Fusion 360 para o caso, mostrando como o caso foi projetado.
  • Arquivos Cura 3.4.0 STL "Case, Top.stl" e "Case, Bottom.stl" prontos para impressão 3D.

Você também precisará de familiaridade com o ambiente do Arduino, bem como habilidades e equipamentos de soldagem e, além disso, pode precisar de acesso a ohmímetros digitais precisos, termômetros e fontes de temperatura para calibração.

E, como de costume, provavelmente esqueci um ou dois arquivos ou quem sabe o que mais, então se você tiver alguma dúvida, não hesite em perguntar, pois eu cometo muitos erros.

A eletrônica foi projetada usando lápis, papel e uma calculadora movida a energia solar Radio Shack EC-2006a (Cat. No. 65-962a).

O software foi desenvolvido usando o Arduino 1.8.5.

O case foi projetado usando Autodesk Fusion 360, fatiado usando Cura 3.4.0 e impresso em PLA em um Ultimaker 2+ Extended e um Ultimaker 3 Extended.

E uma nota final, não recebo qualquer forma de compensação, incluindo, mas não se limitando a amostras grátis, por qualquer um dos componentes usados neste projeto

Etapa 1: Matemática, Matemática e Mais Matemática: Steinhart – Hart, Coefficients e Resistor Dividers

Matemática, Matemática e Mais Matemática: Steinhart – Hart, Coefficients e Resistor Dividers
Matemática, Matemática e Mais Matemática: Steinhart – Hart, Coefficients e Resistor Dividers

Meus projetos anteriores incorporando uma sonda de temperatura NTC usavam uma técnica de pesquisa de tabela para converter a tensão de entrada de um divisor de resistor em temperatura. Como o ESP32 tem capacidade para entrada analógica de 12 bits, e como eu estava projetando para maior precisão, decidi implementar a equação "Steinhart-Hart" no código para conversão de tensão em temperatura.

Publicado pela primeira vez em 1968 por John S. Steinhart e Stanley R. Hart, a equação de Steinhart-Hart define a relação de resistência à temperatura de uma sonda de temperatura NTC da seguinte forma:

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

Onde:

  • T é graus Kelvin.
  • A, B, C são os coeficientes de Steinhart-Hart (mais sobre isso em um momento).
  • E o termistor é o valor da resistência do termistor da sonda de temperatura na temperatura atual.

Então, por que essa equação de Steinhart-Hart aparentemente complicada é necessária para um termômetro digital baseado em sonda de temperatura NTC simples? Uma sonda de temperatura NTC "ideal" forneceria uma representação de resistência linear da temperatura real, portanto, uma equação linear simples envolvendo entrada de tensão e escala resultaria em uma apresentação precisa da temperatura. No entanto, as sondas de temperatura NTC não são lineares e, quando combinadas com a entrada analógica não linear de praticamente todos os processadores de placa única de baixo custo, como o WiFi Kit 32, produzem entradas analógicas não lineares e, portanto, leituras de temperatura imprecisas. Usando uma equação como Steinhart-Hart junto com calibração cuidadosa, leituras de temperatura altamente precisas usando sondas de temperatura NTC com um processador de placa única de baixo custo podem ser obtidas gerando uma aproximação muito próxima da temperatura real.

Então, de volta à equação de Steinhart-Hart. A equação utiliza os três coeficientes A, B e C para determinar a temperatura em função da resistência do termistor. De onde vêm esses três coeficientes? Alguns fabricantes fornecem esses coeficientes com suas sondas de temperatura NTC e outros não. Além disso, os coeficientes fornecidos pelo fabricante podem ou não ser para a sonda de temperatura exata que você pode comprar, e são coeficientes mais prováveis representativos de uma grande amostra de todas as sondas de temperatura que fabricam durante um período de tempo. E, finalmente, simplesmente não consegui localizar os coeficientes da sonda usada neste projeto.

Sem os coeficientes necessários, criei Steinhart-Hart Spreadsheet, uma calculadora baseada em planilha que ajuda a gerar os coeficientes necessários para uma sonda de temperatura NTC (perdi o link para uma calculadora semelhante baseada na web que usei há muitos anos, então criei esta) Para determinar os coeficientes de uma sonda de temperatura, começo medindo o valor do resistor de 33k usado no divisor de tensão com um ohmímetro digital e insiro o valor na área amarela da planilha chamada "Resistor". Em seguida, coloco a sonda de temperatura em três ambientes; a primeira temperatura ambiente, a segunda água gelada e a terceira água fervente, junto com um termômetro digital preciso conhecido, e dar tempo para que a temperatura no termômetro e a contagem de entrada do termistor que apareçam na tela do WiFi Kit 32 (mais sobre isso posteriormente) se estabilizem. Com a temperatura e a contagem de entrada do termistor estabilizadas, eu insiro a temperatura indicada pelo termômetro de precisão conhecido e a contagem do termistor que aparece no visor do WiFi Kit 32 na área amarela da planilha rotulada "Graus F do termômetro" e "AD Conte a partir do WiFi Kit 32 "respectivamente, para cada um dos três ambientes. Depois que todas as medições são inseridas, a área verde da planilha fornece os coeficientes A, B e C exigidos pela equação de Steinhart-Hart que são simplesmente copiados e colados no código-fonte.

Como mencionado anteriormente, a saída da equação de Steinhart-Hart está em graus Kelvin, e este design exibe graus Fahrenheit. A conversão de graus Kelvin para graus Fahrenheit é a seguinte:

Primeiro, converta graus Kelvin em graus Celsius subtraindo 273,15 (graus Kelvin) da equação de Steinhart-Hart:

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

E, em segundo lugar, converta graus Celsius em graus Fahrenheit da seguinte forma:

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

Com a equação de Steinhart-Hart e os coeficientes completos, uma segunda equação é necessária para ler a saída do divisor do resistor. Um modelo do divisor de resistor usado neste projeto é:

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

Onde:

  • vRef neste design é 3.3vdc.
  • Termistor é a sonda de temperatura NTC usada no divisor de resistor.
  • vOut é a saída de tensão do divisor do resistor.
  • Resistor é o resistor de 33k usado no divisor de resistor.
  • E o solo é, bem, o solo.

vA saída do divisor de resistor neste projeto é anexada à entrada analógica A0 do Kit WiFi 32 (pino 36), e a saída de tensão do divisor de resistor é calculada da seguinte forma:

vOut = vRef * Resistor / (Resistor + Termistor)

No entanto, conforme observado na equação de Steinhart-Hart, o valor da resistência do termistor é necessário para obter a temperatura, não a saída de tensão do divisor do resistor. Portanto, reorganizar a equação para gerar o valor do termistor requer o uso de um pouco de álgebra da seguinte forma:

Multiplique ambos os lados por "(Resistor + Termistor)" resultando em:

vOut * (Resistor + Termistor) = vRef * Resistor

Divida os dois lados por "vOut" resultando em:

Resistor + Termistor = (vRef * Resistor) / vOut

Subtraia "Resistor" de ambos os lados, resultando em:

Termistor = (vRef * Resistor / vOut) - Resistor

E, finalmente, usando a propriedade distributiva, simplifique:

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

Substituindo o WiFi Kit 32 A0, a contagem de entrada analógica de 0 a 4095 por vOut e substituindo o valor de 4096 por vRef, a equação do divisor de resistor que fornece o valor de resistência do termistor exigido pela equação de Steinhart-Hart torna-se:

Termistor = Resistor * ((4096 / Contagem de entrada analógica) - 1)

Então, com a matemática por trás de nós, vamos montar alguns eletrônicos.

Etapa 2: Montagem dos eletrônicos

Montando a Eletrônica
Montando a Eletrônica
Montando a Eletrônica
Montando a Eletrônica
Montando a Eletrônica
Montando a Eletrônica

Para os componentes eletrônicos, eu já tinha montado o demonstrador ESP32 Capacitive Touch https://www.instructables.com/id/ESP32-Capacitive … Com essa montagem, os seguintes componentes adicionais são necessários:

  • Cinco, 4 "pedaços de fio 28awg (um vermelho, um preto, um amarelo e dois verdes).
  • Um, a sonda Maverick "ET-72 Temperature Probe" (https://www.maverickthermometers.com/product/pr-003/).
  • Um conector de "telefone" de 2,5 mm, montagem em painel (https://www.mouser.com/ProductDetail/502-TR-2A).
  • Um, resistor de 33k ohm 1% 1/8 watt.
  • Um, piezo buzzer https://www.adafruit.com/product/160. Se você selecionar uma campainha piezoelétrica diferente, certifique-se de que corresponda às especificações deste (acionado por onda quadrada, <= saída de corrente do ESP32).

Para montar os componentes adicionais, executei as seguintes etapas:

  • Descascou e estanhou as pontas de cada comprimento de fio de 10 cm, conforme mostrado.
  • Soldou uma extremidade do fio amarelo e uma extremidade do resistor de 33k ohm ao pino de "ponta" do conector do telefone.
  • Soldou uma extremidade do fio preto na extremidade livre do resistor de 33k ohm e cortou o excesso de fio do resistor.
  • Tubulação termorretrátil aplicada sobre os fios e o resistor.
  • Soldado uma extremidade do fio vermelho para o pino "manga" no conector do telefone.
  • Soldou a extremidade livre do fio amarelo no pino 36 do Kit WiFi 32.
  • Soldou a extremidade livre do fio preto ao pino GND no Kit WiFi 32.
  • Soldou a extremidade livre do fio vermelho ao pino 3V3 do kit WiFi 32.
  • Soldou um fio verde a uma das pontas da campainha piezoelétrica.
  • Soldou o fio verde restante ao cabo restante da campainha piezoelétrica
  • Soldou a extremidade livre de um dos fios piezo verdes no pino 32 do Kit WiFi 32.
  • Soldou a extremidade livre dos fios piezoelétricos verdes restantes ao pino GND no Kit WiFi 32.
  • Conecte a sonda de temperatura ao conector do telefone.

Com toda a fiação concluída, verifiquei novamente meu trabalho.

Etapa 3: Instalando o software

Instalando o software
Instalando o software

O arquivo "AnalogInput.ino" é um arquivo de ambiente Arduino que contém o software para o projeto. Além deste arquivo, você precisará da biblioteca gráfica "U8g2lib" para o display OLED do WiFi Kit32 (consulte https://github.com/olikraus/u8g2/wiki para obter mais informações sobre esta biblioteca).

Com a biblioteca gráfica U8g2lib instalada no diretório do Arduino e "AnalogInput.ino" carregado no ambiente do Arduino, compile e baixe o software no WiFi Kit 32. Depois de baixado e executado, a linha superior do display OLED no kit WiFi 32 deve ler "Temperatura" com a temperatura atual exibida em texto grande no centro do visor.

Toque no botão central (T5) para exibir a tela "Definir temperatura do alarme". Ajuste a temperatura do alarme pressionando o botão esquerdo (T4) ou o botão direito (T6) conforme descrito na introdução. Para testar o alarme, ajuste a temperatura do alarme para ser igual ou inferior à temperatura atual e o alarme deve soar. Quando terminar de definir a temperatura do alarme, toque no botão central para retornar à exibição de temperatura.

Os valores dProbeA, dProbeB, dProbeC e dResistor no software são os valores que determinei durante a calibração da sonda que usei neste projeto e devem gerar leituras de temperatura com precisão de alguns graus. Caso contrário, ou se uma precisão maior for desejada, a calibração é a próxima.

Etapa 4: calibrar a sonda de temperatura NTP

Calibrando a sonda de temperatura NTP
Calibrando a sonda de temperatura NTP

Os seguintes itens são necessários para calibrar a sonda de temperatura:

  • Um ohmímetro digital.
  • Um conhecido termômetro digital preciso, capaz de 0 a 250 graus F.
  • Um copo de água gelada.
  • Uma panela de água fervente (tenha muito, muito cuidado!).

Comece obtendo o valor real do resistor de 33k:

  • Remova a alimentação da placa WiFi Kit 32.
  • Remova a sonda de temperatura do conector do telefone (também pode ser necessário dessoldar o fio preto do WiFi Kit 32, dependendo do seu ohmímetro digital).
  • Abra a planilha Steinhart-Hart.
  • Meça o valor do resistor de 33k ohm usando o ohmímetro digital e insira-o na caixa amarela "Resistor" na planilha e na variável "dResistor" no software. Embora isso possa parecer excessivo, um resistor de 33k ohm a 1% pode realmente afetar a precisão da exibição da temperatura.
  • Conecte a sonda de temperatura no conector do telefone.

Em seguida, obtenha os coeficientes de Steinhart-Hart:

  • Ligue o termômetro digital preciso conhecido.
  • Conecte uma fonte de alimentação USB ao WiFi Kit 32.
  • Pressione e segure simultaneamente os botões esquerdo (T4) e direito (T6) até que a tela "Contagens de termistor" apareça.
  • Permita que as telas do termômetro digital e da contagem do termistor se estabilizem.
  • Insira a temperatura e as contagens do termistor nas colunas amarelas "Graus F do Termômetro" e "Contagens AD do ESP32" na linha "Sala".
  • Insira o termômetro digital e as sondas do termistor em água gelada e deixe que os dois monitores se estabilizem.
  • Insira a temperatura e as contagens do termistor nas colunas amarelas "Graus F do Termômetro" e "Contagens AD do ESP32" na linha "Água Fria".
  • Insira o termômetro digital e as sondas do termistor em água fervente e permita que ambos os monitores se estabilizem.
  • Insira a temperatura e as contagens do termistor nas colunas amarelas "Graus F do Termômetro" e "Contagens AD do ESP32" na linha "Água fervente".
  • Copie o coeficiente "A:" verde na variável "dProbeA" no código-fonte.
  • Copie o coeficiente "B:" verde para a variável "dProbeB" no código-fonte.
  • Copie o coeficiente "C:" verde para a variável "dProbeC" no código-fonte.

Compile e baixe o software no WiFi Kit 32.

Etapa 5: Impressão 3D da caixa e montagem final

Impressão 3D da caixa e montagem final
Impressão 3D da caixa e montagem final
Impressão 3D da caixa e montagem final
Impressão 3D da caixa e montagem final
Impressão 3D da caixa e montagem final
Impressão 3D da caixa e montagem final

Imprimi "Case, Top.stl" e "Case, Bottom.stl" na altura da camada de 0,1 mm, preenchimento de 50%, sem suportes.

Com a caixa impressa, montei a parte eletrônica e a caixa da seguinte forma:

  • Desoldei os fios dos plugues de três orifícios, pressionei os plugues de orifício na posição em "Case, Top.stl" e, em seguida, soldou novamente os fios aos plugues de orifício, observando cuidadosamente o lado esquerdo (T4), centro (T5) e direito (T6) e os respectivos botões.
  • Prenda o conector do telefone ao orifício redondo em "Case, Bottom.stl" usando a porca incluída.
  • Posicionou a cigarra piezoelétrica no conjunto inferior da caixa ao lado do conector do telefone e fixou-a no lugar com fita dupla-face.
  • Deslize o Kit WiFi 32 para a posição no conjunto da parte inferior da caixa, certificando-se de que a porta USB no Kit WiFi 32 esteja alinhada com o orifício oval na parte inferior da caixa (NÃO pressione a tela OLED para posicionar o Kit WiFi 32 na parte inferior da caixa montagem, confie em mim, apenas não faça isso!).
  • Pressione o conjunto superior da caixa sobre o conjunto inferior da caixa e fixe no lugar usando pequenos pontos de cola de cianoacrilato espessa nos cantos.

Etapa 6: Sobre o software

Sobre o software
Sobre o software

O arquivo "AnalogInput.ino" é uma modificação do arquivo "Buttons.ino" do meu Instructable anterior "https://www.instructables.com/id/ESP32-Capacitive-Touch-Buttons/". Modifiquei as três seções de código originais "setup ()", "loop ()" e "InterruptService ()" para incluir software para a sonda e o alarme e adicionei três seções de código adicionais "Analog ()", "Botões ()" e "Display ()" para limpar o "loop ()" e adicionar o software necessário para a sonda e o alarme.

"Analog ()" contém o código necessário para ler a contagem do termistor em um array, fazer a média do array de contagens, usar o divisor de tensão para gerar o valor do termistor e, finalmente, usar as equações de Steinhart-Hart e as equações de conversão de temperatura para gerar graus Fahrenheit.

"Botões ()" contém o código necessário para processar o pressionamento de botões e editar a temperatura do alarme.

"Display ()" contém o código necessário para apresentar as informações no display OLED.

Se você tiver dúvidas ou comentários sobre o código, ou qualquer outro aspecto deste Instrutivo, fique à vontade para perguntar e farei o meu melhor para respondê-los.

Espero que tenham gostado (e ainda estejam acordados)!

Etapa 7: O "Projeto Futuro"

o
o

O próximo projeto, "Intelligrill® Pro", é um monitor de fumante com dupla sonda de temperatura apresentando:

  • Cálculos da sonda de temperatura Steinhart-Hart (em oposição às tabelas de "consulta") para maior precisão conforme incorporado neste Instructable.
  • Tempo preditivo para conclusão na sonda 1 incorporando a maior precisão derivada dos cálculos de Steinhart-Hart.
  • Uma segunda sonda, sonda 2, para monitorar a temperatura do fumante (limitada de 32 a 399 graus).
  • Controles de entrada de toque capacitivo (como no Instructable anterior).
  • Monitoramento remoto baseado em WIFI (com um endereço IP fixo, permite monitorar o progresso do fumante de qualquer lugar onde uma conexão de internet esteja disponível).
  • Faixa de temperatura estendida (32 a 399 graus).
  • Alarmes de conclusão audíveis no transmissor Intelligrill® e na maioria dos dispositivos de monitoramento com capacidade WiFi.
  • Exibição da temperatura em graus F ou graus C.
  • Formato de hora em HH: MM: SS ou HH: MM. Exibição da bateria em volts ou% carregada.
  • E saída PID para fumantes baseados em trado.

O "Intelligrill® Pro" ainda está testando para se tornar o Intelligrill® baseado em HTML mais preciso, cheio de recursos e confiável que eu projetei. Ainda está em teste, mas com as refeições está ajudando a preparar durante o teste, ganhei mais do que alguns quilos.

Mais uma vez, espero que gostem!

Recomendado: