Мобільні телефони та гаджети

Мобільні телефони та гаджети

» Аксесуари. Годинник з великими цифрами. Двоканальний термометр, годинник на ATmega8, DS18B20, DS1307, LCD1602 Світлодіодний годинник на мікроконтролері atmega8

Аксесуари. Годинник з великими цифрами. Двоканальний термометр, годинник на ATmega8, DS18B20, DS1307, LCD1602 Світлодіодний годинник на мікроконтролері atmega8

Даний електронний годинник, побудований на мікроконтролері Atmega8, оснащений світлодіодним дисплеєм, що легко читається, будильником з функцією повтору, функцією відновлення роботи після відключення живлення.

Характеристики годинника

  • формат часу: години, хвилини;
  • будильник із функцією повтору;
  • просте керування за допомогою 2 кнопок;
  • підтримка роботи від батареї;
  • напруга живлення: 7 ... 12В / 0,2 A;
  • розміри двох друкованих плат: 60х21 мм, 58х44 мм.

Принципова схема годинника показана на малюнку нижче. Схема годинника повинна бути запитана постійною напругою в діапазоні 7…12В. Це може бути будь-який з навантаженням струму не менше 200 мА.

До роз'єму CON5 плати можна підключити зумер з генератором, який виступатиме як звуковий сигнал будильника. До клем SA1 і SA2 друкованої плати підключаються кнопки, які служать для введення налаштувань та обслуговування годинників.

Налаштування часу та будильника

При натисканні кнопки SA1 потрапляємо в меню годинника «Set1», де ми маємо можливість встановлення поточного часу, а ще одне коротке натискання кнопки SA1 перекладає нас у меню установки часу будильника «Set2».

Для вибору та зміни налаштувань використовується кнопка SA2. Після вибору як у режимі налаштування часу, так і в режимі встановлення будильника на дисплеї почне блимати перша цифра, після чого можна встановити десятки годин за допомогою кнопки SA2.

Чергове натискання SA1 викликає миготіння другої цифри і за допомогою SA2 можна встановити одиниці годинника. Наступні два натискання SA1 дозволять встановити десятки хвилин та одиниці хвилин. Під час встановлення годин і хвилин завжди встановлюється лише одна цифра. П'яте натискання SA1 повертає годинник до нормальної роботи. Також тривалий час відсутності натискання клавіш завершує процедури установки.

Під час роботи годинника тривале натискання кнопки SA2 здійснює увімкнення/вимкнення будильника. У момент активації будильника на кілька секунд відображається час його запуску. Стан будильника сигналізує точку, розміщену в четвертому розряді. Якщо будильник активний, цей індикатор світиться.

Після ввімкнення сигналу будильника натисканням будь-якої кнопки можна вимкнути його на 5 хвилин, при цьому активується функція повтору. Цей факт відзначається миготінням точки на четвертому розряді індикатора. Через 5 хвилин сигнал будильника буде запущено знову. Знову натисканням будь-якої кнопки, його можна відкласти ще на 5 хвилин і т.д.

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

Робота годинника протестована в Proteus:

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

(34,7 Kb, завантажено: 1 923)

Концепція годинника з великими цифрами

Конструктивно девайс складатиметься із двох плат – одна над іншою. Перша плата – матриця світлодіодів, що утворюють розряди годин та хвилин, Друга – силова частина (управління світлодіодами), логіка та живлення. Така конструкція зробить годинник більш компактним (без корпусу приблизно 22см х 9 см, товщиною сантиметра 4-5) + дасть можливість прикрутити матрицю до іншого проекту, якщо щось піде не так.

Силова частина буде побудована на базі драйвера UL2003 та транзисторних ключах. Логічна - на Atmega8 та DS1307. Живлення: 220В - трансформатор; логіка 5В (через 7805), силова частина – 12В (через LM2576ADJ). Відділено буде передбачене ліжечко для батарейки 3В для автономного живлення годинника реального часу - DS1307.

Думаю використовувати Atmega8 і DS1307 (годинник планую підвісити під стелею, і що б у разі зникнення електрики щоразу не лазити за налаштуванням), проте розведення плати припускатиме можливість роботи девайсу і без DS1307 (на перший час, а може і назавжди – вже як вийде).

Таким чином, в залежності від комплектації алгоритм роботи програми годинника буде наступним:

Atmega8- лічильник часу за таймером. Робота в циклі без пауз: опитування клавіатури, коригування часу (якщо необхідно), відображення 4 розрядів та роздільника.

Atmega8 + DS1307. Робота в циклі без пауз: опитування клавіатури, коригування часу DS1307 (якщо необхідно), зачитування часу з DS1307, відображення 4 розрядів та роздільника. Або інший варіант - зачитування з DS1307 за таймером, решта в циклі (поки не знаю як краще).

Сегмент є 4 червоними світлодіодами, з'єднаними між собою послідовно. Одна цифра – 7 сегментів із загальним анодом. Сегменти не планую розділяти шаблоном "вісімки", як це зроблено у звичайних індикаторах.

Силова частина годинника

Силова частина годинника побудована на драйвері UL2003 та транзисторних ключах VT1 та VT2.

UL2003 відповідає за керування сегментами індикатора, ключі – за керування розрядами.

Окремо керується роздільник годин та хвилин (сигнал K8).

Управління сегментами, розрядами та роздільником здійснюється від мікроконтролера подачею позитивного потенціалу (тобто подачею +5В) на К1-К8, Z1-Z4.

Подача сигналів на сегменти і розряди повинна здійснюватися синхронно і з певною частотою, щоб забезпечити динамічний виведення інформації (годин і хвилин).

Як транзистор VT1 (BCP53) можна використовувати транзистор BCP52.

Схема силової частини годинника з великими цифрами

Друкована плата семисегментного індикатора для годинника з великими цифрами

Як я говорив раніше, конструктивно годинник складатиметься з двох друкованих плат - плата індикатора + логіка та силова частина.

Почнемо з розробки та виготовлення друкованої плати індикатора.

Розробка друкованої плати семисегментного індикатора для годинника з великими цифрами

Друкована плата семисегментного індикатора для годинника з великими цифрами у форматі "lay" знаходиться наприкінці статті, у приєднаних файлах. Про технологію виготовлення друкованих плат методом ЛУТ можна почитати.

Якщо ви зробили все правильно, готова друкована плата виглядатиме приблизно так.

Готова друкована плата семисегментного індикатора для годинника з великими цифрами

Складання семисегментного індикатора

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

Міжшарові переходи на платі індикатора

Наступний крок, власне, складання індикатора. Навіщо нам знадобиться пачка червоних (зелених, білих, синіх) світлодіодів. Я, наприклад, брав ці.

Підготовка до збирання індикатора

При встановленні діодів не забуваємо, що робимо індикатор із загальним анодом - тобто. "+" діоди повинні бути з'єднані разом. Загальні аноди на друкованій платі – це великі фрагменти міді. Обов'язково зверніть увагу на анод розділової точки.

Розташування анодів на друкованій платі індикатора

У результаті, після 2 годин кропіткої роботи має вийти ось що:

Семисегментний індикатор

Цифрова частина годинника

Цифрову частину годинника з великими цифрами будемо збирати за схемою:

Схема годинника з великими цифрами

Схема годинника досить прозора, тому пояснювати як вона працює не бачу сенсу. Друковану плату у форматі *.lay можна завантажити наприкінці статті. Зауважу, що друкована плата переважно розроблена під деталі для поверхневого монтажу.

Отже, елементна база, яку використовував я:

1. Діодний міст DFA028 (підійде будь-який компактний для поверхневого монтажу);
2. Регулятори напруги LM2576ADJ у корпусі D2PAK, 78M05 у корпусі HSOP3-P-2.30A;
3. Транзисторні ключі BCP53 (корпус SOT223) та BC847 (корпус SOT23);
4. Мікроконтролер Atmega8 (TQFP);
5. Годинник реального часу DS1307 (SO8);
6. Блок живлення 14В 1,2А від якогось старого пристрою;
7. Інші деталі - будь-якого типу, відповідні за розмірами для встановлення на друковану плату.

Зрозуміло, якщо ви хочете застосувати інші корпуси деталей, вам потрібно внести деякі зміни до друкованої плати.

Зверніть увагу на номінали опорів R3 та R4 – вони повинні бути саме такими, які вказані на схемі – не більше не менше. Це зроблено для того, щоб забезпечити на виході регулятора напруги LM2576ADJ рівно 12В. Якщо все ж таки не вдасться знайти такі номінали резисторів, то значення опору R4 може бути розраховане за формулою:

R4=R3(12/1.23-1) або R4=8.76R3

Складання цифрової частини. Версія 1, без DS1307

Якщо при виготовленні друкованої плати годинника ви дотримувалися рекомендацій, викладених у , то тоді вам зайво нагадувати, що перед складання друкована плата повинна бути просвердлена, всі видимі короткі замикання на ній усунуті, а плата вкрита рідкою каніфоллю? Тоді приступаємо до збирання годинника.

Я рекомендую почати зі збирання блока живлення і лише за тим виконати монтаж цифрової частини. Це загальна рекомендація щодо самостійного складання девайсів. Чому? Просто тому, що якщо блок живлення зібраний з помилкою, можна спалити всю низьковольтну електроніку, яка повинна живитися цим блоком живлення.

Якщо все зроблено правильно – блок живлення має запрацювати одразу. Перевіряємо збирання блока живлення - заміряємо напругу в контрольних точках.

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

Контрольні точки та значення напруги для блоку живлення годинника

Після того, як перевірка блоку живлення виконана приступаємо до складання цифрової частини годинника - встановлюємо всі інші елементи на друковану плату. Перевіряємо на КЗ, особливо в ногах мікроконтролера Atmega та драйвера UL2003.

Монтаж цифрової частини годинника

Зверніть увагу на те, що складання годинника ми виконуємо БЕЗ установки годинника реального часу DS1307, проте вся обв'язка цієї мікросхеми повинна бути виконана. У майбутньому, якщо виникне необхідність, це заощадить нам час на доопрацювання годинника під другу версію, там де все-таки будуть використовуватися окремі, незалежні годинники реального часу на DS1307.

Попередня перевірка мікроконтролера ATMEGA8

Для того, щоб перевірити правильність і працездатність мікроконтролера нам знадобиться:

1. Програматор, наприклад.
2. для внутрішньосхемного програмування мікроконтролера.
3. Програма AVRDUDESHELL.

Підключаємо плату годинника до дата-кабелю. Дата-кабель підключаємо до програматора. Програматор до комп'ютера, на якому встановлена ​​програма AVRDUDESHELL. Підключати плату годинника до мережі живлення 220В не слід.

Вдале читання даних з мікроконтролера програмою AVRDUDESHELL

Якщо при читанні ф'юзів виникли проблеми - перевіряйте монтаж - можливо десь коротке замикання або "непропай". Ще одна порада - можливо мікроконтролер знаходиться в режимі низькошвидкісного програмування, тоді достатньо переключити програматор на цей режим (

  • 10 будильників за кожен день тижня.
  • Відстрочення сигналу, якщо будильник не вимкнути, спрацьовує приблизно через 5 хв.
  • 8 будильників на окрему ніжку мк, вкл\вимк навантаження.
  • Два датчики температури DS18B20 (вдома та на вулиці).
  • Таймер 99 годин.
  • Яскравість індикатора налаштовується для денного та нічного часу.
  • Змінюваний параметр плавно змінює яскравість, як і АОН.
  • При пропаданні 220 вольт споживання батарей 40 мікроампер.
  • Будильник спрацьовує за будь-якого режиму живлення.
  • Годинник може послідовно показувати до 4 режимів.

У годиннику є можливість послідовно показувати 4 режими, для яких вибирається один із десяти форматів відображення та час його показу.

Формати відображення.
0
1

Годинники-хвилини-секунди.

2

Годинник-хвилини.

3

Годинник-хвилини, День тижня.

4

Число_місяць_день тижня.

5
6
7
8
9
A

b

Температура датчик 1, Температура датчик 2.

Кнопка F – вихід із режиму. Вибір трьох основних режимів.
Кнопка SET – вхід у вибраний режим. Далі перехід до наступного параметра (миготливому полю).
Кнопка PLUS – плюс/on. У режимі SETUP перегортати головні меню.
Кнопка MINUS – мінус/__(off). У режимі SETUP перегортати головні меню.

Усі режими, крім нульового та таймера, мають завершення за часом. Якщо не було натискання більше 30 секунд, встановлюється режим нуль.

Режим CALLS

on/__-будильник вкл/вимк.
Дні тижня, в які спрацює будильник (тут у 6 та 7 день будильник вимкнено).
Будильники A B C D E F G H увімкнено/вимкнено. висновок call a_hмк. Будильник нагоді для керування навантаженням. З його допомогою висновок call a_hможна встановлювати на будь-яку кількість хвилин.
___-вимкнений, SET-ніжка буд. A-H вуст 1, CLS вуст 0.
n-спрацює один раз, o-вкл. завжди.

Режим Setup.
Для запису значень в EEPROM потрібно всі значення в режимі підтвердити натисканням SET.
Приклад: LIGHT ->SET-> L.ooooo ->SET-> НО4Ь L.2 ->SET-> LIGHT.

Режим PORT.

Режим годинника.

Режим Уст SEE.

Формати відображення.
0

Число, День тижня, Годинник-хвилини.

1

Годинники-хвилини-секунди.

2

Годинник-хвилини.

3

Годинник-хвилини, День тижня.

4

Число_місяць_день тижня.

5

Температура датчик 1, Температура датчик 2.

6

Температура: 1 датчик (датчик будинку).

7

Температура 2 датчик (датчик на вулиці).

8

Температура 1 датчик, Годинник-хвилини.

9

Температура 2 датчик, Годинник-хвилини.

A

Температура датчик 1, Температура датчик 2.

b

Температура датчик 1, Температура датчик 2.

У режимах де не вказуються десяти градуси, точка визначає більше 0,5 гр.


Режим УSt Буд.Налаштування будильника.

Bipсигнал будильника – ШІМ.
Pinсигнал будильника - вуст 1 висновок буд.
ObaШим та висновок.
Відстрочення сигналу.
При вимк.
відстрочку будильник вимикається натисканням будь-якої клавіші.
При вкл.
сигнал сигналу будильник вимк. кнопкою F при натисканні кнопок SET PLUS MINUS сигнал відключається, але знову спрацює приблизно через 5 хвилин, якщо будильник не вимикати, то після 8 разів спрацьовування він вимк. автоматично.При активному відстроченні сигналу в нульовому режимі блимає точка останнього розряду. Вимкнення відстрочки (за відсутності сигналу).У режимі 0 натискання SET увімк. цей режим. Наявність активної відстрочки індукує символ

о

на 4 знайомому. Натискання PLUS MINUS вимикає відстрочку.

Режим DS18B20
Режим DEFAULTРешта режимів (SETUP).
LIGHT
L ooooo – денна яскравість індикатора. НІЧ L2 – яскравість з 23-00 до 6-00.
SIGNAL
після входу в режим кнопками плюс/мінус вибирається:
budil. S або button. S
відповідно частота ШІМ для будильника та кнопок.
При вході в ці підрежими на індикаторі:
H004.L000.
Частота генерується у режимі швидкої шим (CTC mode). Верхній поріг задається регістром OCR1A1. H004-старший байт L000-молодший байт.

Щоб відключити сигнал від натискання кнопок - встановити H000 L000.

Якщо у режимі УSt Буд. вибрано опцію PIN, для будильника шим сигнал виводиться не буде.
Дії у нульовому режимі.
PLUS – режим Уст SEE.
MINUS – встановлення будильників.

Якщо налаштувати будильник на увімкнення виводу, можна використовувати чіп від музичної листівки.

Програма написана на сі у WinAvr.
Завантажити вихідний файл, HEX і EEP. clock_t.rar (18 Kb)

При прошивці мк встановіть біти CKSEL3..0 0011 (внутрішній RC генератор 4 Meg). Запрограмувати біт CKOPT (підключення внутрішніх конденсаторів). Потім прошити EEPROM, або скинути основні змінні у програмі таким чином - SETUP -> DEFAULT -> SET.

  • 10 будильників за кожен день тижня.
  • Відстрочення сигналу, якщо будильник не вимкнути, спрацьовує приблизно через 5 хв.
  • 8 будильників на окрему ніжку мк, вкл\вимк навантаження.
  • Два датчики температури DS18B20 (вдома та на вулиці).
  • Таймер 99 годин.
  • Яскравість індикатора налаштовується для денного та нічного часу.
  • Змінюваний параметр плавно змінює яскравість, як і АОН.
  • При пропаданні 220 вольт споживання батарей 40 мікроампер.
  • Будильник спрацьовує за будь-якого режиму живлення.
  • Годинник може послідовно показувати до 4 режимів.

У годиннику є можливість послідовно показувати 4 режими, для яких вибирається один із десяти форматів відображення та час його показу.

Формати відображення.
0
1

Годинники-хвилини-секунди.

2

Годинник-хвилини.

3

Годинник-хвилини, День тижня.

4

Число_місяць_день тижня.

5
6
7
8
9
A

b

Температура датчик 1, Температура датчик 2.

Кнопка F – вихід із режиму. Вибір трьох основних режимів.
Кнопка SET – вхід у вибраний режим. Далі перехід до наступного параметра (миготливому полю).
Кнопка PLUS – плюс/on. У режимі SETUP перегортати головні меню.
Кнопка MINUS – мінус/__(off). У режимі SETUP перегортати головні меню.

Усі режими, крім нульового та таймера, мають завершення за часом. Якщо не було натискання більше 30 секунд, встановлюється режим нуль.

Режим CALLS

on/__-будильник вкл/вимк.
Дні тижня, в які спрацює будильник (тут у 6 та 7 день будильник вимкнено).
Будильники A B C D E F G H увімкнено/вимкнено. висновок call a_hмк. Будильник нагоді для керування навантаженням. З його допомогою висновок call a_hможна встановлювати на будь-яку кількість хвилин.
___-вимкнений, SET-ніжка буд. A-H вуст 1, CLS вуст 0.
n-спрацює один раз, o-вкл. завжди.

Режим Setup.
Для запису значень в EEPROM потрібно всі значення в режимі підтвердити натисканням SET.
Приклад: LIGHT ->SET-> L.ooooo ->SET-> НО4Ь L.2 ->SET-> LIGHT.

Режим PORT.

Режим годинника.

Режим Уст SEE.

Формати відображення.
0

Число, День тижня, Годинник-хвилини.

1

Годинники-хвилини-секунди.

2

Годинник-хвилини.

3

Годинник-хвилини, День тижня.

4

Число_місяць_день тижня.

5

Температура датчик 1, Температура датчик 2.

6

Температура: 1 датчик (датчик будинку).

7

Температура 2 датчик (датчик на вулиці).

8

Температура 1 датчик, Годинник-хвилини.

9

Температура 2 датчик, Годинник-хвилини.

A

Температура датчик 1, Температура датчик 2.

b

Температура датчик 1, Температура датчик 2.

У режимах де не вказуються десяти градуси, точка визначає більше 0,5 гр.


Режим УSt Буд.Налаштування будильника.

Bipсигнал будильника – ШІМ.
Pinсигнал будильника - вуст 1 висновок буд.
ObaШим та висновок.
Відстрочення сигналу.
При вимк.
відстрочку будильник вимикається натисканням будь-якої клавіші.
При вкл.
сигнал сигналу будильник вимк. кнопкою F при натисканні кнопок SET PLUS MINUS сигнал відключається, але знову спрацює приблизно через 5 хвилин, якщо будильник не вимикати, то після 8 разів спрацьовування він вимк. автоматично.При активному відстроченні сигналу в нульовому режимі блимає точка останнього розряду. Вимкнення відстрочки (за відсутності сигналу).У режимі 0 натискання SET увімк. цей режим. Наявність активної відстрочки індукує символ

о

на 4 знайомому. Натискання PLUS MINUS вимикає відстрочку.

Режим DS18B20
Режим DEFAULTРешта режимів (SETUP).
LIGHT
L ooooo – денна яскравість індикатора. НІЧ L2 – яскравість з 23-00 до 6-00.
SIGNAL
після входу в режим кнопками плюс/мінус вибирається:
budil. S або button. S
відповідно частота ШІМ для будильника та кнопок.
При вході в ці підрежими на індикаторі:
H004.L000.
Частота генерується у режимі швидкої шим (CTC mode). Верхній поріг задається регістром OCR1A1. H004-старший байт L000-молодший байт.

Щоб відключити сигнал від натискання кнопок - встановити H000 L000.

Якщо у режимі УSt Буд. вибрано опцію PIN, для будильника шим сигнал виводиться не буде.
Дії у нульовому режимі.
PLUS – режим Уст SEE.
MINUS – встановлення будильників.

Якщо налаштувати будильник на увімкнення виводу, можна використовувати чіп від музичної листівки.

Програма написана на сі у WinAvr.
Завантажити вихідний файл, HEX і EEP. clock_t.rar (18 Kb)

При прошивці мк встановіть біти CKSEL3..0 0011 (внутрішній RC генератор 4 Meg). Запрограмувати біт CKOPT (підключення внутрішніх конденсаторів). Потім прошити EEPROM, або скинути основні змінні у програмі таким чином - SETUP -> DEFAULT -> SET.