Устройство цифрового термометра DS18B20
Общие сведения о датчике DS18D20
Устройство цифрового термометра DS18B20
DS18B20 - цифровой термометр с программируемым разрешением от 9 до 12 бит, которое может сохраняться в EEPROM памяти прибора. DS18B20 обменивается данными по 1-Wire шине и при этом может быть как единственным устройством на линии так и работать в группе. Все процессы на шине управляются центральным микропроцессором. Диапазон измерений от –55°C до +125°C и точностью 0.5°C в диапазоне от –10°C до +85°C. В дополнение, DS18B20 может питаться напряжением линии данных (“parasite power”), при отсутствии внешнего источника напряжения.
Цифровой термометр DS18B20 пользуется заслуженной популярностью в радиолюбительских конструкциях за свою надежность, простоту, приличный диапазон измеряемых температур с достаточной для большинства разработок точностью, управлением всего по одной линии.
Датчик температуры DS18B20 выпускается в трех видах корпуса:
Наиболее популярный вид исполнения - корпус ТО-92.
Ну а теперь, приступим к подробному изучению датчика DS18B20 и примерам его использования в программах.
Устройство датчика температуры DS18B20
1. Для работы термометра используется три вывода:
- ADD - линия питания (5 вольт)
- GND - "земля"
- DQ - линия для ввода/вывода данных
Линия DQ обязательно должна подключаться к линии питании через подтягивающий резистор номиналом около 4,7 кОм.
2. Передача данных от МК к термометру и чтение данных из него происходит по одной линии, по шине данных 1-Wire.
3. Каждый DS18B20 имеет уникальный 64-разрядный код (номер), что позволяет посадить на одну линию множество устройств:
64-разрядный код датчика храниться в его собственной памяти, а система команд позволяет обратиться или только к определенному устройству, или подать команду на все устройства сразу.
8-битный код семейства для всех датчиков одинаков (28h - DS18B20), 48-битный серийный номер - индивидуальный, 8-битный контроль избыточности CRC - вычисляется от первых 56 бит (для чего он нужен узнаем позже).
4. 2-байтовый температурный регистр, который хранит значение температуры по окончанию температурного преобразования.
Выходные температурные данные DS18B20 калиброваны в градусах Цельсия. Температурные данные запоминаются как 16-битовое число со знаком. Биты признака (S) указывают, является ли температура положительная или отрицательная: для положительных S = 0, а для отрицательных чисел S = 1. Если DS18B20 будет настроен для конвертирования 12-битного разрешения, то все биты в температурном регистре будут содержать действительные данные. Для 11-битной разрешающей способности, бит 0 не определен. Для 10-битной разрешающей способности, биты 1 и 0 неопределенны, и для 9 битной разрешающей способности 2, 1 и 0 неопределенны.
Примеры данных цифрового выхода и соответствующей температуры, для 12-битной разрешающей способности:
5. Два однобайтовых регистра контроля температуры (TH и TL). В эти регистры можно предварительно записать температурные значения, при достижении которых будет формироваться сигнал "тревога".
Бит признака (S) указывает, положительное или отрицательное значение: для положительных чисел S = 0 и для отрицательного числа S = 1. Для сравнения используются только биты 4-11 из регистра температуры (целое значение температуры). Если измеренная температура ниже или равна TL или выше или равна TH, формируется условие Аварии, и устанавливается флаг Аварии в DS18B20. Этот флаг обновляется после каждого температурного преобразования; поэтому, если условие Аварии пропадет, то флаг будет сброшен после следующего температурного преобразования.
6. Регистр конфигурации, который позволяет пользователю устанавливать разрешающую способность цифрового преобразователя температуры.
Биты 6 и 5 (R1 и R0) предназначены для настройки разрешающей способности устройства, остальные биты зарезервированы для внутреннего использования.
Разрешающая способность температурного преобразователя составляет 9, 10, 11, или 12 битов (что влияет на время температурного преобразования), соответствуя приращениям (дискретности измерения температуры) 0.5 °C, 0.25°C, 0.125°C, и 0.0625°C, соответственно. Разрешающая способность по умолчанию установлена 12 бит.
Максимальное время конвертирования (измерения температуры) необходимо учитывать в программах при задании паузы между измерениями. Слишком частое конвертирование приводит к нагреву устройства и, тем самым, искажению показаний термометра..
7. Память датчика температуры DS18D20 состоит из оперативной SRAM памяти и энергонезависимой EEPROM памяти:
0 и 1 байты - регистры конвертора температуры (только для чтения);
2 и 3 байты - регистры Аварии нижнего и верхнего предела температуры (чтение и запись);
4 байт - регистр конфигурации (чтение и запись);
5,6 и 7 байты - резерв (недоступны);
8 байт - циклический контроль избыточности CRC вычисленный для байтов 0-7 (только для чтения)
8. Питание устройства может быть организовано с внешним питанием 5 вольт (тогда работа организуется по трем линиям - ADD, GND, DQ) и без внешнего питания 5 вольт, так называемое "паразитное питание". При этом выводы ADD и GND должны быть соединены между собой.
При "паразитном питании" максимальная измеренная температура - не более 100 градусов. Кроме того, линия DQ должна иметь достаточную нагрузочную мощность для обеспечения зарядки внутреннего конденсатора устройства Срр при передаче команд, который затем, при чтении данных с устройства, является источником его питания.
Схема подключения устройства к микроконтроллеру при питании от 5 вольт и при "паразитном питании":
Следующие статьи:
1. Система команд датчика температуры DS18B20
2. Подключение DS18B20 к микроконтроллеру и программирование работы с датчиком
3. Микроконтроллер AVR и датчик DS18B20: программирование работы
Добрый день. Скажите пожалуйста, а как быть если у меня ЖК-дисплей HY-1602E ? Я новичок. Сильно изменится программа для контроллера? Заранее спасибо.
Добрый день Сергей!
Программа общения микроконтроллера с датчиком не зависит от типа применяемого дисплея для вывод информации.
Для вывода результатов измерений датчиком на экран (буквенно-цифровой, графический или семисегментный) используется отдельная программа для общения микроконтроллера с дисплеем.
С уважением, Admin.