Подключение модуля термопары MAX6675 к Arduino
Если вы хотите измерять температуру с помощью Arduino, есть множество датчиков на выбор. Среди популярных вариантов — серия `DHTxx `_, `DS18B20 `_, `LM35 `_ и `TMP36 `_, каждый из которых обладает уникальными характеристиками и возможностями для ваших конкретных нужд.
Но что, если вы хотите измерить температуру чего-то настолько горячего, как вулкан (который может достигать более 1000°C или 1800°F), или чего-то сверххолодного, как жидкий азот (примерно −195,8°C или −320°F)? В таких случаях обычный датчик температуры либо расплавится, либо полностью замёрзнет.
Так как же измерять экстремально горячие или холодные объекты? С помощью хитроумной пары электрических проводов, называемой термопарой. Термопара — это тип датчика температуры, который использует термоэлектрический эффект для измерения температур в диапазоне от -330°F до +2460°F.
Это руководство покажет вам, как подключить модуль термопары MAX6675 — один из наиболее распространённых, недорогих, но точных модулей термопар — к Arduino. Но сначала давайте кратко вспомним основы термопар.
Основы термопар
Термопара состоит из двух разнородных металлических проводов (термин «разнородные» просто означает «различные»).
Металлические провода соединены вместе только в одном месте, обычно на кончике термопары, которое называется горячим спаем, измерительным спаем, точкой измерения или чувствительным спаем. Как следует из названия, этот спай подвергается воздействию интересующего нас источника тепла.
Противоположный конец металлических проводов называется холодным спаем и подключается к измерительному устройству. Обычно холодный спай не подвергается такому же уровню теплового воздействия, как горячий спай.
Термоэлектрический эффект
Все термопары работают одинаково — они генерируют небольшое напряжение при воздействии тепла.
Когда вы нагреваете кусок металла, тепло возбуждает электроны в металле, заставляя их колебаться. По мере нагрева металла всё больше электронов стремятся «диффундировать» и двигаться к более холодному концу.
Это делает горячий конец слегка положительно заряженным, а холодный — слегка отрицательно заряженным, создавая разность потенциалов. Это явление известно как термоэлектрический эффект или эффект Зеебека, названный в честь немецкого учёного Томаса Зеебека, открывшего это явление в 1821 году.
Принцип работы термопары
Термопара работает на основе движения электронов в металлических проводах, вызванного разницей температур между горячим и холодным спаями.
Если бы оба провода термопары были из одного металла, например, меди, электроны в обоих проводах перемещались бы от тепла и накапливались на холодных концах в равных количествах, что привело бы к отсутствию измеримой разности потенциалов.
Но, как вы помните, термопары состоят из двух разных типов металлической проволоки. Если два провода термопары из разных материалов, скажем, один из меди, а другой из железа, металлы будут проводить тепло по-разному, создавая различный температурный градиент. Это вызывает различное накопление электронов на холодных концах, что приводит к измеримой разности потенциалов.
Эта разность напряжений очень мала. Фактическое изменение напряжения на градус Цельсия ничтожно. Например, для термопары типа K изменение составляет около 41 мкВ/°C.
Выводы термопарных проводов
При воздействии тепла электроны в каждом из проводов термопары реагируют по-разному и перемещаются с разной скоростью.
Провод, в котором на холодном спае накапливается больше электронов, называется отрицательным выводом, а провод, в котором электронов накапливается меньше — положительным выводом.
Эта разница в заряде между положительным и отрицательным выводами может быть измерена и использована для определения температуры на горячем спае.
Термопара типа K
Существуют различные типы термопар — Type-J, Type-K, Type-E, Type-T и др., в зависимости от комбинации металлов или сплавов, используемых для двух проводов. Каждый тип термопары имеет свою характеристическую функцию, температурный диапазон, точность и область применения.
Однако наиболее широко используемой термопарой в промышленных приложениях является Type-K, потому что она предсказуемо работает в широком диапазоне температур (примерно от -328°F до +2300°F) и имеет чувствительность около 41 мкВ/°C. Она состоит из положительного провода из хромеля (сплав никель-хром) и отрицательного провода из алюмеля (сплав никель-алюминий).
Оцифровщик термопары
Чтобы термопара стала полезной, необходимо откалибровать её, проверяя при известных температурах и записывая генерируемые напряжения. Затем можно использовать формулу для расчёта температуры на основе измеренного напряжения.
Именно здесь вступают в игру микросхемы оцифровки термопар, такие как MAX6675. Эти интегральные схемы (ИС) предназначены для компенсации холодного спая и оцифровки сигнала, полученного от термопары.
Модуль термопары MAX6675
Модуль термопары MAX6675 обычно включает плату расширения MAX6675 и зонд термопары Type-K. Давайте узнаем о них подробнее.
Плата расширения MAX6675
В основе платы расширения лежит микросхема MAX6675 от Microchip — оцифровщик термопары Type-K с компенсацией холодного спая.
Плата расширения принимает стандартную термопару Type-K с одной стороны, оцифровывает измеренную температуру и отправляет данные через интерфейс SPI с другой стороны, интерпретируя и переводя данные для вашего удобства!
Микросхема MAX6675 включает 12-битный аналого-цифровой преобразователь (АЦП), что означает разрешение температуры до 0,25°C (12-битное разрешение).
MAX6675 может измерять температуры в диапазоне от 0°C до +1024°C с точностью ±3°C. Однако имейте в виду, что диапазон зависит от типа используемого зонда.
Помимо низкой стоимости, малых размеров и широкого диапазона, MAX6675 работает от +3,0V до +5,5V и потребляет примерно 700 мкА. Максимальный потребляемый ток составляет около 1,5 мА.
Зонд термопары Type-K
Зонд термопары, поставляемый с модулем, имеет длину примерно 18 дюймов и диапазон измерений от 0°C до 80°C.
Красный вывод зонда — это положительный провод из хромеля (сплав никель-хром), а синий — отрицательный провод из алюмеля (сплав никель-алюминий).
Зонд имеет изоляцию из стекловолокна — материала, известного своей способностью выдерживать высокие температуры и суровые условия. Это делает его подходящим для широкого спектра проектов.
Зонд заканчивается резьбовым соединением M6. Этот тип соединения позволяет прикрепить термопару к объекту, например, к радиатору, где её можно прикрутить или закрепить гайкой.
Технические характеристики
Вот технические характеристики:
Рабочее напряжение |
3.0 to 5.5V |
|---|---|
Интерфейс |
High-Speed SPI |
Потребляемый ток |
700µA (typ.), 1.5mA (max) |
Диапазон температур |
0 – 1024 °C (MAX6675)0 – 80 °C (поставляемый зонд) |
Точность |
±3 °C |
Разрешение |
12-Bit (0.25 °C) |
Время преобразования |
~170 ms |
Для получения дополнительной информации о микросхеме MAX6675 обратитесь к техническому описанию ниже.
Распиновка модуля MAX6675
Теперь давайте рассмотрим распиновку.
Входной разъём
VCC — это вывод питания. Подключите его к источнику питания напряжением от 3V до 5,5V.
GND — это вывод заземления.
SCK — вывод тактирования SPI.
CS — вывод выбора кристалла. Установите этот вывод в LOW и подайте тактовый сигнал на SCK для чтения результатов на SO. Установка в LOW немедленно останавливает любой процесс преобразования. Инициируйте новый процесс преобразования, установив вывод в HIGH.
SO — вывод последовательного вывода данных / MISO, для 12-битных данных, отправляемых модулем на Arduino. Последовательность из всех нулей означает, что показание термопары равно 0°C. Последовательность из всех единиц означает, что показание равно +1023,75°C.
Разъём термопары
На другой стороне модуля находится 2-контактная клеммная колодка для подключения зонда термопары Type-K.
– — сюда подключается провод из алюмеля (синий) термопары Type-K.
+ — сюда подключается провод из хромеля (красный) термопары Type-K.
Схема подключения модуля MAX6675 к Arduino
Давайте подключим модуль MAX6675 к Arduino. Подключение довольно простое.
Начните с подключения вывода VCC модуля к 5V на Arduino, а вывода GND — к земле.
Теперь подключите три цифровых вывода для использования в качестве интерфейса SPI. В нашем примере мы используем выводы 4, 5 и 6.
Наконец, подключите зонд термопары к модулю. Подключите красный провод (хромелевый) термопары к клемме „+“ модуля, а синий провод (алюмелевый) — к клемме „-„.
В следующей таблице перечислены подключения выводов:
| MAX6675 Module | Arduino | |
| VCC | 5V | |
| GND | GND | |
| SCK | 6 | |
| CS | 5 | |
| SO | 4 |
На изображении ниже показано, как собрать схему.
Поскольку модуль потребляет очень мало энергии (менее 1,5 мА), его можно питать от цифрового выходного вывода микроконтроллера. Если вы решите использовать этот метод и отключать питание MAX6675 между измерениями, следует подождать несколько секунд после включения питания, прежде чем пытаться выполнить измерение.
Установка библиотеки
Для работы с модулем MAX6675 существует отличная библиотека. Вам нужно скачать и установить её в Arduino IDE.
Для установки библиотеки перейдите в Sketch > Include Library > Manage Libraries… Подождите, пока Менеджер библиотек загрузит индекс и обновит список установленных библиотек.
Отфильтруйте поиск, введя „MAX6675“. Найдите библиотеку MAX6675 library от Adafruit. Нажмите на запись и выберите Install.
Пример кода Arduino
Теперь, когда всё подключено, давайте запустим простой скетч для быстрой проверки модуля MAX6675. Загрузите его на Arduino. Вы должны увидеть температуру окружающей среды, выводимую через последовательный интерфейс.
#include "max6675.h"
// Define the Arduino pins, the MAX6675 module is connected to
int SO_PIN = 4; // Serail Out (SO) pin
int CS_PIN = 5; // Chip Select (CS) pin
int SCK_PIN = 6; // Clock (SCK) pin
// Create an instance of the MAX6675 class with the specified pins
MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN);
void setup() {
Serial.begin(9600);
delay(500);
}
void loop() {
// Read the current temperature and print it to the serial monitor
// Read the temperature in Celsius
Serial.print("Temperature: ");
Serial.print(thermocouple.readCelsius());
Serial.print("\xC2\xB0"); // shows degree symbol
Serial.print("C | ");
// Read the temperature in Fahrenheit
Serial.print(thermocouple.readFahrenheit());
Serial.print("\xC2\xB0"); // shows degree symbol
Serial.println("F");
delay(1000);
}
После загрузки скетча откройте монитор последовательного порта, установив скорость передачи данных 9600 бод. Попробуйте приложить термопару к измеряемому материалу. Вы должны увидеть поток измеренных значений температуры.
Объяснение кода:
Скетч начинается с подключения заголовочного файла MAX6675. Он позволяет коду Arduino взаимодействовать с модулем MAX6675.
#include "max6675.h"
В той же глобальной области объявлены три целочисленные переменные SO_PIN, CS_PIN и SCK_PIN, которые указывают выводы Arduino, подключённые к выводам модуля: последовательному выходу (SO), выбору кристалла (CS) и тактированию (SCK).
int SO_PIN = 4; // Serail Out (SO) pin
int CS_PIN = 5; // Chip Select (CS) pin
int SCK_PIN = 6; // Clock (SCK) pin
Далее создаётся экземпляр класса MAX6675 с именем thermocouple. Именно через него мы будем считывать данные модуля. Он инициализирует объект термопары с заданными выводами SCK, CS и SO.
MAX6675 thermocouple(SCK_PIN, CS_PIN, SO_PIN);
Секция setup инициализирует последовательную связь с компьютером на скорости 9600 бод.
void setup() {
Serial.begin(9600);
delay(500);
}
В функции loop() мы считываем данные с термопары MAX6675 и выводим их в монитор последовательного порта. Для этого используются две функции библиотеки:
thermocouple.readCelsius(): возвращает температуру в градусах Цельсия.thermocouple.readFahrenheit(): возвращает температуру в градусах Фаренгейта.
Serial.print("Temperature: ");
Serial.print(thermocouple.readCelsius());
Serial.print("\xC2\xB0"); // shows degree symbol
Serial.print("C | ");
// Read the temperature in Fahrenheit
Serial.print(thermocouple.readFahrenheit());
Serial.print("\xC2\xB0"); // shows degree symbol
Serial.println("F");
Цикл продолжает выполняться бесконечно, многократно считывая и выводя температуру каждую секунду.