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

Мститель в сборе:шлем Железного человека и дуговой реактор

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

Arduino UNO
× 1
Кольцо Adafruit NeoPixel:светодиод WS2812 5050 RGB
× 1
Отключение емкостного сенсорного датчика Adafruit - MPR121
× 1
Сервоприводы (Tower Pro MG996R)
× 1
Держатель батареи 4xAA
× 1
Зажим для батареи 9 В
× 1
Перемычки (общие)
× 1

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

3D-принтер (общий)
Мы использовали Lulzbot Mini, который отлично проработал более 1 года (за исключением нашей гибкой головки, которая имеет никогда не работал :()

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

IDE Arduino
Autodesk Netfabb
фритзинг

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

Avenger в сборе:3D-печать и управляемый Arduino шлем Железного человека и дуговой реактор.

Введение и мотивация:

Моя мотивация к созданию этого шлема началась с моего самого первого шлема, который я когда-либо делал. Это был картонный шлем Antman из нескольких видео, которые я нашел в Интернете. Это было действительно круто (я был большим поклонником чуда), поэтому я решил, что действительно хочу сделать шлем Железного человека. Я только что был на выставке National Maker Faire в Вашингтоне, округ Колумбия, и всем понравился шлем Antman. Это еще больше вдохновило меня на создание Железного человека. Я прошел через несколько прототипов, начиная с другого шлема из картона. Этот шлем был слишком маленьким, поэтому я разработал свой собственный шлем, на этот раз, когда я собрал его, он больше походил на шар на моей голове, чем на тот, что был в фильме. Наконец, я перешел к бумажной модели. Эта бумажная модель выглядела фантастически, но я столкнулся с еще одной проблемой. Бумажная модель оказалась слишком хлипкой. Я попытался исправить это, но ничего не вышло, поэтому я решил напечатать шлем на 3D-принтере. Я наконец сделал тот, который был достаточно устойчивым, а также достаточно большим, чтобы вместить мою голову и мотор.

  • Изготовление шлема и дугового реактора:

3D-печать:

1) Разделение на части - ПО

Первым шагом к созданию этого шлема был поиск файла в Интернете и его печать. Файл, который я нашел, был моторизованным шлемом Железного человека. Файл, который я скачал из thingiverse, состоял из трех частей:основная часть, подбородок и лицевая панель. Поскольку все три части были слишком большими для рабочей пластины моего принтера, мне пришлось найти программное обеспечение, которое могло бы разрезать мой шлем на части. Во время поиска в Интернете я обнаружил в Интернете бесплатное программное обеспечение под названием netfabb basic. Я скачал инструмент и загрузил в него свой файл. Netfabb basic был очень прост в использовании, и я смог разрезать части шлема. Затем я распечатал деталь на основном шлеме, подбородке и лицевой пластине. Просматривая отпечатки, я склеивал их вместе скотчем и проверял, подходит ли размер. Когда все части были напечатаны и было израсходовано 1 ½ рулона нити, у меня был шлем из 24 частей.

2) Выбор подходящего клея

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

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

Мы протестировали 4 различных вида клея:E6000, JB Weld KwikWeld, JB Weld Plastic Bonder и эпоксидную смолу Loctite Plastic Bonder. В конечном итоге мы использовали KwikWeld, потому что он отвечал всем трем требованиям. Чтобы прикрепить детали, в первую очередь нужно сделать склеиваемые стороны шероховатыми. Я использовал пилку для придания шероховатости гладким сторонам, пока деталь не стала шероховатой с небольшими бороздками и карманами. Это поможет деталям склеиться. Затем мы смешали JB KwikWeld с равными частями отвердителя и стали, равномерно распределили по обеим сторонам пилки и прижали их друг к другу. Если у вас есть зажим, вставьте его в зажим и сотрите излишки клея. Для высыхания требуется около 10 минут, но лучше оставить его дольше.

  • 3) Разработка сервомеханизма.

Следующей задачей при создании шлема Железного человека была разработка сервомеханизма. Поскольку я изо всех сил пытался понять, как прикрепить сервопривод к шлему, с изображениями на странице thingiverse , Решил сделать свою. Сначала я спланировал, где будет сервопривод, и измерил прямую линию от сервопривода до места крепления. Затем я предположил, под каким углом будет располагаться сервопривод. Первый дизайн был немного неправильным из-за слишком острого угла. Следующий я исправил, и он был как раз правильным. Затем я вкрутил рычаг в сервопривод и место крепления, чтобы посмотреть, подходит ли он. Это сработало! Наконец, я разработал зажим, который поместился вокруг сервопривода, и распечатал его. Я все собрал, и мы сделали самый первый тест. Он был неустойчивым, и лицевая панель не поднималась до упора плавно и равномерно. Чтобы решить эту проблему, я согнул металлическую вешалку, придав ей прямоугольную форму, и вставил ее в прорези, где должна была находиться деталь, напечатанная на 3D-принтере. Затем я разработал зажимы, чтобы они шли под плечики, чтобы они не упали. Я вырезал прорези в верхней части шлема ножовкой, а затем собрал все вместе. Мы попробовали это во второй раз, и он отлично сработал!

4) Сборка и покраска

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

5) Дуговый реактор:

Следующим было изготовление дугового реактора. Сначала я измерил размер неопиксельного кольца и разработал футляр для его хранения. Затем для крышки я использовал дизайн от кого-то из thingiverse и изменил его в соответствии со своими потребностями. Вы можете найти оригинальную модель здесь:http://www.thingiverse.com/thing:33021 Новый дизайн обладал почти такими же характеристиками, хотя некоторые части его немного не соответствовали пропорциям. Я распечатал корпус и верх, и они очень хорошо подошли. Единственная проблема заключалась в том, что Neopixel был слишком маленьким для корпуса. оказалось, что я ошибся в своих расчетах, поэтому я вернулся и изменил это. На этот раз он подошел. Затем я добавил два отверстия для проводов и перемычку наверху для веревки, чтобы я мог носить ее на шее. Наконец, я добавил дефузор из полупрозрачной нити абс, которая плотно прилегала к корпусу. Наконец-то печатная часть была сделана!

Электроника:

Как только 3D-печать была сделана, мы знали, что у нас есть отличная платформа для встраивания некоторой электроники. В этом проекте мы хотели бы управлять 1 серводвигателем, который прикреплен к лицевой панели шлема. Мы также хотели бы управлять кольцом Neopixel в Arc Reactor. Мы использовали Arduino Uno в качестве основы системы управления для этого проекта. Однако существует множество других типов плат, которые также можно использовать, и по этой причине мы сохранили общее программное и аппаратное обеспечение. Фактически, в этом проекте мы использовали как Uno, так и Arduino101 как взаимозаменяемые. Это также позволит расширить возможности в будущем и создать связанный шлем со встроенным BLE 101!

Железному человеку нужно будет привести в действие серводвигатель шлема и неопиксельное кольцо дугового реактора. Мы использовали ВЫКЛЮЧЕНИЕ ЕМКОСТНОГО СЕНСОРНОГО ДАТЧИКА ADAFRUIT MPR121 с 12 клавишами для обеспечения сенсорного интерфейса. Эта коммутационная плата позволяет использовать 12 различных входов и взаимодействует с Uno через I2C. 12 контактов оставляют много места для будущего расширения, а I2C является частью стандартных пакетов IDE для семейства Arduino, что дает нам возможность менять платы без перепрограммирования. Он хорошо документирован, а представленные примеры программного обеспечения позволяют легко понять, как использовать его в нашем эскизе.

Мы подключили провода с оголенными концами, чтобы задействовать наши емкостные сенсорные переключатели. Хотя мы не видим традиционного «дребезга переключателя», подобного тому, который наблюдается с механическими переключателями, одно касание вызовет несколько ударов, как loop () в скетче arduino опрашивает плату. Чтобы сервопривод не «дребезжал» в ответ на эти удары, мы реализовали программный механизм задержки 1/4 секунды при считывании касаний. После тестирования Uno и MPR121 мы добавили серводвигатель и блоки питания.

Принимая во внимание использование серводвигателя под нагрузкой и желание «развернуть» этот проект на выставке NYC Maker Faire в 2016 году, одним из наиболее важных аспектов этого проекта является источник питания. Нам сказали, что проектирование источников питания - одна из наиболее важных, но наименее привлекательных областей электротехники. Ни один из нас не является инженером-электриком, поэтому решение, которое мы придумали, представляет собой сочетание того, что мы читаем, будет работать, того, что мы поняли, что у нас есть в наличии и что у нас есть для работы. Поэтому мы не утверждаем, что это лучшее решение, и с нетерпением ждем предложений по улучшению.

Из-за нагрузки на сервопривод, потенциальной обратной ЭДС и рекомендаций https://www.arduino.cc/en/Reference/Servo мы решили запитать сервопривод отдельно от Uno. Питание и земля серводвигателя были подключены к источнику питания и заземлению аккумуляторной батареи 4XAA. Очень важно, чтобы земля Uno, сервопривод и аккумуляторная батарея были соединены, чтобы замкнуть цепь. Мы делаем это, соединяя вместе заземляющую шину платы Perma-Proto, аккумуляторную батарею 4XAA и провод от контакта заземления Uno, как показано на схеме Fritzing ниже.

Первоначально у нас также было кольцо Neopixel, которое также питалось от аккумуляторной батареи 4XAA. Мы изменили это, поскольку при включении и выключении кольца Neopixel казалось, что сервопривод «дребезжит» немного. Однако это могло произойти из-за низкого заряда батарей во время тестирования. К сожалению, мы заметили это накануне Maker Faire и уже были на Perma-Proto. Мы решили напрямую подключить Neopixel Ring к Uno и одновременно заменить батареи на новые. Это устранило проблему, но не дало ответа на вопрос. Возможно, поскольку мы работаем над улучшением проекта в будущем, мы продолжим это делать.

Вся схема была прототипирована на макетной плате, а затем просто перенесена на плату Adafruit ¼ Perma-Proto. Благодаря защищенному корпусу это один из самых простых способов быстро создать развертываемый пакет для вашего проекта. Мы разработали и напечатали индивидуальный корпус из синей нити HIPS, как показано ниже. Весь блок с батареями был упакован в чехол для камеры для Maker Faire!

Программное обеспечение:

В настоящее время существует 2 версии скетча: IronMan02.ino . и IronMan04.ino . Оба будут работать с настройкой оборудования, как описано в этой статье.

Первый, IronMan02.ino это готовая версия, которая следует духу «Совершенство - враг завершения». У нас был крайний срок, и эта версия, хотя и не изящная, выполнила свою работу. В этой версии вы увидите, что мы создали объекты, представляющие шлем и дуговой реактор. Это было сделано в ожидании реализации многозадачности на Arduino в будущих версиях, так что это не было полной спешкой. Мы настоятельно рекомендуем прочитать серию из трех статей о многозадачности Arduino Билла Эрла из Adafruit. Наш код основан, особенно на IronMan04.ino, основан на примерах, идеях и рекомендациях из этого набора из 3 руководств. Эти статьи выведут вас за рамки основ программирования на Arduino и позволят вашим проектам по-настоящему взлететь!

Одна проблема, с которой мы столкнулись, заключалась в том, что лицевая панель открывалась и закрывалась слишком быстро. Мы решили эту проблему с помощью метода delay () . функция для замедления и плавности движения лицевой панели. Да, если доктор Reallyevilbadguy собирается выстрелить Железному Человеку в лицо своим суперсмертным лазером, вам нужно, чтобы шлем закрылся быстро, но в демонстрационных целях более медленное и плавное движение выглядит намного лучше.

  // перемещаем шлем вверх, блок на 1/4 секунды, чтобы избежать дребезга / отскока при касании крышки. switch void up () {если ((millis () - lastSwitched)> 250) {lastSwitched =millis (); if (! HelmUp int currPos =0; while (currPos  

Проблема с использованием delay () функция заключается в том, что микроконтроллер не может делать что-либо еще во время delay () . Мы решили эту проблему, используя инструкции из руководств adafruit выше во второй версии, IronMan04.ino . .

Вторая версия, IronMan04.ino , включает в себя 2 основных элемента, которые мы хотели реализовать, но не успели выполнить до Maker Faire:

  • Управление одной кнопкой / сенсорной лицевой панелью
  • Многозадачность

Когда мы говорили с людьми о нашем первоначальном проекте, все отреагировали, что у вас должна быть только одна кнопка / сенсорный датчик, чтобы перемещать шлем вверх и вниз. Мы не могли договориться о большем и решили реализовать это, когда у нас было время. Наше решение предполагает использование нескольких переменных состояния:

  • перевернуть - для поддержания состояния лицевой панели
  • переворачивание - чтобы указать, находится ли лицевая панель в текущем переходном положении.
  • направленность - для обозначения перемещения лицевой панели вверх или вниз

В setup () , мы всегда запускаем шлем в открытой или поднятой конфигурации. Это не обязательно. Независимо от исходного состояния, переключение переключателя на лицевой панели вернет вас в правильное состояние вторым нажатием. Тем не менее, мы написали код, чтобы учесть, что начальное состояние лицевой панели - вверх, и, следовательно, вначале нет ненужных нажатий кнопок. Это лучший способ? Мы не уверены, но, поскольку некоторые из величайших научных умов потратили много лет на теорию управления, я думаю, что мы хорошо справились с этим проектом!

Поскольку мы опрашиваем касания от MPR121 в цикле, одно касание, воспринимаемое пользователем, будет генерировать множество сигналов касания. Это похоже на традиционный дребезг переключателя, и мы обрабатываем его с помощью программного обеспечения. Нам нужен быстрый отклик на сенсорный датчик, и мы хотим реализовать многозадачность, поэтому вместо блокировки нескольких касаний в переключателе / ​​случае loop () функция, мы размещаем временной блок, используя millis () функция в шлеме и ArcReactor объекты, как показано в этом фрагменте кода из Шлема объект:

  void flipFaceplate () {// блок синхронизации для защиты от дребезга / отскока if ((millis () - lastFlipped)> 500) {. . .  

Опять же, если не использовать delay () функция мы сохраняем многозадачность в нашем проекте. Возможно, было бы разумнее использовать переменную для интервала задержки в 500 миллисекунд, чтобы учесть изменения и тестирование, но мы правильно поняли, приняв второе предположение, равное 500, и здесь были немного небрежны.

Для того, чтобы сервопривод плавно перемещался по углу поворота, нам нужно было медленно увеличивать вращение сервоприводов. Поместив блок времени на угловой шаг серводвигателя, проверив текущее время с помощью millis () функция:

  void Update () {if (flipping &(millis () - lastMoved)> =15) {lastMoved =millis (); если (направленность ==ВВЕРХ) {currentPos =currentPos + 3; } else {currentPos =currentPos - 3; } Serial.print ("текущая позиция:"); Serial.print (currentPos); шлемServo.write (currentPos); } если ((currentPos> =upAngle) || (currentPos <=downAngle)) {flipping =false; }}};  

И снова мы реализовали это без delay () функция. Если вы создадите этот проект и внимательно посмотрите, то заметите, что с IronMan04.ino, запущенным на Uno, вы можете перевернуть лицевую панель и одновременно включать и выключать Neopixel. В IronMan02.ino функция delay () приводит к блокировке сервопривода до тех пор, пока он не перестанет двигаться. Спасибо, Билл Эрл!

Эта последняя строка функции обновления проверяет, не превышает ли мы верхнее или нижнее положение лицевой панели, поскольку loop () вызовы функций Update () он будет постоянно проверять это после последнего движения шлема, а затем устанавливает переворачивание значение переменной false, чтобы указать, что лицевая панель завершила движение вверх или вниз. На следующем цикле с перелистыванием false, вся функция по существу пропускается.

  if ((currentPos> =upAngle) || (currentPos <=downAngle)) {flipping =false; }  

Будущие направления:

Есть так много вещей, которые мы могли бы сделать с этим проектом, не зная, с чего именно начать! Светящиеся глаза - одно. Возможно, добавление связи BLE с arduino101? Голосовой интерфейс? Джарвис определенно призывает к этому!

Код

Проект шлема Железного человека и дугового реактора!
https://github.com/lachendeKatze/Iron-Man

Схема


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

  1. Крышка люка
  2. Утюг для одежды
  3. Чугунная печь
  4. Футбольный шлем
  5. Железо
  6. Батарея
  7. UnifiedWater v1
  8. Железный человек
  9. Arduino Power
  10. Понимание кованого железа