Оглавление:
- Шаг 1: 3D-печать пластиковых компонентов
- Шаг 2: Подготовьте платы управления и проводку
- Шаг 3: соберите сервоприводы
- Шаг 4. Настройка и тестирование
- Шаг 5: загрузка кода
- Шаг 6: сборка часов на задней панели
- Шаг 7: Окончательная настройка и работа
Видео: Механические часы с семисегментным дисплеем: 7 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:47
Пару месяцев назад я построил двухразрядный механический 7-сегментный дисплей, который превратил в таймер обратного отсчета. Получилось неплохо, и некоторые люди предложили удвоить дисплей, чтобы сделать часы. Проблема заключалась в том, что у меня уже закончился ввод-вывод PWM на моей Arduino Mega, и мне не хватало для вторых или третьих цифр. Затем меня указали на эти 16-канальные драйверы PWM PCA9685, которые работают через интерфейс I2C. Это позволило мне управлять 28 сервоприводами, которые мне были нужны, с помощью двух выводов I2C на Arduino. Итак, мне пришлось работать над созданием часов, которые теперь используют модуль часов реального времени DS1302, чтобы отслеживать время, и два 16-канальных сервопривода для управления 28 сервоприводами, используемыми для создания дисплея, и все они питаются от Arduino Uno.
Если вам нравится эта инструкция, пожалуйста, проголосуйте за нее в конкурсе часов.
Запасы:
Чтобы построить часы, вам потребуются следующие принадлежности в дополнение к некоторым основным инструментам:
- Arduino Uno - Купить здесь
- Модуль часов DS1302 - Купить здесь
- 2 x 16-канальные сервоприводы PCA9685 - Купить здесь
- 28 x Micro Servos - Купить здесь
- Ленточный кабель - Купить здесь
- Полоски заголовка с штифтом - Купить здесь
- Полоски для заголовков с женскими булавками - Купить здесь
- МДФ 3мм - Купить здесь
- Черная аэрозольная краска - Купить здесь
- Схема устранения батареи 5V 5A - Купить здесь
- Блок питания 12 В - Купить здесь
Для этого проекта вам также понадобятся некоторые детали, напечатанные на 3D-принтере. Если у вас еще нет 3D-принтера и вам нравится создавать вещи, вам обязательно стоит подумать о его покупке. Используемый здесь Creality Ender 3 Pro доступен по цене и обеспечивает довольно хорошее качество печати для своей цены.
- Используемый 3D-принтер - Купить здесь
- Нить - Купить здесь
Шаг 1: 3D-печать пластиковых компонентов
Я сделал 7-сегментные дисплеи максимально простыми. Сервопривод также является опорным кронштейном, удерживающим сегмент над ним. Для каждого сегмента требуются два компонента, напечатанных на 3D-принтере: разделительный блок для поддержки нижней стороны сервопривода и сегмент дисплея, который приклеивается непосредственно к рычагу сервопривода.
Загрузите файлы 3D-печати - Файлы 3D-печати с механическими 7-сегментными часами
Распечатайте сегменты сервопривода и точки, используя яркий цветной PLA. Я использовал полупрозрачный зеленый цвет, но красный, оранжевый или желтый тоже подойдут. Я использовал черный PLA для разделительных блоков и точечных опор, чтобы они не были видны, когда сегменты повернуты в выключенное положение.
Если у вас нет доступа к 3D-принтеру, попробуйте одну из служб онлайн-печати. Существует ряд доступных служб, которые распечатают компоненты и доставят их к вашей двери в течение нескольких дней.
Шаг 2: Подготовьте платы управления и проводку
Вам нужно будет использовать два 16-канальных ШИМ-драйвера PCA9685 для управления вашими 28-тактовыми сервоприводами. Я разделил сервоприводы на цифры часа и минуты, при этом каждая пара цифр приводилась в действие одной доской. Итак, у меня есть одна плата, управляющая сервоприводами для двухчасовых цифр, а вторая - для управления сервоприводами для двух минутных цифр.
Чтобы связать их вместе, вам нужно сделать 6-жильный разъем ленточного кабеля и припаять вторую полосу заголовка к другому концу первой платы сервоуправления. Вам также необходимо изменить адрес I2C на второй плате, чтобы он отличался от первой и однозначно определялся.
Вам также потребуется собрать жгут проводов для подключения трех плат (двух сервоплат и модуля часов) к вашему Arduino. Вам понадобится 5 В и GND для каждой платы, а также подключения I2C к вашим контактам Arduino A4 и A5 (I2C на Arduino Uno), а контакты модуля часов CLK, DAT и RST к контактам 6, 7 и 8 на вашем Arduino. соответственно.
Питание на Arduino подается напрямую от источника питания 12 В и на сервоприводы с помощью 5 В 5 А BEC, который затем подключается к двум клеммам в верхней части драйвера ШИМ. Вам нужно подключить к источнику питания только один сервопривод, и он будет подавать питание на второй через 6-жильный ленточный кабель.
Шаг 3: соберите сервоприводы
После того, как вы напечатали свои сегменты, вам нужно будет покрасить заднюю и боковые стороны черным, чтобы они были менее заметны, когда они повернуты на 90 градусов в выключенное положение.
Затем вам нужно приклеить сегменты к сервоприводам с помощью термоклея. Это помогает приклеить их к сервоприводу, когда рычаг уже находится на сервоприводе, таким образом вы можете проверить, что вы приклеиваете их прямо и ровно.
Вам также необходимо приклеить распорный блок к нижней части каждого сервопривода.
Соберите точки, приклеивая небольшой дюбель или палочку для шашлыка с обратной стороны точек, а затем в базовые блоки. Я также обрызгал эти палочки черным, чтобы они были менее заметны, если смотреть под углом.
Шаг 4. Настройка и тестирование
Я пронумеровал все сервоприводы и написал номер на каждом выводе, чтобы было легче отслеживать их. Я начал с верхнего сегмента на разряде единиц и перешел к среднему сегменту на разряде десятков. В этом же порядке я подключал их к платам сервоуправления, помня, что идентификаторы на платах считаются от 0 до 13, а не от 1 до 14.
Затем я устанавливаю сегменты на столе с достаточным пространством между ними для тестирования, чтобы они не переходили в один и в другой, пока настраивались пределы перемещения и направления. Если вы попытаетесь установить их близко друг к другу, у вас, вероятно, один или два человека попытаются двигаться в неправильном направлении или переместятся на каком-то этапе и ударит другой, что может повредить сегмент, сервомеханизм или лишить шестерни сервопривода.
Шаг 5: загрузка кода
Код на первый взгляд выглядит сложным, но на самом деле он относительно прост благодаря двум используемым библиотекам. Также существует много повторов, потому что необходимо обновить четыре разных 7-сегментных дисплея.
Вот краткое описание кода, посмотрите полное руководство для более подробного объяснения и ссылку для загрузки кода - Механические 7-сегментные часы с дисплеем
Начнем с импорта двух библиотек: virtuabotixRTC.h для модуля часов и Adafruit_PWMServoDriver.h для сервоприводов. Библиотеку Adafruit можно загрузить и установить непосредственно через диспетчер библиотек в среде IDE.
Затем мы создаем объект для каждой платы управления с соответствующим адресом, один для цифр часа и один для минут.
Затем у нас есть четыре массива для хранения положений включения и выключения для каждого сервопривода. Вам нужно будет отрегулировать эти числа в следующих шагах, чтобы убедиться, что ваши сервоприводы находятся в вертикальном положении, когда включены, повернуты на 90 градусов, когда выключены, и не перемещаются слишком далеко.
В массиве цифр хранятся позиции каждого сегмента для каждой отображаемой цифры.
Затем мы настраиваем модуль часов и создаем переменные для хранения текущих и прошедших отдельных цифр.
В функции настройки мы запускаем и настраиваем платы управления ШИМ, а также при необходимости обновляем время на часах. Затем мы проходим цикл, чтобы установить дисплей на 8 8: 8 8, чтобы мы знали начальную позицию всех сервоприводов. Это также используется для настройки сервоприводов так, чтобы они все были направлены вверх правильно.
В основном цикле мы получаем обновленное время от модуля часов, разбиваем его на четыре цифры и затем проверяем, изменилось ли время по сравнению с последней проверкой. Если время изменилось, мы обновляем дисплей, а затем обновляем предыдущие цифры.
В функции отображения обновления мы сначала перемещаем средние сегменты. Это делается в первую очередь, потому что требуется некоторая логика для перемещения двух верхних сегментов, смежных со средним сегментом, немного в сторону, прежде чем перемещать средний сегмент, иначе он столкнется с ними. Как только средние сегменты перемещаются, остальные сегменты перемещаются в правильные положения.
Шаг 6: сборка часов на задней панели
Когда я закончил тестирование, я собрал сервоприводы на задней панели, используя приведенную выше схему в качестве руководства.
Белая область - это общий размер платы, более светло-серая область - это область вокруг каждой цифры, в которую входят сегменты сервопривода, а контур темно-серой области - это центральная линия для внешних 6 сегментов для каждой цифры.
Я вырезал доску, разметил макет, а затем приклеил цифры, чтобы получился циферблат.
Затем я просверлил отверстия возле каждого сервопривода и пропустил провода к задней части платы, чтобы они были менее заметны.
Я прикрепил электронику к задней части часов с помощью двустороннего скотча.
Шаг 7: Окончательная настройка и работа
Как только сервоприводы были готовы, я снял все сервомеханизмы для окончательной регулировки положения сегментов. Вы должны включить Arduino в этом состоянии, чтобы отобразилось 8 8: 8 8, а затем отключите питание, это перецентрирует все ваши сервоприводы, чтобы вы могли снова надеть сервомеханизмы так, чтобы сегменты были обращены как можно ближе к вертикали. насколько возможно.
Затем вам нужно будет последовательно включить Arduino и внести коррективы в положения включения и выключения сегмента в четырех массивах, чтобы сервоприводы были идеально вертикальными при включении и поворачивались на 90 градусов при выключении, не перемещаясь. Этот шаг отнимает много времени и требует немного терпения, но конечный результат того стоит!
Часы можно оставить запитанными от блока питания 12 В и подключенного к нему BEC 5 В. При отключении питания батарея модуля RTC будет сохранять время, поэтому при восстановлении питания часы автоматически сбрасываются на правильное время.
Если вам понравилось это руководство, проголосуйте за него в конкурсе «Часы» и дайте мне знать о любых улучшениях или предложениях, которые вы можете придумать, в разделе комментариев ниже.
Второй приз в конкурсе часов
Рекомендуемые:
Управление семисегментным отображением с помощью Arduino и регистра сдвига 74HC595: 6 шагов
Управление семисегментным дисплеем с помощью Arduino и регистра сдвига 74HC595: Эй, как дела, ребята! Акарш из CETech. Семисегментные дисплеи хороши на вид и всегда являются удобным инструментом для отображения данных в виде цифр, но у них есть недостаток, который заключается в том, что когда мы контролируем семисегментный дисплей в реальности
Часы Vortex: наручные часы с зеркалом бесконечности: 10 шагов (с изображениями)
Часы Vortex: наручные часы с зеркалом бесконечности: целью этого проекта было создание носимой версии зеркальных часов бесконечности. Он использует свои светодиоды RGB для индикации времени, назначая часы, минуты и секунды красным, зеленым и синим светам соответственно и перекрывая эти оттенки t
Фотохромные часы и светящиеся в темноте часы: 12 шагов (с изображениями)
Фотохромные часы и часы, светящиеся в темноте: в этих часах используется специально созданный 4-значный 7-сегментный дисплей, сделанный из ультрафиолетовых светодиодов. Перед дисплеем размещается экран, который состоит либо из фосфоресцирующего («светится в темноте»), либо из фотохромного материала. Загорается кнопка вверху
Положение шестерни мотоцикла с семисегментным дисплеем: 4 ступени
Положение редуктора мотоцикла с семисегментным дисплеем: этот проект включает декодирование ряда входных данных (в данном случае 7) для отображения в виде числовых значений на семисегментном дисплее (SSD) с использованием того, что называется двоично-десятичным (BCD), диодной матрицей и Микрочип под названием BCD4511 (или CD4511). У меня было
Программируемые часы с четырехсимвольным дисплеем: 5 шагов (с изображениями)
Программируемые часы с четырехсимвольным дисплеем: вы будете притчей во языцех, когда наденете эти неприятные, большие, совершенно непрактичные наручные часы. Покажите свой любимый сквернословие, тексты песен, простые числа и т. Д. Вдохновленный набором Microreader, я решил сделать гигантские часы, используя