Интеграция термопары с Arduino Portenta H7 через MAX6675
Компоненты и материалы
| Arduino Portenta H7 | ×1 |
| Тестовый аксессуар: термопара с адаптером | ×1 |
| SparkFun Thermocouple Breakout — MAX31855K | ×1 |
Программное обеспечение и сервисы
- CircuitMaker by Altium
О проекте
В этом уроке я показываю подключение высокотемпературной термопары к Arduino Portenta H7 с использованием термопарного ЦАП MAX6675. Два SPI-порта Portenta обеспечивают надёжный интерфейс, а MAX6675 даёт 12-битное разрешение до 1024 °C — идеально для промышленного мониторинга.
Что вы узнаете
- Как термопара генерирует напряжение и как оно меняется с температурой.
- Выбор и подключение MAX6675 к SPI-шине Portenta H7.
- Интерпретация данных датчика в Arduino IDE и визуализация в Serial Monitor.
Комплектующие
- Arduino Portenta H7
- Термопара типа K (через SparkFun MAX31855K breakout)
- Portenta Throne Board (кастомная PCB с двумя SPI-хедерами)
- Стандартные декуплирующие конденсаторы 0.1 мкФ
- 4-пиновый клеммный блок для установки датчика
Принцип работы термопары
Термопара состоит из двух разных металлов, сварённых на одном конце. При нагреве этого стыка возникает термоэлектрическое напряжение, пропорциональное разнице температур между горячим стыком и холодным концом. Поскольку напряжение крошечное — обычно единицы милливольт — его необходимо усилить и оцифровать перед считыванием микроконтроллером.
Термопары типа K, изготовленные из хромеля и алюмеля, — самый популярный выбор для промышленного измерения температуры. Они покрывают диапазон –200 °C … 1260 °C с типичной точностью ±1 °C при использовании подходящего преобразователя вроде MAX6675.
Аппаратные требования к датчику
Для надёжной работы MAX6675 должен быть запитан от той же шины 3.3 В, что и Portenta H7, а декуплирующий конденсатор 0.1 мкФ размещён максимально близко к пину VCC микросхемы. Провода термопары вставляются в выделенные клеммные блоки на breakout-плате с соблюдением полярности (красный = плюс).
Схема нашей Throne-платы
В Altium Designer я вывел два доступных SPI-интерфейса Portenta на разъёмы для MAX6675 на кастомной Throne-плате. Первый SPI (пины 38, 40, 42 на HD-разъёме 2) обслуживает первый MAX6675, второй (пины 33, 59, 61 на HD-разъёме 1) — второй IC. Проектирование следовало рекомендациям даташита MAX6675 по ширине дорожек и размещению декуплирующих конденсаторов.
Сборка простая — припаяйте MAX6675 и декуплирующие конденсаторы точной паяльницей, затем закрепите термопары в клеммных блоках.
Пины подключения датчика
При подключении термопары соблюдайте полярность производителя: красный провод — +, чёрный — –. Соедините датчик с клеммными блоками breakout-платы, затем свяжите пины VCC, GND, DO, CS, SCK breakout-а с соответствующими хедерами Portenta, как показано на схеме.
Программное обеспечение и тест
Arduino-скетч использует библиотеку Adafruit MAX6675 для SPI-коммуникации. После инициализации встроенного светодиода Portenta (PC_7) для визуальной обратной связи, программа каждую секунду выводит показания в °C и °F.
После загрузки скетча Serial Monitor показывает стабильный рост температуры при нагреве термопары горячей плитой — подтверждая успешную SPI-коммуникацию и точную конвертацию.
Это завершает проект. Непрерывные эксперименты с датчиками и универсальным I/O Portenta углубят ваши навыки встраиваемых систем. Удачного хакинга!
Код
- Untitled file
Untitled file (Arduino)
// Public domain example – quick MAX6675 demo
// Source: www.ladyada.net/learn/sensors/thermocouple
#include "max6675.h"
// SPI пины на Portenta H7 (скорректируйте при необходимости)
const uint8_t thermoCLK = 9;
const uint8_t thermoCS = 8;
const uint8_t thermoDO = 10;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
void setup() {
pinMode(PC_7, OUTPUT); // встроенный светодиод
digitalWrite(PC_7, HIGH);
delay(500);
digitalWrite(PC_7, LOW);
delay(500);
Serial.begin(9600);
Serial.println("MAX6675 test");
delay(500); // стабилизация чипа
}
void loop() {
float tempC = thermocouple.readCelsius();
float tempF = thermocouple.readFahrenheit();
Serial.print("C = ");
Serial.println(tempC);
Serial.print("F = ");
Serial.println(tempF);
// Мигание LED при температуре > 30 °C
digitalWrite(PC_7, tempC > 30 ? HIGH : LOW);
delay(1000);
}
Схемы
Полную схему и топологию PCB смотрите в прилагаемых PDF-файлах.
Производственный процесс
- Подключение нескольких DS18B20 1-Wire датчиков к Raspberry Pi для точного мониторинга температуры
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Датчик слежения за линией на Raspberry Pi — простой детектор двери/линии KY‑033
- Построение надёжного Temperature & Sensor API на Raspberry Pi с модулем GY‑91
- Создание многодатчиковой системы мониторинга температуры и света с Raspberry Pi и DS18B20
- Мастерство управления датчиками и исполнительными механизмами на Raspberry Pi: акселерометр, сервопривод и потоко…
- Создайте свой первый IoT-проект с Raspberry Pi, DHT11 и ThingSpeak
- Создайте автоматизированную аэропоническую систему с Raspberry Pi и датчиком влажности
- Проверка и калибровка датчика влажности для точных измерений
- Система домашней безопасности на Raspberry Pi: обнаружение движения PIR + камера с email-уведомлениями