Часы на микроконтроллере pic16f628a. Простой цифровой термометр на PIC16F628A и датчике DS18B20. Запуск и настройка часов

Здравствуйте, уважаемые читатели ! Предлагаю вам историю создания часов на газоразрядных индикаторах ИН-14. Простой по началу проект превратился в итоге в целую художественную композицию, заставившую меня изрядно попотеть.

Часы имеют коррекцию точности хода и бэкап при пропадании питания.

Предыстория

Всё началась, когда Алексей (teXnik) выложил свою статью . В тесном контакте с автором статьи я смог повторить проект. Часы были разведены на одной двухсторонней плате с очень эргономичной компоновкой. Всё устраивало, но был один недостаток – невозможность коррекции точности хода.


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

Решил по старым советским схемам собрать стабильный генератор на логических элементах.


Генератор позволил добиться точности до полсекунды за один день. Результат средний, к тому же, требующий использования частотомера высокого класса точности для проведения настройки. В настроенном генераторе необходимо было законтрить переменную емкость, залакировав её, что вновь приводило к уходу частоты по той простой причине, что лак стягивал зазоры подстроечного конденсатора. Помимо того, введение схемы стабильного генератора повышало токопотребление часов.

Помучавшись с неделю, я решил попробовать повторить другой проект часов на ламповых индикаторах, и обязательно - с программной коррекцией хода. Тема не новая и за всё время было много удачных исполнений подобной идеи.

Схема новых часов на PIC16F628A

Основа схемы строится на микроконтроллере PIC16F628A, который отдаёт сигналы на дешифратор К155ИД1 и управляет анодными ключами.

Питается схема от одного источника +12 В. Стабилизатор типа LM78L05 выдаёт +5 В для питания микросхем. Высокое напряжение, необходимое для питания газоразрядных индикаторов, получил от инвертора на микросхеме MC3403. Подстройка выходного напряжения производится делителем, включенным в обратную связь.
Недостаток подобной схемы инвертора в отсутствии буферного ключа в цепи полевого транзистора. Общее токопотребление схемы инвертора составляет 230 мА.
Неоспоримый плюс – подстройка выходного напряжения, и как следствие регулировка яркости свечения индикаторов.

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

Практическая реализация

Оценив все достоинства этой схемы, я решился на её повторение.
Устройство в сборе должно было представлять две платы с переходными контактами: плату управления, на которой располагается 90% всех элементов и плату индикации с установленными на ней газоразрядными индикаторами ИН-14.

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

Запуск и настройка часов

Собрал все элементы, вытравил платы и провёл монтаж. Настало время проверки и настройки блока питания. Сначала запустил БП на холостом ходу. Стабилизатор 78L05 работал, как положено.
Инвертор выставил на напряжение, близкое к нижней границе зажигания индикаторов – порядка 170-175 В при помощи подстроечного резистора 2кОм.

Поставил микросхемы в панельки и тут приключилось непредвиденное. По неустановленной причине пробился чип 78L05, погорели микросхемы от перенапряжения питания.
В результате тестов выяснил, что попадаются бракованные дешифраторы К155ИД1. Проверка сопротивления между пинами питания показывает значение около 10 Ом. Подобное могло стать причиной выхода из строя стабилизатора 78L05.

Поставил новый исправный дешифратор, сходил за новой микросхемой PIC16F628A в радиомагазин, запрограммировал с помощью .


На этот раз пуск под нагрузкой прошёл без эксцессов. Лампы-индикаторы зажглись.



У часов имеются 3 кнопки управления: коррекция, будильник и инкремент.
Процитирую слова автора прошивки:

Реализовано 2 режима отображения: часы-минуты и минуты-секунды. Переключение кнопкой «Инкремент».
- При нажатии кнопки «Коррекция» часы переходят в режим коррекции секунд (секунды обнуляются кнопкой «Инкремент»). Следующее нажатие кнопки «Коррекция» переводит часы в режим коррекции минут (минуты увеличиваются кнопкой «Инкремент»). Ещё одно нажатие кнопки «Коррекция» - переход к коррекции часов (часы увеличиваются кнопкой «Инкремент»). Следующее нажатие кнопки «Коррекция» - возврат в режим отображения часов-минут.
- При нажатии кнопки «Будильник» часы переходят в режим отображения уставки будильника. В этом режиме кнопкой «Инкремент» включаем будильник. Включение подтверждается коротким звуковым сигналом и включается мигающая точка. Корректируется уставка будильника после нажатия кнопки «Коррекция». После первого нажатия - минуты, после второго - часы (увеличиваются кнопкой «Инкремент»). После третьего нажатия - переход в обычный режим.
- В часах реализована функция коррекции посредством подстройки константы (режим подстройки включается при удержании кнопки «Коррекция» дольше 1-й секунды). По умолчанию константа равна 1032 микросекунды в секунду. При отставании часов константу увеличиваем (кнопка «Инкремент») на величину отставания вычисленное в микросекундах за 1 секунду. Если часы спешат, константу уменьшаем (кнопка «Будильник») по тому же принципу.
- Возврат в обычный режим осуществляется из режимов коррекции через 3 минуты после последнего нажатия любой из кнопок.
- При срабатывании будильника подаётся звуковой сигнал, который отключается нажатием любой из кнопок или автоматически через примерно 4 минуты.

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


Держу кнопку более 1 секунды и вхожу в режим подстройки константы. Как вы видите, текущая константа у меня равна 1292 микросекунд. Весьма далеко от начальной величины в 1032 микросекунд.
Четыре дня мне потребовалось, чтобы внести коррекцию хода часов. Изначально часы отставали на 2 минуты за сутки. 2 дня ушло на внесение грубых настроек и так же 2 дня на точную подстройку. В конечном итоге я не заметил отставания или спешки часов ни на секунду в течение недели. Коррекция хода завершена.

Примерно через 3 недели разрядился элемент питания 2032 и часы перестали запоминать настройки и текущее время при пропадании питания. Отмечу, что установленная константа при этом не сбивается. Решил выйти из положения просто – ввёл более громоздкий элемент питания – две батарейки типа АА.

Необычный дизайнерский корпус

Электроника готова! Впереди - гвоздь программы – корпус.

Над корпусом я работал с особым старанием. С самого начала я не хотел делать типичные часы «а-ля Никсиклок», в которых из корпуса торчат 4 лампы. Мне хотелось чего-то большего. Что бы разместить элементы декора вблизи ламп я выбрал корпус Gainta G0477 размерами 187×118х37 мм.

Чего я только не перепробовал! Даже зеркала и стеклянные сферы, но в итоге мне ничего не понравилось. На некоторое время я забросил проект и занялся усилителем «Покемон», параллельно размышляя о всевозможных вариантах декорирования корпуса ламповых часов. Однажды, по дороге на работу, мой взгляд упёрся в разрушенную колонну на одном из рекламных плакатов. Воображение преподнесло мысль о древних греческих колоннах и банях.
И тут меня осенило – у ламп на часах должны стоять колонны! Ещё до конца не представляя способов реализации, я начал развивать эту мысль. Две колонны это суховато выходит, лучше взять что-то похожее типа китайских, или японских врат, что стоят у входов в храмы.

Когда вернулся домой, сразу набросал в Фотошопе эскиз.


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

Надо вам сказать, что ещё до всепоглощающего увлечения радиоэлектроникой я занимался переводами японской фэнтэзийной манги (аналог комиксов). Поэтому закономерно в голову пришли драконы. А именно – японский речной дракон. Немного поработав в Фотошопе, дополнил эскиз.


Окончательный эскиз меня просто сразил. Срочно, пилить! Но практика оставалась туманной. Начал прогонять варианты. Первое, что пришло на ум - это глубокое травление хлорным железом алюминиевых заготовок по технологии, схожей с ЛУТ, которую я с успехом применял в своих прошлых проектах.


Вариант подходящий, но объёмы предстоящих работ были намного больше, и обрабатывать до мельчайших деталей металл проблематично.

Остаётся использовать фольгированный текстолит. Работать с односторонним фольгированным текстолитом в разы проще, нежели с алюминием.
Оптимизировал картинку под возможности вытравливания изображения путём ЛУТ. С некоторыми недочётами протравил «плату».

Осталось самое сложное – вырезать изображения из цельного куска текстолита. Ужасно долгий и нудный процесс, который без творческого порыва и огромного желания не выполнить. Грубые спилы кусков текстолита проводил ручным лобзиком, после мелкими щипками обкусывал при помощи острых кусачек все доступные контуры вблизи рисунка, до зазоров 1,5-2 мм от края, чтобы ни в коем случае не повредить сам рисунок.

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

На то, чтобы изготовить Дракона из куска текстолита у меня ушло приблизительно 2 недели сосредоточенного труда в свободное от остальных дел время. Успел своим «ширканьем» изрядно помучить музыкальный слух жены.

После окончания работ подушечки пальцев на правой руке загрубели так, как будто я неделю играл на гитаре на репетициях по два часа в день.


Дракон, наконец, вырезан. Следующий этап - покраска. Пофантазировав один вечер, решил, что буду красить в красный цвет. Отсюда и вышло окончательное название часов «Red Dragon».

Пошли эксперименты с краской. Сразу купил два баллончика с аэрозольной краской цветов «Китайская вишня» (акриловая) и «Малина» (алкидная). Названия не отвечают за точность оттенков и носят условный характер. Ни один из представленных вариантов меня в итоге не удовлетворил. «Китайская вишня» оказалась слишком тёмной, а алкидная «Малина» очень долго сохла, что при домашней покраске чревато налипанием пыли. Всего 3-4 крупные пылинки на глянцевом зеркале могут убить всё удовлетворение работой.

В итоге я поехал по магазинам в поисках красной матовой краски. К моему удивлению оказалось, что такой краски не существует в природе. То есть, в баллончиках её не купить, для этого нужно покупать отдельно краску основного цвета, матирующую добавку и ехать в специализированный центр для приготовления смеси. Для моих целей это слишком дорогой вариант.

Решение пришло неожиданно. Я увидел на полках цвета типа «металлик». Эти краски - переходное звено между глянцевой и матовой поверхностью, то есть они не имеют глянцевого зеркала, а в случае с акриловой основой - очень быстро сохнут. Цвет выбрал под названием «Калина».

Малины, калины, вишни – компот можно сварить.

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

Для покраски подобных корпусов я использую хитрый «покрасочный бокс» – разрезаю пластиковую бутылку объёмом 5 литров вдоль на две половины, крашу деталь и накрываю одной половиной. Подобный метод не позволяет осесть пыли на поверхность, а отверстие от горловины позволяет циркулировать воздуху.

Почти всё готово. Остаётся обвести краской внутренние контуры дракона и врат. Дело сложное и требует сноровки. Я взял тонкую кисть и начал набивать руку на специальных трафаретах. Трафаретами у меня служат 3 слова, вытравленные в алюминии. Обвожу их, смотрю на результат, стираю растворителем краску и всё заново, до того как рука не набьётся до ровных штрихов без вылетов за границы гравировки.
Посидел около часа и понял, что с загрубевшими подушечками на пальцах я не чувствую нажима кисточки.

Решение оказалось простым, но не очевидным на первый взгляд – перманентный маркер для плат типа Edding404.

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

Потренировался и приступил к росписи дракона и врат. Не прошло и полчаса, как маркер перестал писать совершенно. Никакие попытки расписать его не срабатывали. Краска в маркере закончилась.

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

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

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

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

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

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

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

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

Платы изготовлены из одностороннего фольгированного стеклотекстолита.

НЕХ файл, схема, печатки в папке №1.

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

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

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

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

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

Схема часов без всяких изменений взята из первого раздела.

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

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

Датчик температуры 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 Резистор

Часы на 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

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