Саморобні електронні годинники, елементна база

Напевно, кожен гик, який захоплюється саморобної електронікою, рано чи пізно приходить до ідеї зробити свої, унікальні, годинник. Ідея цілком непогана, розберемося як і на чому їх краще зробити. У якості відправної точки будемо вважати, що людина вміє програмувати мікроконтролери, розуміє як переслати 2 байта по i2c або serial-порту, і може спаяти разом кілька проводів. В принципі, цього достатньо.

Зрозуміло, що ключова функція годин - вимір часу (хто б подумав, так?). І робити це бажано максимально точно, тут є кілька варіантів і підводних каменів.

Отже, які доступні в «залізі» способи вимірювання часу ми можемо використовувати?

Вбудований RC-генератор процесора

Найпростіша ідея, яка може прийти в голову - це просто налаштувати програмний таймер, і їм відраховувати секунди. Так ось, ця ідея нікуди не годиться. Годинник-то працювати звичайно будуть, тільки ось точність вбудованого генератора ніяк не регламентується, і може «плавати» в межах 10% від номіналу. Навряд чи комусь потрібні годинник, що йдуть в місяць на 15 хвилин.

Модуль реального часу DS1307

Більш правильний варіант, він же використовується в більшості «народних» виробів - це годинник реального часу. Мікросхема обмінюється з мікро контролером по I2C, вимагає мінімуму обв'язки (кварц і пара резисторів). Ціна питання близько 100р за мікросхему, або близько 1 $ на ебее за готову плату з мікросхемою, модулем пам'яті і роз'ємом для батарейки.

Схема з даташіта:

Саморобні електронні годинники, елементна база

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

Здавалося б, все добре, якби не одна проблема - невисока точність. Орієнтовна точність часових кварців - 20-30ppm. Позначення ppm - parts per million, показує число мільйонних часток. Здавалося б, 20 мільйонів - це супер, однак для частоти в 32768Гц виходить 20 * 32768/1000000 = ± 0,65536Гц, тобто вже полгерца. Шляхом нескладних підрахунків видно, що генератор з такою різницею за добу «натякали» зайвих (або відсутніх) 56тис тактів, що відповідає 2 секундам в день. Кварци бувають різні, деякі користувачі писали і про помилку в 5 секунд в день. Якось не дуже точно - за місяць такий годинник підуть як мінімум, на хвилину. Це вже пристойна різниця, помітна неозброєним оком (коли улюблений серіал бабусі починається в 11.00, а годинник показує 11.05, розробнику такого годинника перед родичами буде незручно).

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

Модуль реального часу DS3231

Ми не перші, хто задався питанням точності, і компанія Dallas пішовши назустріч побажанням, випустила більш досконалий модуль - DS3231. Він називається «Extremely Accurate Real Time Clock», має вбудований генератор з температурною корекцією. Точність в 10 разів вище, і становить 2ppm. Ціна питання трохи вище, але корпус мікросхеми розрахований під SMD-монтаж, паяти не так зручно, зате можна купити на ебее готову плату.

Саморобні електронні годинники, елементна база

(Фото з сайту продавця)

Точність в 6 секунд в місяць, це вже непоганий результат. Але ми підемо далі - в ідеалі, годинник в 21 столітті взагалі не потрібно підлаштовувати.

Радіомодуль DCF-77

Метод швидше екзотичний, але для повноти картини його не можна не згадати. Мало хто знає, але сигнали точного часу передаються по радіо ще з 70-х років. Передавач DCF-77 розташований в Німеччині недалеко від Франкфурта, і на СДВ-частоті 77.5КГц передаються мітки точного часу (так, у них вже 20 років назад були настінний і настільний годинник, які не треба підлаштовувати).

Спосіб хороший тим, що схема має мале енергоспоживання, так що зараз виробляються навіть наручний годинник з такою технологією. Готову плату прийому DCF-77 можна купити на ebay, ціна питання 20 $.

Саморобні електронні годинники, елементна база

Багато годинник і метеостанції мають можливість прийому DCF-77, проблема лише в тому, що доУкаіни сигнал практично не доходить. Карта покриття з Вікіпедії:

Саморобні електронні годинники, елементна база

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

GPS-модуль

Якщо годинник будуть стояти недалеко від вікна, то цілком реальний метод отримання точного часу - GPS-модуль. Ці модулі можна недорого купити на ebay (ціна питання 10-15 $). Наприклад, Ublox NEO-6M, підключається безпосередньо до serial-пінам процесора, і видає рядки NMEA на швидкості 9600.

Саморобні електронні годинники, елементна база

Очевидно, що про різні часові пояси GPS-модуль нічого не знає, так що їх обчислення і зміну річного / зимового часу, розробнику доведеться продумати самому. Інший мінус використання GPS - щодо високе енергоспоживання (втім, деякі модулі можна окремими командами переводити в «сплячий режим»).

І нарешті, останній (і найочевидніший на сьогоднішній момент), спосіб отримання точного часу - це брати його з Інтернету. Тут є два підходи. Перший, і найбільш простий - використовувати в якості плати годин щось типу Raspberry PI з Лінукс, тоді робити нічого не треба, все буде працювати «з коробки». Якщо ж хочеться «екзотики» - то найцікавішим варіантом є модуль esp8266.

Саморобні електронні годинники, елементна база

Це недорогий (ціна питання близько 200р на ebay) WiFi-модуль може обмінюватися з сервером по serial-порту процесора, при бажанні його можна також перепрошити (сторонніх прошивок досить багато), і частина логіки (наприклад опитування сервера часу) зробити в самому модулі. Сторонніми прошивками підтримується купа всього, від Lua до C ++, так що варіантів «розім'яти мізки» цілком достатньо.

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