¿Alguna vez has querido construir tu propia plataforma autoestabilizadora utilizando un Cardán Arduino de bricolaje? En este artículo, te guiaremos paso a paso a través de este emocionante proyecto que te permitirá disfrutar de la estabilización automática de tus dispositivos de forma económica y divertida. ¡Sigue leyendo para descubrir cómo puedes crear tu propia plataforma autoestabilizadora con Arduino!
En este tutorial aprenderemos a construir un gimbal o plataforma autoestabilizadora Arduino con servomotores. Este tutorial es en realidad una extensión del tutorial anterior sobre MPU6050.
Puede ver el vídeo a continuación o leer el tutorial escrito a continuación.
descripción general
Diseñé el cardán usando un software de modelado 3D. Consta de 3 servomotores MG996R para control de 3 ejes y una base sobre la que se coloca el sensor MPU6050, Arduino y batería.
Puedes>Descarga este modelo 3Dy también explóralo en tu navegador en Thangs.
Archivos>
DIY Arduino Gimbal: archivos STL de plataforma autoestabilizadora
Imprimí en 3D todas las piezas con mi impresora 3D Creality CR-10 y quedaron perfectas.
asamblea
Montar el cardán fue bastante fácil. Empecé instalando el servo Yaw. Lo fijé a la base usando tornillos y tuercas M3.
A>
Para>
Primero>
Repetí>
Luego>
Para>
Las>
Por>
Diagrama del circuito del cardán Arduino
Ahora sólo necesitamos conectar todo junto. Aquí está el esquema de este proyecto y cómo debe conectarse todo.
Puede>
- IMU MPU6050 ………………………………. Amazonas / Banggood / AliExpress
- Servomotor MG996R ………………………………. Amazonas / Banggood / AliExpress
- Convertidor de moneda ……………………………… Amazon / Banggood / AliExpress
- Placa Arduino…………………………..….. Amazonas / Banggood / AliExpress
- Cables de puente y placa de pruebas………… Amazonas / Banggood / AliExpress
Divulgación: estos son enlaces de afiliados. Como asociado de Amazon, gano con compras que califican.
Terminé apretando los componentes electrónicos y los cables en la base y cubriéndolos en la parte inferior con esta cubierta.
Esto>
código arduino
El código Arduino para este ejemplo es una modificación del ejemplo MPU6050_DMP6 del Biblioteca i2cdevlib de Jeff Rowberg.
Puedes descargar el código aquí:
DIY Arduino Gimbal – Código Paftorm autoestabilizador
Descripción del código: Por lo tanto, utilizamos como resultado un comportamiento legible de guiñada, cabeceo y balanceo.
// 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);
}
#endif
Code language: Arduino (arduino)
Una vez que obtenemos 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 tomamos 300 mediciones, ya que el sensor todavía está en proceso de autocalibración durante este tiempo. También registramos el valor de Yaw, que inicialmente no es 0 como los valores de cabeceo y balanceo, pero 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 la tasa de guiñada en 0 restando el valor aleatorio registrado anteriormente. Luego asignamos los valores de guiñada, cabeceo y balanceo de -90 a +90 grados a 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)
Luego enviamos estos valores como señales de control a los servos mediante la función de escritura. Por supuesto, si solo deseas estabilización para los ejes X e Y, puedes desactivar el servo Yaw y usar esta plataforma como cardán de la cámara.
Tenga en cuenta que esto es todo menos un buen cardán para cámara. Los movimientos no son fluidos ya que estos servos no están pensados para tal fin. Los cardanes de cámaras reales utilizan un tipo especial de motores BLDC para lograr movimientos suaves. Así que considere este proyecto sólo con fines educativos.
Eso es todo por este tutorial. Espero que lo hayas disfrutado y hayas aprendido algo nuevo. No dudes en hacer tus preguntas en la sección de comentarios a continuación y no olvides echar un vistazo a mi colección de proyectos Arduino.
Cardán Arduino de bricolaje | Plataforma autoestabilizadora
En este tutorial aprenderemos cómo construir un Cardán Arduino o una plataforma autoestabilizadora con motores servo. Este tutorial es una extensión del tutorial anterior sobre el MPU6050.
Resumen
Diseñé el cardán utilizando un software de modelado 3D. Consiste en 3 servomotores MG996R para el control de los 3 ejes, y una base en la que se colocará el sensor MPU6050, el Arduino y la batería.
Puedes encontrar y descargar este modelo 3D, así como explorarlo en tu navegador en Thangs.
Archivo STL: DIY Arduino Gimbal – Self-Stabilizing Platform STL Files
Utilizando mi impresora 3D Creality CR-10, imprimí todas las piezas y quedaron perfectas.
Ensamblaje
El ensamblaje del cardán fue bastante fácil. Comencé instalando el servo de dirección. Usando pernos y tuercas M3 lo aseguré a la base.
Luego, utilizando el mismo método, aseguré el servo de balanceo. Las piezas están diseñadas específicamente para adaptarse fácilmente a los servomotores MG996R.
Para conectar las piezas entre sí, utilicé los cuernos redondos que vienen como accesorios con los servos.
Para alimentar el proyecto, utilicé 2 baterías de iones de litio que coloqué en este soporte de batería. Aseguré el soporte de la batería a la base usando dos pernos y tuercas.
Las 2 baterías de iones de litio producirán alrededor de 7.4V, pero necesitamos 5V para alimentar el Arduino y los servos. Por eso utilicé un convertidor buck que convertirá 7.4V a 5V.
Diagrama de circuitos Arduino Gimbal
Lo que queda ahora es conectar todo. Aquí está el diagrama de circuitos de este proyecto y cómo todo necesita estar conectado.
Puedes obtener los componentes necesarios para este Tutorial de Arduino desde los siguientes enlaces:
- MPU6050 IMU – Amazon / Banggood / AliExpress
- Servo MG996R – Amazon / Banggood / AliExpress
- Convertidor Buck – Amazon / Banggood / AliExpress
- Placa Arduino – Amazon / Banggood / AliExpress
- Protoboard y cables puente – Amazon / Banggood / AliExpress
Al final, apreté los componentes electrónicos y los cables en la base, y los cubrí usando esta tapa en la parte inferior.
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:
DIY Arduino Gimbal – Self-Stabilizing Platform Code
Descripción del código: Entonces, estamos utilizando la salida legible de Yaw, Pitch y 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 de 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 comienza en un valor aleatorio, por lo que capturamos el último valor después de 300 lecturas
j++;
}
// Después de 300 lecturas
else {
ypr[0] = ypr[0] - correct; // Configurar el Yaw a 0 grados - restar el último valor Yaw aleatorio del valor actual para hacer que el Yaw sea 0 grados
// Mapear los valores del sensor MPU6050 de -90 a 90 a valores adecuados para el control del servo 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);
}
#endif
Una vez que obtenemos los valores, primero los convertimos de radianes a grados.
Después, esperamos o hacemos 300 lecturas, porque el sensor todavía 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.
Después de las 300 lecturas, primero configuramos el Yaw a 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.
Finalmente, utilizando la función write, enviamos estos valores a los servos como señales de control. Por supuesto, puedes desactivar el servo de Yaw si solo quieres estabilización para los ejes X e Y, y usar esta plataforma como cardán de cámara.
Ten en cuenta que este cardán está lejos de ser un buen cardán de cámara. Los movimientos no son suaves porque estos servos no están destinados para tal propósito. Los verdaderos cardanes de cámara utilizan un tipo especial de motores BLDC para obtener movimientos suaves. Por lo tanto, considera este proyecto solo con fines educativos.
Eso es todo por este tutorial, espero que lo hayas disfrutado y aprendido algo nuevo. Siéntete libre de hacer cualquier pregunta en la sección de comentarios a continuación y no olvides consultar mi colección de Proyectos de Arduino.
¡Qué proyecto tan impresionante! Me inspira a seguir experimentando con Arduino y descubrir todas las posibilidades que ofrece. Definitivamente quiero probar a crear mi propia plataforma autoestabilizadora. ¡Gracias por la inspiración! 🤯🛠️
¡Wow! Nunca había pensado en construir algo así con un Arduino. Me encanta descubrir nuevas ideas de bricolaje. ¡Gracias por compartir tu proyecto, me has motivado a intentarlo yo también! 🤖🔧👨🔧
¡Qué interesante proyecto! Me encanta ver cómo se puede usar un Arduino para crear algo tan genial como una plataforma autoestabilizadora. Definitivamente me inspira a probar algo así en el futuro. ¡Gracias por compartir!
¡Qué genial ver la creatividad de las personas en acción! Me encanta cómo se pueden utilizar dispositivos como el Arduino para crear proyectos tan innovadores. Definitivamente me anima a seguir explorando el mundo del bricolaje. ¡Gracias por compartir esta genial idea! 🛠️🤖