Сравнение точности датчиков температуры: внешняя среда и тело человека
Компоненты и материалы
| Компонент | Количество |
|---|---|
| DS18B20 (цифровой, 1-Wire) | 1 |
| DHT11 (температура и влажность, 3 пина) | 1 |
| Резистор 10 кОм | 3 |
| Перемычки | 10 |
| Влагозащищенный DS18B20 | 1 |
| Крокодиловые зажимы | 3 |
| USB-A — Mini-USB кабель | 1 |
| Arduino UNO | 1 |
| BBC micro:bit | 1 |
Приложения и сервисы
- Arduino IDE
- Платформа Vittascience для micro:bit
О проекте
Разные датчики дают разную точность. Для медицинских проектов критична точность измерения температуры тела и среды. Сравниваю популярные датчики и встроенный датчик micro:bit.
Использовались: DS18B20, влагозащищенный DS18B20, AM2302 (DHT22), Arduino, micro:bit и обычные термометры.


Измерение температуры комнаты (10 экспериментов)
Эталонный комнатный термометр: 21°C.
- micro:bit — 27°C (крупная погрешность, нагревается от процессора).
- Все три датчика на Arduino показали близкие значения, но AM2302 (DHT22) — самый точный.



Измерение температуры тела (в руке, 10 экспериментов)
Эталонный термометр: 32.2°C.
- micro:bit — 34°C
- Влагозащищенный DS18B20 — 32.40°C (лучший результат)
- Обычный DS18B20 — 31.50°C
- AM2302 — 33°C




Вывод: Для измерения температуры тела лучше всего подходит влагозащищенный DS18B20. Для комнатной температуры — AM2302 (DHT22). Встроенный датчик micro:bit непригоден для точных измерений.
Код
Arduino (C/C++)
#include <SoftwareSerial.h>
#include <cactus_io_AM2302.h>
#define AM2302_PIN 3
#include "cactus_io_DS18B20.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
AM2302 dht(AM2302_PIN);
int DS18B20_Pin = 4;
DS18B20 ds(DS18B20_Pin);
void setup() {
Serial.begin(9600);
ds.readSensor();
dht.begin();
sensors.begin();
Serial.println("18B20 | AM2302 | DS18B20");
Serial.println("Temp (C) | Temp (C) | Temp (C)");
}
void loop() {
ds.readSensor();
sensors.requestTemperatures();
dht.readTemperature();
if (isnan(dht.humidity) || isnan(dht.temperature_C)) return;
Serial.print(sensors.getTempCByIndex(0)); Serial.print(" ");
Serial.print(dht.temperature_C); Serial.print(" ");
Serial.println(ds.getTemperature_C());
delay(1500);
}
micro:bit (Python)
from microbit import *
uart.init(baudrate=9600, bits=8, parity=None, stop=1, tx=pin8, rx=pin14)
while True:
if button_a.is_pressed():
uart.write(str(temperature()))
Схемы

Производственный процесс
- Подключение нескольких DS18B20 1-Wire датчиков к Raspberry Pi для точного мониторинга температуры
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Интеграция барометрического датчика BMP180 с Raspberry Pi по I2C
- Подключение цифрового термометра DS18B20 1-Wire к Raspberry Pi — пошаговое руководство
- Чтение линейного Холловского датчика с Raspberry Pi: руководство по Java и особенности ADC0832
- Создание многодатчиковой системы мониторинга температуры и света с Raspberry Pi и DS18B20
- Тестирование датчика температуры DS18B20 на Raspberry Pi
- Мастерство управления датчиками и исполнительными механизмами на Raspberry Pi: акселерометр, сервопривод и потоко…
- Создайте автоматизированную аэропоническую систему с Raspberry Pi и датчиком влажности
- Проверка и калибровка датчика влажности для точных измерений