Часы с термометром на PIC16F628A

Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Часы построены на микроконтроллере PIC16F628A, в качестве датчика используется DS18B20, транзисторы BC212 управляют общими анодами семисегментного индикатора, также в состав схемы входят несколько пассивных элементов.

Устройство настраивается с помощью 4-х кнопок. Одна увеличивает, другая уменьшает значение, третья кнопка используется для входа в меню, а также переключает элементы меню. При выходе из меню настройки сохраняются в EEPROM контроллера. Если часы зависают по какой-то причине кнопкой сброса они могут быть перезапущены. Часы будут продолжать работать с последними сохраненными значениями. Микроконтроллер тактируется от внешнего кварца частотой 4МГц для более точного отсчета времени. PIC16F628 управляет дисплеем в режиме мультиплексирования. Индикаторы находятся под контролем одного типа транзистора - BC212.

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

Схема устройства

Часы с термометром на PIC16F628A

Настройка часов, описание меню:

- ho: Установка часов 0-23
- nn: Установка минут 0-59
- dn: Установка месяца
- dd: Установка числа месяца
- dY: Установка года
- dt: Установка формата индикации месяца. Если 1 - буквами(JA FE ||A AP ||Y JU JL AU SE oc no dE), 2 - цифрами(01 02 03 04 05 06 07 08 09 10 11 12).
- tt: Задержка индикации времени. Значение переменной 2-99с
- td: Задержка индикации даты. Значение переменной 2-99с. В случае если равно нулю дата не показывается!
- tE: Задержка индикации температуры. Значение переменной 2-99с. В случае если равно нулю температура не показывается!
- Sh: Калибровка шестнадцатеричного значения (см. ниже)
- Sl: Калибровка шестнадцатеричного значения (см. ниже)

Примеры установки калибровок Sh/Sl:

Отставание на 30 секунд в 24 часа: 30/86400 = 0,000347
1000000 - (1000000 * 0,000347) = 999653 (в десятичной системе) = F40E5 (шестнадцатеричной)

В результате шестнадцатеричное значение 40E5 раскладываем на Sh=40, SL=E5

Отставание на 2 секунды в 1 час: 2/3600 = 0,000555
1000000 - (1000000 * 0,000555) = 999445 (в десятичной системе) = F4015 (HEX)

Sh=40, SL=15

Спешат на 15 секунд за 60 дней: 15/5184000 = 0,000002
1000000 + (1000000 * 0,000555) = 1000002 (в десятичной системе) = F4242 (HEX)

Sh=42, SL=42

Автор: Rumcájsz

Обсуждение статьи на форуме

Архив для статьи "Часы с термометром на PIC16F628A" HOT
Файлы прошивок микроконтроллера для индикаторов с ОА и ОК, схема часов с индикатором общий катод, макеты печатных плат SprintLayout
File Size 330.67 KB Download 3 415 Download

Метки: Семисегментный индикатор, DS18B20, Термометр, Часы, PIC16F628

Печать E-mail

Комментарии  

0 #21 AntonChip 05.11.2017 17:34
Цитирую Григорий:
Как сюда выложить,печатную плату и плату индикатора.Всё проверенно работает.

Можете выслать мне , я добавлю в статью
Сообщить модератору
0 #22 Григорий 07.11.2017 08:52
Не пойму плату я туда отправил,или нет?
Сообщить модератору
0 #23 AntonChip 07.11.2017 09:07
Цитирую Григорий:
Не пойму плату я туда отправил,или нет?

Ваша печатка в архиве
Сообщить модератору
0 #24 Григорий 08.11.2017 11:13
Я там только две ваших вижу.А моих нету.
Сообщить модератору
0 #25 Григорий 11.11.2017 17:02
Теперь нашёл платы.
Сообщить модератору

Авторизация