Характеристики цифрового термодатчика maxim DS18B20
Диапазон измерения температуры от -55 до + 125 °C;
Погрешность измерения температуры 0,5 °C (для температур от -10 до +85 °C);
Напряжение питания термодатчика от 3,0 В до 5,5 В;
Потребляемый ток в покое 750 нА;
Потребляемый ток при запросе данных 1 мА;
К одному порту подключается до 127 термодатчиков;
Протокол передачи данных — 1-Wire;
Время измерения при 12 бит — 750 мс;
Подтягивающее сопротивление — 4,7 кОм.
Маркировка температурного датчика DALLAS 18B20 2012C4 +887AB (Модуль KY-001)
DALLAS — компания производитель;
18B20 — тип датчика (18B20P — с паразитным питанием);
2012 — год и номер недели выпуска;
C4 — кристалл;
+ — соответствие стандартам RoHS;
887AB — код партии.
Распиновка датчика температуры DS18B20

1 GND
2 DQ — DATA
3 VDD (+5 V)
Схема подключения термодатчика DS18B20 и подтягивающего резистора к Arduino

Схема подключения датчика температуры DS18B20 в режиме «паразитного питания» 
Схема подключения DS18B20 к Arduino UNO

Скетч для температурного датчика DS18B20 подключенного к Arduino UNO
#include <OneWire.h>
OneWire pin_digital_temp(5);
float t1=0.0;
int t2=0;
int16_t t3=0;
//byte data_tepm[2];
byte data_tepm1[12];
byte i;
byte addr[8];
void setup(){
Serial.begin(9600);
if (!pin_digital_temp.search(addr)) {
Serial.println("Больше адресов термодатчиков нет");
delay(800);
pin_digital_temp.reset_search();
return;
}
Serial.print("Адрес = ");
for (i = 0; i < 8; i++) {
Serial.write(' ');
Serial.print(addr[i], HEX);
}
}
void loop(){
pin_digital_temp.reset(); // сброс предыдущих параметров
pin_digital_temp.write(0xCC); // так как единственный термодатчик, то пропускаем поиск датчиков по адресу
pin_digital_temp.write(0x44); // измерение температуры с записью в память термодатчика
// pin_digital_temp.write(0x44,1); // для паразитного питания
delay(800); // задержка 0.8 мсек
pin_digital_temp.reset();
pin_digital_temp.write(0xCC);
pin_digital_temp.write(0xBE); // получаем значение температуры с регистров
//data_tepm[0] = pin_digital_temp.read(); // младший байт
//data_tepm[1] = pin_digital_temp.read(); // старший байт
// объединяем младший и старший байт значений температуры с умножением на 0.0625 для 12 бит
//t1 = ((data_tepm[1] << 8) | data_tepm[0]) * 0.0625;
// повышение скорости измерения температуры 20 мсек
for (byte i = 0; i < 9; i++) // можно увеличить точность измерения до 0.0625 *С (от 9 до 12 бит)
{
data_tepm1[i] = pin_digital_temp.read ();
}
t1 = ((float)((data_tepm1[1] << 8) | data_tepm1[0])/ 16.0)+0.5;
// float celsius = (float)raw / 16.0;
Serial.print("\n");
Serial.println(t1);
t2=(int)t1;
Serial.println(t2);
t3 = ((data_tepm1[1] << 8) | data_tepm1[0])>> 4;
Serial.println(t3);
if (pin_digital_temp.reset() != 1) {
Serial.println("датчик не подключен");
}
}
Результат работы датчика температуры DS18B20:

Помехи на ds18b20 частотника
Осциллограмма сигнала без частотника

Осциллограмма сигнала с частотником

Осциллограмма сигнала с частотником и использованием ферритового кольца

