Термистор и arduino
Содержание:
- Особенности выбора паяльника
- Arduino Library for MAX6675 and DS18B20
- Details for using the MAX6675
- 1Описание драйвера MAX7219
- Библиотека Arduino
- MAX6675 Measurement Accuracy
- Conclusions on the MAX6675
- Применение термопары с микроконтроллером
- Схема подключения
- Пример:
- Паяльная станция своими руками
- Пример:
- Детали для паяльной станции
- Interfacing Multiple Max6675 with Arduino Circuit Diagram:
- PART 2 K-Thermocouple temperature read
- Подключение термопары к микроконтроллеру
- Исходный код программы
- Часто задаваемые вопросы
Особенности выбора паяльника
Обратите внимание! Некоторые конструкции паяльника в качестве термодатчика имеют термопару, такие варианты не подходят, должен стоять термистор (сопротивление). Надо внимательно читать техническую документацию и при покупке проконсультироваться у продавцов
В разъеме паяльника 5 проводов:
- Два – подключаются к нагревательному элементу;
- Два – к термодатчику;
- Один контактирует с наконечником и выходит на заземление, одновременно проводник выполняет роль нейтрализации статического напряжения.
Определить назначение проводов можно мультиметром, измеряя сопротивление между проводами от термодатчика 45-60 Ом. Сопротивление нагревательного элемента несколько Ом. Таким способом можно отличить термопару от датчика и нагревающего элемента, ее сопротивление несколько Ом и при измерении, если поменять щупы местами, показания будут отличаться. Последние модели стандартизированы обычно: красный-белый – провода датчика, черный и синий – от нагревателя, зеленый – заземление. Ответная часть к разъему шнура паяльника поставляется в комплекте, при необходимости обе составляющие разъема продаются в магазинах радиодеталей.
Arduino Library for MAX6675 and DS18B20
MAX6675 Arduino Library
Library: MAX6675
Goto Arduino Menu: Sketch—>Include Library—>Library Manager.
Then enter MAX6675 in the search box which will show the result:
MAX6675 by Adafruit Version 1.0.0 — Click Install.
You can see that the library is installed by going to Menu:
Sketch—>Include Library, scroll down in the drop down box that appears and
you will see an entry labeled : MAX6675 Library.
Libraries for DS18B20 (temperature check)
There are two libraries:
- LIbrary: OneWire (wire.h).
- Library: MAX31850 Dallas Temp (DallasTemperature.h).
Install/check installation as described for the MAX6675 library.
MAX6675 Arduino Example code
The following code outputs the thermocouple temperature followed by the
DS18B20 temperature. If you don’t have the latter, then comment out the DS18B20
code.
Copy Sketch
Serial Plot
Plotting the output of the thermocouple over time is very easy using the
Arduino IDE as there is a built in tool that creates a strip chart that shows
the last ~15 minutes of data. To use it you need to output the temperature as a
number with no added text around it.The definition «ThermoOnly» does this for
you — uncomment it to allow this mode of operation.
By allowing the definition «ThermoOnly» to activate (un-commenting the
following line of code):
#define ThermoOnly 1
…then recompile. The sketch will output the temperature value from the
thermocouple (and no other text).
Activate the plotter from Menu—>Tools—>Serial Plotter to view the
output.
Details for using the MAX6675
The chip makes it easy to obtain temperature readings over a huge
temperature range 0°C to 1024°C and employs the most popular thermocouple
(Type K). You can also detect small temperature changes as small as 0.25°C
(the 12 bit resolution ADC gives this ability [ 1024.0/pow(2,12) = 0.25°C].
The chip also makes interfacing trivially simple because it has built in
ADC, CJC and AMP and digital serial output (SPI).
1Описание драйвера MAX7219
Микросхема MAX7219 – это компактный драйвер дисплея, который позволяет управлять 7-сегментными индикаторами разрядностью до 8 цифр или 64 отдельными светодиодами. Сам драйвер управляется по последовательному интерфейсу (чаще всего SPI) с помощью микроконтроллера, например, Arduino. MAX7219 позволяет изменять состояние каждого сегмента или светодиода без обновления состояния всех остальных выводов. А также он позволяет создавать цепочку из аналогичных драйверов, чтобы управлять большим количеством подключённых светодиодов.
Микросхема MAX7219 выполнена в 24-выводном корпусе. Назначение и расположение выводов показаны ниже:
Конфигурация выводов и типичная схема подключения драйвера MAX7219
На рисунке справа представлена типичная схема подключения MAX7219. Как видно, драйвер управляется микроконтроллером по последовательному интерфейсу. К выходу сегментов и выходу разрядов подключён дисплей либо светодиодная матрица.
Название вывода | Назначение |
---|---|
DIN | Вход последовательных данных для управления драйвером. |
DOUT | Выход последовательных данных для соединения в цепочку со следующим драйвером. |
DIG 0…DIG 7 | Выходы управления разрядами 8-символьного сегментного дисплея. |
SEG A…SEG G, DP | Выходы управления отдельными сегментами и десятичной точкой. |
CLK | Вход тактовой частоты последовательного интерфейса, до 10 МГц. |
LOAD | Вход загрузки данных. Данные «защёлкиваются» по фронту отрицательного импульса. |
ISET | Регулировка максимального потребляемого тока на один сегмент (следовательно, яркости). |
V+ | Питание, 5±0.5 В. |
GND | Земля. |
Драйвер MAX7219 позволяет регулировать яркость подключённых светодиодов. Причём можно сделать это аппаратно, подключив к ножке ISET микросхемы резистор, или программно, записав нужное значение в соответствующий регистр. Последний вариант мне кажется намного удобнее, т.к. позволяет управлять яркостью в процессе работы устройства.
Из существенных плюсов данного драйвера то, что не нужно постоянно обновлять состояние подключённых светодиодов: он сохраняет последнее заданное состояние, пока оно не будет произвольно изменено. Это также хорошо тем, что светодиоды не мерцают из-за постоянного обновления.
Библиотека Arduino
Если у вас старая версия платы — MAX6675, скачать библиотеку для работы с Arduino можно здесь. После скачивания, распакуйте архив, переименуйте его в MAX6675 и установите в папку с вашими библиотеками для Arduino. Если вы впервые устанавливаете дополнительную библиотеку, рекомендуем ознакомиться с комплексным гайдом по установке дополнительных библиотек для Arduino.
Если более новая версия — MAX31855, скачать библиотеку можно здесь. После скачивания разархивируйте и переименуйте папку в Adafruit_MAX31855 и скопируйте в папку с вашими библиотеками.
Перезагрузите Arduino IDE, откройте скетч, который находится в File->Examples->MAX6675/Adafruit_MAX31855->serialthermocouple и загрузите его на ваш Arduino. После загрузки скетча на плату, откройте окно серийного монитора, в котором должен отображаться вектор-столбец текущей температуры в градусах по Цельсию и в градусах по Фаренгейту.
Как видите, пользоваться этой библиотекой очень просто. Для отображения температуры в градусах по Цельсию и по Фаренгейту используются функции readCelsius() и readFahrenheit() соответственно.
MAX6675 Measurement Accuracy
The basic chip error contribution::
Temperature Range | Error (PSU 3V3) | Error (PSU 5V) | % err (3V3) | Additional Coldcomp error ±3.00°C |
---|---|---|---|---|
0 ~ 45°C | ±1.00°C | ±1.25°C | 1°C err | 4°C err |
0°C ~ +700°C | ±2.00°C | ±2.25°C | @700 ~ 0.29% err | @700 ~ 0.7% err |
+700°C ~ 1024°C | ±4.25°C | ±4.75°C | @700 ~ 0.7% err,@1000 ~ 0.4% err | @700 ~ 1.0% err,@1000 ~ 0.7% err |
The only disadvantage of the chip is its accuracy relying on a transistor
based temperature measurement that is accurate to only ±3.00°C over the
temperature range of the chip (-20°C ~ 85°C). This error will be one of the
principal contributors to the total error budget.
However thermocouples are not
that accurate anyway (specified to 2.2°C) and then there is the error in ADC
reading anything from 1°C to 4.75°C (depending on temperature range and chip
supply voltage). So you could have an error of 3+4.75+2.2 ~ 11°C. Remember
that this is not necessarily too bad as it will give a percentage error of that
is still tiny in comparison to the large temperature that is being measured.
However at room temperature the transistor CJC will probably give minimal
error e.g. 0°C error (not tested by me just a guesstumate) and below 700°C
the error is 2.25°C + thermocouple error of 2.2°C so you could say the error
will be 4.47°C but this depends on its usage.
Note: There are techniques to make far more accurate readings
with type K thermocouples (calibration and design) but it is beyond the scope
of this discussion — since it requires extreme design techniques i.e. a lot of
time and thought to get right.
Conclusions on the MAX6675
The 6675 is a linear device that amplifies the thermoelectric voltage
~41uV/°C by a constant and digitises the result. The output from the the
amplifier is fed into a 12 bit ADC resulting in a resolution of 0.25°C and its
main advantage is that it does this job inside the chip (amplifying an
extremely low signal into a usable voltage that is turned into a digital
output).
There are two minor drawbacks:
- The MAX6675 can only operate over the temperature range of 0°C to
1024°C when in fact the Type K thermocouple is capable of operating over
the range -200°C to 1300°C! - The accuracy of the reading is dependent on the charactristics of the
Type K thermocouple (which is not linear over the range 0°C to 1024°C) so
the error details quoted above are a direct result of the thermocouple
non-linearity.
If you only want to operate over the temperature range 0°C to 1024°C then
the MAX6675 is a good choice (if you accept the error levels) but you can not
use the chip outside this temperature range.
Применение термопары с микроконтроллером
Одной из популярных схем для Ардуино стали «умные» измерители нагрева, способные не только демонстрировать температуру, но и производить различные действия в зависимости от ее текущих значений. Измерения в пределах от −50 до 150 ℃ проводятся достаточно несложным датчиком соединяемым с микроконтроллером. Другое дело, если речь идет об очень высоких или сверхнизких значениях характеристики от −273 до 400 ℃ или выше. Здесь потребуется подключить термопару к Ардуино.
Нишей потребления связки контроллера и термодатчика могут стать паяльники, печи, холодильные установки сверхнизких температур, детекторы открытого пламени. Все те сферы, где требуется точно знать критические уровни нагрева или охлаждения.
Схема подключения
Рассмотренная схема — пример, демонстрирующий получения значений температуры для последующей обработки. Используемые компоненты:
- Arduino UNO3
- Резистор 3.3 kOm
- Тонкопленочный термистор NTC MF5B SMD 100K
Резистор R1 можно заменить любым иным, с последующим указанием его номинала в скетче. Для сохранения точности измерений не рекомендуется ставить элемент с сопротивлением выше 10 кОм. Дополнительно, с целью увеличения корректности показаний, можно разместить конденсатор между термистором и землей — он будет убирать помехи из линии. Кроме того, в плане точности измерений нужно помнить, что постоянный резистор R1, несмотря на свою маркировку, имеет приблизительно равное указанному на корпусе сопротивление. Его желательно замерить точно и внести в соответствующие корректные значения в поле скетча (R_NOMINAL примера).
Пример:
Вывод температуры в монитор последовательного порта в градусах Цельсия и Фаренгейта.
В библиотеке 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. При работе с этим чипом вам не понадобится проводить дополнительное аналогово-цифровое преобразование сигнала с термопары. На выходе с чипа мы будем получать качественный цифровой сигнал показаний температуры.
Паяльная станция своими руками
Пайка электронных плат требует соблюдения определенного уровня температуры для различных деталей, ведь недостаток нагрева приведет к плохому соединению припоя, равно, как и чрезмерный нагрев вызовет преждевременное окисление олова и такое же низкое качество пайки. Помимо этого на перегретой плате могут отслаиваться дорожки, обугливаться целые участки. Если раньше для работы с мелкими и крупными деталями, лужением относительно большой площади радиолюбители использовали набор из нескольких паяльников, сегодня эта функция решается одной паяльной установкой. Но из-за высокой стоимости такого устройства не все могут позволить себе ее приобретение, поэтому мы расскажем, как собирается паяльная станция своими руками.
Пример:
Вывод температуры в монитор последовательного порта в градусах Цельсия и Фаренгейта.
В библиотеке max6675 реализовано всего 2 функции: readCelsius() и readFahrenheit(). Они не принимают никаких параметров, а только возвращают температуру в виде числа типа double. Обе функции приведены в строках скетча 15 и 17.
При создании объекта нужно указать номера выводов Arduino к которым подключён модуль (вывод SCK , вывод CS , вывод DO), как это сделано в 5 строке скетча.
Подключение термопары К-типа(далее просто термопары) к Arduino довольно тривиально, но чтобы не было путаницы, решил написать краткий мануалЪ.
Термопары обычно применяются там где нужно измерить высокие температуры, у меня например она установлена в паяльнике, так же их ставят в бойлеры, газовые плиты с газ-контролем и т.д.
Работа термопары основана на термоэлектрическом эффекте, когда на спайке разнородных металлов образуется ЭДС, которая прямо пропорциональна температуре окружающей среды. Эту ЭДС возможно измерить, но она настолько маленькая, что так просто ее на вход микроконтроллера не подашь. На помощь приходит ИС от фирмы Maxim — MAX6675. Она измеряет ЭДС термопары и через SPI интерфейс выдает в виде готового числа. Документацию на микросхему можно найти например здесь: https://www.sparkfun.com/datasheets/IC/MAX6675.pdf
Документация содержит всего 8 страниц, предлагаю пробежаться глазами по основным моментам:
Напряжение питания может быть 3 или 5 вольта, я подключал через 3.3В, ничего, работало. Из интересного, заявлена защита от электростатики (ESD Protection) на два киловольта, т.е. щуп вполне можно трогать руками не опасаясь убить микросхему.
Устройство микросхемы. Видно, что входная ЭДС поступает на предварительный операционный усилитель, затем на основной, после чего сигнал идет на АЦП. Как бы все логично.
Формат, передачи данных. Видно что данные передаются пакетом по 16 бит. SPI интерфейс работает в одну сторону, т.о. получается, что задействовано три цифровые линии: SCK для тактирования, SC для управления, SO на передачу.
Для Arduino есть готовая библиотека для работы c MAX6675: https://github.com/adafruit/MAX6675-library
Установив ее и загрузив из примеров serialthermocouple, в начале скетча увидим предлагаемое подключение к цифровым пин’ам Arduino.
Т.е. автор предлагает просто воткнуть адаптер в Arduino используя два цифровых пина для питания микросхемы. Мне это показалось уже чересчур, но тут каждый решает как хочет. Подключение адаптера для этого скетча будет таким:
Здесь я закомментировал работу пинов питания. Еще должен заметить, что температуру показывает завышенную. Тут или ошибка в софте или пресловутая китайская промышленность внесла свои поправки
Детали для паяльной станции
Паяльная станция — принцип работы и разновидности
Паяльная станция на ардуино собирается с использованием следующих радиодеталей:
- Плата с микроконтроллером модели arduino UNO R 3 на основе модуля ATmega328P;
- 3 энкодера для регулировки температуры жала паяльника, горячего воздуха и оборотов моторчика фена;
- Импульсный блок питания на 24 Вольта с выходной силой тока 3 Ампера;
- Понижающий преобразователь силы тока LM2596S;
- Разъемы GX16-5 и GX16-8;
- Паяльник от паяльных станций типа 852D +, 853D, 878AD, 937D;
- Фен с насадками для формирования струй разогретого воздуха различной толщины;
- Небольшой жидкокристаллический черно-белый или светодиодный дисплей.
Для программирования платы необходим специальный дата-кабель.
Interfacing Multiple Max6675 with Arduino Circuit Diagram:
As you can see the circuit diagram is very simple. Let’s start with the Oled display module. The ground and VCC pins of the Oled display module are connected with the Arduino’s ground and 5 volts. The SCL pin of the Oled display module is connected with the analog pin A5 and the SDA pin is connected with the analog pin A4 of the Arduino.
The ground and VCC pins of all the Max6675 boards are connected with the Arduino’s ground and 5 volts. The SCK, CS, and SO pins of the first temperature sensor module are connected with the Arduino’s pins 6, 5, and 4. The SCK, CS, and SO pins of the second temperature sensor module are connected with the Arduino’s pins 8, 9, and 10. While, The SCK, CS, and SO pins of the third MAX6675 temperature sensor module are connected with the Arduino’s pins 13, 12, and 11.
PART 2 K-Thermocouple temperature read
So, let’s start building this project. The first thing we will do, is see how to read the real temperature. Below we can see a K type thermocouple, and the MAX 66 75 breakout module. This will amplify and compensate the voltage created by the thermocouple. It has an SPI communication so we’ll have to connect these pins to the Arduino SPI port.
Use the connections below and let’s test it out. On a breadboard I connect the MAX 66 75 and the thermocouple. Be careful, the thermocouple has polarity so connect positive to positive and negative to negative. Connect the SPI pins to the Arduino and also supply 5V and GND.
Download schematic here:
Подключение термопары к микроконтроллеру
Определение нагрева с помощью термопары требует обязательного получения информации о температуре холодной части конструкции. Последние данные используются для расчета показаний. Соответственно к Ардуино подключается не только сама термопара, но и датчик определяющий текущее состояние нагрева одного из ее концов.
Так как вырабатываемый ток связкой проводников низок, в обязательном порядке требуется усилитель, для соединения их с микроконтроллером. Нужна и подстройка самодельных устройств под используемые материалы в спайке и их длину. Облегчается ситуация при использовании специализированных АЦП, наподобие MAX6675 или MAX31855. Устройства преобразуют характеристики тока, полученные от термопары, в числовые значения, которые уже и передаются в Ардуино посредством пинов данных. Если использовать только прямое повышение уровня тока иными схемами, — соединение усилителя производится к аналоговым входам микроконтроллера. К сожалению, градация последних составляет всего 1024 уровня, что непосредственно влияет на точность получаемых показаний.
Исходный код программы
Полный код программы представлен в конце статьи, здесь же сначала рассмотрим его наиболее важные фрагменты.
Для выполнения математических операций в программе мы должны подключить заголовочный файл библиотеки “#include <math.h>”, а для работы с ЖК дисплеем – подключить библиотеку “#include <LiquidCrystal.h>». Далее в функции setup() мы должны инициализировать ЖК дисплей.
Arduino
Void setup(){
lcd.begin(16,2);
lcd.clear();
}
1 |
Voidsetup(){ lcd.begin(16,2); lcd.clear(); } |
Значение температуры мы будем рассчитывать в программе с помощью рассмотренного выше уравнения Стейнхарта-Харта.
Arduino
float a = 1.009249522e-03, b = 2.378405444e-04, c = 2.019202697e-07;
float T,logRt,Tf,Tc;
float Thermistor(int Vo) {
logRt = log(10000.0*((1024.0/Vo-1)));
T = (1.0 / (A + B*logRt + C*logRt*logRt*logRt));// рассчитываем значение температуры в кельвинах по формуле Stein-Hart
Tc = T — 273.15; // переводим температуру из кельвинов в градусы Цельсия
Tf = (Tc * 1.8) + 32.0; // переводим температуру в шкалу Фаренгейта
return T;
}
1 |
floata=1.009249522e-03,b=2.378405444e-04,c=2.019202697e-07; floatT,logRt,Tf,Tc; floatThermistor(intVo){ logRt=log(10000.0*((1024.0Vo-1))); T=(1.0(A+B*logRt+C*logRt*logRt*logRt));// рассчитываем значение температуры в кельвинах по формуле Stein-Hart Tc=T-273.15;// переводим температуру из кельвинов в градусы Цельсия Tf=(Tc*1.8)+32.0;// переводим температуру в шкалу Фаренгейта returnT; } |
Также в программе мы считываем значение с аналогового входа платы Arduino.
Arduino
lcd.print((Thermistor(analogRead(0))));
1 | lcd.print((Thermistor(analogRead()))); |
Внешний вид работы нашего проекта показан на следующем рисунке – на ЖК дисплее выводятся значения температуры в кельвинах, градусах Цельсия и по шкале Фаренгейта.
Схему можно запитать по кабелю USB или использовать адаптер на 12 В.
Далее представлен полный текст программы.
Arduino
#include <math.h>
#include «LiquidCrystal.h»
LiquidCrystal lcd(44,46,40,52,50,48);
float A = 1.009249522e-03, B = 2.378405444e-04, C = 2.019202697e-07;
float T,logRt,Tf,Tc;
float Thermistor(int Vo) { // функция для расчета значения температуры
logRt = log(10000.0*((1024.0/Vo-1)));
T = (1.0 / (A + B*logRt + C*logRt*logRt*logRt)); // рассчитываем значение температуры в кельвинах по формуле Стейнхарта-Харта
Tc = T — 273.15; // переводим температуру из кельвинов в градусы
Tf = (Tc * 1.8) + 32.0; // переводим температуру в шкалу Фаренгейта
return T;
}
void setup(){
lcd.begin(16,2);
lcd.clear();
}
void loop()
{
lcd.setCursor(0,0);
lcd.print(«Temp:»);
lcd.print((Thermistor(analogRead(0))));
lcd.print(«k «);
lcd.setCursor(0,1);
lcd.print((Tc));
lcd.print(» C ;»);
lcd.setCursor(9,1);
lcd.print((Tf));
lcd.print(» F»);
delay(800);
}
1 |
#include <math.h> LiquidCrystallcd(44,46,40,52,50,48); floatA=1.009249522e-03,B=2.378405444e-04,C=2.019202697e-07; floatT,logRt,Tf,Tc; floatThermistor(intVo){// функция для расчета значения температуры logRt=log(10000.0*((1024.0Vo-1))); T=(1.0(A+B*logRt+C*logRt*logRt*logRt));// рассчитываем значение температуры в кельвинах по формуле Стейнхарта-Харта Tc=T-273.15;// переводим температуру из кельвинов в градусы Tf=(Tc*1.8)+32.0;// переводим температуру в шкалу Фаренгейта returnT; } voidsetup(){ lcd.begin(16,2); lcd.clear(); } voidloop() { lcd.setCursor(,); lcd.print(«Temp:»); lcd.print((Thermistor(analogRead()))); lcd.print(«k «); lcd.setCursor(,1); lcd.print((Tc)); lcd.print(» C ;»); lcd.setCursor(9,1); lcd.print((Tf)); lcd.print(» F»); delay(800); } |
Часто задаваемые вопросы
Кажется, температура, которую показывает моя термопара меняется в противоположном направлении! Я повышаю температуру, а по показаниям она уменьшается.
Скорее всего это случилось из-за того, что вы неправильно подключили контакты термопары или они неправильно маркированы. Попробуйте поменять местами красный и оранжевый провода термопары.
Выходной сигнал с 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 можно найти здесь.