Часы с жки на пик pic16f628a. Часы-термометр с анимированной сменой индикации (PIC16F628A). Схема новых часов на PIC16F628A

Термометр на микроконтроллере 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, кроме него часы содержат несколько простых и дешевых элементов, информация выводится на 4-х разрядный (часовой) светодиодный индикатор. Схема питается от сети, а также имеет резервное питание. Данную конструкцию можно рекомендовать начинающим, я специально снабдил исходную программу подробными коментариями, чтобы легче было поять, что и как тут работает.

Схема очень простая, простой и алгоритм их работы (см.коментарии в исходнике). Кнопки кн1 и кн2 служат для коррекции времени - часов и минут соответственно. Часы имеют 24 часовой формат отображения. В 1-м разряде часов сделано гашение незначащего нуля. Точность хода часов целиком зависит от частоты кварцевого резонатора. Но даже без специальных подборок кварцев и конденсаторов в тактовом генераторе - часы идут весьма точно.

Часы собраны на 2-х печатных платах, пристыкованных одна к одной под углом 90 градусов. На одной плате размещен целиком индикатор, а все остальное на другой. Элемент резервного питания выломан из китайской зажигалки со светодиодным фонариком. Удаляем светодиод, а держатель батареек устанавливаем на плату. На фотографии видно, что к батарейкам выведены обрезки выводов резисторов - они то и держут всю эту конструкцию. Конечно емкость таких батареек невелика, но когда часы питаются от сети, ток от батареек не потребляется. Они питают схему, только если нет сетевого питания. При этом питается только микроконтроллер, индикатор же от батареек не питается, поэтому гаснет, а часы продолжают ход. Кнопки управление вынесены с платы в любое удобное место корпуса. Конструкция кнопок может быть любой. Для питания от сети использован китайский БП-адаптор, в который добавлена плата с микросхемой 7805 (5-ти вольтовый стабилизатор). Вобще подойдет любой блок питания, с выходным напряжением 5В и током 150мА.

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



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

Answer

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry"s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five http://jquery2dotnet.com/ centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

Часы - будильник на микроконтроллере PIC16F628A с питанием от батареек

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

Рис 1. Вид передней панели.

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

Рис 2. Режимы индикации.

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

Рис 3. Схема часов.

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

  • Настольные и настенные часы с термометрами выполнены в корпусах от стрелочных часов. Часы и термометр изготовлены как отдельные, самостоятельные устройства.

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

    Датчик температуры DS18B20 настольных часов выведен за окно на улицу. Провода изолированные 0,35мм, длиной примерно 10 метров

    Часы собраны на одинарных 7-ми сегментных светодиодных индикаторах зеленого цвета. Размер цифры 14х25,4мм – хорошо различимы с любого уголка комнаты. Обратите внимание, что индикатор подключен без гасящих резисторов. Это связано с тем, что каждый сегмент состоит из двух соединенных последовательно светодиодов и номинальное напряжение 3,8 вольта. При динамической индикации токи не превышают допустимые.

    Стабилизатор напряжения находится в вилке - адаптере. Он собран на 3 ваттном трансформаторе и высокочастотном преобразователе – стабилизаторе LM2575T-5.0 по стандартной схеме. Микросхема без радиатора, практически не греется. Разъём для блока питания 3,5мм. Кварц 4 МГц.

    Транзисторы n-p-n любые маломощные. Кнопки 6x6 H=14/10мм припаяны со стороны проводников. Длина толкателя кнопок выбирается исходя из требований конструкции. При каждом нажатии на кнопку добавляется единичка. При удержании – счет ускоряется до разумной скорости.

    Резисторы МЛТ – 0,25. R3 – R6 1-3 кОм.

    Аккумуляторы: 4 штуки из GP- 170, или подобные. При отключении сетевого напряжения они питают только микроконтроллер.

    Диоды желательно подобрать с наименьшим падением напряжения в прямом направлении.
    Платы изготовлены из одностороннего фольгированного стеклотекстолита.
    НЕХ файл, схема, печатки в папке №1.

    Вариант 2: на одной плате

    В этот корпус не помещались две платы: часов и термометра. Уменьшать размеры индикатора часов не хотелось.

    Отображать время и температуру одним индикатором по очереди в настольных часах мне не нравится.
    Пришлось взять для термометра другой индикатор меньшего размера и нарисовать новую печатную плату. Поэтому схема и прошивка для термометра другие.

    НЕХ файл и схема термометра в папке № 2. Печатная плата там же.
    Схема часов без всяких изменений взята из первого раздела.

    Ниже вы можете скачать прошивки и печатные платы в формате HEX

    Список радиоэлементов

    Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
    Вариант 1
    МК PIC 8-бит

    PIC16F628A

    1 В блокнот
    VR1 DC/DC импульсный конвертер

    LM2575

    1 В блокнот
    VT1-VT4 Биполярный транзистор

    КТ3102

    4 В блокнот
    VD1, VD2, VD4 Диод

    Д310

    3 В блокнот
    VD3 Диод Шоттки

    1N5819

    1 В блокнот
    VS1 Диодный мост

    DB157

    1 В блокнот
    С1, С2 Конденсатор 20 пФ 2 В блокнот
    С3, С5 Конденсатор 0.1 мкФ 2 В блокнот
    С4 330 мкФ 16 В 1 В блокнот
    С6 Электролитический конденсатор 100 мкФ 35 В 1 В блокнот
    R1, R2 Резистор

    10 кОм

    2 В блокнот
    R3-R6 Резистор

    1 кОм

    4 В блокнот
    R7, R10 Резистор

    100 Ом

    2 В блокнот
    L1 Катушка индуктивности 330 мкГн 1 В блокнот
    Tr1 Трансформатор 1 В блокнот
    F1 Предохранитель 100 мА 1 В блокнот
    Батарея 4.8 В 1 В блокнот
    HL1, HL2 Светодиод 2 В блокнот
    S1, S2 Кнопка 2 В блокнот
    Z1 Кварц 4 МГц 1 В блокнот
    Индикатор FYS10012BG21 1 В блокнот
    Вариант 2
    МК PIC 8-бит

    PIC16F628A

    1 В блокнот
    VT1-VT4 Биполярный транзистор

    КТ3102

    1 В блокнот
    С1, С2 Конденсатор 20 пФ 2 В блокнот
    С3 Конденсатор 0.1 мкФ 1 В блокнот
    R1 Резистор

    4.7 кОм

    1 В блокнот
    R2, R3, R5, R6 Резистор