Различия между датчиками ds18s20 и ds18b20

На заре работы с датчиком ds18s20 первым даташитом, найденным на просторах Интернета, был даташит по датчику ds18b20. На лишнюю буковку "b", естественно, было обращено ноль внимания...
А потом - куча удивления, что ж оно выдает всякое странное О_о
Вот и родилась идея написать статью о различиях этих датчиков.
Для начала, вот их даташиты: ds18s10 и ds18b20. Кстати, ещё где-то есть заначка старых датчиков ds1820 - их уже не выпускают, так что о них разговор не идёт.
Итак, из общего у нас внешний вид и назначения разъемов, возможность использовать паразитное питание, 1-Wire-ный протокол и всякое другое...
А вот разное...

    • память датчиков


Рис. 1. Память датчика ds18s20



Рис. 2. Память датчика ds18b20

Итак, видим, что у датчика ds18b20 нет получения более точной температуры по магической формуле с использование countRemain и countPerC, зато появился некий регистр конфигурации:

Бит bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Значение 0 R1 R0 1 1 1 1 1

При этом биты R1 и R0 отвечают за разрешение нашей температуры:

R1R0РазрешениеМаксимальное время конвертирования
0 0 9-bit 93.75 ms (tCONV/8)
0 1 10-bit 187.5 ms (tCONV/4)
1 0 11-bit 375 ms (tCONV/2)
1 1 12-bit 750 ms (tCONV)

Отсюда выносим следующие:

    • Разрешение температуры

Как мы помним, у датчика ds18s20 температура хранится в двух байтах, где старший – знак температуры, младший – само значение с точностью до 0.5.
Датчик же ds18b20 хранит температуру в следующем формате:


Рис. 3. Формат температуры в ds18b20

При этом в зависимости от состояния регистра конфигурации последние биты: bit2, bit1 и bit0 могут быть неопределены.
Соответственно, нам нет никакой нужды в пересчёте температуры отдельно.
НО! Возникает следующее отличие:

    • Различия в таймингах

Ds18b20 конвертирует много дольше – от 94 до 750 мс в зависимости от выбранного разрешения


Ну, кажется, на первый взгляд – всё.




Автор - Moriam
Обсудить на форуме