Привет
Хочу сделать электронный градусник для контроля температуры тела с отправкой данных на сервер, чтобы составить график.
Попробовала DS18B20.
Показывает 35.2 - 35.26 при 36.6 (в сравнении с ртутным)
Какой ещё датчик можно использовать, с нужной мне точностью
Спойлер
#include <OneWire.h> // https://github.com/PaulStoffregen/OneWire
const byte DS18B20_PIN = 4; // пин датчика DS18b20
byte addr[8]; // адрес датчика температуры
float temperature = 0; // переменная, в которую записываются показания датчика
const uint32_t temp_interval = 3000; // интервал между обращениями к датчику
OneWire ds(DS18B20_PIN);
// функция обращения к датчику - считывание показаний и команда на следующую конвертацию данных
void getTemperature()
{
// считываем показания датчика после предыдущей конвертации
int temp;
ds.reset();
ds.select(addr);
ds.write(0xBE); // Считывание значения с датчика
temp = (ds.read() | ds.read() << 8); // Принимаем два байта температуры
temperature = (float)temp / 16.0;
// даем команду на конвертацию для следующего запроса
ds.reset();
ds.select(addr);
ds.write(0x44, 1);
}
void setup()
{
Serial.begin(9600);
// инициализация датчика
ds.reset(); // сброс шины
ds.write(0x7F); // установить точность измерения: 0,5гр = 1F; 0,25гр = 3F; 0,125гр = 5F; 0,0625гр = 7F;
ds.search(addr);
// команда на конвертацию для первого запроса температуры
ds.reset();
ds.select(addr);
ds.write(0x44, 1);
}
void loop()
{
static uint32_t timer = 0;
// опрос датчика; здесь вызывается один раз в три секунды; при слишком частом опросе микросхема датчика может вносить искажения в температуру за счет собственного разогрева
if (millis() - timer >= temp_interval)
{
timer = millis();
getTemperature();
Serial.println(temperature);
}
}
Лучше всего платиновый, удобнее Pt500 или Pt1000. Они меньше зависят от сопротивления проводов. К ним, конечно, нужны соотв. платы АЦП. А так это классика измерения температуры, ИМХО.
Не надо другой датчик. Этот вполне подойдёт. То что он показывает заниженную температуру это нормальный процесс. Любой датчик будет показывать так же. Ты же не держишь его полностью зажатым в подмышке постоянно? У него часть корпуса наруже и он показывает среднюю температуру между телом и воздухом, согласно процентам поверхности контактирующими с телом и с воздухом. Можно вторым датчиком измерять температуру воздуха и корректировать полученную температуру тела. В любом случае надо сделать несколько замеров при разной температуре воздуха и посмотреть как разница температуры тела и воздуха влияет на разницу показаний ртутного и электронного термометров и скорректировать показания электронного.
Можно накрыть теплоизоляционным материалом весь датчик и приклеить его подмышку, но мне кажется это будет неудобно. И нужно помнить, что разные точки поверхности тела имеют разную температуру и эта температура зависит от внешней температуры воздуха, физических нагрузок, а у женщин ещё и от фазы луны.
Если нашла место на теле, где комфортно размещается датчик, то просто компенсируй разницу температур в программе добавлением постоянного коэффициента. Этого будет достаточно для бытовой точности.
Это абсолютная точность. Т.е. точность с которой можно получить температуру с не калиброванного датчика. Если датчик откалибровать, максимально возможная точность равна разрешению АЦП - 0.0625°C
тут главное на точку аккупунктуры не попасть, там температура всегда занижена или наоборот найти такую, по которой будем диагностировать температуру )))
Кстати их более 680 с которыми доктора работают
Обоснуй это утверждение? Из твоей реплики следует что изменение с 8 бит на 12 бит оцифровки на точность не влияет. Ведь дискретность “к точности отношения не имеет”.
Можно убрать миллиметры, можно добавить микроны - что это изменит, если линейка на полсантиметра короче, чем на ней написано? А для китайских линеек такое случается ))
Так и с датчиком - это не поверенный прибор, он имеет заявленную погрешность до 0,5 градуса, и с каким разрешением он будет обрабатывать данные - никак не изменит измеренную с погрешностью температуру
Кроме дискретности имеет значение стабильность показаний. Можно прокалибровать датчик, но насколько долго он будет держать калибровку?.. Платиновые чем и известны что долго и надежно держат свои параметры.
Датчики фирмы Даллас DS18B20 чертовски удачны для применения: не нужен АЦП, можно утащить далеко на проводе и тп. Но точность у них, грубо, 1 градус - для погодных и средне-технических дел заглаза. Но для медицины где 36.6 погрешность их великовата. ИМХО.
А так мне они дико нравятся, как и другие штуки от Далласа, жалко что эта фирмешка закончилась, надо кстати где-то почитать их историю. Они придумали таблетки, что юзаются в домофонах, кстати.