Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Componentes y Suministros

Componente Cantidad Notas
Arduino UNO 1
PCB Personalizada PCBWay 1 Proyecto compartido en PCBWay
Riel Lineal V-Slot 20×40 1 Longitud según necesidad
Kit de Ruedas V Sólidas 4
Tuercas en T Deslizantes 4
Separadores Excéntricos 2
Separadores de Aluminio 9mm 2
Separadores de Aluminio 3mm 2
Tornillos M5 de Perfil Bajo 20mm con tuercas 4
Tornillos M5 de Perfil Bajo 10mm 4
Tornillos Allen M3 16mm con tuercas 8
Rodamientos de Brida Autoadherentes 8mm 2
Polea de Aluminio GT2 20 Dientes Agujero 8mm 1
Eje Lineal 8mm 1 Longitud 60mm
Polea de Aluminio GT2 20 Dientes Agujero 5mm 1
Correa Dentada GT2 6mm Abierta 1 Longitud según riel
Motor Paso a Paso Bipolar NEMA17 1
Driver de Motor Paso a Paso A4988 1
Batería Recargable 12V 3A 1
Módulo Bluetooth HC-05 1

Herramientas Necesarias

Aplicaciones y Servicios Online

Descripción del Proyecto

Visión General

Para los aficionados que graban videos, comprar un slider motorizado resulta costoso. En este tutorial construimos uno propio controlado por Bluetooth mediante una app Android personalizada. Usamos MIT App Inventor para crear la aplicación, permitiendo controlar velocidad, distancia de recorrido, aceleración/desaceleración y más. La app es muy robusta: permite configurar la longitud del slider (hasta 10 metros) sin modificar el código.

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Empleamos un motor NEMA17 como actuador para control preciso de pasos. Para gobernarlo desde Arduino usamos el driver A4988 Pololu, que ofrece 5 resoluciones de micro-paso (hasta 1/16) para máxima precisión y suavidad.

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

El diseño está pensado para fabricarse en fablabs/makerspaces/hackerspaces.

Diseño CAD y Modelado 3D

Usamos Fusion 360 para diseñar el slider, eligiendo componentes mecánicos estándar fáciles de conseguir en cualquier tienda online o física.

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

La estructura mecánica usa hardware OpenBuilds: riel lineal V-Slot 2040 como guía. Dos poleas (una en el eje del motor, otra en un eje lineal de 8mm en el extremo opuesto) con correa dentada abierta convierten el movimiento rotativo en lineal.

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves
Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

El eje lineal de 8mm se monta entre dos rodamientos de brida autoadherentes fijados a las placas superior e inferior con 4 tornillos M5.

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Cuatro ruedas Delrin V-Slot sólidas ruedan en la ranura en V del riel para movimiento extremadamente suave. La placa de la cámara tiene un orificio central de 1/4" para tornillo de trípode estándar.

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Finalmente, una carcasa para la electrónica. Todas las piezas se fijan con tornillos M3×16mm y tuercas.

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Fabricación Digital (Impresión 3D)

Todo el cuerpo se imprime en 3D con altura de capa 0.2mm y 20% de relleno, excepto las patas izquierda y derecha que usan 50% de relleno.

Archivos STL disponibles en Thingiverse.

Montaje del Kit de Ruedas V

El proceso es sencillo. Cada rueda V sólida incluye: rueda de goma, dos rodamientos, dos arandelas de precisión y tuerca de bloqueo.

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Inserte un rodamiento por un lado de la rueda, déle la vuelta, inserte una arandela de precisión dentro, y finalmente el segundo rodamiento por la otra cara.

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves
Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves
Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Montaje Mecánico del Slider

  1. Placa de cámara y ruedas: Use separadores de aluminio 9mm, arandelas de precisión y tuercas de bloqueo para las dos ruedas derechas. Para las dos izquierdas use separador excéntrico + separador 3mm.
  2. Inserte la placa en el perfil V-Slot. Si queda suelta, apriete la tuerca excéntrica hasta eliminar el juego.
  3. Inserte tuercas en T en cada extremo del perfil para unir las patas.
  4. Fije las patas al perfil con 4 tornillos M5×10mm.
  5. Monte el motor NEMA17 en su placa con 4 tornillos M3×16mm.
  6. Fije la placa del motor a la pata izquierda con 2 tornillos M3×16mm.
  7. Instale polea GT2 5mm en el eje del motor y apriete el tornillo de fijación.
  8. En la pata derecha: inserte 4 tuercas M3, coloque las dos placas de rodamientos, fíjelas con 4 tornillos M3×16mm.
  9. Monte los dos rodamientos de brida 8mm (superior e inferior) con tornillos M5×20mm y tuercas M5.
  10. Inserte el eje lineal 8mm por la parte inferior, empuje hacia arriba, y monte la polea GT2 8mm apretando su tornillo.
  11. Correa dentada: enróllela en ambas poleas y tensela fijándola a la placa de la cámara.
  12. Electrónica: inserte el shield "Cairo Camera Slider" sobre el Arduino, colóquelo en la carcasa, y fije la carcasa a la pata izquierda con tornillos M3×16mm. Cierre la tapa con 2 tornillos M3.

Prueba de Control del Motor Paso a Paso

Driver A4988

Para controlar un motor paso a paso con Arduino se necesita un driver que traduzca las órdenes. El A4988 permite controlar un motor bipolar hasta 2A por bobina, interfaz simple (2 pines digitales: step y dir), ajuste de corriente mediante potenciómetro, y 5 resoluciones de micro-paso (hasta 1/16).

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Pines principales:

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Motor NEMA17 Bipolar

Motores DC que rotan en incrementos precisos (ángulo de paso 1.8°). Se controlan mediante pulsos eléctricos a sus bobinas internas. Ventajas: precisión, posicionamiento exacto, par a baja velocidad sin detenerse. El NEMA17 bipolar tiene 4 hilos (2 por bobina), trabaja a 9V (máx. potencia a 12V).

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Diagrama de Cableado

Conectamos: motor NEMA17 → driver A4988 → Arduino UNO → batería Li-Ion 12V 3A.

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Código Arduino (Prueba Básica)

Usamos la librería AccelStepper (Mike McCauley). Instalación: Sketch → Incluir Librería → Gestionar Librerías → buscar "AccelStepper".

// Test rebote motor paso a paso
#include <AccelStepper.h>
#define stepPin 2
#define dirPin 3

AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin);

void setup() {
  stepper.setMaxSpeed(100);
  stepper.setAcceleration(20);
  stepper.moveTo(500);
}

void loop() {
  if (stepper.distanceToGo() == 0)
    stepper.moveTo(-stepper.currentPosition());
  stepper.run();
}

Lógica: inicializa objeto AccelStepper con pines step/dir. En setup() configura velocidad máxima (100 pasos/s), aceleración (20 pasos/s²) y objetivo inicial (500 pasos). En loop() invierte dirección al llegar al objetivo.

Control Inalámbrico Completo

Construcción de la App Móvil

Creamos la app con MIT App Inventor (drag-and-drop de bloques). Comunicación Bluetooth con el slider. Código fuente abierto (enlace en proyecto original).

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves
Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

La app envía códigos numéricos por Bluetooth para cada acción: flecha izquierda (1), derecha (2), stop (3), longitud riel (201-1200), aceleración (11-15), velocidad (5001-9000), inicio retardado (7/8), homing (16/17), tipo movimiento (18/19).

Diagrama de Cableado con Bluetooth

Añadimos módulo HC-05 (configurable como maestro/esclavo, protocolo SPP). Conexiones serie cruzadas:

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Esquemático y Fabricación PCB

Diseñamos un shield Arduino UNO a medida (PCBWay, $5, calidad excelente). Integra: zócalo para HC-05, zócalo para A4988, conector batería, y pines para motor. Solo hay que insertar componentes y montar el shield sobre el Arduino.

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves
Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves
Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Archivos fuente PCB y pedido en PCBWay

Código Arduino Final y Comunicación Bluetooth

El código completo gestiona: configuración inicial (homing, micro-paso, longitud riel), control de movimiento (ida/vuelta, stop, velocidad, distancia, aceleración), inicio retardado (15s), y retorno a origen. Usa MultiStepper y AccelStepper. Protocolo serie de 2 bytes (MSB + LSB) para recibir comandos de la app.

/* Resumen de códigos de datos:
1: Izquierda  2: Derecha  3: Stop
16: Homing izq  17: Homing der
18: Micro-paso 1/4 (Suave)  19: Micro-paso 1/16 (Muy suave)
201-1200: Longitud riel (cm)  1301-2300: Longitud riel setup (cm)
5001-9000: Velocidad (pasos/s)  11-15: Aceleración
7: Inicio retardado ON  8: Inicio retardado OFF
*/
#include <MultiStepper.h>
#include <AccelStepper.h>

#define stepPin 2
#define dirPin 3

bool homingPositionFlag = false;
int startupSetupFlag = 0;
bool delayedStart = false;
int incomingData = 0;
int movementDistance = 50;
long steps = 0;
int microStepResolution = 0; // 4 o 16
long railLength = 0;
int sliderSpeed = 10;

AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin);

void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  Serial.begin(9600);
  stepper.setMaxSpeed(10.00);
  stepper.setAcceleration(500.00);

  while (startupSetupFlag < 3) {
    if (Serial.available() > 1) {
      unsigned int dataOne = Serial.read();
      unsigned int dataOne1 = Serial.read();
      unsigned int incomingData = (dataOne1 * 256) + dataOne;

      // Homing
      if (incomingData == 16) { stepper.setCurrentPosition(steps); homingPositionFlag = false; startupSetupFlag++; }
      else if (incomingData == 17) { stepper.setCurrentPosition(-steps); homingPositionFlag = true; startupSetupFlag++; }

      // Micro-paso
      if (incomingData == 18) { microStepResolution = 4; startupSetupFlag++; }
      else if (incomingData == 19) { microStepResolution = 16; startupSetupFlag++; }

      // Longitud riel
      if (incomingData >= 1301 && incomingData <= 2300) {
        railLength = incomingData - 1300;
        if (microStepResolution == 4) steps = ((6100L * railLength) / 50L);
        else if (microStepResolution == 16) steps = ((25000L * railLength) / 50L);
        startupSetupFlag++;
      }
    }
  }
}

void loop() {
  if (Serial.available() > 1) {
    unsigned int dataOne = Serial.read();
    unsigned int dataOne1 = Serial.read();
    unsigned int incomingData = (dataOne1 * 256) + dataOne;

    // Control motor
    if (incomingData == 1 && !stepper.isRunning() && stepper.currentPosition() != 6050 && homingPositionFlag) {
      if (delayedStart) delay(15000);
      stepper.setCurrentPosition(0);
      stepper.moveTo(steps);
      homingPositionFlag = false;
    }
    else if (incomingData == 2 && !stepper.isRunning() && stepper.currentPosition() != -6050 && !homingPositionFlag) {
      if (delayedStart) delay(15000);
      stepper.setCurrentPosition(0);
      stepper.moveTo(-steps);
      homingPositionFlag = true;
    }
    else if (incomingData == 3 && stepper.isRunning()) homing();

    // Velocidad
    else if (incomingData >= 5001 && incomingData <= 9000) {
      sliderSpeed = incomingData - 5000;
      stepper.setMaxSpeed(sliderSpeed);
    }
    // Inicio retardado
    else if (incomingData == 7) delayedStart = true;
    else if (incomingData == 8) delayedStart = false;
    // Distancia movimiento
    else if (incomingData >= 201 && incomingData <= 1200) {
      movementDistance = incomingData - 200;
      if (microStepResolution == 4) steps = ((6100L * movementDistance) / 50L);
      else if (microStepResolution == 16) steps = ((25000L * movementDistance) / 50L);
    }
    // Aceleración
    else if (incomingData == 11 && !stepper.isRunning()) stepper.setAcceleration(3000); // Muy alta
    else if (incomingData == 12 && !stepper.isRunning()) stepper.setAcceleration(1000); // Media
    else if (incomingData == 13 && !stepper.isRunning()) stepper.setAcceleration(500);  // Baja
    else if (incomingData == 14 && !stepper.isRunning()) stepper.setAcceleration(4000); // Muy alta
    else if (incomingData == 15 && !stepper.isRunning()) stepper.setAcceleration(10);   // Muy baja
  }
  stepper.run();
}

void homing() {
  homingPositionFlag = (stepper.currentPosition() > 0);
  stepper.moveTo(0);
}

Guía de Usuario y Solución de Problemas

  1. Conecte batería 12V al Arduino (alimenta también el shield).
  2. Active Bluetooth en el móvil, empareje con HC-05 (PIN usual: 1234 o 0000).
  3. Abra la app y pulse "Conectar con Cairo Camera Slider", seleccione HC-05.
  4. La app pedirá: resolución micro-paso (Suave 1/4 o Muy Suave 1/16) → debe coincidir con jumpers MS1-MS3 del A4988.
  5. Ingrese longitud del riel en cm (ej. 50).
  6. Seleccione homing: coloque el carro en un extremo (izq/der) y elija ese extremo.
  7. Confirme parámetros y ¡a grabar!
Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves
Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves
Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves
Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Importante: Si el carro no está en un extremo al iniciar, chocará contra los límites al moverse.

Slider en Acción

¡Disfrute de tomas cinematográficas suaves y precisas con su slider DIY!

Código Completo

Disponible en la sección Code del proyecto original (archivo Cairo Camera Slider Final Code.ino).

Piezas Personalizadas y Carcasas

Archivos CAD/STL en Thingiverse.

Esquemáticos

Controlador de Slider Motorizado para Cámara con Bluetooth y Arduino para Tomas Cinematográficas Suaves

Proceso de manufactura

  1. La evolución y diseño de las cámaras modernas
  2. Objetivos de cámara: diseño, historia e innovaciones futuras
  3. BrickPi Bookreader: Automatice la lectura de Kindle con Raspberry Pi y LEGO Mindstorms
  4. Construye un Spybot controlado por Bluetooth con Arduino
  5. FlickMote: Mando IR por gestos para Smart Home
  6. TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
  7. Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
  8. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  9. Soluciones de Alimentación Optimizadas para Proyectos Arduino
  10. Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
  11. Cámara de Imagen THz Avanzada Revela Vistas Internas de Alta Resolución de Objetos Sólidos