Двухканальный термометр, часы на ATmega8, DS18B20, DS1307, LCD1602

Admin 03.07.2016

Доброго дня уважаемые друзья!
Приветствую Вас на сайте «Мир микроконтроллеров»


Двухканальный термометр, часы
на ATmega8, DS18B20, DS1307, LCD 1602

Схема двухканального термометра и часов
Печатная плата двухканального термометра и часов
Описание работы двухканального термометра и часов


Предлагаю вашему вниманию простую схему и конструкцию «Двухканальный термометр, часы на ATmega8, DS18B20, DS1307, LCD (ЖК) 1602«.
Конструкция позволяет выводить на двухстрочный символьный индикатор текущее время, дату, месяц, день недели и текущую температуру с двух цифровых датчиков температуры.

Двухканальный термометр и часы на ATmega8, DS18B20, DS1307, LCD1602


Схема двухканального термометра и часов

Конструкция собрана на микроконтроллере ATmega8-16PU, микросхеме часов реального времени DS1307 в DIP корпусе, цифровых датчиках температуры DS1307, ЖК индикаторе LCD1602

Схема двухканального термометра и часов на ATmega8
Схема устройства создана в программе «Cadsoft Eagle»
Датчики температуры подключаются к разъемам DS1 и DS2:
— вывод 1 — к выводу GND датчика
— вывод 2 — к выводу DQ датчика
— вывод 3 — к выводу Vcc датчика

Подключение датчиков на схеме не соответствует печатной плате.
Программа подогнана под печатную плату, необходимо подключать:
— 1-й датчик к РВ1 (15-й вывод)
— 2-й датчик к РВ2 (16-й вывод)

Обращаю ваше внимание на подключение выводов порта D микроконтроллера к выводам индикатора:
— PD0 микроконтроллера — к выводу D7 индикатора
— PD1 микроконтроллера — к выводу D6 индикатора
— PD2 микроконтроллера — к выводу D5 индикатора
— PD3 микроконтроллера — к выводу D4 индикатора
Такое подключение выбрано с целью упрощения разводки дорожек на печатной плате

Детали, примененные в конструкции:

Примененные детали

В качестве ЖК дисплея применен 2- строчный, 16-символьный LCD дисплей китайского производства с маркировкой «1602А» — негативный, белые символы на темно-синем фоне с белой подсветкой. Также можно использовать любой аналогичный знакосинтезирующий (символьный) двухстрочный, 16-символьный индикатор, с поддержкой кириллицы или без поддержки, поддерживающий систему команд контроллера НD44780 типа:
— STN (FSTN) Negative (blue или black) с подсветкой (такой применен в конструкции) — такие индикаторы работают только с подсветкой
— FSTN Positive, TN Positive, HTN Positive —  с подсветкой или без нее
Примененный китайский LCD индикатор не имеет встроенной кириллицы, поэтому, для наглядности вывода дня недели на индикатор в ОЗУ знакогенератора (CGRAM) записаны пользовательские символы — «П», «н», «т», «Ч», «б» и два символа в инверсном виде «Д» и «У».


Печатная плата двухканального термометра и часов

Конструкция собрана на односторонней печатной плате, все примененные детали — «выводные»
Печатная плата устройства создана в программе «SprintLayout».
На плате имеется три перемычки — П1, П2, П3
Кварцевый резонатор установлен на плате «лежа», корпус резонатора припаивается перемычкой к контактной площадке на плате под резонатором.

Печатная плата двухканального термометра с часами


Описание работы двухканального термометра и часов

Основой конструкции «Двухканальный термометр, часы» является микроконтроллер ATmega8 в DIP корпусе с тактовой частотой 1 МГц от встроенного генератора с внутренней RC цепочкой. Установка FUSE-битов — по умолчанию, ничего менять не надо.
Для определения текущего времени применена микросхема часов реального времени DS1307, которая отсчитывает секунды, минуты, часы, дату месяца, месяц, день недели и год с компенсацией високосного года действительной до 2100 года.
На индикацию выводятся только:
— текущее время — часы и минуту
— дата месяца
— месяц
— день недели
В качестве датчиков температуры применены два цифровых датчика температуры DS18D20, которые позволяют измерить текущую температуру в пределах от -45 градуов до +125 градусов Цельсия с точностью 0,5 градуса.
На индикацию выводится текущая температура каждого датчика с разрядностью 0,1 °С
Перед значением каждой температуры выводятся символы «Д» и «У» в инверсном виде:
— «Д» — температура в доме
— «У» — температура на улице

Двухканальный термометр и часы на ATmega8, LCD

Работа программы организована по прерываниям по переполнению от таймера Т1 возникающие каждые 4 секунды. Обновление текущего времени происходит каждые 4 секунды, обновление текущих температур с датчиков — поочередно, через каждые 4 секунды.

Питание устройства осуществляется от стабилизированного источника питания напряжением 5 Вольт, можно применить зарядное устройство от сотового телефона, или автономный источник питания — АКБ. Потребляемый ток зависит от яркости подсветки (номинала резистора R3) и в конкретном случае составляет 12 мА.

Управление устройством осуществляется двумя кнопками:
— S1 — «Выбор»
— S2 — «Установка»

При первом включение устройства (или при каждом включении при отсутствии резервного источника питания DS1307 — BAT1) устройство переходит в режим «Полной» установки. При этом необходимо выставить текущие год, месяц, дату, день недели и текущее время — часы-минуты. В этом режиме перевод пояснительной информации на русский не проводился (в отличии от индикации дня недели), все пояснения выводятся на английском (полная установка производится крайне редко, разобраться в ней не трудно):

Установка года «Year»:
Мигающий курсор в виде белого прямоугольника указывает где и что нужно вводить:
— кнопкой «Установка» — выставляем десятки лет
— кнопкой «Выбор» — переходим к установке единиц года
— кнопкой «Установка» — выставляем значение единиц года
— кнопкой «Выбор» — переходим к следующей установке

Установка годаУстановка месяца «Month»
— аналогично установке года

Установка месяцаУстановка дня месяца «Data»:
— аналогично установке года

Установка датыУстановка дня недели «Week»:
— аналогично установке года, при этом — 1- Пн, 2 — Вт, 3 — Ср, 4 — Чт, 5 — Пт, 6 — Сб, 7 — Вс

Установка дня неделиУстановка текущего времени «Hour_Min»
Для примера, текущее время 17 часов 39 минут:
— кнопкой «Установка» — выставляем десятки часов — 1
— кнопкой «Выбор» — переходим к установке единиц часов
— кнопкой «Установка» — выставляем единицы часов — 7
— кнопкой «Выбор» — переходим к установке десятков минут — 4
— кнопкой «Установка» — выставляем единицы минут -0
— секунды уже обозначены на дисплеи как «00»
— ровно в 17 часов 40 минут нажимаем кнопку «Выбор» и текущее время 17 часов 40 минут 00 секунд запишется в DS1307

Установка часов и минут

В рабочем режиме кнопки «Выбор» и «Установка» позволяют перейти в режимы:
кнопка «Выбор» — коррекция времени (при этом производится установка только текущего времени «Hour_Min» как описано выше)
кнопка «Установка» — «Полная» установка
Для входа в нужный режим необходимо нажать соответствующую кнопку и держать ее до тех пор пока экран дисплея не очистится. После очистки дисплея отпускаем кнопку и через секунду переходим в выбранный режим.


  Программа устройства в НЕХ файле (10,8 KiB, 542 hits)

  Программа в Algorithm Builder (27,3 KiB, 373 hits)

  Схема двухканального термометра, часов в "Cadsoft Eagle" (390,1 KiB, 588 hits)

  Печатная плата двухканального термометра, часов в "Sprint Layout" (51,7 KiB, 1 056 hits)

Скачать с ЯндексДиска  (дополнительно — даташиты на русском)


Все необходимые детали для сборки «Двухканального термометра, часов на ATmega8, DS18B20, Ds1307», включая запрограммированный микроконтроллер, вы можете заказать в интернет- магазине сайта «МирМК-SHOP»

Набор для сборки двухканального термометра и часов на ATmega8 и LCD1602


Другие конструкции на микроконтроллерах:
1. Простые электронные часы на микроконтроллере ATyni26, с использование микросхемы часов реального времени DS1307
2. Простой термометр на микроконтроллере ATmega8 и датчика температуры DS18B20
3. Двухканальный термометр на микроконтроллере ATmega8 и датчиках температуры DS18B20
4. Двухканальный термостат, терморегулятор на ATmega8 и датчиках DS18B20
5. Двухканальный термометр, термостат, терморегулятор с возможностью работы по времени, одноканальный таймер реального времени на ATmega8 и датчиках DS18B20


(32 голосов, оценка: 4,94 из 5)
Загрузка...
Схема и конструкция двухканального термометра, часов на ATmega8, DS18B20, DS1307, LCD 1602
Published by: Мир микроконтроллеров
Date Published: 07/03/2016

Комментарии

Двухканальный термометр, часы на ATmega8, DS18B20, DS1307, LCD1602 — 68 комментариев

  1. Согласитесь, не очень приятно для глаза отображение температуры в таком формате «+01,5», не могли бы вы сделать, чтоб перед «1» не выводился «0»?

    • Здравствуйте Евгений!
      Да, Вы правы, не очень.
      К сожалению запарка, смогу, устраню недостаток.
      С уважением, Admin.

  2. Здравствуйте!
    Часы через неделю отстают на пять минут. Как повысить точность хода часов?

    • Здравствуйте Михаил!
      1. Хорошая промывка платы от флюса
      2. Если DS1307 стоит в панельке — убрать панельку
      3. Разводка дорожек и подключение кварца как в даташите
      4. Подключение подстроечного конденсатора 10-15 pF последовательно с кварцем
      5. Поменять кварц (должен быть на 12,5 pF, можно взять с материнской платы ненужного компьютера)
      С уважением, Admin.

  3. Здравствуйте у меня такой вопрос, на всеми нами известном сайте есть в продаже готовый модуль часов реального времени «Tiny RTC I2C modules» возможно ли его интегрировать в с схему с перерисовкой и в плату?

  4. Собрал схему на макетной плате. Все работает.Домашний датчик в отличии от эталонного ртутного показывает на 0.5 град. больше. Спасибо разработчику проекта.Отлично!

  5. Подтверждаю, при отключении питания 5 вольт и последующем его включении(10-15 минут), настройки времени и даты приходится вводить заново и это плохо.

    • прошу удалить сообщение выше, настройки сохраняются возможно контакт на батарейке плохой был.

  6. Идентификация датчиков как в вашем коде происходит? Дело в том, что в вашем проекте у меня работает только один датчик, второй показывает -0,01 градус, при подключении же обоих датчиков к ардуино они оба показывают температуру исправно.

    • Здравствуйте Евгений!
      Датчики подключены к разным выводам МК, поэтому идентификация датчиков не проводится.
      С уважением, Admin.

  7. Так, вроде бы заработало у меня, но температура снимается только с домашнего датчика, уличный датчик показывает «Err1», подключать его нужно к 14 пину МК, правильно? Он у меня так и подключен к 14 пину.

    • Здравствуйте Евгений!
      Из-за путаницы в подключении датчиков на схеме и плате, возникла ошибка в тексте статьи, исправил.
      Необходимо подключать как на плате:
      1-й датчик к 15 выводу, второй датчик — к 16 выводу
      Приношу свои извинения.
      С уважением, Admin/

      • На улице показывает «Err2», даже когда переставляю домашний датчик, уличный датчик перепаял на 16 пин

        • Все, теперь показывает, т.е. будет показывать уличный датчик через полтора месяца, когда новый придет из китая, взамен сгоревших))))

  8. Скиньте мне пожалуйста рабочую прошивку, дальше заставки ничего на экране не происходит.

    • Здравствуйте Евгений!
      Общение МК с DS1307 происходит программным путем, такое подключение — чистая случайность.
      С уважением, Admin.

  9. скпжите пожалуйста можно ли использовать DS1302 вместо DS1307 на схеме

  10. Минусовую температуру показывает? SCL и SDA теперь правильно на печатке подключены? А RESET MK нужно или нет все-таки к + подтягивать через резистор? Кто собрал, нормально работает, не перезагружается, не сбоит?

    • Схему собрал на плате. Минусовую температуру показывает без глюков. Выводы: SDL К SDL, а SDA к SDA. Reset к плюсу не подключал. Часы работают нормально. Посл отключении питания, настройки сохраняются.

  11. Здравствуйте. У меня не сохраняются в памяти настройки тоесть при каждом включении приходится заново все настраивать год месяц число . Датчики пока не подключал. Прошивал Алгоритм Билдер.
    В чем может быть проблема ????

    • Здравствуйте Serg!
      Причины:
      — отсутствие резервного источника питания DS1307
      — неправильное подсоединение резервного источника питания к DS1307 или плохой контакт
      — проблемы в DS1307
      С уважением, Admin.

  12. Добрый день! давно занимаюсь электроникой,и люблю повторять чужие разработки, все отлично работает, только я собрал на smd, размер получился в ровень с дисплеем, спасибо!

  13. Здоравствуйте!
    Изменённая прошивка не работает, выходит только заставка.
    А на яндекс диске старая (с глюком при минусовой температуре) прошивка.

    • Здравствуйте Михаил!
      Проверьте правильность подключения DS1307 к МК.
      На ЯД файлы заменил.
      С уважением, Admin.

  14. Ждём, с нетерпением, изменненной прошивки. Пожелание одно, если можно, сделайте мигающее двоеточие между часами и минутами, часы оживут, как то оно так привычнее. Спасибо.

    • Здравствуйте Вячеслав!
      Процесс затянулся (праздники), но завтра с утра сяду разбираться с глюком.
      С уважением, Admin.

    • Здравствуйте Валерий и Вячеслав!
      Глюк найден, новые файлы выложены, должно работать.
      С уважением, Admin.

  15. Хотел добавить от себя, что RESET МК необходимо подтянуть к +5В через резистор 10К. Иначе, по крайне мере у меня, после часа работы, МК начинает постоянно перезагружаться.

  16. Собрал, работает с исправленной прошивкой, но так же при минусовых значениях показывает символ < ( т.е. если, например, температура "-15,3", на дисплее показывает "-<5,3". Предположу, что это глюк прошивки, т.к. при замене датчиков температуры, ситуация аналогичная.

    • Здравствуйте Вячеслав!
      Проверю и внесу исправления. Честно говоря, при отрицательной температуре работу конструкции не проверял.
      С уважением, Турчак Вадим.

  17. Здравствуйте! Собрал схему все работает. Одна проблема при минусовых значениях вместо цифр показывает знаки (;,<).Прошу помощи.Заранее спасибо.

  18. Здравствуйте!
    Собрал часы на плате, работают. Спасибо за схему.
    Усовершенствовать будете? Нужно датчик температуры улица, по радиоканалу, на дешёвых китайских RF модулях.

  19. Здравствуйте! Посмотрите у вас на схеме датчик DS1 подключён к PB0, а на печатке к PB2, это ошибка?

  20. Здравствуйте!
    Собрал схему на плате, выходит только заставка. Соединяю R7 и R8 на минус, настройки работают как на картинках. Термометры показывают температуру, а часы только нули. Почему так? В протеусе всё работает как по схеме.

    • Здравствуйте Владимир!
      R7 и R8 соединять на минус не надо — не будет общения часов с МК.
      Поменяйте 5 и 6 выводы часов между собой (SDL и SCA) — ошибка в схеме.
      Программу я переделывал под схему, только вот видимо не поменял или на сайте,, или на ЯндексДиске (Не помню).
      Не подскажите где Вы ее скачивали?
      С уважением, Admin.

      • Скачивал с сайта и с Яндекс диска. Схема одинаковая.
        Прошивать только Hex файл, eepom нет?

  21. Здравствуйте!
    Есть прошивка на русском языке? Для индикатора поддерживающего русский язык.

  22. собрал часы, включил . горит только надпись мир мк, шоп микроконтроллер.подскажите, что не так?

    • Здравствуйте Павел!
      По алгоритму работы программы, при включении устройства, сначала выводится «рекламная заставка» (3 сек), затем идет подпрограмма проверки DS1307. Проверяется 7-й бит нулевого регистра, если 7-й бит равен единице, осуществляется переход к подпрограмме полной установки времени, иначе — переход к выводу второй заставки (разделители времени, букв Д и У) и основному циклу (измерение температуры, считывание времени, вывод на экран показаний). Получается, что у Вас программа «виснет» в процессе проверки DS1307, в чем причина — сказать трудно, в подпрограмме проверки DS1307 нет кода, из-за которого возможно «зависание». Проверьте правильность подключения DS1307 к микроконтроллеру, наличие питания на выводах микросхемы, надежность контактов подтягивающих резисторов на выводах DS1307, установку FUSE битов (тактовая частота по умолчанию — 1 мГц), замените DS1307.
      С уважением, Admin.

      • Тоже самое что и у Павла, все микросхемы исправны, где то в вашей прошивке косяк.

        • Здравствуйте Андрей!
          Все фотографии к статье сделаны с работающего устройства, с прошивкой, которую выложил на сайте.
          На всякий случай соберу устройство еще раз на макетке и проверю, потом отпишусь.
          С уважением, Admin.

        • Здравствуйте Андрей и Павел!
          В выложенной прошивке выводы DS1307 SCL и SDA были подключены к выводам МК РС5 и РС4 соответственно, что не соответствовало приведенной схеме.
          Прошивку изменил под приведенную схему.
          С уважением, Admin.

    • Здравствуйте Тарас!
      Попробуйте скачать с ЯндексДиска (ссылка ниже прошивки и схемы)
      С уважением, Admin.

      • Здравствуйте! Всё скачалось. Большое СПАСИБО. В папке несколько hex файлов. Я так понимаю файл нужный, тот который имеет размер 11КБ

    • Здравствуйте Василий!
      У меня скачивается без проблем.
      Завтра выложу программы и печатку на ЯндекДиске.
      С уважением, Admin.

  23. Файл печатной платы не открывается. Пробовал и 5 и 6 SPRINT LAYOUT-пишут ошибку. Что не так?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *