PT100 и Arduino

12-12-2020, 17:08 3 комментариев
Сегодня знакомим вас с процедурой подключения температурного датчика PT100 к Ардуино. Он имеет несомненные преимущества перед своими аналогами (применение в условиях высокой влажности, отсутствие необходимости задействования усилителя сигнала, лаконичность исполнения и др.). Кроме того, сенсор прост в настройке, термостабилен и точен в работе, доступен по вменяемой стоимости – все как мы любим.
И прежде чем поговорить о сборке проекта на базе этого термопреобразователя, обсудим его базовые параметры и особенности функционирования. PT100 - это резистивный датчик температуры (аббревиатура RTD). Это означает, что он содержит платиновый резистор, основанный на принципе измерения сопротивления (при условиях, когда меняется температура). Почему именно платина? Просто она имеет положительный коэффициент зависимости сопротивления от температуры.
Обратите внимание на технические характеристики устройства:
  • сопротивление: 100 Ом (при 0 °C);
  • класс защиты: двойная изоляция;
  • погрешность: +/- 0,3 - 0,8 °C;
  • длина проводов: 50см;
  • подключение кабеля: винтовое соединение PG-9;
  • диапазон рабочих температур: -40 °C … +370 °C;
  • размеры: 4х30 мм.
Настал черед разобрать подключение датчика температуры PT100 к Arduino. Для этой цели используем такие аппаратные компоненты как: плату расширения Ардуино UNO, сенсор Pt100, макетную плату и комплект соединительных проводов.
Вот что у нас получилось:


Заливаем скетч для программирования:

// значение 'другого' резистора
 
#define SERIESRESISTOR 10000
 
// к какому пину подключается термистор
 
#define THERMISTORPIN A0
 
void setup(void) {
 
Serial.begin(9600);
 
}
 
void loop(void) {
 
float reading;
 
reading = analogRead(THERMISTORPIN);
 
Serial.print("Analog reading ");
 
Serial.println(reading);
 
// преобразуем полученные значения в сопротивление
 
reading = (1023 / reading) - 1;
 
reading = SERIESRESISTOR / reading;
 
Serial.print("Thermistor resistance ");
 
Serial.println(reading);
 
delay(1000);
 
}

Полученные показания не будут являться супер-точными, их качество можно улучшить, немного доработав схему:


Прописываем иные коды прошивки:

// к какому аналоговому контакту мы подключены
 
#define THERMISTORPIN A0
 
// сколько показаний берется для определения среднего значения
 
// чем больше значений, тем дольше проводится калибровка,
 
// но и показания будут более точными
 
#define NUMSAMPLES 5
 
// емкость второго резистора в цепи
 
#define SERIESRESISTOR 10000
 
int samples[NUMSAMPLES];
 
void setup(void) {
 
Serial.begin(9600);
 
// подключите AREF к 3.3 В и используйте именно этот контакт для питания,
 
// так как он не так сильно "шумит"
 
analogReference(EXTERNAL);
 
}
 
void loop(void) {
 
uint8_t i;
 
float average;
 
// формируем вектор из N значений с небольшой задержкой между считыванием данных
 
for (i=0; i< NUMSAMPLES; i++) {
 
samples[i] = analogRead(THERMISTORPIN);
 
delay(10);
 
}
 
// определяем среднее значение в сформированном векторе
 
average = 0;
 
for (i=0; i< NUMSAMPLES; i++) {
 
average += samples[i];
 
}
 
average /= NUMSAMPLES;
 
Serial.print("Average analog reading ");
 
Serial.println(average);
 
// конвертируем значение в сопротивление
 
average = 1023 / average - 1;
 
average = SERIESRESISTOR / average;
 
Serial.print("Thermistor resistance ");
 
Serial.println(average);
 
delay(1000);
 
}

Если необходимо более корректное и сверхточное преобразование значений из Ом в Цельсия - советуем присмотреться к специализированной библиотеке pt100rtd. Скачать можно ТУТ: https://github.com/drhaney/pt100rtd

Резисторный термометр Pt100 - устройство функциональное. Если вы справитесь с небольшими математическими вычислениями и программным обеспечением –  останетесь довольны!
Желаем удачной компиляции!
Поделись в социальных сетях:
О авторе
Калугин Антон

Программист микроконтроллеров с 8-ми летним стажем, работал в таких компаниях как IBM, ASUS, Microsoft.

В комментариях с радостью отвечу на ваши вопросы.

Все статьи автора
Похожие новости

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

На повестке дня еще один увлекательный и практичный проект – подключение датчика дыма MQ-2 к Arduino. Почему увлекательный – нет надобности пояснять, а вот о...

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

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

В этой статье мы рассмотрим подключение ADS1115 к Ардуино. Речь идет о 16-битном аналого-цифровом преобразователе, оснащенном 4 входами непосредственно для...

3 комментария
  1. Goldln
    6 апреля 2023 10:05 Goldln

    Это не подключение PT100. Это подключение NTC .две большие разницы

    replyОтветить
  2. Андрей
    17 октября 2023 16:41 Андрей

    Ох уж эти интернеты. А ничего что на одно значение АЦП приходится порядка 10 Ом изменения сопротивления датчика? А это почти 30 градусов по таблице, ну допустим даже 20. Это нормально что датчик измеряет с дискретностью 20+ градусов? Лишь бы понаписать белиберду!

    replyОтветить
  3. Алексей
    1 декабря 2023 11:07 Алексей

    Андрей, может быть именно по этому Программист микроконтроллеров с 8-ми летним стажем, !!!РАБОТАЛ!!! в таких компаниях как IBM, ASUS, Microsoft.

    replyОтветить
Оставить комментарий