Сейчас закончил преобразование "термометра", позволяющего подключить до 14 DS18x20 к трехразрядному китайскому "вольтметру" на STM8. Код можно посмотреть
здесь.
Переделка совсем несложная (выпаиваются несколько деталюшек, а один резистор перепаивается с одного места в другое, если под рукой нет 0603 на 4.7кОм - с 10-килоомным при коротких проводах все тоже вполне работает):
Схемка переделки
Если просто подключить один DS18B20 или DS18S20 (второй от первого вообще ничем не отличается, точность такая же поганая, зато людям не пудрят мозг, впаривая липовые 12 бит...), то на экранчике будет отображаться считанная температура (опрос термометра 1 раз в секунду). Если поочередно "запомнить" ROM нескольких датчиков и потом их все на одну линию повесить, будет поочередно отображаться номер датчика (индикация в течение 0.3с) и температура (индикация в течение 0.7с).
Для управления используются три кнопки:
Store new ROMсохранить ROM подключенного датчика (обязательно убедитесь, что подключен только один датчик!). При нажатии кнопки на экране высветится либо номер, под которым в дальнейшем будет отображаться данный датчик, либо код ошибки;
Delete nonexistantудалить ROM неподключенных датчиков;
Delete allполностью очистить все сохраненные ROM.
Вот такие коды ошибок могут отображаться на экранчике:
--- отображается в самом начале: подготовка к измерениям;
e00("по нулям") - не найдено ни одного датчика;
eab("ABsent") - датчик с данным номером отсутствует, либо во время чтения произошла ошибка;
eee("Eeprom Error") - волшебным образом EEPROM была "сама собой" очищена;
eff("FFull" ☺) - EEPROM кончилась (уже сохранено 14 датчиков).
Обращаю внимание, что иногда могут отображаться совершенно бредовые значения температур, если возникают помехи или имеется плохое подключение (у меня периодически 85°C отображалось, пока на соплях вешал). Это происходит из-за того, что я так и не понял, как простым способом реализовать наркоманский алгоритм проверки CRC DS18x20.
Вот - пятисекундное видео, демонстрирующее отображение температур с двух датчиков (не обращайте внимания на кривое отображение двойки: почему-то на младшем разряде сегмент E изначально не работал).
Click to view