Схема электронных часов на pic16f628a - устройства на мк - radio-bes - электроника для дома. Часы на PIC16F628A и FYQ3641A Часы термометр анимированной сменой индикации pic16f628a

Часы на PIC16F628A и датчике температуры DS18B20.

4-х сегментный светодиодный индикатор.

Анимированная смена индикации.

Вариант простых часов на популярном и доступном микроконтроллере PIC16F628A. Фактически c них начинался проект на AVR .

Описание часов.


1. Функции.

– часы, формат отображения времени 24-х часовый, часы:минуты.

– цифровая коррекция точности. Возможна ежесуточная коррекция ±25 сек. Установленное значение в 1 час 0 минут 30 сек будет прибавлено/вычтено из текущего времени.

– термометр.

– индикация. Поочередная.

– настраиваемая анимация смены показаний.

– использование энергонезависимой памяти микроконтроллера для сохранения настроек при отключении питания.

– если в основном режиме нажать на кнопку PLUS , то на индикаторы выводится время, если нажать на MINUS – температура. При отпускании кнопок возобновляется автоматическая смена показаний.

2. Настройка.

2.1. При включении питания часы в основном режиме.

2.2. Нажатием на кнопку SET производится вход в режим настроек и выбора параметра для установки. По-очереди доступны для установки:

– минуты;

– часы;

– секунды (обнуляются при нажатии на кнопки PLUS или MINUS );

– величина коррекции. В старшем разряде символ " с ";

– время индикации текущего времени. В старших разрядах символы " tc ". Диапазон установки 0÷99 сек. Если установлен 0, то время отображаться не будет;

– время индикации температуры. В старших разрядах символы " tt ". Диапазон установки 0÷99 сек. Если установлен 0, то температура отображаться не будет;

– выбор эффекта анимации. В старших разрядах символы " EF ". Если установлен 0, смена информации будет проводиться без эффектов , если выбран автоматический режим (символ А ), то будет производиться поочередная смена эффектов. Если выбран режим r , то смена эффектов будет производиться случайным образом.

– выбор скорости анимации. В старшем разряде символ " P ". Диапазон установки 0÷99. Одна единица соответствует примерно 2 мсек, чем выше величина, тем медленнее идет анимация.

2.3. Устанавливаемый параметр мигает.

2.4. Удержанием кнопок PLUS / MINUS производится ускоренная установка параметра.

3. Примечания.

Необходимо соизмерять скорость анимации и время отображения информации. Если выбрана медленная анимация и малое время отображения, то может оказаться, что информация не успевает полностью обновиться до очередной смены.

При отключении основного питания (+12 V ) индикация отключается, часы продолжают идти. Питание МК осуществляется от резервного источника.

В архиве прошивки для индикаторов с общим катодом и анодом, проект в Proteus и описание.

Вопросы, пожелания в форум .

11.03.2015

Добавлена обновленная прошивка для индикатора с общим катодом. В новой прошивке больше эффектов анимации и небольшие изменения в алгоритме. Подробное описание в архиве.


Этот вариант часов сделан таким образом, чтобы максимально упростить схему, снизить энергопотребление, и в итоге получить прибор, который легко помещается в кармане. Выбрав миниатюрные аккумуляторы для питания схемы, SMD - монтаж и миниатюрный динамик (например от нерабочего мобильного телефона), Вы можете получить конструкцию, размером чуть больше спичечного коробка.
Применение сверхъяркого индикатора позволяет снизить ток, потребляемый схемой. Снижение тока потребления также достигается в режиме "LoFF" - индикатор погашен, при этом включена только мигающая точка младшего разряда часов.

Индикация
Регулируемая яркость индикаторов позволяет выбрать наиболее комфортное отображение показаний (и опять же снизить энергопотребление).
В часах реализовано 9 режимов индикации. Переход по режимам осуществляется с помощью кнопок "плюс" и "минус". Перед выводом на индикацию самих показаний, на индикаторы выводится короткая подсказка названия режима. Длительность вывода подсказки - одна секунда. Применение кратковременных подсказок позволило достичь хорошей эргономичности часов. При переходах по режимам отображения (которых получилось достаточно много, для такого простого прибора, как обычные часы) не возникает путаницы, и всегда понятно, какие именно показания выведены на индикатор.


Коррекция показаний, выведенных на индикатор включается при нажатии на кнопку "Коррекция". При этом кратковременная подсказка выводится на 1/4 секунды, после чего корректируемое значение начинает мигать с частотой 2 Гц. Корректируются показания кнопками "плюс" и "минус". При длительном нажатии на кнопку, включается режим автоповтора, с заданной частотой. Частоты автоповтора нажатия кнопки составляют: для часов, месяцев и дня недели - 4 Гц; для минут, года и яркости индикатора - 10 Гц; для корректирующего значения - 100 Гц.
Все откорректированные значения, кроме часов, минут и секунд, записываются в EEPROM и восстанавливаются после выключения - включении питания. Секунды при коррекции обнуляются. Из всех режимов, кроме часы-минуты, минуты-секунды и LoFF организован автоматический возврат. Если в течение 10 секунд ни одна из кнопок не нажата, то часы переходят в режим отображения часов - минут.
Нажатием на кнопку "Вкл/Выкл буд." включается/выключается будильник. Включение будильника подтверждается коротким двухтональным звуком. При включенном будильнике светится точка в младшем разряде индикатора.
В режиме "Corr" на индикатор выведена корректирующая константа, начальное значение которой 5000 микросекунд в секунду. При отставании часов константу увеличиваем на величину отставания, вычисленное в микросекундах за одну секунду. Если часы спешат, то константу уменьшаем по тому же принципу.

Данное устройство позволят считать время, измерять температуру, использовать секундомер. Дополнительно это устройство ведет простую статистику температуры — минимум/максимум, а в остальном мало отличается от уймы подобных устройств. Для индикации используются светодиодные 7-ми сегментные индикаторы с десятичной точкой, зеленого свечения. Индикация динамическая.

Устройство имеет следующие функции:

  • Индикация текущего времени в формате ЧЧ.ММ в течение 3-х секунд, потом показания переключаются на температуру, отображение с точностью до 0.1 градуса. Коррекция часов возможна только в этом режиме индикации.
  • Индикация предельно низкой температуры на текущие сутки, индикатор высвечивает маленькую L в первом знакоместе и далее температура.
  • Индикация предельно высокой температуры на ткущие сутки, индикатор высвечивает маленькую h в первом знакоместе.
  • Средняя температура на текущие сутки, индикатор высвечивает маленькую c.
  • Индикация предельно низкой температуры за всю историю работы термометра, в первом знакоместе большая буква L.
  • Индикация предельно высокой температуры за всю историю работы, в первом знакоместе большая H.
  • Средняя температура за всю историю, в первом знакоместе большая C.
  • Индикация времени в формате ММ.СС (т.е. минуты и секунды). В этом режиме коррекция не возможна.
  • Индикация количества дней пройденных с момента включения устройства.
  • Секундомер — имеющий несколько пределов индикации (М.СС.Д — ММ.СС — Ч.ММ.С — ЧЧ.ММ). Предел счета секундомера 100часов. Далее секундомер останавливается и на дисплей выводиться BUSY.
  • Рекорды температуры (не суточной, а общей за всю историю) сохраняются в энергонезависимой памяти EEPROM
  • Для измерения температуры используется датчик DS18B20, этот датчик выносной, устанавливается «за окном» для измерения уличной температуры. Остальные функции устройства реализованы чисто программно. Вывод данных на индикатор осуществляется последовательно по 2-м проводам ДАННЫЕ и СИНХРОНИЗАЦИЯ. После того как последовательно выгружены все 8 бит в сдвиговый регистр К1533ИР24 открывается один из транзисторов и зажигает нужное знакоместо. Далее все знакоместа выключаются и в регистр загружается новое значение для следующей цифры и после этого открывается следующий транзистор, зажигая тем самым следующее знакоместо. Это происходит очень быстро, поэтому визуально кажется, что светиться весь индикатор, все его знакоместа.

    Для управления этим устройством используется всего 2 кнопки. Кнопка S1 последовательно переключает все режимы индикации. А кнопка S2 служит для включения режима коррекции часов или для запуска/остановки секундомера. В режиме коррекции часов сначала мигают часовые цифры, кнопка S2 изменяет их значение на 1, если еще раз нажать S1, то будут мигать цифры минут, кнопка S2 будет влиять уже на них. Коррекция часов возможно только в режиме индикации часов/температуры. В остальных режимах (кроме секундомера) кнопка S1 никаких действий не производит. В режиме секундомера кнопка S1 запускает счет, а повторное нажатие на нее останавливает. Сбрасуется секундомер в 0 по нажатию кнопки S2. Если секундомер уже сброшен, то нажатие S2 переведет устройство на следующий режим. Кроме того, когда кнопки не нажимались в течение 10 секунд, индикаторы переходят на «приглушенный» режим (этот режим получился немного коряво, снижения яркости практически не заметно), чтобы снизить энергопотребление и нагрев стабилизатора 7805. Но как только будет нажата любая кнопка независимо от текущего режима индикации — индикаторы вновь вернуться на полную яркость и 10-ти секундный цикл повториться.

    Некоторые примеры индикации:
    — Температура.

    — Время (ЧЧ.ММ — разделительная точка мигает).

    — Максимальная температура за текущие сутки.

    — Минимальная температуры за текуище сутки.

    — Максимальная температура за всю историю работы

    — Минимальная температура за всю инсторию работы.

    — Количесто отработанных суток.

    — Секундомер.

    — минуты-секунды (ММ.СС — разделительная точка не мигает).

    Многие события устройства имеют звуковую сигнализацию.

  • Включение/выключение/сброс секундомера — 1 короткий.
  • Температура упала ниже нуля, и ранее за эти сутки не была ниже нуля (и так далее, при дальнейшем понижении) — 1 короткий.
  • Температура поднялась выше 30 и ранее не была выше 30 (и так далее при дальнейшем повышении) — 2 коротких.
  • Получен новый рекордный минимум или максимум температуры — 3 коротких.
  • Переполнение секундомера — 1 длинный и 2 коротких.
  • Включение устройства — 1 короткий.

    Устройство собрано на печатной плате, и размещено в подходящем пластиковом корпусе. На лицевую панель выведены кнопки управления, а также просверлены отверстия диаметром 1,2 мм в районе звукового излучателя. Окошко для индикатора в попавшемся мне корпусе уже было. Датчик закреплен на пластиковой трубочке на расстоянии примерно 30 см от окна, вокруг датчика из жести сделана коробочка с отверстиями, чтобы уменьшить нагрев датчика прямыми солнечными лучами. Для питания устройства от сети используется выносной блок питания — адаптор с выходным напряжением 9 вольт, в нем отсутствует стабилизатор. Только трансформатор, диодный мост и конденсатор на 470мкФ. Конечно же лучше применить для питания этого устройства блок питания с резервным питанием, чтобы не сбрасывались часы при пропадании напряжения в сети. Микросхему стабилизатор 7805 нужно снабдить маленьким теплоотводом и обеспечить ее вентиляцию (несколько отверстий в корпусе). Микроконтроллер можно применять абсолютно в любом температурном исполнении.

    СКАЧАТЬ — Архив файлов (56 кб)
    содержит проект под Proteus 7.5 SP3, готовую прошивку микроконтроллера и схему в формате GIF. В прошивке сразу заносяться в EEPROM рекордные температуры: минимальная +20, а максимальная +30 градусов, эти значения нетрудно откорректировать прямо в окне программы управления программатором, их нужно сделать равными текущей температуре +100, чтобы термометр вел правильную статистику. Т.е. если нужно занести стартовую температуру равную 10 градусам, то на самом деле нужно внести 110. В шестнадцатеричном виде это будет 0х6E.

  • Термометр на микроконтроллере PIC16F628A и DS18B20(DS18S20) – статья с подробным описанием схемы запоминающего термометра и, вдобавок, - логическое продолжение ранее опубликованной мною статьи на яндекс сайте pichobbi.narod.ru. Этот термометр довольно неплохо себя зарекомендовал, и было принято решение немного его модернизировать. В этой статье расскажу, какие изменения внесены в схему и рабочую программу, опишу новые функции. Статья будет полезна новичкам. Позже переделал текущую версию термометра в .

    Термометр на микроконтроллере PIC16F628A и DS18B20(DS18S20) умеет:

    • измерять и отображать температуру в диапазоне:
      -55...-10 и +100...+125 с точностью 1 градус(ds18b20 и ds18s20)
      -в диапазоне -9,9...+99,9 с точностью 0,1 градус(ds18b20)
      -в диапазоне -9,5...+99,5 с точностью 0,5 градус(ds18s20);
    • Автоматически определять датчик DS18B20 или DS18S20;
    • Автоматически проверять датчик на аварию;
    • Запоминать максимальную и минимальную измеренные температуры.

    Также в термометре предусмотрена легкая замена 7 сегментного индикатора с ОК на индикатор с ОА. Организована щадящая процедура записи в EEPROM память микроконтроллера. Вольтметр, который неплохо себя зарекомендовал, описан в этой статье - .

    Принципиальная схема цифрового термометра на микроконтроллере разрабатывалась для надежного и длительного использования. Все детали, применяющиеся в схеме, не дефицитные. Схема проста в повторении, отлично подойдет для начинающих.

    Принципиальная схема термометра показана на рисунке 1

    Рисунок 1 - Принципиальная схема термометра на PIC16F628A + ds18b20/ds18s20

    Описывать всю принципиальную схему термометра не стану, так как она довольно проста, остановлюсь только на особенностях.

    В качестве микроконтроллера применяется PIC16F628A фирмы Microchip. Это недорогой контроллер и к тому же не дефицитный.

    Для измерения температуры используются цифровые датчики DS18B20 или DS18S20 фирмы Maxim. Эти датчики не дорогие, малые по размеру и информация о измеренной температуре передается в цифровом виде. Такое решение позволяет, не тревожиться о сечении проводов, о их длине и прочем. Датчики DS18B20, DS18S20 способны работать в диапазоне температур от -55… +125 °С.

    Температура выводится на 7-ми сегментный 3-х разрядный LED индикатор с общим катодом (ОК) или с (ОА).

    Для вывода на индикатор максимальной и минимальной измеренных температур нужна кнопка SB1. Для сброса памяти так же нужна кнопка SB1

    Кнопкой SA1 можно оперативно переключать датчики(улица, дом).

    Jamper необходим для переключения общего провода для LED индикатора. ВАЖНО! Если индикатор с ОК – то ставим jamper на нижнее по схеме положение, а транзисторы VT1-VT3 впаиваем p-n-p проводимости. Если LED индикатор с ОА, то jamper переводим в верхнее по схеме положение, а транзисторы VT1-VT3 впаиваем n-p-n проводимости.

    В таблице 1 можно ознакомиться со всем перечнем деталей и возможной их заменой на аналог.

    Таблица 1 – Перечень деталей для сборки термометра
    Позиционное обозначение Наименование Аналог/замена
    С1, С2 Конденсатор керамический - 0,1мкФх50В -
    С3 Конденсатор электролитический - 220мкФх10В
    DD1 Микроконтроллер PIC16F628A PIC16F648A
    DD2,DD3 Датчик температуры DS18B20 или DS18S20
    GB1 Три пальчиковых батарейки 1,5В
    HG1 7-ми сегментный LED индикатор KEM-5631-ASR (OK) Любой другой маломощный для динамической индикации и подходящий по подключению.
    R1,R3,R14,R15 Резистор 0,125Вт 5,1 Ом SMD типоразмер 0805
    R2,R16 Резистор 0,125Вт 5,1 кОм SMD типоразмер 0805
    R4,R13 Резистор 0,125Вт 4,7 кОм SMD типоразмер 0805
    R17-R19 Резистор 0,125Вт 4,3 кОм SMD типоразмер 0805
    R5-R12 Резистор 0,125Вт 330 Ом SMD типоразмер 0805
    SA1 Любой подходящий переключатель
    SB1 Кнопка тактовая
    VT1-VT3 Транзистор BC556B для индикатора с ОК/ транзистор BC546B для индикатора с ОА KT3107/КТ3102
    XT1 Клеммник на 3 контакта.

    Для первоначальной отладки работы цифрового термометра применялась виртуальная модель, построенная в протеусе. На рисунке 2 можно увидеть упрощенную модель в протеусе

    Рисунок 2 – Модель термометра на микроконтроллере PIC16F628A в Proteus’e

    На рисунке 3-4 показана печатная плата цифрового термометра

    Рисунок 3 – Печатная плата термометра на микроконтроллере PIC16F628A(низ) не в масштабе.

    Рисунок 4 – Печатная плата термометра на микроконтроллере PIC16F628A(верх) не в масштабе.

    Термометр, собранный рабочих деталей начинает работать сразу и в отладке не нуждается.

    Результат работы рисунки 5-7.

    Рисунок 5 - Внешний вид термометра

    Рисунок 6 - Внешний вид термометра

    Рисунок 7 - Внешний вид термометра

    ВАЖНО! В прошивку термометра не вшита реклама можно пользоваться в свое удовольствие.

    Поправки, внесенные в рабочую программу:

    1 автоматическое определение датчика DS18B20 или DS18S20;

    2. снижено время перезаписи в EEPROM(если выполнилось условие для перезаписи) с 5 минут, до 1 минуты.

    3. увеличена частота мерцания точки;

    Более подробное описание работы термометра можно посмотреть в документе, который можно скачать в конце этой статьи. Если скачивать нет желания, то на сайте www.pichobbi.narod.ru также отлично расписана работа устройства.

    Готовая плата отлично поместилась в китайский будильник (рисунки 8, 9).

    Рисунок 8 – Вся начинка в китайском будильнике

    Рисунок 9 - Вся начинка в китайском будильнике

    Видео - Работа термометра на PIC16F628A


    Это обычный цифровой термометр, на просторах интернета подобных девайсов очень много. Основа микроконтроллер PIC16F628A и цифровой датчик температуры DS18S20 (DS18B20). В качестве индикаторов применены светодиодные 3-х разрядные индикаторы зеленого цвета. Индикация динамическая. Термометр работает во всем диапазоне температур датчика DS18S20, т.е. от -55 до +125 градусов.

    Собран термометр на печатной плате, вместе с индикатором. Датчик и питание подключаются отдельно. Если датчик не подключен, на индикаторе высвечивается буква Е (Error). Никаких особенностей данный прибор не имеет. Диод VD1 служит для защиты от переполюсовки источника питания.

    Прибор может работать как с датчиком DS18B20, так и с датчиком DS1820(DS18S20). Под каждый датчик используется своя прошивка микроконтроллера. Ниже приведен вариант этого термометра с уже установленным на печатную плату диодным мостом и стабилизатором 7805, т.е. для питания этого устройства достаточно подключить вторичную обмотку трансформатора к разъему питания. Кроме того, на этой плате установлен светодиод, который кратковременно вспыхивает во время опроса микроконтроллером датчика температуры. Светодиод подключен между ножкой RB3 (вывод 9) и "массой", естественно с резистором. Отсутствие светодиода на плате никак на работу термометра не повлияет.

    Прибор удобно разместить в любой пластиковой коробке подходящих размеров. Я разместил его в корпусе сетевого блока питания (Адаптора) вместе с трансформатором. Т.е. из коробки выходит только разъем на датчик DS18B20, а сам корпус вставляется в сеть 220В.



    Файл:
    Размер:
    Содержимое:

    sm_termo.rar
    38.3 КБ
    Рисунки плат (LAY) и прошивки микроконтроллера.