Подключение термопары к ардуино

Подключение термопары к ардуино

Общие сведения:

Trema-модуль Адаптер термопары с термопарой K-типа — позволяет измерять температуру объектов и окружающей среды. Адаптер позволяет измерять температуру в диапазоне от 0 до 800 °С (при температурах от 800 до 1023 °С точность показаний резко снижается), а корпус термопары рассчитан на температуру до 600 °C, значит и измерения необходимо производить в диапазоне от 0 до 600 °С. Адаптер можно использовать для измерения температуры различных нагревательных элементов: паяльники, печи, камины, бойлеры и т.д. Можно использовать для реализации газ-контроля в газовых плитах, горелках, бойлерах и т.д.

Видео:

Характеристики:

  • Напряжение питания модуля (Vcc): 3,0 . 5,5 В постоянного тока.
  • Ток потребляемый модулем: до 1,5 мА.
  • Уровень логической «1» на шине модуля: > 0,7 Vcc.
  • Уровень логического «0» на шине модуля:

Способ – 2 : Используя Trema Set Shield

Модуль можно подключить к любому из цифровых или аналоговых входов Trema Set Shield.

Способ – 3 : Используя проводной шлейф и Shield

Используя 3-х и 2-х проводной шлейфы, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.

Питание:

Входное напряжение питания от 3,3 или 5 В подаётся на выводы Vcc и GND.

Подробнее о датчике температуры:

В основу работы термопары заложен термоэлектрический эффект, это процесс возникновения ЭДС (электродвижущей силы) на спайке (соединении) разнородных металлов, интенсивность которой прямо пропорциональна температуре в месте этого соединения. Возникающая в термопаре ЭДС очень мала и её нельзя измерить используя аналоговые входы Arduino, но с этой задачей справляется чип max6675. Сигнал с термопары сначала поступает на операционные усилители чипа, а уже потом на 12 битный АЦП, далее данные выводятся по шине SPI в виде двух байт, старшие 12 бит которых являются числом температуры. Для преобразования 12 битного числа в °C его нужно разделить на 4, получается что температура выводится с разрешением 0,25 °C. Так как данные из чипа только читаются, без отправки данных чипу, то на его шине SPI отсутствует вывод MOSI. Немаловажным фактом является и то, что в чипе max6675 реализована функция компенсации холодного спая. Дело в том, что ЭДС возникает не только на спае металлов термопары, но и на соединении этих металлов с проводом, что без функции компенсации холодного спая влияло-бы на показания температуры.

Для работы с чипом max6675 рекомендуем воспользоваться одноимённой библиотекой max6675, которая реализует получение данных чипа по программной шине SPI, значит, для подключения можно использовать любые выводы Arduino.

Пример:

Вывод температуры в монитор последовательного порта в градусах Цельсия и Фаренгейта.

В библиотеке max6675 реализовано всего 2 функции: readCelsius() и readFahrenheit(). Они не принимают никаких параметров, а только возвращают температуру в виде числа типа double. Обе функции приведены в строках скетча 15 и 17.

При создании объекта нужно указать номера выводов Arduino к которым подключён модуль (вывод SCK , вывод CS , вывод DO), как это сделано в 5 строке скетча.

Термопара – это один из видов датчиков для измерения температуры.

В отличие от полупроводниковых датчиков температуры вроде TMP36, внутри термопары нет электроники. Они представляют из себя просто два переплетенных провода. Для измерений температуры используется свойство двух металлов, которые находятся в контакте генерировать небольшое но измеримое напряжение при увеличении температуры. Различные металлы генерируют различное напряжение. При этом их стоимость и чувствительность тоже отличается. Из-за этого существуют различные типы термопар. Основное преимущество термопар по сравнению с полупроводниковыми сенсорами температуры или термисторами – гораздо больший диапазон температур, которые можно измерять. Например, датчик температуры TMP36 может работать в диапазоне от -50 до 150°C. Обычные термопары работают в диапазоне от -200°C до 1350°C (тип K)! А некоторые типы термопар работают с температурами вплоть до 2300°C!

Читайте также:  Как подобрать конденсатор по напряжению

Термопары часто используются в системах отопления, вентиляции и кондиционирования: обогревателях, бойлерах, печах, и т.д. и т.п. В этой статье мы остановимся на термопарах типа K (один из самых распространенных типов термопар, который очень легко подключается).

Основная сложность при использовании термопар – это очень маленькие значения напряжения, которые снимаются с сенсора – около 50 мкВ на 1 °C (мкВ это 1/1000000 вольт). В принципе, с использованием стабильного источника питания, можно считать значения с термопары, но! У вас возникнут некоторые трудности из-за нелинейной зависимости сигнала (не всегда 50 мкВ соответствуют 1°C) и необходимости вводить коррекцию для низких температур. Поэтому настоятельно рекомендуется скинуть всю это "грязную работу" на отдельный чип. В этой статье мы рассмотрим работу с термопарой с использованием чипа MAX6675. При работе с этим чипом вам не понадобится проводить дополнительное аналогово-цифровое преобразование сигнала с термопары. На выходе с чипа мы будем получать качественный цифровой сигнал показаний температуры.

Основные технические характеристики

Это технические характеристики термопары типа K из магазина Adafruit:

  • Размер: длина – 1 метр (если необходимо, можно обрезать);
  • Стоимость в магазине Adafruit: около $10 (Китайские аналоги – Aliexpress или eBay -предлагают цену раза в два меньше – до 5 долларов);
  • Диапазон измеряемых температур: от-100°C до 500°C / от -150 до 900°;
  • Диапазон напряжения на выходе: от -6 до +20 мВ;
  • Точность измерений: +-2°C;
  • Нужен преобразователь вроде MAX31855;
  • Даташит термопары типа K;
  • Даташит MAX6675;
  • Даташит MAX31855.

Подключение термопары

Как мы уже писали выше, измерять напряжение непосредственно с термопары – непростая задача. Так что настоятельно рекомендуется использовать дополнительный чип. Один самых лучших вариантов – интерфейсная плата на базе чипа MAX6675 (или его новая версия – MAX31855).

Для начала надо определиться с кабелями термопары. Как вы помните, термопара изготавливаются с помощью сварки двух проводов. Чип считывает разницу в напряжениях между ними. Один – отрицательный (в типе K он изготавливается из алюмеля), а второй – положительный (то же, хромель). К счастью, провода имеют определенный цвет. В большинстве случаев алюмель красный, а хромель – желтый.

Подключите провода термопары к вашей интерфейсной плате:

Платы MAX6675 и MAX31855 не совместимы с термопарами, которым необходимо заземление.

Иногда встречаются термопары с неправильной маркировкой (цветами) проводов. Если после проверки работоспособности вы обнаружите, что температура понижается, вместо того, чтобы расти, попробуйте поменять местами красный и желтый кабели.

Читайте также:  Резка стекла роликовым стеклорезом

Использование термопары

Если вы используете интерфейсный чип AD595, можно просто подключить выходное напряжение к аналоговому входу на вашем Arduino (или другом микроконтроллере) и произвести дополнительную математическую операцию, чтобы преобразовать ваши 10 мВ/°C в числовое значение на выходе.

Если вы планируете использовать MAX6675/MAX31855 или их аналоги, подключение будет чуть сложнее. Первое: Vin и GND надо подключить к источнику питания 3-5 В. Оставшиеся три пина (data пины) подключаются к цифровым контактам Arduino:

  • CLK (clock – часы) – входа на MAX6675/MAX31855 (и выход на Arduino), который сигнализирует, когда надо передавать новый бит данных;
  • DO (data out – вывод данных) выход с MAX6675/MAX31855 (входа на Arduino), через который передается каждый бит данных;
  • CS (chip select – выбор чипа) вход на MAX6675/MAX31855 (выход с Arduino), который сообщает, когда настало время считать показания термопары и вывести больше данных.

В начале скетчей для Arduino надо инициализировать эти пины. В нашем конкретном примере DO подключается к цифровому пину digital 3 на Arduino, CS – к цифровому пину digital 4, а CLK подключается к пину 5.

Если вы используете MAX31855 v1.0 в зашумленных условиях, рекомендуется добавить конденсатор на 0.01 мкФ между контактами термопары (смотрите на рисунке выше).

MAX31855 не поддерживает заземленные термопары. Если сенсор заземляется, чип вернет вам ошибку.

Библиотека Arduino

Если у вас старая версия платы – MAX6675, скачать библиотеку для работы с Arduino можно здесь. После скачивания, распакуйте архив, переименуйте его в MAX6675 и установите в папку с вашими библиотеками для Arduino. Если вы впервые устанавливаете дополнительную библиотеку, рекомендуем ознакомиться с комплексным гайдом по установке дополнительных библиотек для Arduino.

Если более новая версия – MAX31855, скачать библиотеку можно здесь. После скачивания разархивируйте и переименуйте папку в Adafruit_MAX31855 и скопируйте в папку с вашими библиотеками.

Перезагрузите Arduino IDE, откройте скетч, который находится в File->Examples->MAX6675/Adafruit_MAX31855->serialthermocouple и загрузите его на ваш Arduino. После загрузки скетча на плату, откройте окно серийного монитора, в котором должен отображаться вектор-столбец текущей температуры в градусах по Цельсию и в градусах по Фаренгейту.

Как видите, пользоваться этой библиотекой очень просто. Для отображения температуры в градусах по Цельсию и по Фаренгейту используются функции readCelsius() и readFahrenheit() соответственно.

Добавляем внешний дисплей

Очень часто возникает необходимость выводить данные температуры с термопары на внешний дисплей. Для этого можно подключить к Arduino вот такой LCD экран.

В нашем случае SCL подключается к цифровому контакту digital 3, CS к цифровому пину digital 4, а DO – к цифровому пину digital 5. После того, как вы простестируете работоспособность, можете смело заменить пины (только не забудьте изменить соответствующие значения в скетче!).

Для подобной схемы в библиотеке предусмотрен пример. Его можно загрузить на Arduino из меню File->Examples->MAX31855>lcdthermocouple. Термопара с дополнительной интерфейсной платой подключается так же как это было описано выше. В результате вы получите значения температуры в градусах по Цельсию и в градусах по Фаренгейту на экране как это показано выше.

Читайте также:  Как украсить комнату на день рождения дочери

Часто задаваемые вопросы

Кажется, температура, которую показывает моя термопара меняется в противоположном направлении! Я повышаю температуру, а по показаниям она уменьшается.

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

Выходной сигнал с MAX31855 очень нестабильный и зашумленный. Когда я трогаю или перемещаю провода термопары, показания температуры буквально сходят с ума!

Платы MAX31855 очень чувствительные. Для того, чтобы исправить эту проблему, можно установить конденсатор на 0.001 или 0.01 мкФ между контактами термопары (например, установить конденсатор в терминале для подключения контактов термопары или припаять его снизу как это показано на фото ниже).

Мне кажется, что показания с термопары не точные. У меня несколько термопар и показания с них не одинаковые.

Термопары типа K не являются прецизионными (точными) сенсорами! Отклонения в показаниях наверняка будут. Эти отклонения можно компенсировать на уровне программы для Arduino или другого микроконтроллера. Как правило, термометры, в которых используется термопара, калибруются именно на уровне программного обеспечения.

Для точного измерения температуры можно использовать 1% термистор.

Как подключать несколько термопар одновременно?

Вы можете подключить столько плат MAX31855, сколько у вас пинов на Arduino. При этом объедините пины CLK и DO со всех плат и подключите к одному пину на Arduino, а контакты CS подключайте к отдельным пинам на Arduino.

После этого создайте новые функции для термопар в скетче Arduino IDE подобным образом:

Adafruit_MAX31855 thermocouple1(thermoCLK, thermoCS1, thermoDO);

Adafruit_MAX31855 thermocouple2(thermoCLK, thermoCS2, thermoDO);

Adafruit_MAX31855 thermocouple3(thermoCLK, thermoCS3, thermoDO);

Можно использовать одинаковые CS и CLK пины, но разные контакты DO

Adafruit_MAX31855 thermocouple1(thermoCLK, thermoCS, thermoDO1);

Adafruit_MAX31855 thermocouple2(thermoCLK, thermoCS, thermoDO2);

Adafruit_MAX31855 thermocouple3(thermoCLK, thermoCS, thermoDO3);

При очень высоких или очень низких температурах, измерения некорректные

Чип Maxim 31855 отлично справляется с линейными диапазонами термопар типа K, но в нем не предусмотрена коррекция нелинейности в показаниях, которая возникает в экстремумах (максимальных и минимальных значениях) измеряемого диапазона. Поэтому для этих участков необходимо предусмотреть отдельный алгоритм сглаживания. Скетчи, которые предлагаются для решения данный проблемы можно найти на форуме Adafruit можно найти здесь.

Примеры проектов с использованием термопары

Вам нужны идеи? Зацените эти проекты!

Термопара, подключенная к ATmega168 меняет цвет RGB светодиода при изменении температуры:

Автомат для обжарки кофейных зерен (сайт на английском языке):

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Термопара отличается от других датчиков температуры низкой стоимостью, скоростью измерения и большим диапазоном "горячих" температур, обычно от 0 до 400 ºC. Но напрямую к Ардуино ее не подключить, прийдется использовать преобразователь на базе чипа MAX6675.

Схема подключения

Для подачи питания и земли будем использовать 5й и 6й контакты на плате Arduino.

Ссылка на основную публикацию
Adblock detector