Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Светодиодный куб 5x5x5

Компоненты и расходные материалы

Arduino Mega 2560
× 1
Синий светодиод
× 125
NPN транзистор NTE85
× 5
луженая медная проволока калибра 22
Используется для связывания слоев вместе и переноса катодов слоев на основную плату
× 1
резистор 180 Ом, 1/4 Вт
× 25
Макетная плата 9 см x 15 см
× 1
резистор 330 Ом, 1/4 Вт
× 5
Необязательно - источник питания 9 В для MEGA
USB-кабель отлично питает этот куб, но если вы захотите его подключить, вот источник питания
× 1

Необходимые инструменты и машины

Паяльник (общий)
Пистолет для горячего клея (общий)
Blue Tack
Используется для удержания светодиодов на месте во время пайки

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

ВВЕДЕНИЕ

Большинство людей любят светодиодные кубы, но большие, например, 8x8x8, требуют много работы как для сборки, так и для программирования. Маленькие (3x3x3 или 4x4x4) легко построить, потому что они не требуют большого количества светодиодов, но также потому, что им не требуется внешнее оборудование, такое как регистры сдвига и драйверы высокого уровня для управления кубом. Но на самом деле они не такие, как большой куб.

Моей целью с самого начала этого проекта было создать простой в сборке куб, а затем создать достаточно крутого программного обеспечения, чтобы можно было наслаждаться ощущением большого куба без всей утомительной работы, необходимой для создания большого куба. Итак, это куб 5x5x5, который может питаться напрямую от Arduino Mega без регистров сдвига любого вспомогательного оборудования, кроме 5 транзисторов (используется для заземления всего слоя - катодов 25 светодиодов). Почему я хочу избежать регистров сдвига? Потому что они абсолютно ужасны для передачи проволоки. (Я пробовал.) Вам действительно нужно спроектировать и изготовить печатную плату, если вы хотите их использовать.

В прошлом я написал много кода для больших кубов, поэтому я адаптировал кучу существующих анимаций куба для работы на этом кубе 5x5x5.

Фактически, это первый из трех подобных проектов. Второй здесь. Это куб 5x5x5 RGB, очень похожий по конструкции на этот куб, но сложный в сборке. Третий вот здесь - одноцветный куб 8x8x8, опять же с минимумом внешнего оборудования.

ПРИМЕЧАНИЕ. Прежде чем я продолжу здесь, я не первый, кто предлагает куб 5x5x5 с питанием от MEGA. MEGA DAS опубликовала здесь аналогичный проект в 2017 году. Аппаратное обеспечение в обоих проектах практически идентично. Я не видел раньше, пока я не начал эту запись, поэтому мои распиновки другие, а резистор значения являются разные, но в остальном оборудование практически идентичное. Я публикую это в основном потому, что у меня большой опыт написания программного обеспечения для кубов. Я надеюсь, что моя программа убедит некоторых людей построить куб, которые иначе не смогли бы!

Видео выше представляет собой синусоидальную волновую функцию, где амплитуда отложена по оси z, а время представлено как горизонтальное расстояние от центра куба. Отличная классика для большого куба, но неплохая для этого 5x5x5!

Я включаю два других видео. Оба они одного и того же - 14 анимаций для куба 5x5x5. Я не уверен, что лучше, поэтому включил оба. И если это неочевидно, кубики вживую выглядят намного круче, чем на видео!

АППАРАТНОЕ ОБЕСПЕЧЕНИЕ

Mega имеет множество цифровых контактов ввода-вывода. Мы используем 5 для опускания катодов для каждого слоя и еще 25 для подъема анодов для каждого из 25 светодиодов в слое. Используя этот подход, Mega фактически имеет достаточно контактов ввода-вывода для построения куба 6x6x6. Но еще одно соображение, если мы пытаемся сохранить простоту, - это сила. Пределы тока Mega составляют 40 мА на вывод и 200 мА на все выводы. У синих светодиодов прямое падение напряжения составляет около 3 вольт, у наших обычных катодных транзисторов - еще 0,7 вольт. Таким образом, при питании 5 В и резисторе 180 Ом каждый светодиод потребляет 7,2 мА. 25 светодиодов на слой потребляют 180 мА, если все включены одновременно. Мы включаем только один слой за раз, поэтому мы соблюдаем все текущие ограничения Mega, пока мы используем транзисторы NPN для заземления всех катодов в слое. Базовый ток одного из этих транзисторов добавляет еще 5 мА к общей нагрузке на Mega, но мы сохраняем общий ток ниже 200 мА. около 185 мА. Итак, по всем указанным выше причинам я выбрал резисторы на 180 Ом для сопряжения с нашими светодиодами.

На диаграмме выше показано, как цифровые выводы Mega подключаются к кубу. Контакты 22–26 - это 5 контактов, которые управляют транзисторами, которые соединяют катоды светодиода с землей. Контакты 27-51 проходят через резисторы 180 Ом к анодам 25 светодиодов в слое.

Вам может быть интересно, почему такое расположение выводов выглядит немного запутанным. Мое программное обеспечение использует прямой доступ к порту, а не digitalWrites, для настройки анодов, то есть для включения или выключения каждого из 25 светодиодов в слое. Это экономит много времени и означает, что светодиоды горят дольше, чем если бы вы потратили много времени на работу с digitalWrites. Таким образом, распиновка организована таким образом, чтобы помочь упорядочить ссылки на эти цифровые порты, а не на фактические номера контактов. Подробнее обо всем этом, когда мы перейдем к программному обеспечению.

КОНСТРУКЦИЯ КУБА

Существует множество мнений о том, как построить куб вне зависимости от его размера. Независимо от вашего подхода, задача утомительна. И нужно проявлять осторожность и терпение, чтобы получить хороший результат. Я покажу вам, как я построил этот, но есть и другие инструкции в Интернете, если вы предпочитаете.

Создание этого куба начинается с формирования выводов и спайки светодиодов в столбцы по 5 штук. Затем формируются панели путем пайки вместе 5 столбцов, и, наконец, куб формируется путем спайки 5 панелей. Люди, которые никогда раньше не строили куб, не осознают, насколько сложно построить идеальный куб. Небольшие погрешности в углах подъема быстро накапливаются, и даже небольшие различия в шаге легко заметны. Таким образом, этап формирования свинца имеет решающее значение. Если вы потратите время и сделаете это правильно, вы не получите идеальный куб, но вы получите разумно выглядящий.

Аноды являются более длинными выводами светодиода, и они опускаются вниз, но их нужно отогнуть в сторону светодиода, чтобы вертикальные ряды анодов светодиодов можно было спаять вместе. Смещение анода и вывода катода должно быть под углом 90 градусов друг к другу, как показано на этих фотографиях.

Я лично считаю, что формирование свинца утомительно и сложно для рук, поэтому я сформировал 25 светодиодов, а затем построил панель. Как для колонн, так и для панелей вам понадобится какое-то приспособление. Я делаю эту отсадку с помощью BlueTack, многоразового клея. Светодиоды можно вдавить в BlueTack и оставить на месте, пока колонки и панели припаяны. Отступы позволяют повторить эти процессы с точно такими же интервалами. Важно все тщательно измерить с первого раза. Я использовал расстояние 0,6 дюйма между светодиодами во всех трех направлениях, что позволило вставить готовый куб в плату со стандартным шагом отверстий 0,1 дюйма.

Примечание о пайке светодиодов между собой :Каждый кошмар создателей кубов сводится к тому, что куб построен полностью, а затем обнаруживается холодное паяное соединение внутри куба, к которому вы больше не можете добраться! Позаботьтесь о том, чтобы паяные соединения на каждой колонке светодиодов были хороши.

Когда вы закончите каждую панель, пора ее протестировать. Опять же, мы делаем это, потому что узнать о холодном паяном соединении или неисправном светодиоде, когда ваш куб закончен, было бы катастрофой!

В программном обеспечении я добавил небольшой набросок, который тестирует панель. Чтобы выполнить этот тест, вам необходимо подключить 5 вертикальных анодных выводов к 5 резисторам (330 Ом или аналогичным), а затем эти резисторы к контактам 40-44 (анодные контакты столбца 0). Затем соедините 5 контактов катода с контактами, которые обычно используются для управления катодами, контактами 22-26. Хорошее панно будет выглядеть как на видео выше. (В качестве примечания, мы еще не используем транзисторы для управления катодами, поэтому эта небольшая процедура тестирования устанавливает низкий уровень на катодах для включения светодиода. После установки транзисторов мы сделаем обратное, т.е. на транзисторах, которые затем подтягивают катоды к низкому уровню.)

Когда у нас построено и протестировано 5 панелей, мы готовы собрать куб, но сначала мы должны подготовить плату, вставив и подключив все необходимые резисторы и транзисторы.

Я разместил резисторы на 180 Ом рядом с каждой колонкой анодов, а катодные транзисторы и их базовые резисторы - в пространстве между кубом и Mega. Опять же, расстояние между анодными колоннами составляет 0,6 дюйма в обоих направлениях, так что 5 пустых отверстий в плате между каждым отверстием с анодной колонкой.

Сейчас хорошее время, чтобы поставить Arduino на борт. Его можно установить на стойки, если они у вас есть. На самом деле я просто использовал небольшой кусок пластика и немного клея, чтобы прикрепить Mega примерно на 1/4 дюйма над доской.

На этом этапе каждая панель прикреплена к основной плате. Перед пайкой убедитесь, что каждый столбик анода действительно находится в правильном отверстии, так как в готовом кубе будет заметна даже ошибка одного отверстия. И убедитесь, что все панели смотрят одинаково, т.е. все катодные выводы выходят с одной стороны.

Затем нам нужно соединить панели друг с другом на каждом слое, чтобы все катоды в данном слое были соединены. Это достигается с помощью выпрямленного куска луженой медной проволоки, соединяющей пять катодных линий в один слой.

Теперь мы готовы подключить катоды каждого слоя к основной плате. Кружки на картинке выше показывают, где катоды каждого слоя соединены и выведены на коллектор транзистора. Опять же, мы используем выпрямленный кусок луженой медной проволоки.

После того, как вы подключили все выводы резисторов к Mega, мы, наконец, готовы протестировать готовый куб. В программе я предоставил эскиз для проверки куба. Он по порядку кратковременно загорится каждым светодиодом в кубе. Поскольку вы уже протестировали каждую панель, любые проблемы, которые вы видите на этом этапе, скорее всего, будут связаны с недавними катодными подключениями. Таким образом, вы можете обнаружить, что один слой не работает или является частью одного слоя. Опять же, вам, скорее всего, понравится холодное паяное соединение, если возникнет проблема.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

Состояние каждого светодиода в кубе определяется глобальным массивом байтов 5x5x5, называемым cube [] [] []. 1 означает, что светодиод горит, 0 - что он выключен. Таким образом, все анимации куба создаются путем размещения единиц и нулей в cube [] [] [].

Сердце любого программного обеспечения куба - это синхронизированное прерывание, которое обновляет куб. Моя процедура прерывания запускается в setup (), а затем находится в самом конце программы. Он вызывается каждые 10 мсек. и занимает около 6 мсек. чтобы обновить куб. Остается 4 мсек. между каждым обновлением для выполнения вещей в основном цикле.

Во время обновления каждый слой включается на 1,2 мс. Обновление происходит 100 раз в секунду. Таким образом, любой отдельный светодиод, который включен, горит на 120 мс / секунду или 12% рабочего цикла. 100 раз в секунду достаточно, чтобы человеческий глаз видел его постоянно включенным, а 12% рабочего цикла достаточно, чтобы светодиоды светились довольно ярко, не так сильно, как если бы они были включены постоянно, но на удивление близко к этому. .

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

Loop () просто вызывает каждую анимацию, просматривает список и затем начинает заново. Каждая анимация находится в отдельной подпрограмме. Некоторые процедуры анимации вызывают другие процедуры. См. Сам код для объяснения различных анимаций. Есть также несколько служебных подпрограмм, используемых во всех анимациях, например clearCube (), который выключает все светодиоды, или copyDown (); который сдвигает содержимое каждого слоя вниз на слой под ним, а затем очищает верхний слой.

Вы можете скачать три разных скетча. Главный содержит 15 анимаций, которые вы видели на видео. Эскизы панельного теста и теста куба используются только для тестирования куба во время строительства.

Код

  • Программное обеспечение Cube 5x5x5
Программное обеспечение Cube 5x5x5 Arduino
Содержит 3 скетча:Panel Test, Cube Test,
и Шоу со всеми 15 анимациями
 Без предварительного просмотра (только загрузка). 

Изготовленные на заказ детали и корпуса

Совершенно необязательно, но если у вас есть доступ к 3D-принтеру и вы хотите коробку, которую вы видите в моих видео, вот она:

Схема

Схема основы Показывает точные связи между кубом и Mega.

Производственный процесс

  1. Гладильная доска
  2. Кубик Рубика
  3. Печатная плата
  4. Доска для серфинга
  5. Светоизлучающий диод (светодиод)
  6. RaspiRobot Board V2
  7. Простые часы со словами (Arduino)
  8. Мелодия танца в гробу
  9. Smart Touch Switch Board
  10. Arduino с Bluetooth для управления светодиодом!