PT100 и Arduino
И прежде чем поговорить о сборке проекта на базе этого термопреобразователя, обсудим его базовые параметры и особенности функционирования. PT100 - это резистивный датчик температуры (аббревиатура RTD). Это означает, что он содержит платиновый резистор, основанный на принципе измерения сопротивления (при условиях, когда меняется температура). Почему именно платина? Просто она имеет положительный коэффициент зависимости сопротивления от температуры.
Обратите внимание на технические характеристики устройства:
- сопротивление: 100 Ом (при 0 °C);
- класс защиты: двойная изоляция;
- погрешность: +/- 0,3 - 0,8 °C;
- длина проводов: 50см;
- подключение кабеля: винтовое соединение PG-9;
- диапазон рабочих температур: -40 °C … +370 °C;
- размеры: 4х30 мм.
Вот что у нас получилось:
Заливаем скетч для программирования:
// значение 'другого' резистора
#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 - устройство функциональное. Если вы справитесь с небольшими математическими вычислениями и программным обеспечением – останетесь довольны!
Желаем удачной компиляции!
Сегодня поговорим о том, как воплотить в жизнь подключение FPM10A к Arduino, что это за модуль, где используется, каковы параметры его работы и т.д. Речь идет...
На повестке дня еще один увлекательный и практичный проект – подключение датчика дыма MQ-2 к Arduino. Почему увлекательный – нет надобности пояснять, а вот о...
В этой статье обсуждаем подключение датчика температуры DS18B20 к Arduino. О подобных устройствах мы говорили мало, но это не означает, что их редко...
Сегодня рассматриваем подключение VL53L0X к Ардуино, а также основные особенности этого устройства. Датчик выбран нами для обзора не случайно – он вполне...
В этой статье мы рассмотрим подключение ADS1115 к Ардуино. Речь идет о 16-битном аналого-цифровом преобразователе, оснащенном 4 входами непосредственно для...