Arduino - Módulo Termopar MAX6675
Imagine que você quer verificar o quanto a ponta de um ferro de solda realmente esquenta, acompanhar o interior de um forno elétrico enquanto ele assa algo, ou registrar a temperatura da chaminé de um fogão a lenha. Os sensores DS18B20 e da série DHT, mostrados em nossos outros tutoriais, suportam no máximo uns 125°C - nem de longe o suficiente para trabalhos como esses, e forçá-los além do limite simplesmente vai queimar o chip.
É exatamente aí que entra o termopar. Neste tutorial, você vai ligar um módulo termopar MAX6675 - um breakout barato e fácil de encontrar que funciona com uma sonda termopar tipo K - a um Arduino e ler valores de temperatura em tempo real no Serial Monitor.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
O que Torna um Termopar Diferente
Um termopar não passa de dois fios de metais diferentes torcidos ou soldados juntos em uma das pontas. Essa ponta unida - a junção quente - produz uma tensão muito pequena quando é aquecida, e essa tensão sobe e desce junto com a temperatura. Como não há nenhum circuito frágil na ponta quente, apenas fio de metal simples, um termopar aguenta tranquilamente um calor que destruiria na hora um sensor eletrônico comum.
O tipo mais comum é o termopar tipo K, feito com um par de fios de Chromel e Alumel. Ele é barato, fácil de encontrar e consegue medir uma faixa enorme - aproximadamente de -328°F até +2300°F. O único problema é que o seu sinal de saída é de apenas alguns milivolts, pequeno demais para ser lido diretamente, então é preciso um chip dedicado para transformar essa tensão minúscula em uma leitura de temperatura de verdade. Esse chip é o MAX6675.
Sobre o Módulo MAX6675
O que você vai realmente comprar é uma pequena placa breakout construída em torno do chip MAX6675, vendida junto com uma sonda termopar tipo K.
Pinagem do Módulo MAX6675

A placa amostra a tensão da sonda, digitaliza com um ADC de 12 bits e entrega a leitura ao Arduino por uma ligação simples de 3 fios. Como o Arduino só precisa ler dados do chip, não há pino MOSI - apenas:
- VCC: pino de alimentação, funciona com qualquer tensão de 3.0V a 5.5V.
- GND: pino de terra.
- SCK: linha de clock controlada pelo Arduino para retirar cada leitura do chip.
- CS: chip select, mantido em nível baixo enquanto uma leitura está sendo feita.
- SO: saída de dados serial - esta é a linha de dados somente leitura do módulo, que leva a leitura de 12 bits de volta ao Arduino.
Na borda oposta da placa há um pequeno borne de 2 pinos para a própria sonda: o fio vermelho vai no encaixe +, e o fio azul no encaixe -.
A sonda que vem no kit tem cerca de 18 polegadas de cabo e é especificada apenas de 0°C a 80°C, embora o chip MAX6675 por trás dela consiga digitalizar leituras de 0°C a 1024°C. Se um projeto precisar medir temperaturas acima de 80°C, você deve usar esse mesmo breakout com uma sonda tipo K para temperaturas mais altas, vendida separadamente, em vez da que vem na caixa.
Mais alguns números que vale a pena conhecer:
- Tensão de operação: 3.0V a 5.5V
- Faixa de medição: 0°C a 1024°C (a sonda do kit é limitada a 80°C)
- Precisão: ±3°C
- Resolução: cerca de 0.25°C
Diagrama de Ligação
Ligue o pino VCC do módulo ao pino 5V do Arduino e o GND ao GND, depois escolha quaisquer três pinos digitais livres para SCK, CS e SO. Por fim, encaixe os fios vermelho e azul da sonda termopar no borne + e - do módulo.

This image is created using Fritzing. Click to enlarge image
Tabela de ligação entre o Módulo MAX6675 e o Arduino Uno
| Módulo MAX6675 | Arduino Uno |
|---|---|
| VCC | → 5V |
| GND | → GND |
| SCK | → 5 |
| CS | → 4 |
| SO | → 3 |
Código Arduino
Passos Rápidos
- Ligue o módulo MAX6675 ao Arduino Uno seguindo a tabela e o diagrama acima.
- Prenda os fios vermelho (+) e azul (-) da sonda termopar no borne do módulo, se ainda não tiver feito isso.
- Conecte o Arduino Uno ao seu computador com um cabo USB.
- Abra o Arduino IDE e selecione a placa e a porta corretas.
- Clique no ícone Libraries na barra lateral esquerda do Arduino IDE.
- Pesquise "MAX6675" e encontre a biblioteca publicada pela Adafruit.
- Clique no botão Install para adicioná-la.
- Search for MAX6675 library created by Adafruit and click the Install button.
- Copie o código acima e abra-o no Arduino IDE.
- Clique no botão Upload para enviar o sketch para o Arduino Uno.
- Encoste a ponta da sonda em algo quente, ou segure-a na mão.
- Abra o Serial Monitor e acompanhe as leituras chegando.
※ Nota:
Se o Serial Monitor mostrar um valor travado ou claramente errado, verifique se SCK, CS e SO estão ligados exatamente nos pinos usados no sketch, e confira se os fios + e - da sonda estão bem presos no borne, e não apenas apoiados nele.
Explicação do Código
O sketch começa incluindo a biblioteca MAX6675, que cuida da comunicação de baixo nível com o chip.
Logo depois, três pinos são definidos do lado do Arduino - clock, chip select e saída de dados serial - correspondendo aos pinos que você ligou na seção anterior.
Em seguida, é criado um objeto MAX6675 chamado thermocouple, informando à biblioteca qual pino faz cada função.
Dentro de setup(), só é preciso abrir a conexão serial, junto com um pequeno atraso para deixar o módulo estabilizar antes da primeira leitura.
Dentro de loop(), duas funções da biblioteca fazem todo o trabalho: readCelsius() e readFahrenheit() iniciam cada uma uma nova conversão no chip e retornam o resultado na unidade pedida.
Os dois valores são então mostrados em uma única linha do Serial Monitor, seguidos de uma pausa de um segundo antes de o loop se repetir.
Essa pausa de um segundo é bem maior que os cerca de 220 milissegundos de que o MAX6675 precisa para concluir uma conversão internamente, então o Arduino nunca fica esperando por uma leitura que ainda não está pronta.