Часы-термометр-секундомер на PIC16F628A

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

  • Комментариев пока нет ... Будьте первым, кто оставить свой ответ!