Всем привет.
Сначала небольшая прелюдия.
Когда-то давно собирал цифровой термометр с 2-я датчиками DS18B20, работает исправно до сих пор в 2-х экземплярах. В исходнике того термометра (позаимствовал его в сети) в процедуре обработки данных температуры - была допущена ошибка (а может это и не требовалась по ТЗ), он нормально преобразовывал температуру только до +99 градусов, при повышении температуры дальше - знак сотен игнорировался.
Нагревать датчик для проверки скорректированной программы - до +100 градусов, а потом охлаждать - не вызывало энтузиазма. Мелькнула мысль, что хорошо бы иметь под рукой внешний эмулятор датчика DS18B20.
Поиск в сети для того времени - нашел пару-тройку попыток собрать такой эмулятор, но, в основном это были незаконченные проекты, кроме того, требовалось нажимать кнопки для установки требуемой температуры после включения самого эмулятора, показалось это неудобным.
Недавно тема про эмулятор DS18B20 - опять всплыла, но, теперь поиск в сети дал ссылку на довольно интересный проект - "AVT1949 - эмулятор DS18B20", опубликованный в польском журнале ELEKTRONIKA PRAKTYCZNA 4/2017. Побродив по сайту этого журнала, я нашел всю документацию для повторения этого проекта, опробовал его на макете, мне он понравился. Выкладываю для тех, у кого есть такая же проблема с нехваткой эмулятора термодатчика DS18B20.
Ниже ссылка на ZIP-файл с документацией для повторения этого эмулятора.
http://fayloobmennik.cloud/7422483 (пробовал, скачивается нормально)
Там есть краткое описание, схема, рисунок разводки платы в 2-х слоях (при желании можно перевести в BMP-формат, и подложив как шаблон - развести в S-layout), прошивка, исходник, кстати, довольно хорошо документированный (правда, на польском языке), таблицы фьюзов в нескольких вариантах их применения.
На макете я опробовал Attiny85 - прошивал программатором TL866 MiniPRO, никаких проблем не возникло. Также там есть довольно корявый первод статьи, сделанный с помощью сетевого транслятора с польского на русский, но, смысл вполне понятен.
Обязательно почитайте файл readme.me!
И еще, я опробовал только получение температуры, изменяемую с помощью подстроечного резистора, ничего другое меня не интересовало. Просто подключил вместо штатного термодатчика - собранное на макетке это устройство, результат меня порадовал. Регулировкой подстроечника добивался изменения температуры на LED-дисплее (как оказалось, эмулируемый диапазон температуры даже несколько шире, чем заявлено в даташите на DS18B20).
Из особенностей повторения схемы - желательно движок подстроечника зашунтировать на землю конденсатором на 1 мкФ, он должен быть неэлектролит (с малой утечкой). Если появится необходимость оформить устройство в виде отдельного модуля, наверное, в качестве подстроечника - лучше применить многооборотный переменный резистор, тем более сейчас это не дефицит, можно заказать во многих интернет-магазинах.
Питание на эмуляторе было равно около 3.17 Вольт (штатный датчик питается именно таким напряжением), ниже приведено соответствие напряжения на выводе 3 (PB4) полученной температуре на LED-дисплее.
-55 градусов = +0.90 Вольт,
0 градусов = +1.57 Вольт,
+100 градусов = +2.80 Вольт,
+125 градусов = +3.10 Вольт,
За супер-точность измерения в сотых долях - не ручаюсь, измерял обычным не поверенным цифровым тестером (лень было доставать В7-38).
Судя по исходнику - в нем много чего заложено изначально, вплоть до эмуляции других устройств с точно такой же шиной 1-wire.
Вывод 2 (PB3) в устройстве, видимо, предусмотрен для вывода отладочной информации, но, точно утверждать не буду, исходник смотрел поверхностно, а в кратком описании про него нет никакого упоминания.
Думаю, кому это понадобится, - тот разберется.
Кому интересно, - разработал этот эмулятор Славомир Скринский (во всяком случае, так переводчик перевел имя и фамилию автора).
Всем здоровья, добра, и удачи !!!