Наши партнеры ArtmMisto
Хочу представити нову схему говорять годин. Основою даного годинника є мікроконтролер ATmega8, мікросхема годин використовується DS1307, а мікросхема термометра - LM75. І мікросхема годин DS1307 і мікросхема термометра LM75 спілкуються з мікро контролером по протоколу I2C або по іншому TWI - двопровідний інтерфейс. Сховищем звукових файлів є micro SD карта пам'яті, соединяемая з мікро контролером по SPI інтерфейсу. Аудіо файли на карті пам'яті зберігаються в корені і мають строго певні імена для того, щоб контролер міг точно по імені знайти аудіо файл для відтворення за умовами саме в даний момент в залежності від події - відтворити конкретний час або програти трек будильника. На індикацію в цьому пристрої виводиться багато інформації - місцевий час, дата, день тижня, температура навколишнього середовища, індикація включеності будильника, а також вибраний профіль періодичного оповіщення. У зв'язку з цим великою кількістю інформації в якості дисплея обраний LCD-дисплей 2 рядки по 16 символів. Застосування семисегментних індикаторів, вважаю, не потрібно, тому що час в будь-який момент часу можна озвучити і прослухати цю інформацію, також семісегментніков знадобиться багато, якщо все ж їх використовувати. А меню налаштувань на семисегментних індикаторах виглядало б як-то не дуже добре. Звуковий сигнал на виході мікроконтролера порівняно слабкий, тому схема годин отримала підсилювач для повноцінності. При відтворенні звукового файлу, загоряється світлодіод LED1. Також було прийнято рішення не плодити прошивки пристрою по частоті звукового сигналу, тому нижче буде представлена прошивка на частоту тільки 44 кГц.
Сама схема годин надана нижче:
Пройдемося трохи по схемі. Для живлення схеми використовується лінійний стабілізатор напруги L7805 для 5 вольта харчування і для харчування карти пам'яті параметричний стабілізатор на стабілітроні 3,3 вольта. Мікросхему лінійного стабілізатора L7805 можна замінити на вітчизняний аналог КР142ЕН5А, стабілітрон можна замінити на будь-який інший на дану напругу. Якщо вам здасться не зовсім вдалим така комбінація, як стабілізатор напруги можна використовувати будь-які інші мікросхеми (LM317, MC34063, LM2576, LM2596 і ін.), Налаштовані на необхідну напругу на виході. Стабілітрон так само можна замінити на стабілізатор напруги. Мною був підібраний, напевно, самий економічний варіант харчування схеми. Як було зазначено вище, мікросхема годин DS1307 і мікросхема термометра LM75 працюють по протоколу I2C. Даний протокол вимагає підтягують pull-up резисторів (тобто підтягують лінію даних до плюса харчування) для коректної роботи. Висновки SCL і SDA даних мікросхем підтягнуті до плюса харчування резисторами R10, R11. Резистори R9 і R12 також функціонально виконують функцію pull-up резисторів для можливості формування сигналу на додаткових висновках мікросхем. Функціонально дані висновки в схемі не використовуються - тільки для інформації. У майбутньому за допомогою додаткового виведення мікросхеми LM75 OS можливо організувати додатково термостат. Цей висновок подає позитивний сигнал при перевищенні заданого порогу температури і негативний сигнал при зниженні температури до заданого порогу - такий собі гистерезис. Обов'язковою є конденсатор C8, розташовувати його потрібно якомога ближче до висновків мікросхеми термометр. Це необхідно для того, щоб вона працювала стабільно. Харчування мікросхеми годин відбувається через резистор R7 і діод VD2, необхідні для того, щоб при відсутності харчування 5 вольт, коли мікросхема працює від батарейки, які не витрачати її енергію на всю схему, живиться від 5 вольт.
Далі в схемі використовується LCD-дисплей SC1602. Дисплей використовує всередині себе мікроконтролер HD44780, тому можна використовувати будь-який інший дисплей на базі такого ж контролера. Резистор R1 підлаштування, він регулює контрастність символів на дисплеї. Можна використовувати будь-який підлаштування або змінний резистор для цих цілей замість зазначеного в списку елементів, а варіювати номінал резистора можна в розумних межах. Підсвічування такого дисплея можна організувати як на самій платі LCD-дисплея подпаіваніе перемички і резистора (R9 і J3 - маркування на платі дисплея SC1602) в передбачених місцях або ж через струмообмежувальні резистор подати напругу живлення на висновки "А" і "К". Номінал струмообмежувальні резистора становить близько 22 - 27 Ом. Залежно від необхідної яскравості номінал можна варіювати, але не рекомендую нижче 22 Ом, більше можна поки не згасне підсвічування повністю. У схемі застосований перший варіант включення підсвічування, тому на схемі пристрою це не позначено. Резистор R2 підтягує позитивне напруга на висновок мікроконтролера Atmega8 PC6 або reset. це необхідно для запобігання мимовільного перезапуску схеми годин. Номінал в межах кОм можна варіювати за відсутності заданого на схемі номіналу.
Статусний світлодіод LED1 підключений до мікроконтролеру через струмообмежувальні резистор для запобігання псуванню при перевищенні струму через світлодіод. Номінал цього резистора можна змінювати відповідно до використовуваним світлодіодом, а саме його параметрів - падінні напруги. Чим менше падіння напруги на діоді, тим більший номінал резистора потрібно використовувати для фіксованого струму (в більшості випадків не можна перевищувати струм в 20 мА). Звуковий сигнал знімається з виведення мікроконтролера PB1. Для посилення сигналу використовується підсилювальний каскад на двох транзисторах. Транзистори працюють у ключовому режимі, тому компенсувати зміщення бази не потрібно. Конденсатор C6 обмежує струм через динамік, коли ШІМ не працює. Номінал цього конденсатора можна змінювати в широких межах. Котушка L1 і конденсатор C7 утворюють LC-фільтр, необхідний, щоб прибрати шуми. Залежно від необхідного рівня гучності, колектор Т1 можна підключати або до 5 вольт (воpможно потрібно більш потужний стабілізатор VR1 в цьому випадку) або до джерела напруги 12 вольт.
Аудіо файли зберігаються і зчитуються з карти пам'яті micro SD. Обсяг карти можна використовувати від стареньких на кілька десятків мегабайт до 32 Гб. Загострюю вашу увагу на те що якість звуку може залежати від якості самої карти пам'яті. При застосуванні карти пам'яті на 8 Гб фірми mirex чомусь було більше шумів в порівнянні з картою пам'яті фірми kingston. Для відтворення звуку можна використовувати будь-які динаміки. Управління настройками відбувається за допомогою тактових кнопок. Їх можна замінити на будь-які інші кнопки. Потужність всіх резисторів 0,25 Вт. Номінали всіх конденсаторів можна варіювати в розумних межах. В якості резервного живлення мікросхеми годин використовується батарейка типу CR2032. Її можна замінити на будь-який інший джерело резервного живлення. Якщо не застосовувати резервне живлення для мікросхеми годин, то при виключенні живлення час і дата буде збиватися. Для більшої точності ходячи годин кварц рекомендується застосовувати найбільш точний, наприклад, можна використовувати кварци з материнських плат. Потрібно також відзначити контакт RF - до нього підключається вихід модуля перемикання на радіобрелка http://cxem.net/review/review8.php . Необхідно використовувати модуль на 12 вольт. При натисканні кнопки брелка відбудеться замикання виведення RF схеми говорять годин на землю, при цьому буде відтворено поточний час. Модуль перемикання оптимальніше всього налаштувати в режим "Toggle" - кнопка брелока натиснута, контакт RF замкнутий на землю, кнопка брелока відтиснуті, вихідне положення.
Традиційно схема збиралася на макетної платі для контролера Atmega8 власного виробництва:
Пристрій тестувався в такому вигляді - проблем виявлено не було. Як джерело інформації про час був використаний модуль "tiny RTC I2C module". Цей модуль містить мікросхему годин реального часу DS1307z, кварц для цієї мікросхеми частотою 32,768 кГц і необхідну обв'язку для харчування від батарейки і ліній I2C. Важливою інформацією може бути те, що мікросхеми DS1307 коштують дешевше ніж DS1307z. У першому випадку за дешевизну можемо розплачуватися якістю ходу годинника, в другому випадку більш менш все добре.
Крім якості мікросхеми годин DS1307 на хід годинника впливає кварц, а точніше його частота - похибка ніхто не відміняв. Якщо ж у Вас немає дуже хорошого кварцу, то трохи скорегувати частоту наявного можна за допомогою підлаштування конденсатора, приєднаного одним висновком до кварцу, а іншим до землі схеми. Обертаючи движок змінного конденсатора можна буде підлаштовувати точність ходу часу. Другим варіантом може бути все те ж саме, тільки поставити конденсатор постійної ємності. В цьому випадку частота кварцу буде скоректована тільки на фіксоване значення. Ці схемотехнічні рішення в схему не вносилися, але мають право на життя.
Характеристики пристрою:
- відображення часу в форматі hh: mm: ss
- відтворення часу при натисканні на кнопку або радиобрелок за умови його використання
- включення світлодіода на час відтворення аудіо файлу
- відображення дня тижня
- відображення дати в форматі dd / mm / yy
- відображення температури навколишнього середовища
- відтворення будильника
- відображення включеності будильника
- повсякчасне відтворення сигналу по трьом профілям
- відображення обраного профілю
- збереження налаштувань будильника при виключенні живлення (збереження в eeprom)
- зберігання поточного часу при відключенні харчування в мікросхемі годин DS1307 за рахунок резервного живлення
Призначення кнопок пристрою та налаштування:
- для вхід в меню налаштувань необхідно натиснути кнопку S5, перегортання меню налаштувань здійснюється цієї ж кнопкою
- для зміни налаштувань необхідно натиснути кнопку S4, наприклад покажчик стоїть на меню зміни хвилин, натисканням цієї кнопки хвилини збільшаться на одиницю, при тривалому натисканні зміна піде швидше, при досягненні 59 хвилин, наступна цифра буде нуль, для всіх налаштувань передбачений захист від переповнення
- перебуваючи в будь-якому рівні меню налаштувань при натисканні кнопки S1 уб'ю вийдемо в головне меню
- в головному меню при натисканні кнопки S2 буде озвучено поточний час
- при спрацюванні будильника, щоб зупинити сигнал потрібно утримувати кнопку S1
- в разі, якщо трек для будильника дуже довгий, можна скинути сигнал кнопкою S3 - ресет (все тому що пристрій при натисканні і утриманні кнопки S1 чекає кінця треку)
- кнопка S3 - reset всього пристрою
В меню налаштувань будильника необхідно встановити безпосередньо сам час будильника, дозвіл на сигнал або просто включити будильник і встановити профіль циклічного сигналу (0 - не використовувати, 1 - на початку кожної години відтворити файл, 2 - відтворювати на початку кожної години з 7 ранку до 9 вечора). В налаштуваннях часу і дати все стандартно - установка безпосередньо цих параметрів.
Для того щоб пристрій міг відтворювати ваші власні записи аудіо, при створенні потрібно знати наступне:
- формат wav файлу: 8 bit, mono, 44 khz (пережимати можна з МР3 в будь-якому аудіо редакторі, що підтримує функції перекодування в wav формат)
- назви файлів повинні відповідати таким умовам: озвучка годин 1h.wav (1 відповідає номеру години, h - індекс годин, .wav - формат файлу), озвучка хвилин 1m.wav (1 відповідає номеру хвилини, m - індекс хвилин, .wav - формат файлу), циклічний сигнал 1a.wav (1 відповідає номеру години, a - індекс циклічного сигналу, .wav - формат файлу), сигнал будильника alarm.wav. В архіві з аудіо файлами в додатках до статті можна подивитися повний перелік назв файлів.
Без дотримання цих параметрів при створенні аудіо файлів мікроконтролер просто не виявить їх на флешці.
Для програмування мікроконтролера необхідно використовувати програматор, а також задати конфігурацію фьюз бітів:
До статті додається прошивка для мікроконтролера для схеми говорять годин, проект proteus (Для коректного моделювання необхідно мати потужний комп'ютер, інакше симуляція буде гальмувати), архів з аудіо файлами для проекту, а також невелике демонстраційне відео (на початку озвучено поточний час, далі спрацювало повсякчасне оповіщення - скільки зараз годин для простоти, далі налаштовуємо будильник і через хвилину активується сигнал, він повторюється до тих пір поки не буде утримана кнопка S1 або поки не натиснути ресет).
список радіоелементів
Завантажити список елементів (PDF)