Цифровой датчик температуры DS18B20 и микроконтроллер PIC16F628A
Jakeselectronics
В схеме используется цифровой термометр DS18B20 фирмы Dallas
(Maxim) с интерфейсом «1-Wire»
Работа датчика
Выпускаемая фирмой Maxim микросхема DS18B20 представляет собой прямой
преобразователь температуры в цифровой код с однопроводным интерфейсом
1-Wire. Для подключения микросхемы необходим лишь один вывод
контроллера и один подтягивающий резистор, в отличие от аналоговых
датчиков, которые, в общем случае, нуждаются в операционных усилителях и
нескольких резисторах.
Программный интерфейс цифровых датчиков с интерфейсом 1-Wire также
несложен. Если для аналоговых датчиков необходим АЦП с источником
опорного напряжения и, возможно, операционный усилитель, для прямого
преобразователя температуры с однопроводным интерфейсом Dallas требуется
только точное соблюдение временной последовательности сигналов. В
принципе, программа должна быть достаточно простой. Все что она делает –
считывает информацию из датчика DS18B20 и отображает ее на 4-разрядном
7-сегментном дисплее. Но когда дело доходит до программирования,
обнаруживается, что все несколько сложнее, чем кажется на первый взгляд.
Вы сами почувствуете это, взглянув на файл .ASM.
Сначала программа инициализирует микроконтроллер PIC16F628A:
конфигурирует входы и выходы, обнуляет нулевой банк ОЗУ, устанавливает в
исходное состояние бит выбора столбца дисплея и конфигурирует TIMER 2.
TIMER 2 используется для прерывания бесконечного цикла программы и
обновления информации на светодиодном дисплее.
После включения питания микроконтроллер начинает опрос датчика
температуры DS18B20. Вся процедура занимает чуть меньше половины общего
объема программной памяти. Считав значение температуры и записав его в
ОЗУ, микроконтроллер преобразует 12-битное целое в десятичное число и
записывает его в четыре регистра общего назначения, расположенные в
пространстве ОЗУ.
К примеру, посмотрим, как будет представлена в регистрах температура «95.8»:
HUNS register = 0 [регистр сотен]
TENS register = 9 [регистр десятков]
ONES register = 5 [регистр единиц]
TENTHS register = 8 [регистр десятых]
Содержимое этих регистров будет использоваться подпрограммой обработки
прерываний для обращения к таблице кодировок.
Программа работает в бесконечном цикле, производя считывание температуры
чуть чаще, чем 1 раз в секунду.
Основные характеристики датчика температуры:
• Скорость выборки более одного значения в секунду
• Дисплей регенерируется по прерываниям от TIMER 2
• В программе предусмотрена возможность увеличения количества датчиков,
подключаемых к общей шине 1-Wire
• Диапазон измеряемых температур –55.0…127.9 °С
Детально ознакомиться с микросхемой DS18B20 можно здесь.
Наименование
DS18B20
ROHS
LEAD
Производитель
MAX
Корпус
TO-92-3pins
Интерфейс
1 Wire
Точность
+/- 0,5 C
Рез.измерения,
бит
9...12
Температурный
диапазон, С
-55...+125
Розн.
цена
81,05 руб.
Видео
Перечень компонентов:
Обозначение на схеме
Тип
Количество
Описание
U1
PIC16F628A
1
Микроконтроллер. (Возможна замена на
PIC16F627A или PIC16F648A)
U2
1
Цифровой датчик температуры
D1...D4
4
7-сегментные
светодиодные
индикаторы с общим катодом