Различия между датчиками 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 отвечают за разрешение нашей температуры:
R1 | R0 | Разрешение | Максимальное время конвертирования | |
---|---|---|---|---|
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
Обсудить на форуме