Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Cardan Arduino bricolage | Plate-forme auto-stabilisante

Dans ce tutoriel, nous allons apprendre à construire un Arduino Gimbal ou une plate-forme auto-stabilisante avec des servomoteurs. Ce tutoriel est en fait une extension du tutoriel précédent sur le tutoriel MPU6050.

Vous pouvez regarder la vidéo suivante ou lire le didacticiel écrit ci-dessous.

Aperçu

J'ai conçu le cardan à l'aide d'un logiciel de modélisation 3D. Il se compose de 3 servomoteurs MG996R pour le contrôle 3 axes, et d'un socle sur lequel seront posés le capteur MPU6050, l'Arduino et la batterie.

Vous pouvez trouver et télécharger ce modèle 3D, ainsi que l'explorer dans votre navigateur sur Thangs.

Fichiers STL :

À l'aide de mon imprimante 3D Creality CR-10, j'ai imprimé en 3D toutes les pièces et elles sont tout simplement parfaites.

Assemblage

L'assemblage du cardan était assez facile. J'ai commencé par installer le servo Yaw. À l'aide de boulons et d'écrous M3, je l'ai fixé à la base.

Ensuite, en utilisant la même méthode, j'ai sécurisé le servo de roulis. Les pièces sont spécialement conçues pour s'adapter facilement aux servos MG996R.

Pour connecter les pièces entre elles, j'ai utilisé les cornes rondes qui viennent comme accessoires avec les servos.

Tout d'abord, nous devons fixer le klaxon rond à la base avec deux boulons, puis le fixer au servo précédent à l'aide d'un autre boulon.

J'ai répété ce processus pour assembler le reste des composants, le servo Pitch et la plate-forme supérieure.

Ensuite, j'ai passé les fils de servo à travers les ouvertures des supports afin de les garder organisés. Ensuite, j'ai inséré le capteur MPU6050 et je l'ai fixé sur la base avec un boulon et un écrou.

Pour alimenter le projet, j'ai utilisé 2 batteries Li-ion que j'ai placées dans ce support de batterie. J'ai fixé le support de batterie à la base à l'aide de deux boulons et écrous.

Les 2 batteries Li-ion produiront environ 7,4 V, mais nous avons besoin de 5 V pour alimenter l'Arduino et les servos.

C'est pourquoi j'ai utilisé un convertisseur abaisseur qui convertira 7,4 V en 5 V.

Schéma du circuit du cardan Arduino

Ce qu'il reste maintenant, c'est de tout connecter ensemble. Voici le schéma de circuit de ce projet et comment tout doit être connecté.

Vous pouvez obtenir les composants nécessaires pour ce didacticiel Arduino à partir des liens ci-dessous :

  • IMU MPU6050 ………………………………. AmazonBanggood /AliExpress
  • Servomoteur MG996R ………………………………. AmazonBanggood /AliExpress
  • Convertisseur Buck ………………………………
  • Carte Arduino …………………………..…..
  • Breadboard et Jump Wires ………… 

À la fin, j'ai pressé les composants électroniques et les fils dans la base, et les ai recouverts à l'aide de ce couvercle en bas.

Avec cela, la plate-forme d'auto-équilibrage ou le cardan Arduino est terminé et cela fonctionne bien comme prévu. Il ne reste plus qu'à jeter un œil au programme.

Code Arduino

Le code Arduino pour cet exemple est une modification de l'exemple MPU6050_DMP6 de la bibliothèque i2cdevlib de Jeff Rowberg.

Voici que vous pouvez télécharger le code :

Description du code : Nous utilisons donc le lacet, le tangage et le roulis lisibles en sortie.

// 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)

Une fois que nous avons obtenu les valeurs, nous les convertissons d'abord de radians en degrés.

// 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)

Ensuite, nous attendons ou effectuons 300 lectures, car le capteur est toujours en processus d'auto-étalonnage pendant ce temps. De plus, nous capturons la valeur de lacet, qui au début n'est pas 0 comme les valeurs de tangage et de roulis, mais c'est toujours une valeur aléatoire.

// 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)

Après les 300 lectures, nous réglons d'abord le lacet à 0 en soustrayant la valeur aléatoire capturée ci-dessus. Ensuite, nous mappons les valeurs de Yaw, Pitch et Roll, de - 90 à +90 degrés, en valeurs de 0 à 180 qui sont utilisées pour piloter les 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)

Enfin, en utilisant la fonction d'écriture, nous envoyons ces valeurs aux servos en tant que signaux de contrôle. Bien sûr, vous pouvez désactiver le servo Yaw si vous souhaitez uniquement stabiliser les axes X et Y, et utiliser cette plate-forme comme nacelle de caméra.

Veuillez noter que ce n'est pas un bon cardan pour appareil photo. Les mouvements ne sont pas fluides car ces servos ne sont pas destinés à un tel usage. Les véritables cardans de caméra utilisent un type spécial de moteurs BLDC pour obtenir des mouvements fluides. Alors, considérez ce projet uniquement à des fins éducatives.

Ce serait tout pour ce tutoriel, j'espère que vous l'avez apprécié et appris quelque chose de nouveau. N'hésitez pas à poser des questions dans la section des commentaires ci-dessous et n'oubliez pas de consulter ma collection de projets Arduino.


Processus de fabrication

  1. Visualiseur de musique Arduino DIY LUMAZOID
  2. Voltmètre DIY utilisant Arduino et Smartphone
  3. Obstacles pour éviter le robot avec servomoteur
  4. Planche à roulettes en réalité virtuelle DIY
  5. Plateforme de formation Arduino
  6. Traitement DIY Arduino RADIONICS MMachine
  7. Simulateur DIY 2D Motion Racing
  8. Arduino Trash-Bot (ouverture/fermeture automatique de la corbeille)
  9. Solo Servo Sweep