Какую статью добавить следующей?

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

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

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

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

 

Скетч

Для работы понадобится библиотека MAX6675

#include "max6675.h"

int thermoDO = 2;  //он же SO
int thermoCS = 3;
int thermoCLK = 4;  //он же SCK

MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);

int vccPin = 5;  //пин для питания
int gndPin = 6;  //пин для земли

void setup() {
  Serial.begin(9600);
  //активируем питание и землю
  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
  Serial.println("MAX6675 test");
  //ждем стабилизации чипа MAX
  delay(500);
}

void loop() {
  //Выводим показания в монитор порта
  Serial.print("C = ");
  Serial.print(thermocouple.readCelsius());
  Serial.print(";   F = ");
  Serial.println(thermocouple.readFahrenheit());
  delay(300);
}

 

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

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

Комментарии  
+4 # Alex 28.10.2016 21:27
А не важно какая Arduino плата будет, любая подойдет?
Ответить | Ответить с цитатой | Цитировать
+3 # Николай 28.10.2016 21:39
Любая конечно. Скоростей особых тут не требуется.
Ответить | Ответить с цитатой | Цитировать
+3 # Alex 29.10.2016 20:12
А можно при помощи данной библиотеки получить температуру еще и со встроенного термодатчика микросхемы?
Ответить | Ответить с цитатой | Цитировать
+7 # avex 14.12.2016 03:19
Везде в уроках вижу подключение к ардуинке одного шилда или прибора. Как организовать сразу всю нужную схему? Например, требуется поддерживать постоянную температуру (электронагреватель для переработки материала, до 400 С), при этом иметь возможность записывать в память разные температурные режимы (для разных материалов). Как реализовать такую схему? Термопару можно взять из вашего урока, а какой использовать подходящий терморегулятор? Можно ли вывести показания требуемые и реальные на LCD экран и сенсорный экран? Сможет ли ардуино с этим справиться?
Ответить | Ответить с цитатой | Цитировать
+2 # Андрей 20.11.2017 12:36
В се что вы оптсали подход под термостат или терморегулятор на ардуино.
Принцип прост создаем меню с.ячейками которые будут храниться в энергонезависемой памети
Три кнопки , одна для перемешения по меню а остальные для увел и умен значения
А дальше берем показание термопары и запмсываем ее в переменую , после сравниваем с переменой в активном меню если меньше то вкл если больше то выкл.
Ответить | Ответить с цитатой | Цитировать
+2 # Shaman 21.11.2017 13:51
Цитирую Андрей:
если меньше то вкл если больше то выкл.

С такой логикой температура будет гулять +- 20, а то и 120 градусов, в зависимости от инертности нагревателя.
Ответить | Ответить с цитатой | Цитировать
0 # Максим 25.12.2016 11:40
Скажите, а без разницы на какие ноги цеплять MAX6675? Можно на любые свободные?
Ответить | Ответить с цитатой | Цитировать
+2 # Shaman 30.01.2017 05:03
На любые. Можно даже на аналоговые
Ответить | Ответить с цитатой | Цитировать
+4 # Otto 02.03.2017 11:15
Спасибо за статью. Использовал статью, что бы быстро проверить датчик из Китая. По замеру температуры тела выдаёт 35,8-36,2°C, что достаточно точно. Замер температуры происходит не сразу, т.к. площадь соприкосновения достаточно маленькая и нужно время. Погрешность ~ на глаз +-1°C. Проверял нагрев паяльника до 201 градуса минуты 3, больше ждать не стал, понятно, что работает отлично!
Ответить | Ответить с цитатой | Цитировать
0 # максим 25.05.2017 16:22
Добавил к этому коду, код вывода на дисплей ssd1306
и теперь получаю вот это(фаренгейты я убрал):
MAX6675 test
C = 25.50
C = nan
C = 2043.25
C = nan
C = nan
C = 2039.75
C = nan
C = 2039.75
C = nan
C = nan
C = 2043.75
C = nan
C = 2042.75
C = 2042.75
C = nan
Ответить | Ответить с цитатой | Цитировать
+1 # Gigerin 04.02.2021 21:10
Да, вот такая же проблема сейчас. Вы нашли решение?
Ответить | Ответить с цитатой | Цитировать
+1 # sser 11.08.2017 16:05
В файлах библиотеки есть пример с использованием
дисплея LCD 16x2 .... :-)
Ответить | Ответить с цитатой | Цитировать
+1 # Андрей 22.11.2017 12:09
Цитирую Shaman:
Цитирую Андрей:
если меньше то вкл если больше то выкл.

С такой логикой температура будет гулять +- 20, а то и 120 градусов, в зависимости от инертности нагревателя.

Эта логика применяеться в промышленых моштабах
Описан сам принцип а не код программы
Темпиратура поддерживаеться в импульсном режиме через ШИМ
Ответить | Ответить с цитатой | Цитировать
+2 # Станислав 17.02.2018 08:43
Спасибо!
Все классно работает!
Ответить | Ответить с цитатой | Цитировать
+1 # НСТ 18.01.2019 23:39
Всем привет! Есть ли какие ограничения по обращению с модулем? Насколько пугающе предостережение о статике?
Ответить | Ответить с цитатой | Цитировать
+1 # Андрей 20.01.2019 03:46
а можно перевести этот модуль на термопару типа"J"(да я осознаю что подключить можно, и конвертировать значение с помощью мат.функции) при этом что бы точность особо не упала, и МК не был занят "лишними" вычислениями?!
Ответить | Ответить с цитатой | Цитировать
+1 # Илья Гришин 09.02.2020 16:02
На некоторых китайских поделках есть косяк - "-" термопары должен быть заземлён (соединён с gnd согласно дтш https://pdf1.alldatasheet.com/datasheet-pdf/view/73692/MAXIM/MAX6675.html ). А братья китайцы забыли это сделать. В итоге - показания бред. Заземлите "-" и будет счастье.

ПыСы не забываем что нумерация выводов плат может отличаться...
Ответить | Ответить с цитатой | Цитировать
0 # Армен 13.12.2020 22:27
Нужно сделать термореле 140-160 градусов. Готового решения за адекватную цену не нашёл. Вот решил сделать своими руками. С одной платой max6675 все получилось без проблем. Но как подключить 2, а лучше 4 max6675. Физически я понял что SO и SCK идут параллельно, а CS в отдельные пины. А как код прописать. Я профан если модно с примером.
Ответить | Ответить с цитатой | Цитировать
+1 # VMVarco 27.01.2021 04:36
Добавить строку аналогичную этой
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
Но с изменением названия и ножек, например:
MAX6675 thermocoupleNewOne(thermoCLK, thermoCS,12);

А данные соответственно считывать :
float x=thermocouple.readCelsius();// считываем в x данные с первой термопары
float y=thermocoupleNewOne.readCelsius();// считываем в у данные со второй термопары

Ну и дальше отталкиваетесь от того что надо, к разным устройствам ли подключать или фильтрацию делать на одном устройстве
Ответить | Ответить с цитатой | Цитировать
+2 # Алексей 10.10.2021 21:40
Господа.
Может кто знает как померить отрицательные температуры К термопарой Ардуиной и MAX6675 ?
Ответить | Ответить с цитатой | Цитировать
0 # физ 11.10.2021 10:19
Судя по даташиту к МАХ6675 он не поддерживает отрицательных значений. Также библиотека использует беззнаковый тип для хранения Цельсий. Придется использовать другие железки.
Ответить | Ответить с цитатой | Цитировать
Добавить комментарий


Защитный код
Обновить