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

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

En este tutorial aprenderemos a construir un Gimbal Arduino o una plataforma autoestabilizadora con servomotores. Este tutorial es en realidad una extensión del tutorial anterior sobre el MPU6050.

Puedes ver el siguiente video o leer el tutorial escrito a continuación.

Resumen

Diseñé el gimbal usando un software de modelado 3D. Consiste en 3 servomotores MG996R para el control de 3 ejes, y una base sobre la cual se colocarán el sensor MPU6050, el Arduino y la batería.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Puedes encontrar y descargar este modelo 3D, así como explorarlo en tu navegador en Thangs.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Archivos STL:

Usando mi impresora 3D Creality CR-10, imprimí en 3D todas las piezas y salieron perfectas.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Ensamblaje

El ensamblaje del gimbal fue bastante fácil. Empecé instalando el servo de Yaw (guiñada). Usando tornillos M3 y tuercas lo aseguré a la base.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Luego, usando el mismo método aseguré el servo de Roll (alanceo). Las piezas están específicamente diseñadas para ajustar fácilmente los servos MG996R.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Para conectar las piezas entre sí usé los cuernos redondos que vienen como accesorios con los servos.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Primero, necesitamos asegurar el cuerno redondo a la base con dos tornillos, y luego sujetarlo al servo previo usando otro tornillo.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Repetí este proceso para ensamblar el resto de los componentes, el servo de Pitch (cabeceo) y la plataforma superior.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Luego, pasé los cables de los servos a través de las aberturas de los soportes para mantenerlos organizados. Luego inserté el sensor MPU6050 y lo aseguré en la base con un tornillo y una tuerca.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Para alimentar el proyecto, usé 2 baterías Li-ion que coloqué en este porta-baterías. Aseguré el porta-baterías a la base usando dos tornillos y tuercas.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Las 2 baterías Li-ion producirán alrededor de 7.4V, pero necesitamos 5V para alimentar el Arduino y los servos.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Por eso usé un convertidor buck (reductor) que convertirá 7.4V a 5V.

Diagrama de Circuito Gimbal Arduino

Lo que queda ahora, es conectar todo junto. Aquí está el diagrama de circuito de este proyecto y cómo todo necesita conectarse.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Componentes Necesarios

  • IMU MPU6050
  • Servo MG996R
  • Convertidor Buck (DC-DC Step Down)
  • Placa Arduino
  • Protoboard y Cables Jumper

Al final apreté los componentes electrónicos y los cables dentro de la base, y los cubrí usando esta tapa en la parte inferior.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Con esto, la plataforma auto-equilibrante o el gimbal Arduino está hecho y funciona bien como se esperaba. Lo que queda es echar un vistazo al programa.

Construye un Gimbal Autoestabilizador Arduino con Control de 3 Ejes por Servos

Código Arduino

El código Arduino para este ejemplo es una modificación del ejemplo MPU6050_DMP6 de la librería i2cdevlib de Jeff Rowberg.

Aquí puedes descargar el código:

Descripción del código: Así que estamos usando la salida legible de yaw, pitch y roll.

Obtención y Conversión de Valores Yaw, Pitch, Roll

// Obtener valores de Yaw, Pitch y Roll
#ifdef OUTPUT_READABLE_YAWPITCHROLL
mpu.dmpGetQuaternion(&q, fifoBuffer);
mpu.dmpGetGravity(&gravity, &q);
mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);
// Valores Yaw, Pitch, Roll - Radianes a grados
ypr[0] = ypr[0] * 180 / M_PI;
ypr[1] = ypr[1] * 180 / M_PI;
ypr[2] = ypr[2] * 180 / M_PI;
// Saltar 300 lecturas (proceso de auto-calibración)
if (j <= 300) {
  correct = ypr[0]; // Yaw empieza en valor aleatorio, así que capturamos el último valor después de 300 lecturas
  j++;
}
// Después de 300 lecturas
else {
  ypr[0] = ypr[0] - correct; // Establecer Yaw a 0 grados - restar el último valor aleatorio de Yaw del valor actual para hacer Yaw 0 grados
  // Mapear valores del sensor MPU6050 de -90 a 90 a valores adecuados para control de servos de 0 a 180
  int servo0Value = map(ypr[0], -90, 90, 0, 180);
  int servo1Value = map(ypr[1], -90, 90, 0, 180);
  int servo2Value = map(ypr[2], -90, 90, 180, 0);
  // Controlar los servos según la orientación del MPU6050
  servo0.write(servo0Value);
  servo1.write(servo1Value);
  servo2.write(servo2Value);
}
#endifCode language: Arduino (arduino)

Una vez obtenemos los valores, primero los convertimos de radianes a grados.

// Valores Yaw, Pitch, Roll - Radianes a grados
ypr[0] = ypr[0] * 180 / M_PI;
ypr[1] = ypr[1] * 180 / M_PI;
ypr[2] = ypr[2] * 180 / M_PI;Code language: Arduino (arduino)

Luego esperamos o hacemos 300 lecturas, porque el sensor aún está en proceso de auto-calibración durante este tiempo. También capturamos el valor de Yaw, que al principio no es 0 como los valores de Pitch y Roll, sino que siempre es algún valor aleatorio.

// Saltar 300 lecturas (proceso de auto-calibración)
if (j <= 300) {
  correct = ypr[0]; // Yaw empieza en valor aleatorio, así que capturamos el último valor después de 300 lecturas
  j++;
}Code language: Arduino (arduino)

Después de las 300 lecturas, primero establecemos el Yaw a 0 restando el valor aleatorio capturado arriba. Luego mapeamos los valores de Yaw, Pitch y Roll, de -90 a +90 grados, a valores de 0 a 180 que se usan para impulsar los servos.

// Después de 300 lecturas
else {
  ypr[0] = ypr[0] - correct; // Establecer Yaw a 0 grados - restar el último valor aleatorio de Yaw del valor actual para hacer Yaw 0 grados
  // Mapear valores del sensor MPU6050 de -90 a 90 a valores adecuados para control de servos de 0 a 180
  int servo0Value = map(ypr[0], -90, 90, 0, 180);
  int servo1Value = map(ypr[1], -90, 90, 0, 180);
  int servo2Value = map(ypr[2], -90, 90, 180, 0);
  // Controlar los servos según la orientación del MPU6050
  servo0.write(servo0Value);
  servo1.write(servo1Value);
  servo2.write(servo2Value);
}Code language: Arduino (arduino)

Finalmente, usando la función write, enviamos estos valores a los servos como señales de control. Por supuesto, puedes deshabilitar el servo de Yaw si solo quieres estabilización para los ejes X e Y, y usar esta plataforma como gimbal de cámara.

Ten en cuenta que esto está lejos de ser un buen gimbal de cámara. Los movimientos no son suaves porque estos servos no están diseñados para tal propósito. Los gimbals de cámara reales usan un tipo especial de motores BLDC para obtener movimientos suaves. Así que considera este proyecto solo con fines educativos.

Eso sería todo para este tutorial, espero que lo hayas disfrutado y hayas aprendido algo nuevo. Siéntete libre de hacer cualquier pregunta en la sección de comentarios a continuación y no olvides revisar mi colección de Proyectos Arduino.


Proceso de manufactura

  1. Construya su propio LUMAZOID: Visualizador de música DIY con Arduino
  2. Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
  3. Robot evasor de obstáculos con servo: Construcción con Arduino y HC-SR04
  4. Construye un Skateboard VR Casero con Arduino, Google Cardboard y Bluetooth
  5. Kit de Entrenamiento Arduino Completo con Mega 2560, Sensores, Motores y PCB Personalizada
  6. Construye un dispositivo de tratamiento radiónico EMR con Arduino DIY
  7. Simulador de Carreras 2D DIY con Arduino Nano y Servos SG90
  8. Papelera Inteligente con Arduino UNO: Apertura Automática de Tapa
  9. Control de Servos en Drone 3DR Solo con Arduino y Firmata
  10. Construye un Cerco RFID Portátil con Arduino – Guía Paso a Paso
  11. Fresadora CNC 3 Ejes DIY: Construye una Máquina de Precisión