Jeffrey Cross
Jeffrey Cross

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, підписатися або придбати окремі томи.

Поділитися

Залишити Коментар