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

Полностью автоматизированный 3D-принтируемый бесколлекторный Nerf-бластер на Arduino

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

Arduino Nano Every 1
Линейный соленоид 12В (ход 35мм) 1
Бесколлекторные моторы (Outrunner, для 3S LiPo) 2
Бесколлекторные регуляторы оборотов (ESC) по 1 на мотор 2
LiPo аккумулятор 3S 11.1-12.6В 1300мАч 25C 1
Микровыключатели (миниатюрные) 2
MOSFET N-канал логического уровня (>20В, >15А при 5В) 1
Резистор 10 кОм (подтяжка гейта MOSFET) 1
Резистор 4.7 кОм (подтяжка MS2) 1
Резистор 150 Ом (для LED) 1
Резистор 220 Ом (ограничение тока гейта MOSFET) 1
Диод 1N4007 (флайбэк для соленоида + защита питания Arduino) 2
Конденсатор 100 мкФ (сглаживание питания Arduino) 1
Конденсатор 100 нФ (фильтр помех питания Arduino) 1

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

О проекте

Я всегда любил строить и создавать вещи, поэтому решил делать реквизит и реплики из фильмов и видеоигр. Перенос виртуальных объектов в реальность и обмен техниками с единомышленниками.

Моя последняя и самая амбициозная работа — Kang Tao, «умный пистолет» из предстоящей игры Cyberpunk 2077. Для создания такого сложного объекта использовался 3D-принтер для достижения эстетики и механической точности деталей.

Статический объект — слишком просто, хотел вызова. Поэтому я спроектировал его как функциональный Nerf-бластер.

Для реализации функциональности нужно было управлять соленоидом и ESC для бесколлекторных моторов. Реле и задержки по времени были бы громоздкими, поэтому Arduino стал практичным решением.

Это руководство фокусируется на Arduino и электрической схеме (так как это Arduino-сайт). Я пометил сложность как «легкую», так как Arduino-часть довольно проста. Механический дизайн и 3D-печать — продвинутый уровень. Если вы хотите управлять бесколлекторными ESC, моторами и соленоидом с Arduino для Nerf-бластеров — это руководство для вас!

CAD-дизайн, 3D-печать и т.д. описаны здесь:
NerfHaven
Reddit
Видео-туториалы: YouTube-канал

Схема (см. раздел Schematics) показывает все соединения. Используется Arduino Nano из-за компактности, но будет работать и с Uno и другими.

Обратитесь к схеме для терминов MS1, C2 и т.д.
Обратитесь к разделу Code за объяснением работы кода.

Управление курками, флайвилами и соленоидом

Код работает так: когда зажат MS2 (вторичный микровыключатель-курок), бесколлекторные моторы разгоняются.

Когда нажат или зажат MS1 (первичный курок), на гейт MOSFET подается сигнал для повторного срабатывания соленоида (S). Соленоид выталкивает дротик из магазина во флайвилы (M1 & M2), которые разгоняют его из ствола.

Однако MS1 срабатывает только пока зажат MS2. Это предотвращает заезды дротиков в непрокрученные флайвилы. В коде это реализовано через оператор &&.

Питание моторов и соленоида НЕ идет через микровыключатели — не нужны высокотоковые выключатели.

Бесколлекторные моторы

Существуют инраннеры (внутренний ротор) и аутраннеры (внешний ротор). Нужен аутраннер — они плоские, не вылезают боками, и вращающийся внешний колпак позволяет легко напечатать флайвилы прямо на мотор.

Ищите моторы с задними крепежными отверстиями.
Напряжение: минимум 12.6В (3S LiPo).
Ток не должен превышать номинал ESC.
Мощность >60Вт. В проекте: 12.6В × 7А ≈ 80Вт каждый.
RPM ~25к, определяется kV × напряжение. Используются 2600kV @ 12.6В = ~32,760 RPM. На полугазе дротики летят 25м / 82фут!

Бесколлекторные ESC

Аккумулятор

Один аккумулятор на всё. Рекомендую разъем XT60.
12.6В 3S LiPo.
Ёмкость минимум 1300мАч.
Ток разряда должен покрывать потребление всех нагрузок (~25А в проекте).
Макс. разряд = C-рейтинг × ёмкость в Ач. 25C × 1.3Ач = 32А макс. Проверяйте по спекам батареи.

MOSFET

Прямое питание 12В/8А соленоида от Arduino — магический дым (Arduino сгорит). Решение — MOSFET.

MOSFET работает как ключ для соленоида, разрывая землю. Это N-канальный MOSFET. Нужен именно N-канальный.

Arduino выдает 5В на гейт — MOSFET должен полностью открываться при 5В. Нужен Logic Level MOSFET.

Ток соленоида 8А — MOSFET с запасом (в проекте 30А макс).
Напряжение 12.6В — MOSFET на 60В с большим запасом.
Температура MOSFET <35°C (благодаря запасу по току и импульсному режиму). Радиатор не нужен.

Соленоид

Толкает дротик во флайвилы. Нужен 12В соленоид с ходом 35мм. Меньший ход не протолкнет стандартные дротики Nerf.
Рекомендую улучшить пружину: проволока 0.9мм, внешний диаметр 14мм, длина 40мм — предотвращает заезды.
Соленоид греется до ~40°C (импульсный режим), охлаждение не требуется.
Дешевые и доступны на eBay, AliExpress.

Предохранитель (Safety Switch)

SW — двухпозиционный тумблер. 3 контакта, используются 2. В положении «предохранитель» питание Arduino отключается, предотвращая случайный запуск флайвилов и соленоида.

Защитная цепь

Как не сжечь электронику!

Видео с объяснением и тестовыми стрельбами есть в оригинале.

Файлы для 3D-печати

ОБНОВЛЕНИЕ: Ссылка на Thingiverse: https://www.thingiverse.com/thing:3984125

Код

Nerf Blaster Brushless Motor & Solenoid Arduino Code

const int buttonPinF = 2;  // MS2 - флайвилы
const int buttonPinS = 5;  // MS1 - соленоид
int buttonStateF = 0;
int buttonStateS = 0;
int solenoidPin = 4;       // гейт MOSFET

#include <Servo.h>
Servo throttle;
int pos = 0;
int pin = 3;               // сигнальный пин ESC

void setup() {
  pinMode(buttonPinF, INPUT);
  pinMode(buttonPinS, INPUT);
  throttle.attach(pin);
  pinMode(solenoidPin, OUTPUT);
  
  // ESC Arming Sequence
  for (pos = 90; pos <= 91; pos += 1) {
    throttle.write(pos);
    delay(3700); // ожидание выхода ESC из безопасного режима
    // увеличьте до 10000 (10с) если ваш ESC дольше армится
  }
}

void loop() {
  buttonStateF = digitalRead(buttonPinF);
  if (buttonStateF == HIGH) {
    throttle.write(92); // холостой ход (зависит от мотора/ESC)
  } else {
    throttle.write(97); // рабочий газ (зависит от мотора/ESC)
  }
  
  buttonStateS = digitalRead(buttonPinS);
  if (buttonStateF == LOW && buttonStateS == LOW) {
    digitalWrite(solenoidPin, HIGH);
    delay(90);   // длительность импульса
    digitalWrite(solenoidPin, LOW);
    delay(100);  // пауза между выстрелами
  } else {
    digitalWrite(solenoidPin, LOW);
  }
}

Пояснения к коду:

  1. При включении через предохранитель запускается арминг ESC. Мои ESC армятся 3.7с (3700 в коде). Возможно, нужно увеличить до 10000 (10с).
  2. Зажим MS2 — разгон флайвилов. Нажатие MS1 (при зажатом MS2) — стрельба.
  3. throttle.write(92) — холостой ход / выключение моторов. throttle.write(97) — максимальный газ. Значения зависят от мотора/ESC.
  4. delay(90) и delay(100) — частота стрельбы соленоидом.
  5. При отпускании микровыключателей сигналы на ESC и MOSFET прекращаются.
  6. При выключении предохранителя (Arduino обесточивается) ESC теряют сигнал и уходят в безопасный режим.

Схемы

Полная схема подключения с указанием полярностей диодов и конденсаторов. Нарисована в AutoCAD. См. раздел Schematics оригинального проекта.

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

  1. Сборка домашней машины для написания домашних заданий (плоттер-писатель)
  2. Создание потрясающей системы Ambilight для монитора на Arduino
  3. Управление потолочным вентилятором через Alexa: пошаговое руководство
  4. Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
  5. Умная копилка: управление монетоприёмником на Arduino Nano
  6. Arduino Power Control Center: N-FET, P-FET, реле и RTC
  7. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  8. Сборка функционального 3D-печатного манипулятора на Arduino: пошаговое руководство
  9. DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
  10. Управление двумя шаговыми двигателями через джойстик на Arduino Nano — простой урок (Visuino)