HOW TO - Створіть годинник аналогового підсилювача потужності
АНАЛОГОВИЙ AMP METER CLOCK- Елегантний годинник відзначає годинник з лічильниками голки ...
Кілька років тому у мене була ідея зробити аналоговий годинник, який використовував вольтметр, а не стандартний циферблат. Кілька тижнів тому я, нарешті, зробив один, використовуючи плату Arduino і 3 поточні метри від місцевого магазину електроніки.Я побудував його поступово, починаючи з одного лічильника, який відображався всього за кілька секунд, потім додавав годинник і хвилини, додаючи кнопки і програмування, щоб зробити час налаштованим, і, нарешті, побудував його в гарному вікні. Ось як я це зробив.
Подача лічильника
Плата Arduino має 6 виходів, які можуть керувати аналоговими значеннями за допомогою широтно-імпульсної модуляції (PWM). Це означає, що вони імітують вихідні напруги, що лежать між двома високими і низькими (0V і 5V) шляхом швидкого перемикання між двома для різних часових співвідношень; наприклад, висновок 2,5 В буде моделюватися, будучи на половину часу. Я виявив, що частота імпульсів Arduino була досить швидкою (490 Гц), і мої вимірювачі були досить повільними, щоб можна було вигнати їх безпосередньо з виходів плати без голкових вібрацій; Вам не потрібен конденсатор, щоб згладити сигнал.
Я був тільки в змозі знайти амперметри, а не вольтметри, тому мені потрібно було поставити резистор послідовно з лічильником для обмеження струму. Закон Ома вказує, що для отримання 1мА струму з напругою 5В потрібно 5000 опір. Щоб забезпечити нормальну зміну компонентів, я зібрав цей опір, поставивши 4,750Ω резистор послідовно з потенціалом 0Ω до 500Ω. Щоб встановити діапазон для кожного лічильника, спочатку вимкніть його за допомогою регулювального гвинта на самому лічильнику, а потім налаштуйте горщик, щоб встановити його високу точку.
МАТЕРІАЛИ
На платі мікроконтролера Arduino я використовував Arduino Diecimila, який я купив у Maker Faire. Ви можете замовити один з store.makezine.com.
Лічильники струму 1 мА (3) Переконайтеся, що ваша плата забезпечує достатню кількість струму для приводу голки лічильника по всьому діапазону; Спочатку я спробував 50 мА метр, але це не було масштабоване для Arduino.
4,750Ω резистори (3) t
500Ω потенціометри (3) змінних резисторів
Перемикачі кнопки, миттєві SPST (3) t
Безлатна макета
Комп'ютер з принтером і папером
Спрей-клей
Nice дерев'яний ящик і фарби
Висновок мікроконтролера проходить через регульований опір, а потім - до лічильника секунд.
Зробити це галочкою
Як тільки ми підключили лічильник, ми можемо написати просту програму C, щоб кожну хвилину вона рахувала 60 секунд у повному діапазоні. Функція аналогового запису () записує значення між 0 і 255 і індексом вихідного висновку і встановлює вихідний сигнал для заданого висновку на значення ШІМ між 0В і 5В.
Щоб відстежувати секунди, програма запускає безперервний цикл, який викликає millis (), вбудовану функцію Arduino, яка повертає кількість мілісекунд з моменту останнього запуску плати. Повернене значення порівнюється з значенням millis () з попереднього циклу, а різниця додається до загальної кількості секунд, яка в свою чергу оновлює дисплей.
Макет несе 3 однакові схеми, що працюють паралельно, для годин, хвилин і секунд метрів.
Коли секунди обертаються, код скидає загальний обсяг до 0 і додає залишок. Код також обробляє інший особливий випадок, коли значення, яке повертає millis (), перевертається, приблизно через кожні 9 годин безвідмовної роботи.
Я використовував штифт 11 Arduino для керування моїм знову запрограмованим лічильником секунд. Потім я продовжив програмування і керуючи годинами і хвилинами метрів аналогічним чином, використовуючи штифти 9 і 10. Електропроводка для кожного лічильника точно така: мікроконтролер висновок штиря з'єднується з потенціометром послідовно з резистором, який потім веде до лічильника. Весь код цього проекту, а також схеми підключення, доступний на сайті makezine.com/13/diycircuits_clock.
Оригінальні амперметри показали шкалу від 0 до 1 міліампер.
Встановлення часу
Щоб зробити наш годинник корисним, нам потрібен спосіб встановити час після його включення. Для цього я використав 3 перемикача. Один з циклів перемикає годинник через 4 режими (звичайний, встановлений, повністю низький та високий - пояснений пізніше), один збільшує години, а інший збільшує хвилини. Щоб отримати правильне читання з цифрових входів, нам потрібен підтягувальний резистор між кожним входом і 5 В. Мікропроцесор Arduino зручно вбудований, але потрібно явно активувати їх, оголосивши шпилькою як вхідним
pinMode (b1pin, INPUT)
а потім покликання
digitalWrite (pin, HIGH)
Оскільки програма проходить через головний цикл багато разів кожну секунду, ми припускаємо, що один натискання кнопки буде прочитано кілька разів. Для цього у мене є змінна для кожної кнопки, яка відстежує її стан. Крім того, коли програма спочатку виявляє, що стан кнопки змінився, він затримує на 20 мілісекунд, щоб зачекати від будь-якого відскоку сигналу від перемикача.
Перемикач режимів переміщує годинник між чотирма режимами: нормальний, встановлений час, всі метри низькі, і всі метри високі. У звичайному режимі відображається час, встановлений режим дозволяє змінювати його, а режими низького і високого рівня встановлюють 3 вихідних контакту на 0В і 5В відповідно для калібрування лічильників. Код продовжує відслідковувати поточний час у всіх режимах, якщо це не скинуто. Я розглядаю можливість додавання до годинника додаткових режимів, таких як будильник, секундомір і таймер.
Створення ваг
Ваги на лічильниках, як придбані, читаються від 0mA до 1mA, але для того, щоб годинник був читаним, нам потрібні ваги, які йдуть від 0 до 24 для годин і від 0 до 60 для хвилин і секунд. Це завершилося тим, що це була одна з найважчих частин проекту.
Я почав з розбирання одного з лічильників і сканування друкованої панелі зі шкалою. Потім я використав інструменти вимірювання в програмі малювання Unix Xfig (xfig.org) для вимірювання відстаней і кутів зображення. Одним з ускладнень було те, що масштаб не заснований на простої дузі кола; вона стиснута вертикально, так що кінці шкали знаходяться далі від точки повороту голки, ніж середина.
Щоб створити нові масштаби, я написав програму в Tcl (tcl.tk), яка приймає набір відстаней і кутів, що описують масштаб, обчислює її складові лінії і криві і виводить файл зображення у рідному форматі Xfig. Я прочитав цей файл у Xfig і використовував його для створення друкуваного PostScript-файлу.
Рис. A: Шкала вимірювача секунд відображає 60 з входом 1 міліампер.
Єдина проблема полягала в тому, що найкраща лінія, яку Xfig могла б намалювати, була товщиною, ніж я хотів, тому я редагував PostScript вручну, щоб зробити лінію тоньше перед її друком. Як тільки я роздрукував нові ваги, я вирізав їх і використовував клей для розпилення, щоб приклеїти їх до пластин (рис. А).
Щоб допомогти вирівнювати ваги на пластинах, я надрукував додаткові знаки, де були отвори для гвинтів. І щоб оригінальні ваги не показувалися через папір, я поклав нові ваги на спинки тарілок, які були порожніми (і симетричними).
Бокс це
Це тип проекту, який потребує хорошої коробки, щоб відобразити лічильники і приховати дроти та інші. Моя дружина припустила, що гарний дерев'яний ящик буде добре виглядати на мантії, і ми вибрали один у місцевому магазині ремесла.
Рис. B: Паперовий шаблон для різання отворів у коробці.
Рис. C: Отвори в коробці, з деякими отворами розірвані на прорізи для кріплення гвинтів.
Рис. D: Лічильники з новими вагами вписуються в коробку.
Монтаж метрів означав свердління широкого центрального отвору для задньої частини лічильника, оточеного рівномірно 4 маленькими отворами для кріпильних гвинтів. Я зробив паперовий шаблон в якості орієнтира (Малюнок B, попередня сторінка) і пробурив відповідним чином, але було важко отримати достатньо точні отвори для кріплення, так що я використав більший шматок і пилу для замкової щілини, щоб очистити достатньо місця для них (Мал. C). Лічильники все щільно прилягали до центральних отворів, тому я не потрудився поставити гайки і шайби на монтажні гвинти (рисунок D).
Для джерела живлення я вважав, що батареї в коробці, але Arduino тягне 20mA – 30mA, так що навіть з D клітинами, вони повинні бути змінені кожні 5 тижнів. Замість цього я вирішив використати стіни бородавки і провів шнур через отвір в задній частині коробки. Кнопки для налаштування годинника і зміни режимів, що залишилися на макеті всередині.
Рис. Д: Підшар червоної фарби.
Рис. F: Чорна фарба частково стирається по краях, піддаючи червоному підшлункові антикварний ефект.
Нарешті, я хотів, щоб вікно було старим чорним, щоб відповідати нашій меблі. Я досягла цього ефекту, спочатку наклавши пальто червоної фарби і давши їй висохнути (Малюнок Е). Потім я слідував за нею чорним і злегка витер мокру фарбу з країв, підсвічуючи невелику кількість червоного під ним (Малюнок F).
Кінцевим результатом є унікальний годинник і відмінний стартовий телефон для розмови, який може бути показаний на видному місці в моєму домі, а тепер і у вас!
Рис. G: Готовий годинник з відкритою кришкою для відображення схеми.
Рис. H: Годинник, що відображає аналоговий сигнал блимання 12:00.
Gene Scogin є програмістом, який користується різноманітними практичними проектами.
Посилання:
Зробити: Arduino Arduino Starter Kit Початок роботи з Arduino
http://store.makezine.com
http://www.makezine.com/13/diycircuits_clock
http://xfig.org
http://tcl.tk
З MAKE 13 - Сторінка 165. Щоб отримати MAKE, підписатися або придбати окремі томи.