Годинники – добовий таймер з корекцією ходу

Напевно, кожен, хто займається програмуванням мікроконтролерів, у свій час приходить до розробки якогось таймера. Ось, схоже, і мій час настав. Це мій перший проект на PIC.

Конструкцій різних годинників, таймерів на мікроконтролерах безліч. Навіть на цьому ресурсі їх не один десяток. Я переглянув багато схем. Важко придумати щось нове, моя схема схожа на інші, але все ж є деякі особливості:

  • Корекція ходу годин. Хоча годинники й тактуються від кварцевого генератора, на їх точність ходу впливає розкид параметрів, власне, резонаторів, температурний режим.
  • Використання простого шифратора на діодах, що дозволяє на три входи мікроконтролера підключити до 7 кнопок.

В іншому пристрій – звичайний добовий таймер. Годинники з двома будильниками, один з яких (“I”) вмикає реле, другий (“O”) – вимикає. Календаря немає, цикл вмикання-вимикання повторюється щодня. Якщо будильники налаштовані на один і той же час – вмикання реле не відбудеться. Вимкнення відбудеться в будь-якому випадку. Якщо необхідно комутувати навантаження навпаки – можна використовувати нормально-замкнені контакти реле замість нормально-розімкнених. Контакти реле на 10А, 230VAC. Відповідно, можна керувати активною навантаженням до 2 кВт.

При вимкнених реле і підсвічуванні дисплея пристрій споживає від джерела живлення струм близько 2 мА. Як резервне живлення я використав три послідовно з'єднаних елементи AAA. Резервне і основне живлення розв'язані діодами Шотткі. При живленні від батареї вмикання реле не відбувається, але при відновленні основного живлення воно спрацює, оскільки керуючий сигнал на затворі ключового транзистора буде присутній.

Налаштування проводиться п'ятьма кнопками, підключеними до виводів RA1-RA3 мікроконтролера через діодний шифратор. При натисканні на кнопку на вхід контролера приходить двійковий номер кнопки – 001, 010, 011, 100, 101. Входи налаштовані на переривання за зміною (IOC). Програма – обробник також аналізує і розрізняє коротке (<1с) і довге (>1с) натискання. На платі пристрою кнопки розташовані у вигляді хреста. У центрі – кнопка №1 переходу до налаштування годин і будильників (коротке натискання – будильники, довге – години, для виходу з режиму налаштування повторно коротке/довге натискання відповідно), зліва і справа – кнопки №№2, 3 переміщення курсора вліво - вправо, зверху і знизу – кнопки №№4, 5 збільшення/зменшення параметрів. Крім того, довге натискання на кнопку №3 «вправо» викликає режим корекції ходу (для виходу з режиму корекції - повторно довге натискання). У режимах налаштування годин і корекції ходу годинники зупиняються. У режимі налаштування будильників – продовжують йти, але при цьому не оновлюється час на дисплеї. Автоповтору натискання кнопок немає, банально не вистачило пам'яті мікроконтролера для реалізації - 2К забито «під зав'язку».

Коректуючий коефіцієнт ходу можна змінювати в межах -99/+99. Від'ємне значення сповільнює хід годин, позитивне – прискорює. Одиниця корекції – 1/1966080 секунди. Це 1 секунда за 22,7(5) дні. Коректуючий коефіцієнт зберігається в енергонезалежній пам'яті мікроконтролера.

Пристрій зібрано з доступних деталей. Плата – одностороння, проста. Дві перемички. Легко виготовляється методом ЛУТ у домашніх умовах.

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

Для бажаючих змоделювати пристрій у програмі «Протеус» - новини невтішні. Моделі PIC контролерів там не охоплюють режим роботи зі вбудованим годинним генератором.

Програма написана в середовищі MikroC на мові C. Джерельний код в прикріпленому архіві.

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

Обозначення Тип Номінал Кількість Примітка
C1-C5 Конденсатор 0.01 мкФ 5
C6 Конденсатор 0.1 мкФ 1
C7, C8 Конденсатор 22 пФ 2
C9, C10 Електролітичний конденсатор 10 мкФ * 10 В 2
IC1 МК PIC 8-біт
PIC16F684
1
K1 Реле JQC-3FF-S-Z 1
R1-R5 Резистор
4.7 кОм
5
R6 Резистор
240 Ом * 0.25 Вт
1
R7, R9 Резистор
1 кОм
2
R8 Резистор
10 кОм
1
R10 Резистор
470 Ом
1
VD1-VD4, VD7 Випрямляльний діод
1N4148
5
VD5, VD6 Діод Шотткі
1N5817
2
VT1 MOSFET-транзистор
IRLML2402
1
ZQ1 Кристал 32768 Hz 1
LCD LCD-дисплей 1602A 1

Прикріплені файли:

Top