Подключение термопары К-типа к Arduino используя модуль на MAX6675

разделы: Arduino , MAX6675 , дата: 3 сентября 2015г.

Подключение термопары К-типа(далее просто термопары) к Arduino довольно тривиально, но чтобы не было путаницы, решил написать краткий мануалЪ.

Термопары обычно применяются там где нужно измерить высокие температуры, у меня например она установлена в паяльнике, так же их ставят в бойлеры, газовые плиты с газ-контролем и т.д.

Работа термопары основана на термоэлектрическом эффекте, когда на спайке разнородных металлов образуется ЭДС, которая прямо пропорциональна температуре окружающей среды. Эту ЭДС возможно измерить, но она настолько маленькая, что так просто ее на вход микроконтроллера не подашь. На помощь приходит ИС от фирмы Maxim - MAX6675. Она измеряет ЭДС термопары и через SPI интерфейс выдает в виде готового числа. Документацию на микросхему можно найти например здесь: https://www.sparkfun.com/datasheets/IC/MAX6675.pdf

Документация содержит всего 8 страниц, предлагаю пробежаться глазами по основным моментам:

Напряжение питания может быть 3 или 5 вольта, я подключал через 3.3В, ничего, работало. Из интересного, заявлена защита от электростатики (ESD Protection) на два киловольта, т.е. щуп вполне можно трогать руками не опасаясь убить микросхему.

Устройство микросхемы. Видно, что входная ЭДС поступает на предварительный операционный усилитель, затем на основной, после чего сигнал идет на АЦП. Как бы все логично.

Формат, передачи данных. Видно что данные передаются пакетом по 16 бит. SPI интерфейс работает в одну сторону, т.о. получается, что задействовано три цифровые линии: SCK для тактирования, SC для управления, SO на передачу.

Для Arduino есть готовая библиотека для работы c MAX6675: https://github.com/adafruit/MAX6675-library

Установив ее и загрузив из примеров serialthermocouple, в начале скетча увидим предлагаемое подключение к цифровым пин'ам Arduino.

#include "max6675.h"

int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;

MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;

Т.е. автор предлагает просто воткнуть адаптер в Arduino используя два цифровых пина для питания микросхемы. Мне это показалось уже чересчур, но тут каждый решает как хочет. Подключение адаптера для этого скетча будет таким:

SCK <==> 6 пин
CS  <==> 5 пин
SO  <==> 4 пин

Результат работы:

Здесь я закомментировал работу пинов питания. Еще должен заметить, что температуру показывает завышенную. Тут или ошибка в софте или пресловутая китайская промышленность внесла свои поправки ;)

поделиться: