Термометр на AtMega8 и DS18B20.
Необходимые компоненты:
AtMega8-16PU.
Датчик температуры DS18B20.
Wh2602 или аналоги.
Резистор 4.7кОм.
Источник питания 5в.
Часто возникает необходимость обработки параметров внешней среды. Например, давления, температуры, влажности и так далее. Работу со всеми этими параметрами можно легко и элегантно возложить на плечи микроконтроллера.
Сегодня мы соберем простейший термометр, показания которого будут выводиться на LCD Wh2602. Датчиком температуры выступит DS18B20, который подключается к микроконтроллеру по однопроводному интерфейсу 1-wire.
Обозначение выводов DS18B20:
Схема устройства:
Для управления дисплеем используется 4 линии данных, что позволяет уменьшить количество задействованных контактов контроллера, и освободить их под другие нужды. Данные передаются дисплею тетрадами (по 4 бита).
Чтение показаний температуры осуществляется по однопроводному интерфейсу 1 wire. Для удобства работы была написана простейшая библиотека на языке ассемблера.
Проект для Atmel Studio.
Проект для Atmel Studio (12 MHz)
В итоге получаем:
Любое копирование, воспроизведение, цитирование материала, или его частей разрешено только с письменного согласия администрации MKPROG.RU. Незаконное копирование, цитирование, воспроизведение преследуется по закону!
mkprog.ru
Цифровой карманный брелок-термометр со светодиодной индикацией на DS18B20
Предлагаю опробовать конструкцию карманного термометра
на всем известном датчике и не менее известном микроконтроллере!
Особенности устройства:
Описание:
При подаче питания просиходит включение питания датчика, проверка подключения, опрос температуры, перевод датчика в режим 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
Файлы:
Архив с материалами (исходник, прошивка, модель proteus, плата)
Все вопросы в Форум.
Как вам эта статья? | Заработало ли это устройство у вас? |
Эти статьи вам тоже могут пригодиться:
www.radiokot.ru
В преддверии наступления зимы возник вопрос замера температуры окружающей среды «за бортом», то бишь на улице. Причем хотелось это делать не утруждая себя высматриванием наружного спиртового термометра через заиндевевшее окно, а просто наблюдая дистанционно наружную температуру в комфортных домашних теплых условиях. Для этих целей как нельзя лучше подходит электронный термометр. Вот об этом и пойдет речь в статье….
Собственно, цифровой электронный термометр продается уже собранным , и готовым к эксплуатации.
Данный цифровой электронный термометр собран на микроконтроллере ATtiny 2313. Датчиком температуры служит изделие DS18B20 от компании Dallas Semiconductors. Характеристики термометра видны на фото, поэтому повторять их не будем.
Для проверки работоспособности цифрового термометра подключаем его к лабораторному блоку питания и подаем напряжение, ну скажем, 12В (допустимо от 7 до 15В). Эталонных измерителей температуры у меня нет ( да и не нужны они), поэтому сравниваем показания цифрового термометра с обычным бытовым.
Как видно, показания очень близки- почти 19°С на спиртовом термометре, и 18,8°С на цифровом.
Такой точности цифрового термометра более чем достаточно для бытовых нужд.
Сразу же захотелось проверить работу цифрового термометра и при отрицательных температурах, но, поскольку на улице еще держится температура выше ноля градусов, пришлось искать альтернативный источник отрицательных температур. Им оказалась обычная морозильная камера обычного холодильника. Не долго думая, помещаем датчик температуры в морозильную камеру, выжидаем пару минут для обеспечения стабильности показаний. Термометр показал минус 19 градусов Цельсия.
Отсюда сразу два важных вывода:
Поскольку испытательный этап успешно закончен, приступим к окончательной сборке термометра.
Для корпуса цифрового термометра был выбран валявшийся без дела пластиковый корпус от советского радиоконструктора ( набора) Старт-7176 « Часы электронные». Сами мною собранные часы из этого набора где-то еще тоже валяются.
Корпус имеет наружные размеры ШхВхГ- 140мм х 90мм х 30мм. Внутренние размеры, соответственно, чуть меньше.
Камнем преткновения оказался выбор источника питания. Имелось три варианта:
От применения батарейки в качестве источника питания отказался сразу, учитывая тот факт, что цифровой термометр потребляет ток до 40 мА. Батарейки надолго не хватит при таком токе.
Тонкий корпус глубиной всего 30 мм казалось бы не позволит разместить внутри него сетевой источник питания. Поэтому , наиболее вероятным выглядел вариант №3-внешний блок питания на понижающем трансформаторе. Этот вариант мне не нравился-хотелось получить моноблок, без всяких дополнительных коробочек-блочков и проводов.
И решение нашлось!
Перебирая свой радиолюбительский хлам обратил внимание на зарядное устройство от старого мобильного телефона Samsung. Шильдик на нем информировал о том, что зарядка выдает напряжение 5В при токе до 1А. По току все было с запасом, а вот пяти вольт напряжения было недостаточно. Пришлось вскрывать корпус зарядного устройства, с целью посмотреть- а нельзя ли как-нибудь повысить выходное напряжение…
Половинки корпуса были склеены, поэтому корпус был попросту разломан. Внутри оказалась платка импульсного источника питания и, что и как тут делать поначалу казалось непонятным. Габариты платки оказались подходящими для размещения в выбранном корпусе.
Вид со стороны элементов.
Видна маркировка микросхемы, на которой собрана зарядка- SC1009PN. Обратите внимание, что у этой микросхемы отсутствует ножка №6. Это сделано для того чтобы высокое напряжения на ножке №5 не прошивало на рядом расположенные другие ножки микросхемы (это сказал Гугл).
С обратной стороны на платке размещены пара десятков элементов в SMD исполнении, среди которых выделяется своими размерами оптрон РС817 и шестиногая микросхема с двухбуквенной маркировкой.
Поиск даташита на SC1009PN ничего не дал. Знающие люди пишут что это-специфическая заказная микросхема. Есть аналог-TNY264P.
Удалось найти принципиальную схему на подобное зарядное устройство
И вот тут мы видим, что работой импульсного источника питания через оптрон РС817 управляет микросхема типа TSM1051. Это и есть вот та шестиногая SMD микросхема с непонятным обозначением.
А вот на TSM1051 даташит имеется в сети. Можно видеть типовую схему включения
Из даташит’а следует, что данная микросхема специально разработана для применения в подобных устройствах. Но, самое важное, выходное напряжения источника питания на данной микросхеме можно менять в некоторых пределах, изменяя номиналы резисторов делителя R1 и R2(см. типовую схему включения), или R10 и R11, R14 ( см. схему зарядки выше).Это как раз то, что нам нужно.
Поиск резисторов делителя напряжения на конкретной плате показал, что искомый резистор имеет маркировку R15 рядом с микросхемой TSM1051 и соответствует резистору R1 на типовой схеме включения.
Номинал данного резистора был 820 Ом. Методом подбора номинала данного резистора в сторону увеличения ( кажется, до 1,8 кОм) выходное напряжения было поднято с 5 до 8,5 В.
Как раз то, что нужно!! Пробная проверка питания цифрового термометра от модернизированной зарядки была успешной. Осталось поместить все это в корпус. Внутри корпуса закрепляем плату термометра, плату источника питания, на задней стенке размещаем разьем для подключения датчика температуры наружного воздуха.
Сборка почти закончена
В ходе работ появилось желание сделать возможность замера температуры воздуха не только снаружи , но и в помещении.
Для этого был использован еще один датчик DS18B20, который установлен прямо на задней стенке корпуса. Для переключения датчиков использован обычный тумблер, который закреплен на передней панели.
Схема переключения выглядит вот так.
Для защиты датчика наружной температуры от механических повреждений делаем вот такой контейнер из кусочка трубки. К трубке прикреплен кронштейн для закрепления контейнера на стене ( либо где удобно) в месте защищенном от прямых солнечных лучей и атмосферных осадков.
Датчик DS18B20 помещаем внутрь трубки
Выключатель питания закреплен на боковой стенке
Осталось проверить в работе…
Температура наружного воздуха
Температура внутри помещения
Данное устройство было собрано в начале октября 2016 года и на момент написания статьи ( конец октября) прошло, так сказать, полный цикл испытаний. Все работает безотказно.
Единственный важный момент: нет данных о том, допускается ли длительная круглосуточная эксплуатация зарядок от мобильных телефонов. Поэтому , во избежание перегрева и воспламенения не рекомендую оставлять без присмотра источник питания на базе зарядного устройства от мобильного телефона. Я выключаю устройство на ночь. Ради эксперимента-гонял термометр без выключении больше суток-все абсолютно нормально, никакого нагрева элементов не наблюдалось.
P.S. Когда наступят морозы-добавлю фото замера отрицательной температуры наружного воздуха.
Обновление от 30 ноября 2016 года. Утро, мороз…Вот как отображает термометр отрицательную температуру:
www.myhomehobby.net
Arduino (UNO, DUE, Micro, и т.п ..).
ngin.pro
Двухточечный термометр на DS18B20 и микроконтроллере PIC16F84 (A)
Подобных схем радиолюбителями было разработано немало, но мне захотелось собрать компактный термометр на батарейном питании, включающийся только тогда, когда надо узнать температуру. На батарейном питании потому, что не очень люблю постоянно включенные в сеть устройства, особенно, если в этом нет необходимости. Ведь температуру подходишь смотреть несколько раз в день.
Посмотрим на схему термометра:
Основой термометра является микроконтроллер PIC16F84, который осуществляет опрос интегральных термодатчиков DS18B20 и отображение информации на дисплее. Информация отображается на 10-разрядном 7-сегментном дисплее MT10T7-7T со встроенным контроллером производства компании «МЭЛТ». Подробное описание дисплея можно найти на сайте компании: https://www.melt.aha.ru.
Микросхема DS18B20 это термометр с цифровым вводом/выводом, работающий с точностью +0.5°C. Данные считываются через 1-проводную последовательную шину в дополнительном от 9 до 12 битном (программируется пользователем) коде с ценой младшего разряда от 0.5°C до 0.0625°C.
Устройство выглядит следующим образом:
На индикаторе символ «d» обозначает «дом», символ «u» — улица. В свободном на снимке разряде между символом «u» и значением температуры появляется знак «—» при отрицательных значениях температуры.
Внутренности градусника:
А так размещен датчик на улице:
Датчик, измеряющий температуру в комнате находится внутри корпуса устройства. В корпусе просверлено несколько отверстий в месте расположения датчика. Датчик, измеряющий уличную температуру, помещен в подходящий пластмассовый корпус, наполненный теплопроводной пастой КПТ-8 и заизолирован от влаги герметиком. Для более правильного измерения температуры датчик вынесен на штанге подальше от стены дома. И, конечно, датчик надо бы закрыть от прямых солнечных лучей экраном, например из картона. Но мне его не было необходимости делать, так как солнце с той стороны дома, где находится датчик, появляется после 19.30, а температурой, как правило, интересуешься больше утром, перед выходом на работу.
Файлы:
Прошивка — 01.rar
Плата — 02.rar
Все вопросы — сюда.
Как вам эта статья? | Заработало ли это устройство у вас? |
Эти статьи вам тоже могут пригодиться:
www.radiokot.ru
Единственный критический минус, который может оттолкнуть — это пока его цена. Колеблется она начиная от 1,5 вечнозеленых президентов и на китайских барахолках он пока не доступен. Но, видимо китайцы скоро наделают его клонов.
Как оказалось на терраэлектронике этот датчик дешевле далласа.
Ну и для тех кому лень лезть в даташит немного характеристик:
Основные характеристики:
Корпус: TO-92/LPG(2)
Тип датчика: Цифровой
Диапазон измеряемых температур: -50…150 С
Точность измерения ±: 0,5 С
Разрешение: 0,0625 С
Минусы:
одна нога — один датчик.
не везде цена адекватная, но как писал выше — есть дешевле далласа.
короткий провод до датчика — не более 2 м. по даташиту.
протокол не совсем протокол, скорее тупое получение данных.
Простая схемка подключения. В ДШ есть и другие.
we.easyelectronics.ru
www.cavr.ru