Часы-термометр-секундомер на PIC16F628A
Данное устройство позволят считать время, измерять температуру, использовать секундомер. Дополнительно это устройство ведет простую статистику температуры — минимум/максимум, а в остальном мало отличается от уймы подобных устройств. Для индикации используются светодиодные 7-ми сегментные индикаторы с десятичной точкой, зеленого свечения. Индикация динамическая.
Устройство имеет следующие функции:
Для измерения температуры используется датчик DS18B20, этот датчик выносной, устанавливается «за окном» для измерения уличной температуры. Остальные функции устройства реализованы чисто программно. Вывод данных на индикатор осуществляется последовательно по 2-м проводам ДАННЫЕ и СИНХРОНИЗАЦИЯ. После того как последовательно выгружены все 8 бит в сдвиговый регистр К1533ИР24 открывается один из транзисторов и зажигает нужное знакоместо. Далее все знакоместа выключаются и в регистр загружается новое значение для следующей цифры и после этого открывается следующий транзистор, зажигая тем самым следующее знакоместо. Это происходит очень быстро, поэтому визуально кажется, что светиться весь индикатор, все его знакоместа.
Для управления этим устройством используется всего 2 кнопки. Кнопка S1 последовательно переключает все режимы индикации. А кнопка S2 служит для включения режима коррекции часов или для запуска/остановки секундомера. В режиме коррекции часов сначала мигают часовые цифры, кнопка S2 изменяет их значение на 1, если еще раз нажать S1, то будут мигать цифры минут, кнопка S2 будет влиять уже на них. Коррекция часов возможно только в режиме индикации часов/температуры. В остальных режимах (кроме секундомера) кнопка S1 никаких действий не производит. В режиме секундомера кнопка S1 запускает счет, а повторное нажатие на нее останавливает. Сбрасуется секундомер в 0 по нажатию кнопки S2. Если секундомер уже сброшен, то нажатие S2 переведет устройство на следующий режим. Кроме того, когда кнопки не нажимались в течение 10 секунд, индикаторы переходят на «приглушенный» режим (этот режим получился немного коряво, снижения яркости практически не заметно), чтобы снизить энергопотребление и нагрев стабилизатора 7805. Но как только будет нажата любая кнопка независимо от текущего режима индикации — индикаторы вновь вернуться на полную яркость и 10-ти секундный цикл повториться.
Некоторые примеры индикации:
— Температура.
— Время (ЧЧ.ММ — разделительная точка мигает).
— Максимальная температура за текущие сутки.
— Минимальная температуры за текуище сутки.
— Максимальная температура за всю историю работы
— Минимальная температура за всю инсторию работы.
— Количесто отработанных суток.
— Секундомер.
— минуты-секунды (ММ.СС — разделительная точка не мигает).
Многие события устройства имеют звуковую сигнализацию.
Устройство собрано на печатной плате, и размещено в подходящем пластиковом корпусе. На лицевую панель выведены кнопки управления, а также просверлены отверстия диаметром 1,2 мм в районе звукового излучателя. Окошко для индикатора в попавшемся мне корпусе уже было. Датчик закреплен на пластиковой трубочке на расстоянии примерно 30 см от окна, вокруг датчика из жести сделана коробочка с отверстиями, чтобы уменьшить нагрев датчика прямыми солнечными лучами. Для питания устройства от сети используется выносной блок питания — адаптор с выходным напряжением 9 вольт, в нем отсутствует стабилизатор. Только трансформатор, диодный мост и конденсатор на 470мкФ. Конечно же лучше применить для питания этого устройства блок питания с резервным питанием, чтобы не сбрасывались часы при пропадании напряжения в сети. Микросхему стабилизатор 7805 нужно снабдить маленьким теплоотводом и обеспечить ее вентиляцию (несколько отверстий в корпусе). Микроконтроллер можно применять абсолютно в любом температурном исполнении.
СКАЧАТЬ — Архив файлов (56 кб)
содержит проект под Proteus 7.5 SP3, готовую прошивку микроконтроллера и схему в формате GIF. В прошивке сразу заносяться в EEPROM рекордные температуры: минимальная +20, а максимальная +30 градусов, эти значения нетрудно откорректировать прямо в окне программы управления программатором, их нужно сделать равными текущей температуре +100, чтобы термометр вел правильную статистику. Т.е. если нужно занести стартовую температуру равную 10 градусам, то на самом деле нужно внести 110. В шестнадцатеричном виде это будет 0х6E.
Комментариев пока нет ... Будьте первым, кто оставить свой ответ!