Термопары: принцип работы, типы и подключение через MAX6675

Как устроена термопара, чем различаются её типы и как снять показания на Arduino с помощью модуля MAX6675.
Когда обычного датчика недостаточно
Аналоговых и цифровых датчиков температуры существует много, но у привычных моделей общий недостаток: узкий рабочий диапазон с верхней границей около +125 °C. Для большинства задач этого хватает, однако за пределами диапазона такой датчик бесполезен, а то и выходит из строя окончательно.
Термопары рассчитаны на куда более суровые условия: от -250 до +2500 °C. Их ставят в горелки, промышленные и паяльные фены, камины, дымовые и выхлопные трубы, а также в хот-энды 3D-принтеров. Датчик компактен, надёжен, прочен и герметичен, поэтому годится и для агрессивных сред. При тонкой калибровке погрешность удаётся довести до 0,01 °C.
Эффект Зеебека и сложности измерения
В основе термопары лежит эффект Зеебека: если спаять две проволоки из разных металлов и нагреть место спая, на свободных концах появляется разность потенциалов. Рабочий спай помещают в измеряемую среду, и на выводах возникает небольшая ЭДС.

Главная трудность связана не с самим датчиком, а со схемой измерителя. Слабый сигнал нужно усилить, очистить от помех, учесть нелинейность зависимости, скомпенсировать ЭДС холодного спая и только после этого перевести в число. Это непростая инженерная задача, поэтому на практике обычно берут готовый измеритель, который выполняет все эти этапы, включая оцифровку.


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

Точность у разных типов неодинакова. Чем шире диапазон, тем меньше напряжения приходится на каждый градус, а значит, сильнее сказываются шумы и помехи. Брать термопару с большим запасом по температуре не стоит: например, для контроля горения дров в камине достаточно типа L или K с пределом 800 °C. В 3D-принтерах чаще всего используют хромель-алюмелевые термопары типа K, обычно в корпусной неизолированной сборке, которая проще в монтаже и реже ломается.
Помимо состава, термопары различаются размерами, способом крепления и исполнением горячего спая: открытый, изолированный или неизолированный. При подключении важна полярность: ошибка ничего не испортит, но показаний не будет либо они окажутся неверными. Полярность определяют по цвету изоляции проводов, причём цвета зависят от типа термопары и производителя, так что при сомнениях нужна таблица цветовой кодировки.
Модуль MAX6675
Для большинства типов термопар выпускаются готовые измерители. Один из самых известных - микросхема MAX6675, объединяющая усилитель и АЦП с компенсацией холодного спая. Термопары нередко сразу продаются в комплекте с модулем на её основе.
| Преобразователь | АЦП с компенсацией холодного спая |
| Разрядность | 12 бит |
| Шаг измерения | 0,25 °C |
| Точность | 1,5 °C |
| Интерфейс | SPI |
| Напряжение питания | 3-5,5 В постоянного тока |
| Тип термопары | K (хромель-алюмелевая) |
| Диапазон температур | 0…+600 °C |
| Габариты модуля | 32 x 15 x 14 мм |
На плате пять контактов: GND и VCC для питания, SCK для тактовых импульсов, а также CS и SO - линии интерфейса SPI. Подойдёт как аппаратная, так и программная реализация SPI. Термопару подключают к модулю красным проводом к плюсу, синим к минусу.
Пример работы с Arduino
Библиотек для MAX6675 несколько; в примере используется «MAX6675 with hardware SPI», которая ставится через менеджер библиотек Arduino IDE. Скетч для платы UNO совсем короткий: создаётся объект датчика с указанием вывода CS (в примере это пин 10, но годится любой свободный), после чего раз в полсекунды в монитор порта на скорости 9600 выводятся значения, полученные методами readTempC() и readTempF().
Модуль отдаёт контроллеру уже готовую температуру в градусах Цельсия и Фаренгейта. На воздухе показания колеблются в пределах шага 0,25 °C и совпадают с комнатным термометром (31 °C в описанном опыте). При погружении датчика в стакан с тёплой водой хорошо виден рост от 31 до 70 °C и обратное падение после извлечения.
Ограничения и альтернативы
MAX6675 не измеряет температуру ниже 0 и выше 600 °C. Для более широких пределов берут другие измерители, например AD7793 с диапазоном от -250 до +850 °C; есть решения и для более экстремальных значений.
Обойтись без готового измерителя тоже можно. Для этого собирают усилитель с обвязкой и пишут программу пересчёта напряжения в градусы. Зависимость на разных поддиапазонах разная, так что пересчёт получается ступенчатым и требует работы со справочными данными.