Электро-механические часы под управлением Ардуино - СамоДельня

Электро-механические часы под управлением Ардуино

Электро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноВ этой статье мастер-самодельщик расскажет нам, как он сделал часы похожие на часы Humans Since 82.
Для изготовления авторских часов нужно, помимо остальных деталей, 25 плат Arduino и 48 шаговых двигателей, а так же, для каждого циферблата, используется специальная печатная плата. Общая цена сборки составила около 500 долларов (оригинальные часы стоят около 6000$).
Часы можно настроить для хранения настроек различных часовых поясов (EEPROM Arduino).
Давайте посмотрим демонстрационное видео работы часов.

Инструменты и материалы:
-3D-принтер;
-Паяльник;
-Отвертка;
-Кусачки;
-Суперклей;
-Шаговый двигатель + плата драйвера двигателя — 48 шт;
-Nano V3.0 — 25 шт;
-Магниты 5Х1 мм — 48 шт;
-Модуль 3144E с датчиком Холла — 48 шт;
-DIP переключатель 6-позиционный — 24 шт;
-Модуль времени DS3231 — 1шт;
-Угловой 5-контактный разъем — 48 шт;
-Резистор 1,3 кОм — 2 шт;
-Кнопка включения с фиксацией- 1 шт;
-Кнопка без фиксации — 2 шт;
-Блок питания от 10А;
Электро-механические часы под управлением АрдуиноШаг первый: 3D-печать
Дальше нужно напечатать детали. Мастер использовал принтер Creality Ender 3 Pro, нить — PLA. Все детали были напечатаны при стандартных температурах с 20% -ным заполнением, за исключением двух зубчатых трубок, которые были напечатаны со 100% -ным заполнением и опорами. Опоры на зубчатых трубках необходимо будет отрезать.
Для печати всех деталей требуется около 30 дней.
Несколько советов при печати:
Сопло необходимо регулярно чистить. В противном случае отпечатки станут очень тонкими.
Катушки с PLA должны плотно прилегать, чтобы нить не скручивалась и не ломалась во время печати.
Ниже можно скачать файлы для 3D-печати, количество каждых деталей можно посмотреть в этой таблице.
center_connector_plate.stl
clock_arm_small_5.1.stl
clock_arm_big_8.65.stl
clock_base_plate.stl
corner_frame_A.stl
corner_frame_B.stl
gear_tube_big.stl
gear_tube_small_2.stl
long_edge_frame.stl
master_support.stl
motor_gear.stl
short_edge_frame.stl
side_connector_plate.stl
Электро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноШаг второй: схема
Схемы была разработана в Autodesk.
На данной схеме изначально обозначен оптический модуль, а не датчик Холла, как в устройстве.
Каждая плата датчика Холла подключена к 5V, Gnd и аналоговому выводу (O_0 или O_1) на печатной плате. Более подробная информация об этом будет предоставлена в деталях сборки.
analog_clock_rev2.sch
Электро-механические часы под управлением АрдуиноШаг третий: печатная плата
Для этого проекта понадобится 25 печатных плат. Скачать файл для платы можно ниже. Платы мастер заказывал здесь, но можно и попробовать сделать самому.
H2W-312555_Analog_clock_Rev2.zip.gz
Электро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноШаг четвертый: код
В этом проекте используются два файла Arduino: главный и подчиненный.
Мастер-код используется один раз и управляет всеми подчиненными. Код ведомого используется 24 раза.
ZIP-файл библиотеки RTC (часы реального времени) также включен сюда. Файл .zip можно добавить в IDE Arduino, выполнив следующие действия:
sketch -> include library -> add .zip library.
Чтобы запрограммировать Arduino, выберите:
tools -> Boards: Arduino Nano
tools -> Processor Atmega328 (old bootloader/старый загрузчик)
tools -> port (select your port/выберите свой порт)
Файл с кодом можно скачать ниже. Открывается файл архиватором.
HartClock_Arduino_Code.zip.gz
Электро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноГлавный Arduino отправляет последовательные команды I2C на 24 подчиненных Arduino, которые расположены за каждым циферблатом. Подчиненные Ардуино декодируют команды I2C в часы.
Возможные команды Arduino I2C от ведущего к ведомому:
0= IDLE, 1= Calibrate, 2= Arm_go_clockwise, 3= Arm_go_counter_clockwise
Часы имеют 8 возможных положений, в которых они могут находиться, как показано на рисунке ниже.
После сброса «главный» отправит команду калибровки на каждое Arduino, чтобы заставить вернутся в исходное положение, которое соответствует положению часов «8». В шестеренках позади каждых часов есть магниты, а также датчик Холла, который определяет, когда магнит находится «дома».
Электро-механические часы под управлением АрдуиноШаг пятый: монтаж плат
Нужно смонтировать 24 платы.
Не забудьте вытащить микросхемы драйверов ULN2003 из их гнезд на маленьких платах драйверов, которые поставляются с двигателями.
Обратите внимание, что к каждой плате припаяно по 6 перемычек.
Обратите внимание, что зеленые 4-контактные клеммные колодки, показанные на этих рисунках, не используются. Мастер просто припаял провода напрямую, так меньше потери напряжения
Электро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноНа каждой печатной плате есть микропереключатель. Двухпозиционный переключатель для каждого тактового сигнала должен быть установлен на значения, показанные на рисунке, чтобы «мастер» мог индивидуально адресовать каждый подчиненный модуль часов.
Электро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноШаг шестой: сборка основной платы
Основная плата Arduino состоит из платы часов реального времени (RTC) и Arduino nano.
Эта плата RTC может быть приклеена термоклеем или с помощью двусторонней ленты. После пайки она будет надежно зафиксирована.
Подключите RTC Vcc к монтажному отверстию +5 на плате.
Подключите RTC Gnd, SCL и SDA к соответствующим обозначениям контактов на плате.
Припаяйте подтягивающий резистор I2C 1,3 кОм (или близкое значение) между платой Vcc RTC и SDA.
Припаяйте подтягивающий резистор I2C 1,3 кОм (или близкое значение) между платой RTC Vcc и SCL.
Припаяйте четыре провода длиной около 15 см к + 6V, Gnd SDA и SCL для будущего подключения к другим платам.
Электро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноШаг седьмой: монтаж модуля часов
Для лучшего понимания процесса сборки смотрим видео.
Определите правильную полярность установки магнитов проверив их с помощью модуля датчика Холла, подключенного к источнику питания 5 В или небольшой аккумуляторной батареи. Для этого мастер использовал аккумуляторную батарею на 4,5 В. Когда направление правильное, индикатор должен стать зеленым (значит, эта сторона ставится вверх).
Приклейте магниты суперклеем.
Соберите часы, как показано на видео.
Отрежьте четыре провода сантиметров по 15. Зачистите оба конца и скрутите их вместе. Припаяйте их к одной стороне печатной платы в точках + 6V, Gnd, SDA, SCL. Они будут использоваться в дальнейшем.
Электро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноШаг восьмой: тестовый код Arduino ведомого устройства с одним тактовым сигналом
Мастер рекомендует протестировать каждый модуль часов после его сборки. Для этого нужно временно установить DIP-переключатель на значение больше 23. Это заставит код подчиненного устройства Arduino выполнить калибровку после включения питания.
Это не будет похоже на движение на видео, но проверить что движения правильные, а магниты находятся в нужных местах. Кабель USB сможет питать оба двигателя для этого теста, поэтому подключение к источнику питания не требуется.
Для проверки нужно произвести следующие действия.
Подключите USB-кабель и загрузите подчиненный код Arduino. Вы должны увидеть, как выполняется калибровка на каждой стрелке. Переместите стрелку в верхнее положение «8 часов» после калибровки. Нажмите кнопку сброса на Arduino nano. Проверьте еще раз.
Не забудьте установить переключатель DIP на правильное значение (от 0 до 23) после калибровки. Напишите номер часов маркером на обратной стороне часов, чтобы упростить сборку.
Шаг девятый: блок питания
Сначала нужно обжать разъемы и подключить провода к блоку питания. Затем отрегулировать напряжение до 7,5 В и зафиксировать ручку регулировки (например изолентой).
Провода будут подключены к главной плате через переключатель.
Обратите внимание, что каждый шаговый двигатель 28BYJ48 приводится в действие напряжением 7,5 В. Обмотки по 70 Ом каждая.
Таким образом, ток через каждую обмотку составляет 7,5 В / 70 Ом = 107 мА.
Есть 2 обмотки, которые активно управляются ведомым шаговым двигателем на шаг. Итак, 2 * 107 мА = 214 мА на двигатель.
Если все 48 двигателей вращаются, это 48 * 214 мА = 10,2 ампер. В соответствии с этим и нужно выбирать блок питания.
Электро-механические часы под управлением АрдуиноШаг десятый: тест для ведущего Ардуино
Этот шаг позволяет проверить одну полную цифру из шести блоков.
Соберите 6 часов в одну цифру, используя 2 боковых соединителя на каждом стыке и вставив в них винт. Припаяйте провода, чтобы получилась цифра.
Код Arduino, называемый здесь debug_master_counter.ino, загружается в главную плату. К этому моменту все подчиненные модули синхронизации должны иметь загруженный файл analog_clock_slave.ino.
DIP-переключатели должны быть установлены в положение: (от 0 до 5), или (от 6 до 11), или (от 12 до 17), или (от 18 до 23).
Это позволит добавлять одну цифру за раз, тестировать и соединять, спаяв 6 блоков вместе.
Временно припаяйте 4 провода ведущего модуля к этим часам в точке + 6 В, gnd, sda, SCL для тестирования.
Убедитесь, что к главному модулю подключен источник питания (временно без переключателя) и настроен на 7,5 В. Поскольку разъема нет, придется временно припаять его для этого теста.
Главный модуль включает и инициализирует все 6 часов. Нам нужно переместить стрелки вверх (позиции на 8 часов). Затем он отправит инструкции, чтобы показать схему увеличения счета от 0 до 9, как показано на фотографиях.
Загрузите основную плату arduino с правильным кодом master_clock_slave.ino, когда вы закончите тестирование всех цифр.
debug_master_counter.ino
Электро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноШаг одиннадцатый: полная сборка часов
После того, как будут собраны все модули, можно приступить к сборке часов. Для каждого соединения двух модулей требуется два кронштейна. Кронштейны фиксируются винтами.
После того, как часы будут собраны, нужно припаять провода между каждым модулем. Изначально на каждой плате были зеленые винтовые клеммы, но мастер решил просто припаять соединения. Винтовые клеммные колодки создавали сопротивление на каждом винте, что приводило к падению напряжения.
Электро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноДальше нужно установить рамку. Все детали напечатаны на 3D-принтере, и собрать ее не составит труда. В одной из нижней секций рамки нужно просверлить три отверстия для установки кнопок управления.
Электро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноПриклейте скобу master_support, которая будет удерживать главную плату Arduino, как показано на фото ниже.
Электро-механические часы под управлением АрдуиноШаг двенадцатый: заключительные работы
В мастер-коде Arduino можно настроить направления вращения стрелок часов.
Некоторые из шаговых двигателей 28BYJ-48, работают задом наперед, но это можно исправить в коде. Пример этого показан на картинке. Установите соответствующий бит = 1 в мастер-коде Arduino, чтобы инвертировать стрелку часов, которая вращается неправильно.
Электро-механические часы под управлением АрдуиноЭлектро-механические часы под управлением АрдуиноЧасы мастер крепит на стену с помощью длинного кронштейна.
Электро-механические часы под управлением АрдуиноВсе готово.
Электро-механические часы под управлением Ардуино

SitesReady

Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного. - Альберт Эйнштейн

Мы в соцсетях