DS18B20 не правильно показывает температуру

Тема в разделе "Arduino & Shields", создана пользователем Dany11, 17 авг 2019.

  1. Andrey12

    Andrey12 Гик

    Код конечно чудесатый, но потому как сгенерирован из ФЛ.
    По сути в коде ничего криминального нет, из loop вызывается раз в секунду процедура считывающая с ds18b20 данные и запускающая процесс следующей конверсии.
    При условии что параметры у ds18b20 до этого ничем не менялись то все должно работать нормально.

    Как вариант виноват ПИД, попробуйте без него.
    Если проблема не уйдет возьмите пример из библиотеки и попробуйте запустить измерение с выводом в serial и сравнением контрольной суммы. Может действительно сам датчик плохой? В вашем коде нет проверки контрольной суммы.
     
  2. Dany11

    Dany11 Нерд

    датчик пробовал менять,тоже самое.Пид от него отключал,но ставил на htu21.сейчас пойду попробую вообще пид из кода убрать.
     
  3. Dany11

    Dany11 Нерд

    вы еще схему созданную в ФЛ не видели ))))
     
  4. SergeiL

    SergeiL Гуру

    У меня термостат на макетке (прототип), в корпусе, с ЖК индикатором, с DS1821, собранный в 2007 году, этим летом начал сбоить. Работает на даче с мая по октябрь.
    С 2007-го года, до начала этого - ни одного сбоя.
    А тут смотришь - температура 22, начинаешь греть пальцем датчик - температура не меняется.
    Кнопки нажимаешь - нормально ходишь по меню, Мега8 - не висит.
    А температура не считывается.
    Обнаружил по жалобам, что не отключается нагреватель у дочки в комнате.
    Поставил ESP c DS18B20, и записью в OpenHab. Подтвердилось.
    Поменял прототип на окончательный (уже с DS18B20), лежал дома без дела.

    Неисправный привез домой.

    Думал блок питания - проблема с конденсаторами.
    Замена БП на заведомо исправный проблему не решила.
    Периодически вижу глюк.
    Вот думаю, надо датчик попробовать поменять...
     
  5. Dany11

    Dany11 Нерд

    А без разницы куда подтягивающее сопротивление размещать?У ардуинки или ближе к датчику?У меня у ардуино,потом 70 см витой пары и датчик..
     
  6. parovoZZ

    parovoZZ Гуру

    ближе к ноге МК. Если кабель длинный, то лучшим решением будет разделить резистор на два - один возле датчика, другой возле МК.
     
  7. ИгорьК

    ИгорьК НЕ Модератор

    Есть ли еще свидетельства сему, кроме этого поста?
     
  8. parovoZZ

    parovoZZ Гуру

    я уже где-то разрисовывал и объяснял что да как. Если резистор стоит возле датчика, то второй конец провода не нагружен ни на что. Это позволяет помехе на этом конце формировать ЭДС, которая нагружена на входную емкость пина. Это достаточно слабая нагрузка, чтобы хоть как-то погасить энергию помехи. Как только ставим резистор к ноге, провод нагружается на него и весь ток от помехи протекает через резистор. Т.к. величина резистора достаточно мала, то и уровень напряжения на нем весьма мал.
     
  9. ИгорьК

    ИгорьК НЕ Модератор

    Ок, переиначу вопрос, есть ли еще свидетельства сему от менее уважаемых людей, типа тех кто пишут книжки, учебники, а не на форумах?
     
  10. parovoZZ

    parovoZZ Гуру

    Любой учебник ТОЭ. Можно даже начать с цепей постоянного тока. Сигнальный провод заменить на источник тока в произвольной полярности как эквивалентный элемент, который под воздействием внешнего электромагнитного поля порождает ЭДС. Разрисовать схему, разрисовать токи.
     
  11. ИгорьК

    ИгорьК НЕ Модератор

    Ээмм... 4.7 ком, безусловно, малая величина по сравнению бесконечностью...

    Ну, въезжать в учебник ТОЭ лишь для того, чтобы в единственный, но очередной раз, доказать, что тезисы выше лишь ваша вольная трактовка теоретических постулатов вещь зело сомнительная.
    Заметим лишь, что не в СВЧ технике, к коей никто здесь отношения не имеет, ни один человек о таком не рассказывал.
     
  12. Dany11

    Dany11 Нерд

    не ругайтесь ))) Я попробовал и так и так и так..Все одинаково у меня,никаких изменений,разве что заметил градусы мменялись чуть чуть..
     
  13. Dany11

    Dany11 Нерд

    Во всем виноват был ПИД. Вообще его убрал и о чудо..все работает без сбоев.И как выяснилось в маленьком инкубаторе он вовсе и не нужен.Темп держится идеально.Только наверно гистерезис придумать надо.
     
    Andrey12 нравится это.
  14. ИгорьК

    ИгорьК НЕ Модератор

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

    То есть, вся эта чушня с резисторами на данные не влияет. Они, как обычная почта, могут дойти, а могут быть по дороге разрушены, как посылка с помидорами. И если она разрушена - их есть не надо,то есть, если данные не целостные - их не надо даже отображать.

    Если ваш код не делает проверку - это плохой код (не принят толком груз на почте), а если делает - то датчик бракованный, прислал вам гнилые помидоры.
     
  15. ИгорьК

    ИгорьК НЕ Модератор

    ПИД, как явление, не виноват. Виновато качество кода. В нем что-то путается.
    Если пришла температура 20 градусов и записана в переменную, то она там останется, если код зачем-то ее не поменяет.
     
  16. ИгорьК

    ИгорьК НЕ Модератор

    Другой вариант - ПИД работает через прерывание, как я полагаю. В момент его деятельности идут данные от термометра. Они, не исключаю, могут быть искажены.
    Но! При анализе приема контрольная сумма не совпадет не при каких обстоятельствах. Следовательно, код, что должен ее проверить, в вашем случае отсутствует.

    Других вариантов просто нет.
     
  17. parovoZZ

    parovoZZ Гуру

    Ни форумом единым жив человек. Возможно, надо читать другую литературу. И читать много - сейчас электроника развивается очень быстро.
    Для практического опыта помехоустойчивости можно взять витуху длиной метров 20-30. Подать в неё кГц сто - двести на одну пару проводов. Любую другую пару проводов с одного конца замкнуть резистором на 1-10 кОм, а с другой пары концов измерить ЭДС. Затем подключить на эту пару резистор и снова замерить. Обязательно помнить - входное сопротивление напряжёметра постоянному току несоизмеримо меньше, чем таковое у МК.
    Сделать выводы.
     
  18. ИгорьК

    ИгорьК НЕ Модератор

    Зачем все это? Здесь речь о DS18b20 на проводочке, длиной не более 50 см, не так ли?
    О чем вы все говорите, говорите, говорите, говорите...

    И причина здесь, не помехи в проводе, кои отсекаются программно.
     
  19. parovoZZ

    parovoZZ Гуру

    Типовое ёмкостная нагрузка у МК АВР - 20-30 пФ. Это можно посмотреть в даташите. Такой же емкостью обладают провода. Сколько нужно энергии, чтобы зарядить столь малую емкость? А сколько необходимо энергии, чтобы изменить потенциал на резисторе сопротивлением 4700 Ом хотя бы на 1 вольт?
     
  20. parovoZZ

    parovoZZ Гуру

    На профильных форумах видел обсуждение, что стоит только включить проверку контрольной суммы, как половина пакетов отбраковывается. При том что длина проводов как-то мало влияет. Если найду, кину ссылку.