Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

In deze tutorial leer je hoe je een Arduino Gimbal of een zelfstabiliserend platform met servo-motoren bouwt. Deze tutorial is eigenlijk een uitbreiding van de vorige tutorial over de MPU6050.

Je kunt de volgende video bekijken of de geschreven tutorial hieronder lezen.

Overzicht

Ik ontwierp de gimbal met een 3D-modelleringssoftware. Het bestaat uit 3 MG996R servo-motoren voor de 3-as besturing, en een basis waarop de MPU6050-sensor, de Arduino en de accu geplaatst worden.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

Je kunt dit 3D-model vinden en downloaden, en in je browser verkennen op Thangs.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

STL-bestanden:

Met mijn Creality CR-10 3D-printer 3D-printte ik alle onderdelen en ze kwamen perfect uit.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

Monteren

Het monteren van de gimbal was redelijk eenvoudig. Ik begon met het installeren van de Yaw-servo. Met M3-bouten en moeren bevestigde ik hem aan de basis.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

Vervolgens, met dezelfde methode, bevestigde ik de Roll-servo. De onderdelen zijn specifiek ontworpen om gemakkelijk de MG996R servo's te passen.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

Voor het verbinden van de onderdelen onderling gebruikte ik de ronde horens die als accessoires bij de servo's komen.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

Eerst moeten we de ronde hoorn met twee bouten aan de basis bevestigen, en daarna aan de vorige servo met een andere bout bevestigen.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

Ik herhaalde dit proces voor het monteren van de rest van de componenten, de Pitch-servo en het bovenste platform.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

Vervolgens leidde ik de servo-draden door de houder-openingen om ze georganiseerd te houden. Daarna plaatste ik de MPU6050-sensor en bevestigde hem aan de basis met een bout en moer.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

Voor de voeding van het project gebruikte ik 2 Li-ion accu's die ik in deze accuhouder plaatste. Ik bevestigde de accuhouder aan de basis met twee bouten en moeren.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

De 2 Li-ion accu's zullen ongeveer 7.4V produceren, maar we hebben 5V nodig voor de voeding van de Arduino en de servo's.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

Daarom gebruikte ik een buck-converter die 7.4V naar 5V omzet.

Arduino Gimbal Schakelschema

Wat overblijft nu, is alles met elkaar te verbinden. Hier is het schakelschema van dit project en hoe alles verbonden moet worden.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

Je kunt de benodigde componenten voor deze Arduino-tutorial via de onderstaande links verkrijgen:

  • MPU6050 IMU ………………………………. Amazon / Banggood / AliExpress
  • MG996R Servo ………………………………. Amazon / Banggood / AliExpress
  • Buck Converter ………………………………
  • Arduino Bord …………………………..…..
  • Breadboard en Jump Wires …………

Aan het einde perk ik de elektronische componenten en de draden in de basis, en bedekte ze met dit deksel aan de onderkant.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

Hiermee is het zelfbalancerende platform of de Arduino gimbal klaar en werkt het goed zoals verwacht. Wat overblijft is om naar het programma te kijken.

Bouw een Zelfstabiliserende Arduino Gimbal met 3-As Servobesturing

Arduino Code

De Arduino-code voor dit voorbeeld is een aanpassing van het MPU6050_DMP6-voorbeeld uit de i2cdevlib-bibliotheek van Jeff Rowberg.

Hier kun je de code downloaden:

Codebeschrijving: We gebruiken de leesbare yaw, pitch en roll output.

// 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 current value to make the Yaw 0 degrees
  // Map the values of the MPU6050 sensor from -90 to 90 to values suitable 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)

Zodra we de waarden hebben, converteren we ze eerst van radialen naar graden.

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

Dan wachten we of maken 300 metingen, omdat de sensor in deze tijd nog in het zelfkalibratieproces zit. Ook vangen we de Yaw-waarde op, die aan het begin niet 0 is als de Pitch en Roll-waarden, maar altijd een willekeurige waarde is.

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

Na de 300 metingen, stellen we eerst de Yaw in op 0 door de bovenstaande opgevangen willekeurige waarde af te trekken. Vervolgens mappen we de waarden van de Yaw, Pitch en Roll, van -90 tot +90 graden, naar waarden van 0 tot 180 die gebruikt worden voor het aansturen van de servo's.

// After 300 readings
else {
  ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract the last random Yaw value from the current value to make the Yaw 0 degrees
  // Map the values of the MPU6050 sensor from -90 to 90 to values suitable 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)

Tot slot sturen we met de write-functie deze waarden naar de servo's als besturingssignalen. Natuurlijk kun je de Yaw-servo uitschakelen als je alleen stabilisatie voor de X- en Y-as wilt, en dit platform als cameragimbal gebruiken.

Let op: dit is ver verwijderd van een goede cameragimbal. De bewegingen zijn niet soepel omdat deze servo's niet voor zo'n doel bedoeld zijn. Echte cameragimbals gebruiken een speciaal type BLDC-motoren voor soepere bewegingen. Zie dit project dus alleen voor educatieve doeleinden.

Dat was alles voor deze tutorial, ik hoop dat je ervan hebt genoten en iets nieuws hebt geleerd. Stel gerust vragen in de reacties hieronder en vergeet niet mijn verzameling Arduino-projecten te bekijken.


Productieproces

  1. Bouw Je Eigen LUMAZOID: Een DIY Arduino Muziek Visualizer
  2. Een slimme voltmeter bouwen met Arduino en smartphone – Eenvoudig DIY-project
  3. Servo-gestuurde obstakelvermijdende robot: Bouw met Arduino & HC-SR04
  4. Bouw een DIY VR-skateboard met Arduino, Google Cardboard en Bluetooth
  5. Uitgebreide Arduino Trainingskit met Mega 2560, Sensoren, Motoren en Custom PCB
  6. Bouw een DIY Arduino Radionica EMR Behandelapparaat
  7. DIY 2D Motion Racing Simulator met Arduino Nano & SG90 Servo's
  8. Arduino Slimme Prullenbak met Automatisch Open/Sluit Deksel
  9. Solo-drone servo-besturing met Arduino: Eenvoudige setup & sweep-tutorial
  10. Bouw een draagbare RFID-deurslot met Arduino – Stap-voor-stap handleiding
  11. DIY 3-As CNC VMC: Bouw een Precisie Freesmachine