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

Cardán Arduino DIY | Plataforma autoestabilizadora

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

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

Resumen

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

Puede buscar y descargar este modelo 3D, así como explorarlo en su navegador en Thangs.

Archivos STL:

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

Montaje

Montar el cardán fue bastante fácil. Empecé instalando el servo Yaw. Con tornillos y tuercas M3 lo aseguré a la base.

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

Para conectar las piezas entre sí, utilicé las bocinas redondas que vienen como accesorios con los servos.

Primero, debemos asegurar el cuerno redondo a la base con dos pernos y luego unirlo al servo anterior con otro perno.

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

A continuación, pasé los cables del servo por las aberturas de los soportes para mantenerlos organizados. Luego inserté el sensor MPU6050 y lo aseguré en la base con un perno y una tuerca.

Para alimentar el proyecto, utilicé 2 baterías de iones de litio que coloqué en este soporte de batería. Aseguré el portapilas a la base con dos pernos y tuercas.

Las 2 baterías de iones de litio producirán alrededor de 7,4 V, pero necesitamos 5 V para alimentar el Arduino y los servos.

Es por eso que usé un convertidor reductor que convierte 7.4 V a 5 V.

Diagrama del circuito Arduino Gimbal

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

Puede obtener los componentes necesarios para este tutorial de Arduino desde los siguientes enlaces:

  • MPU6050 IMU ………………………………. AmazonasBanggood / AliExpress
  • Servomotor MG996R ………………………………. AmazonasBanggood / AliExpress
  • Convertidor dólar ………………………………
  • Placa Arduino …………………………..…..
  • Protoboard y cables de salto ………… 

Al final, apreté los componentes electrónicos y los cables en la base y los cubrí con esta cubierta en la parte inferior.

Con esto se hace la plataforma de autobalanceo o el gimbal de Arduino y funciona bien como se esperaba. Lo que queda es echar un vistazo al programa.

Código Arduino

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

Aquí puedes descargar el código:

Descripción del código: Por lo tanto, estamos utilizando la guiñada, el cabeceo y el balanceo legibles de salida.

// Get Yaw, Pitch and Roll values
#ifdef OUTPUT_READABLE_YAWPITCHROLL
    mpu.dmpGetQuaternion(&q, fifoBuffer);
    mpu.dmpGetGravity(&gravity, &q);
    mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);

    // Yaw, Pitch, Roll values - Radians to degrees
    ypr[0] = ypr[0] * 180 / M_PI;
    ypr[1] = ypr[1] * 180 / M_PI;
    ypr[2] = ypr[2] * 180 / M_PI;
    
    // Skip 300 readings (self-calibration process)
    if (j <= 300) {
      correct = ypr[0]; // Yaw starts at random value, so we capture last value after 300 readings
      j++;
    }
    // After 300 readings
    else {
      ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract  the last random Yaw value from the currrent value to make the Yaw 0 degrees
      // Map the values of the MPU6050 sensor from -90 to 90 to values suatable for the servo control from 0 to 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);
      
      // Control the servos according to the MPU6050 orientation
      servo0.write(servo0Value);
      servo1.write(servo1Value);
      servo2.write(servo2Value);
    }
#endifCode language: Arduino (arduino)

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

// Yaw, Pitch, Roll values - Radians to degrees
    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 todavía está en proceso de autocalibración durante este tiempo. Además, capturamos el valor de guiñada, que al principio no es 0 como los valores de cabeceo y balanceo, sino que siempre es un valor aleatorio.

// Skip 300 readings (self-calibration process)
    if (j <= 300) {
      correct = ypr[0]; // Yaw starts at random value, so we capture last value after 300 readings
      j++;
    }Code language: Arduino (arduino)

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

// After 300 readings
    else {
      ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract  the last random Yaw value from the currrent value to make the Yaw 0 degrees
      // Map the values of the MPU6050 sensor from -90 to 90 to values suatable for the servo control from 0 to 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);
      
      // Control the servos according to the MPU6050 orientation
      servo0.write(servo0Value);
      servo1.write(servo1Value);
      servo2.write(servo2Value);
    }Code language: Arduino (arduino)

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

Tenga en cuenta que esto está lejos de ser un buen cardán de cámara. Los movimientos no son suaves porque estos servos no están hechos para tal fin. Los cardanes de cámara reales utilizan un tipo especial de motores BLDC para obtener movimientos suaves. Por lo tanto, considere este proyecto solo con fines educativos.

Eso sería todo por este tutorial, espero que lo hayan disfrutado y aprendido algo nuevo. Siéntase libre de hacer cualquier pregunta en la sección de comentarios a continuación y no olvide consultar mi colección de proyectos Arduino.


Proceso de manufactura

  1. Visualizador de música DIY LUMAZOID Arduino
  2. Voltímetro de bricolaje con Arduino y un teléfono inteligente
  3. Obstáculos que evitan el robot con servomotor
  4. Patineta de realidad virtual DIY
  5. Plataforma de entrenamiento Arduino
  6. Máquina de tratamiento DIY Arduino RADIONICS
  7. Simulador de carreras de movimiento 2D DIY
  8. Arduino Trash-Bot (Auto-abrir / cerrar papelera)
  9. Barrido de servo solo
  10. Idea de bricolaje con RFID
  11. DIY CNC VMC de 3 ejes