![]() |
![]() |
|||||||||||||||
Цифровой карманный брелок-термометр со светодиодной индикацией на DS18B20
Автор: Feruz Предлагаю опробовать конструкцию карманного термометра на всем известном датчике и не менее известном микроконтроллере! Особенности устройства:
Описание: При подаче питания просиходит включение питания датчика, проверка подключения, опрос температуры, перевод датчика в режим 9-бит (только если текущий режим отличается от 9-бит), выключение питания датчика, индикация и переход микроконтроллера в режим минимального энергопотребления Power Down. Последующий запуск измерения производится нажатием тактильной кнопки, подсоединенной к выводу Reset микроконтроллера. Нажатие вызывает сброс микроконтроллера и программа выполняется сначала. Использование аппаратного сброса вместо прерывания (например INT0) исключает непредвиденное зависание устройства. Принципиальная схема приведена ниже. Используется внутренний резистор подтяжки вывода Reset. Светодиоды индикации объединены катодами и подключены к земле через токоограничивающий резистор R2. Резистор R1 необходим для работы шины 1-Wire.
При разработке данного устройства основной упор делался на минимизацию энергопотребления при сохранении малого числа радиодеталей. С этой целью выполнено следующее. Как уже было сказано в режиме простоя микроконтроллер находится в режиме Power Down потребляя минимально возможный ток - неиспользуемая периферия отключена, неиспользуемые порты ввода вывода настроены на вход с внутренней подтяжкой. Так же в режиме простоя отключено питание датчика температуры, так как он питается напрямую от вывода микроконтроллера. Датчик специально подключен на выводы OC1A, OC1B так как эти выводы обладают бОльшей нагрузочной способностью и меньшим падением напряжения при подаче логической единицы (информация не подтверждена и требует уточнения). В активном режиме минимизация потребления реализована благодаря тактированию микроконтроллера от 128 кГц осциллятора WDT, что, насколько я понял, сделано впервые - других публикаций о запуске DS18B20 от 128 кГц найдено не было. Принудительный перевод датчика в режим измерения 9 бит снижает время измерения в 8 раз по сравнению с 12-битным режимом по умолчанию, что снижает ток потребления и оставляет достижимой заявленную точность измерения температуры.
Индикация: Индикация выполняется с помощью светодиодов расставленных по образу цифровой клавиатуры телефона. Одиноко стоящий светодиод снизу - цифра ноль. В случае ошибки чтения датчика ноль мигнет три раза подряд. Индикация температуры - последовательное мигание светодиодом, отвечающим за ту или иную цифру.
Изготовление: Кроме исходного кода на ассемблере для AVR Studio 4.19 прикладываю файл печатной платы Sprint Layout, модель Proteus, чертеж контура платы с проушиной Kompas 3D и файл фрезеровки контура печатной платы SPRUTCAM. При прошивке через AVRDUDESS прописываем FUSE LOW 0xC6, FUSE HIGH 0xDF. Прошивать можно после запайки не забыв понизить частоту тактовых импульсов программатора. Резистор в цепи светодиодов подбирается индивидуально. Для светодиодов повышенной яркости 1.2 кОм достаточно. Клипсу держателя батареи вырезаем из луженой жести (банка из-под сгущенки). Клипсу желательно не только припаять но и приклепать медными штырьками через отверстия в ушках и плате а затем пропаять с двух сторон (с обратной стороны фольга только под батарейкой). Что касается автономности. Сейчас термометр 5й месяц как запущен от батарейки SONY и измеряет температуру 3-4 раза в сутки, текущее напряжение в простое 3,16 В. Напомню что работоспособность датчика заявлена от 3,0 В, как будет вести себя устройство дальше - предстоит выяснить. Дополнительная информация: https://github.com/FeruzTopalov/ds18b20-pocket-thermo
Файлы: Все вопросы в Форум.
Эти статьи вам тоже могут пригодиться: |
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |