Оглавление:

Механические часы с семисегментным дисплеем: 7 шагов (с изображениями)
Механические часы с семисегментным дисплеем: 7 шагов (с изображениями)

Видео: Механические часы с семисегментным дисплеем: 7 шагов (с изображениями)

Видео: Механические часы с семисегментным дисплеем: 7 шагов (с изображениями)
Видео: Управление семисегментным индикатором 2024, Ноябрь
Anonim
Механические часы с семисегментным дисплеем
Механические часы с семисегментным дисплеем
Механические часы с семисегментным дисплеем
Механические часы с семисегментным дисплеем

Пару месяцев назад я построил двухразрядный механический 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-печать пластиковых компонентов

3D-печать пластиковых компонентов
3D-печать пластиковых компонентов
3D-печать пластиковых компонентов
3D-печать пластиковых компонентов
3D-печать пластиковых компонентов
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 будет сохранять время, поэтому при восстановлении питания часы автоматически сбрасываются на правильное время.

Если вам понравилось это руководство, проголосуйте за него в конкурсе «Часы» и дайте мне знать о любых улучшениях или предложениях, которые вы можете придумать, в разделе комментариев ниже.

Конкурс часов
Конкурс часов
Конкурс часов
Конкурс часов

Второй приз в конкурсе часов

Рекомендуемые: