Цифровой датчик температуры

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 можно здесь.

Видео

Перечень компонентов

Обозначение
на схеме
Тип
Количество
Описание
U1
1
Микроконтроллер.
(Возможна замена на PIC16F627A или PIC16F648A)
U2
DS18B20
1
Цифровой датчик температуры
D1 … D4
 
4
7-сегментные светодиодные индикаторы с общим катодом
Q1 … Q4
4
NPN транзисторы
R1 … R4
10 кОм
4
Резисторы
R5 … R11
470 Ом
7
Резисторы
R12
330 Ом
1
Резистор
R13
4.7 кОм
1
Резистор
C1, C2
0.1 мкФ
2
Многослойные керамические конденсаторы

Загрузки

  1. schematic.gif
  2. breadboard.jpg
  3. digitaltemperaturesensorbasic.hex
  4. digitaltemperaturesensorbasic.asm

Перевод: AlexAAN по заказу РадиоЛоцман

На английском языке: Digital Temerature Sensor

Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • прекрасная схема
  • Схемка то действительно хорошая, видел похожие, но вся проблема в наличии программатора (нету у меня, а делать самому или покупать пока небыло необходимости). Купить обычный готовый термометр обойдётся дешевле. Вопрос в другом: можно ли приспособить его для управления нагревательным злементом на 100-200град.(порты то лишние остались), это уже интересней.
  • Хорошая тема. Просьба продолжить на AVR (Mega16 например) и два датчика. По возможности помогу.
  • Можно на PROTEUSE
  • В сети можно найти уже готовые решения на mega16 (и не только) с несколькими DS18B20.
  • Интересует а есть ли на подобие этой схемы, только чтоб температура была от 0....300 C. Просто нужно решение, поддержка указанной температуры до 300 градусов..... Кстати а где есть схема на ATmega16 ???
  • Посмотрите материал [url]http://microsin.ru/content/view/803/1/[/url] я думаю, там вы найдете ответы на оба вопроса.
  • ds18b20 да и все имс из этой серии по утверждению изготовителя работают в диапазоне от -55 до +125. на практике выдавал максимум температуру по моему (если не изменяет память 127) больше показать он не может у него не хватает разрядности. А приспособить ) можно к чему угодно лиш-бы фантазии хватило.
  • А я вот с DS18B20 завязал, юзаю [URL="http://avrdevices.ru/termometr-na-lm75ad/"]LM75AD[/URL]: 1) Тепмпература измеряется быстрей 2) В разы дешевле Короче рекомендую :)
Полный вариант обсуждения »