Bláster Nerf Totalmente Automatizado, Impreso en 3D, con Motores Brushless y Arduino
Componentes y materiales
| Componente | Cant. | Notas clave |
|---|---|---|
| Arduino Nano Every | 1 | Compacto, cabe en la Nerf; misma funcionalidad que Nano clásico. |
| Solenoide lineal 12 VDC | 1 | Carrera 35 mm, 12V. Imprescindible para dardos longitud completa. |
| Motor brushless outrunner | 2 | Tipo outrunner (carcasa gira). Soportar 12V (3S LiPo). Montaje trasero. |
| ESC brushless | 2 | ≥20% más corriente que el motor. 3S LiPo. 1 ESC por motor. |
| Batería LiPo 3S 11.1-12.6V 1300mAh 25C | 1 | Descarga ≥ consumo total +20%. Mínimo 1300mAh. Conector XT60 recomendado. |
| Microswitch miniatura | 2 | Genéricos, no necesitan alta corriente. |
| MOSFET N-Channel lógica nivel | 1 | >20V, >15A @5V gate. Interruptor solenoide. |
| Resistencia 10kΩ | 1 | R3: pull-down gate MOSFET (evita flotante). |
| Resistencia 4.7kΩ | 1 | R1: pull-up microswitch MS2. |
| Resistencia 150Ω | 1 | Para LEDs (ajustar a tu montaje). |
| Resistencia 220Ω | 1 | R2: limita corriente gate MOSFET (opcional pero recomendado). |
| Diodo 1N4007 | 2 | D1: protección polaridad Arduino. D2: flyback solenoide → protege MOSFET. |
| Condensador 100µF | 1 | C1: reduce sag voltaje entrada Arduino. ¡Polaridad sensible! |
| Condensador 100nF | 1 | C2: filtro ruido entrada Arduino. |
Herramientas necesarias
- Impresora 3D (genérica) – Autor usa Evnovo/Artillery X1 (300x300x400mm).
Descripción del proyecto
Me gusta construir réplicas funcionales de objetos de videojuegos y películas. Mi última creación es el Kang Tao, arma inteligente del videojuego Cyberpunk 2077. Para lograr la estética y encaje mecánico, usé impresión 3D. Pero un objeto estático era poco reto: lo diseñé como bláster Nerf funcional.
Para controlar solenoide y ESCs brushless, un Arduino es la solución práctica (relés y retardos serían engorrosos). Esta guía se centra en la electrónica y código Arduino (el diseño mecánico e impresión 3D son avanzados; ver enlaces al final).
Gatillos: volantes (flywheels) y solenoide
- MS2 (microswitch secundario, gatillo trasero): al mantenerlo, los motores brushless aceleran (rev up).
- MS1 (microswitch primario, gatillo delantero): al pulsar/mantener, envía señal al gate del MOSFET → dispara solenoide S repetidamente.
- El solenoide empuja el dardo del cargador a los volantes M1/M2, que lo expulsan.
- Seguridad: MS1 solo funciona si MS2 está pulsado (operador
&&en código). Evita atascos por dardos en volantes parados. - La potencia de motores y solenoide NO pasa por los microswitches → no necesitan alta corriente.
Motores brushless
- Usar outrunner: más planos, carcasa externa gira → fácil imprimir volantes sobre el motor.
- Buscar agujeros traseros de montaje.
- Tensión ≥ 12.6V (3S LiPo).
- Corriente ≤ rating ESC.
- Potencia >60W. Este proyecto: 12.6V × 7A ≈ 80W c/u.
- RPM ~25k. kV × Voltaje. Aquí: 2600kV × 12.6V ≈ 32,760 RPM. A medio gas (throttle 50%) disparan 25m / 82ft.
ESCs brushless
- Controlan potencia del motor. Solo ESCs brushless (no valen brushed).
- 1 ESC por motor. Dos motores en un ESC dañan timing por back-EMF.
- Corriente ESC > consumo motor (medido 7A → ESC ≥20A).
- Tensión ESC ≥ 12.6V (3S).
- BEC integrado no necesario. Si tiene BEC: conectar GND y señal al Arduino; NO conectar cable rojo 5V (salvo que sepas qué haces).
Batería
- Una sola batería para todo. Conector XT60 recomendado.
- 12.6V 3S LiPo.
- Capacidad ≥ 1300mAh.
- Descarga máxima = C-rate × Ah. Ej: 25C × 1.3Ah = 32A. Verificar en specs.
MOSFET (interruptor solenoide)
- Alimentar solenoide 12V/8A directo desde Arduino → humo mágico. Solución: MOSFET N-Channel lógica nivel.
- Interrumpe el ground del solenoide (low-side switching).
- Gate driven por Arduino (5V) → necesita logic-level (Vgs(th) < 5V).
- Corriente solenoide 8A → MOSFET ≥30A (este proyecto usa 30A).
- Tensión 12.6V → MOSFET 60V sobra.
- Temp <35°C (sobre-dimensionado + uso pulsado). Disipador no necesario.
Solenoide
- 12V, carrera 35mm (imprescindible para dardos longitud completa).
- Mejorar muelle: alambre 0.9mm, 14mm OD, 40mm largo → evita atascos.
- Uso pulsado → calor leve (~40°C), sin refrigeración.
- Genéricos, baratos (eBay, AliExpress).
Interruptor de seguridad
SW: slider 2 posiciones, 3 contactos (usa 2). Corta alimentación Arduino → apaga todo al instante.
Circuitos de protección
- C1 33µF (recomendado 100µF) + C2 100nF: reducen fluctuaciones en Vin Arduino. ¡C1 polarizado! Raya = negativo. Al revés → explota.
- D1: diodo antipolaridad en Vin Arduino. Respetar polaridad.
- D2: diodo flyback/freewheeling en solenoide. Evita back-EMF dañando MOSFET. Polaridad correcta.
- R1, R2 4.7kΩ: pull-up MS1 y MS2 (evita flotante).
- R3 10kΩ: pull-down gate MOSFET (evita flotante).
- R4 150Ω: LEDs opcionales (2 en serie 2.4V/50mA). Parpadean sincronizados con solenoide → simulan fogonazo (muzzle flash).
Código Arduino
const int buttonPinF = 2; // MS2: gatillo volantes
const int buttonPinS = 5; // MS1: gatillo solenoide
int buttonStateF = 0;
int buttonStateS = 0;
int solenoidPin = 4; // Gate MOSFET
#include <Servo.h>
Servo throttle;
int pos = 0;
int pin = 3; // Pin señal ESC
void setup() {
pinMode(buttonPinF, INPUT);
pinMode(buttonPinS, INPUT);
throttle.attach(pin);
pinMode(solenoidPin, OUTPUT);
// Secuencia armado ESC
for (pos = 90; pos <= 91; pos += 1) {
throttle.write(pos);
delay(3700); // Aumentar hasta 10000 (10s) según tu ESC
}
}
void loop() {
buttonStateF = digitalRead(buttonPinF);
if (buttonStateF == HIGH) {
throttle.write(92); // 92 = idle / <92 = off
} else {
throttle.write(97); // 97 = full / ~115 = max según motor/ESC
}
buttonStateS = digitalRead(buttonPinS);
if (buttonStateF == LOW && buttonStateS == LOW) {
digitalWrite(solenoidPin, HIGH);
delay(90); // Duración pulso ON
digitalWrite(solenoidPin, LOW);
delay(100); // Pausa entre disparos
} else {
digitalWrite(solenoidPin, LOW);
}
}
Notas de ajuste:
delay(3700)en armado ESC: subir hasta 10000 si tu ESC tarda más en salir de safe mode.throttle.write(92)= idle (reducir para apagar motores en reposo).throttle.write(97)= velocidad máxima (ajustar según motor/ESC).delay(90)/delay(100)= cadencia de fuego (subir/bajar).- Al soltar microswitches, se cortan señales PWM (ESCs) y gate (MOSFET).
- Al apagar Arduino (switch seguridad), ESCs pierden señal → safe mode → motores off.
Descarga archivos para imprimir
Actualización: archivos en Thingiverse → https://www.thingiverse.com/thing:3984125
Esquemático
Enlaces de referencia (diseño mecánico, impresión, vídeo)
Proceso de manufactura
- Construye tu propia máquina de escribir deberes casera (DIY Homework Writing Machine)
- Crea un Impresionante Sistema Ambilight para Monitor con Arduino
- Controla tu Ventilador de Techo con Alexa: Guía Paso a Paso
- Mando universal Android con Arduino, 1Sheeld y control IR
- Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
- Centro de Control de Potencia Arduino: N-FET, P-FET, Relé y RTC
- Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
- Construye un Brazo Robótico Impreso en 3D Controlado por Arduino – Guía Paso a Paso
- Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
- Controla Dos Motores Paso a Paso con Arduino Nano y Joystick - Tutorial Sencillo
- Regulador de Ducha Inteligente – Válvula Solenoide para Control Preciso de Temperatura