Страница 1 из 1

DS18B20 пропадает датчик

Добавлено: 08 фев 2021, 18:07
SerOv
Здравствуйте! Была необходимость замерять температуру земли на глубине в несколько точках. Для этого были подключено 5 датчиков DS1820 на ESP8266 на D4. Все прекрасно работало примерно месяц. Затем один датчик, стал показывать, постоянно одно и тоже странное значения. Решил заменить все 5 датчиков, так как они было встроены в трубку и залиты герметиком.
И опять примерно через месяц. Один датчик, стал показывать странные значения. Я разобрал первую трубку и вытащил от туда все 5 датчиков DS1820. Через программу FLprog. Проверять по очереди, все пять датчиков. Все они дали нормальные показания температуры. Такое ощущение, что после месяца работы. Один из датчиков перестал определяться.
Почему так происходит?
Может быть кто ни будь в курсе почему так?
Как заставить работать все датчики правильно?
Подключил вот по этой схеме 5 датчиков
[spoiler]
ds18b20.jpg
[/spoiler]

SD1820 пропадает датчик

Добавлено: 08 фев 2021, 18:12
nalnik
Думаю что для пяти датчиков 4.7к многовато при питании 3.3v - 3.0к попробуйте или меньше

SD1820 пропадает датчик

Добавлено: 08 фев 2021, 18:22
SerOv
nalnik писал(а): 08 фев 2021, 18:12 Думаю что для пяти датчиков 4.7к многовато при питании 3.3v - 3.0к попробуйте или меньше
А это сопротивление как то рассчитывается?
Есть какая то зависимость, от количества датчиков?

DS18B20 пропадает датчик

Добавлено: 09 фев 2021, 00:04
Labu559
SerOv писал(а): 08 фев 2021, 18:22 А это сопротивление как то рассчитывается?
Есть какая то зависимость, от количества датчиков?
Здравствуйте! Ваш интерес приятно удивил, потому как очень немногих ардуинщиков и тем более пользователей программы "волнуют глубинные процессы", потому не пожалею времени для объяcнения, посмотрим на сколько небесполезного. :)
Для расчёта сопротивления подтягивающего резистора необходимо знать суммарную емкость линии связи (кабеля + входных/выходных цепей датчик_а_ов и МК), которые вместе образуют RC-цепь. Так как 1-Wire- времязависимая шина, то необходимо обеспечить скорость нарастания/спада логического уровня сигнала [spoiler title=за t const < 14 uSec (см. Figure 16)]
DS18B20PullUp.png
[/spoiler]
Пример и данные для расчёта:
Витая пара типовая емкость - 1pF/дюйм или 394pF/п.метр
Емкость входа(I/O) AVR MCU ATMega328P - 20 pF; (для ESP- смотрим её Datasheet, для платы будет больше)
Емкость входа (вывода) DS18B20 Capacitance Cin/out - 25 pF; (смотрим Datasheet DS18B20)
Напряжение переключения логического уровня (HIGH) для (см. таблицу 30-28, под спойлером):
Vcc=5,0V - 2.6 V;
Vcc=3,3V - 1.8 V;
Vcc=3,0V - 1.6 V;
Применяем формулу: Vcap = Vcc * (1- e ^ (- tconst / R * C))

В итоге: зарядить емкость RC-цепи (достичь переключения в высокий логический уровень), при:
R= 4.7kOhm (PULLUP Resistor) + сопротивление жил кабеля (здесь пренебрегаем)
C= 3940+20+(5*25)= 4 085pF (для 10 п.м. витой пары, AVR MCU и 5-и датчиков DS18B20)
до 55% от Vcc= 3.3V это 100%; Vcap= 1.8V это 55%;
получиться за 0.0148 mSec (14,8 uSec), при необходимом tconst меньше 0,014 mSec, или <14 uSec., а значит нужно уменьшить R из-за увеличения емкости за счёт линии и колличества датчиков и ув. [ref=#808080]nalnik[/ref] дал резонный совет.

Калькулятор расчёта постоянной времени RC-цепи - здесь.
Руководство по построению протяжённых линий/сетей для 1-Wire здесь.
Внимание! Приобретая датчики DS18B20 обязательно убедитесь что Вам не подсунули DS18B20-PAR, которые предназначены исключительно для применения по схеме с паразитным питанием, т.е. ножка 3 датчика внутри уже заземлена!!! А у кого проблемы с датчиком проверьте отсутствие в маркировке указанных символов -PAR. Китайцы последнее время шлют их.
Для информации: Существует библиотека OneWireNoResistor для применения устройств на 1-Wire (в т.ч. DS18B20) без внешнего резистора (применяется внутренняя подтяжка МК ~60 kOhm и соответственно увеличены временные интервалы- timeslots).

Удачи!