ESP8266 - Módulo Termopar MAX6675

A maioria dos sensores de temperatura que abordamos em outros tutoriais - o DHT11/DHT22, o DS18B20, o LM35 - chega no máximo a algo entre 100°C e 150°C. Isso é mais do que suficiente para estações meteorológicas, chocadeiras ou um gadget de cozinha, mas é inútil se você precisa vigiar um forno de cerâmica, um forno a lenha, uma fornalha de fundição de metal ou o escapamento de um motor pequeno, todos eles muito mais quentes do que qualquer um desses chips consegue suportar.

Para trabalhos como esses, você precisa de um tipo de sensor completamente diferente: um termopar. Este tutorial mostra como ligar um módulo termopar MAX6675 a uma placa ESP8266 e ler a temperatura por meio de sua interface digital de 3 fios.

ESP8266 NodeMCU módulo termopar MAX6675

Hardware Necessário

1×ESP8266 NodeMCU ESP-12F
1×Alternatively, ESP8266 D1 Mini NodeMCU ESP-12F
1×Alternatively, ESP8266 NodeMCU ESP-12E (Uno-form)
1×Micro USB Cable
1×Alternatively, ESP8266 NodeMCU ESP-12F (SMD-form)
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×MAX6675 Thermocouple Module
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para ESP8266

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Como Funciona um Termopar

Um termopar é simplesmente dois fios de metais diferentes soldados em uma das pontas. Essa junção é chamada de junção quente e, quando esquenta, gera uma tensão muito pequena que sobe e desce junto com a temperatura. É um truque simples, mas muito eficaz - como não há componentes delicados de silício expostos ao calor, um termopar sobrevive a temperaturas que destruiriam na hora um sensor eletrônico comum.

Existem vários tipos de termopar, nomeados com letras (J, K, E, T e assim por diante), dependendo de quais dois metais são soldados. O tipo K é de longe o mais comum, feito com fios de Chromel e Alumel, e cobre uma faixa enorme de aproximadamente -328°F a +2300°F.

O problema é que a tensão que sai da junção de um termopar é minúscula - apenas alguns milivolts - e transformá-la em uma leitura de temperatura utilizável exige um chip dedicado. Esse é o trabalho do MAX6675.

Sobre o Módulo MAX6675

O módulo MAX6675 que você encontra à venda online é uma pequena placa breakout construída em torno do CI MAX6675, acompanhada de uma sonda de termopar tipo K.

Pinagem do Módulo MAX6675

Pinagem do módulo termopar MAX6675
image source: diyables.io

Internamente, o MAX6675 amostra a tensão do termopar, passa-a por um conversor analógico-digital de 12 bits e disponibiliza o resultado por meio de uma interface simples de 3 fios somente de leitura. Não há linha MOSI aqui porque o ESP8266 nunca precisa enviar dados ao chip - ele só lê:

  • VCC: pino de alimentação, aceita de 3,0V a 5,5V.
  • GND: pino de terra.
  • SCK: clock serial, controlado pelo ESP8266 para deslocar para fora cada leitura.
  • CS: seleção de chip - colocado em nível baixo sempre que o ESP8266 quer fazer uma leitura.
  • SO: saída de dados serial (esta é a linha MISO do módulo) - leva a leitura de 12 bits de volta ao ESP8266.

Na borda oposta da placa há um pequeno borne de parafuso para a sonda: o fio vermelho é preso no slot + e o fio azul no slot -.

A sonda tem cerca de 45 cm de cabo terminando em uma ponta de metal e, embora o chip MAX6675 consiga digitalizar leituras de até 1024°C, a sonda que vem junto com o módulo é classificada apenas para 0-80°C. Se o seu projeto precisa medir temperaturas mais altas, você precisará combinar a placa breakout MAX6675 com uma sonda tipo K de maior temperatura, vendida separadamente.

Especificações rápidas:

  • Tensão de Operação: 3,0V - 5,5V
  • Interface: digital de 3 fios (SCK / CS / SO)
  • Faixa Digitalizada: 0°C a 1024°C (sonda incluída limitada a 0-80°C)
  • Precisão: ±3°C
  • Resolução: cerca de 0,25°C

Diagrama de Ligação

O módulo MAX6675 é uma peça de 3,3V-5V, mas o ESP8266 é estritamente uma placa de 3,3V - seus GPIOs não toleram 5V. Portanto, alimente o pino VCC do módulo com o pino de 3,3V do ESP8266, nunca com 5V, e ligue GND a GND. Depois, escolha quaisquer três GPIOs livres para SCK, CS e SO.

ESP8266 NodeMCU módulo termopar MAX6675 diagrama de ligação

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

Tabela de ligação do Módulo MAX6675 e do ESP8266 NodeMCU

Módulo MAX6675 ESP8266 NodeMCU
VCC → 3.3V
GND → GND
SCK → D5
CS → D6
SO → D7

Código ESP8266

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-max6675-thermocouple-module */ #include "max6675.h" // ESP8266 NodeMCU pins wired to the MAX6675 module #define SCK_PIN D5 // Clock (SCK) pin #define CS_PIN D6 // Chip Select (CS) pin #define SO_PIN D7 // Serial Out (SO) pin // Create the thermocouple object using the pins above MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN); void setup() { Serial.begin(9600); delay(500); // give the MAX6675 time to stabilize before the first read } void loop() { // Grab a fresh reading in both units and print them together float temperature_C = thermocouple.readCelsius(); float temperature_F = thermocouple.readFahrenheit(); Serial.print("Thermocouple: "); Serial.print(temperature_C); Serial.print("\xC2\xB0"); // degree symbol Serial.print("C / "); Serial.print(temperature_F); Serial.print("\xC2\xB0"); // degree symbol Serial.println("F"); delay(1000); // MAX6675 only refreshes its conversion roughly once per second }

Passos Rápidos

  • Se esta for a sua primeira vez trabalhando com o ESP8266, comece pelo tutorial configuração do ambiente para o ESP8266 no Arduino IDE.
  • Ligue o módulo MAX6675 ao ESP8266 NodeMCU seguindo a tabela e o diagrama acima.
  • Prenda os fios + e - da sonda de termopar no borne do módulo, caso ainda não tenha feito isso.
  • Conecte o ESP8266 ao seu computador com um cabo USB.
  • Abra o Arduino IDE, escolha a placa ESP8266 correta (por exemplo, NodeMCU 1.0 (ESP-12E Module)) e a porta COM correspondente.
  • Abra o painel Libraries na barra lateral esquerda.
  • Pesquise "MAX6675" e encontre a biblioteca publicada pela Adafruit.
  • Clique em Install para adicioná-la ao seu IDE.
  • Search for MAX6675 library created by Adafruit and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Library Manager
Type:
All
Topic:
All
MAX6675 library by Adafruit
Arduino library for interfacing with MAX6675 thermocouple amplifier More info
1.1.2
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
1
  • Cole o código acima em um novo sketch.
  • Pressione Upload para gravar o sketch no ESP8266.
  • Segure a ponta da sonda contra algo quente (uma caneca de café, a ponta do dedo, um secador de cabelo a uma distância segura) e veja os números mudarem.
  • Abra o Serial Monitor para acompanhar as leituras ao vivo.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Thermocouple: 24.50°C / 76.10°F Thermocouple: 24.75°C / 76.55°F Thermocouple: 25.50°C / 77.90°F Thermocouple: 27.25°C / 81.05°F Thermocouple: 30.00°C / 86.00°F Thermocouple: 33.50°C / 92.30°F Thermocouple: 35.75°C / 96.35°F
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

※ Nota:

Se você não obtém leitura, vê um valor travado ou uma temperatura totalmente errada, quase sempre a causa está na ligação: confira novamente se SCK/CS/SO correspondem aos pinos do sketch e confirme que os fios + e - da sonda estão bem encaixados no borne, e não apenas encostados.

Explicação do Código

O sketch importa a biblioteca MAX6675, que cuida de toda a comunicação bit-banged com o chip para nós.

#include "max6675.h"

Três pinos são definidos para o lado do ESP8266 da conexão - a linha de clock, a linha de seleção de chip e a linha de saída de dados vinda do módulo.

#define SCK_PIN D5 // Clock (SCK) pin #define CS_PIN D6 // Chip Select (CS) pin #define SO_PIN D7 // Serial Out (SO) pin

Um único objeto MAX6675 chamado thermocouple é construído, informando à biblioteca qual pino exerce qual função.

MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN);

setup() apenas abre a conexão Serial e faz uma breve pausa, dando ao módulo um momento para estabilizar antes de a primeira conversão ser solicitada.

void setup() { Serial.begin(9600); delay(500); }

Dentro de loop(), as duas funções da biblioteca readCelsius() e readFahrenheit() acionam, cada uma, uma nova leitura do chip e devolvem a temperatura na unidade solicitada.

float temperature_C = thermocouple.readCelsius(); float temperature_F = thermocouple.readFahrenheit();

Os dois valores são então impressos no Serial Monitor em uma linha, seguidos de uma pausa de um segundo - que combina confortavelmente com a taxa de conversão interna do próprio MAX6675, de modo que nunca consultamos mais rápido do que ele consegue produzir novos dados.

Serial.print("Thermocouple: "); Serial.print(temperature_C); Serial.print("\xC2\xB0"); // degree symbol Serial.print("C / "); Serial.print(temperature_F); Serial.print("\xC2\xB0"); // degree symbol Serial.println("F"); delay(1000);

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!