Датчик температуры DS18B20: Обзор, подключение к Arduino и пример скетча

preview_player
Показать описание
Описание конструкции и характеристик цифрового термометра DS18B20, выполненного в виде зонда. Схема подключения к Arduino и подробный разбор примера скетча для работы с датчиком.

Компоненты на Aliexpress:

Библиотеки для Arduino IDE:

Скетчи:

#arduino #ардуино #уроки #робот #robot #uno #уно #nano #esp8266 #nodemcu #lua #обзор #esp-01 #реле #relay #часы
Рекомендации по теме
Комментарии
Автор

Я заметил, что если такой датчик погрузить в воду то она эффективно отводит тепло от него, и значение он показывает правильно даже при постоянном считывании температуры (2-3 раза в сек). Ps. Нагревается он, епнип, только при вычислении температуры. При подаче питания в регистр датчика записывается температура 85 градусов, именно ее вы считываете первый раз, еще до того как отправите датчику команду на вычисление температуры (причем на вычисление тоже требуется время, и до окончания вычисления вы также будете считывать предыдущую температуру из регистра). Так что можете не отключать датчик от питания, и не получать каждый раз ошибочную температуру.

BenderBZR
Автор

На счет первого ошибочного Значения. В 12 битном режиме время преобразования 750 мс. У Вас задержка перед чтением 100 мс и 500. То есть датчик не успел преобразовать а Вы уже считали. Следующее чтение читает предыдущее преобразование.

СергейРаспопов-чш
Автор

Здравствуйте.
У меня почему то всегда -127 показывает. Даже если датчик не подключен.
Провода красный, желтый и зеленый. Зеленый подключал на землю.

ChinaelektroRu
Автор

Что бы датчик не глючил мне было предложено сделать следующе.
В цепи питания датчика установите: между плюсом и минусом питания - конденсатор 0, 1мкФ, в цепи плюсового вывода питания поставьте резистор сопротивлением 100-200 Ом. Чтобы получилась интегрирующая RC-цепочка.

АндрейНиктинов
Автор

Спасибо. Подключил датчик. Скажите а как несколько датчиков подключить и как их различать?

NikolaMasterRF
Автор

очень помогло видео, за что очень благодарен Вам и вашему каналу) очень легкий код без лишнего текста

bandirom
Автор

Здравствуйте, подскажите, пожалуйста, как делать это в прерывании?attachInterrupt(1, ISR_TEMP, RISING)не работает, 0 и FALLING тоже не работает

elmirakassymova
Автор

про тонкость перегрева - и включение через цифро пин клево )
как подключить два таких термо датчика ?
можно ли использовать общее питание ?
как это зделать через i2c шину ? используя i2c схему
-- нашел
оно уже решено по средвом oneWire подключения
т.е можно много датчиков

uglevod
Автор

Wemos 1d 2r - схема с включением питания через пин - незавелась

uglevod
Автор

Он типа по дата-проводу сразу температуру выдаёт в градусах Цельсия? И даже калибровать систему не нужно?

militer
Автор

Очень странно, открыл скетч на телефоне. Пишет нет библиотеки OLED_I2C.h и в менеджере библиотек его нет для скачивания

gunzerker
Автор

круто! подключил согласно видео и все заработало! спасибо автору. по больше бы таких видео.

yuriybondarenko
Автор

Недавно начал знакомство Arduino, твои видео очень помогают, особенно в этом видео использование библиотеки DallasTemperature... всё просто и ясно, не то что тот способ снятия температуры с костылями и матом, что я использовал до этого. Но пару моментов, первое, про задержку в 750мс уже подсказали, если можно отрази это на видео в форме аннотации(многих убережёт от ошибок). И второе, у тебя при обращении к датчику вся система зависает на 10 секунд. Удобнее будет перенести эту задержку из функции запроса температуры в "loop" и сделать с помощью mills()... примерно так.

long previousMillis = 0;

void setup(void)
{
Serial.begin(9600);
sensors.begin();
pinMode(term_power, OUTPUT);
}


float temperature() {
digitalWrite(term_power, HIGH);
delay(50);

delay(750);
float t =
digitalWrite(term_power, LOW);
return(t);
}

void loop(void)
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > 10000) {
Serial.println(temperature(), 1);
previousMillis = currentMillis;
}
}

Тогда запрос и вывод температуры будет производиться только раз в 10 секунд, но при этом (если это не только термометр) не будут тормозиться другие процессы. Если я в чём то из-за малого опыта ошибся, поправь меня.

morzik
Автор

тоже -127 показывает, подключал и делал все 1 в 1

StoneTL
Автор

Интервал измерения 10 сек и запитываем его с пина, для того что бы не грелся датчик, что бы его нагрев не влиял на показания датчика.... А до какой температуры он может нагреться с постоянным питанием? если температура свыше 50 градусов (70-90) то же актуально такой лайфхак?

xFlairniv
Автор

Заработало. Зленый сигнал, желтый земля. Температура тела почему то 35, 5 всего.

ChinaelektroRu
Автор

Что бы рассчитать и сравнить crc16 нужно все байты считать или можно только температуру?

androidpasha
Автор

Здравствуйте,
Я хочу симитировать работу этого датчика с помощью Arduino. Такой датчик стоит у нас на горелке, но он работает только до 100 градусов. Я же хочу подключить термопару к Ардуино, она уже будет мерять до 900 градусов, и потом поделив значение на 10 отправить его на блок горелки, он уже будет думать что температура 90. Но вот как заставить Ардуино работать как этот датчик не понятно. Взаранее спасибо

Hasanichh
Автор

программирование + электроника = это очень интересно

gjhgkyunygukngugnyugnyugyg
Автор

Добрый Скажите пожалуйста что за музыка у вас сначала видео?За ранние спасибо

stas