Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Deze instructable is gemaakt om te voldoen aan de projectvereiste van de Makecourse aan de University of South Florida (www.makecourse.com)
Het doel van dit project was om een 3-assige Gimbal voor GoPro te bouwen met behulp van Arduino nano + 3 servomotoren + MPU6050 gyro/versnellingsmeter. In dit project heb ik 2-assige (Roll en yaw) bestuurd met behulp van MPU6050 gyro / accelerometer, de derde as (yaw) wordt op afstand en handmatig bestuurd met behulp van de HC-05 en Arduino BlueControl-app die zich in de Android App Store bevindt.
Dit werk omvat ook alle 3D-ontwerpbestanden van mechanische componenten van Gimbal. Ik deelde.stl-bestanden voor eenvoudig 3D-printen en 3D-ontwerpbestanden onderaan.
Aan het begin van mijn project was mijn plan om een 3-assige gimbal te bouwen met 3 borstelloze motoren, omdat borstelloze motoren soepel zijn en beter reageren in vergelijking met servomotoren. Borstelloze motoren worden gebruikt in toepassingen met hoge snelheid, dus we kunnen de snelheid van het kopen van motoren ESC (controller) aanpassen. Maar om de borstelloze motor in het Gimbal-project te kunnen gebruiken, realiseerde ik me dat ik de borstelloze motor als een servo moest aandrijven. Bij servomotoren is de positie van de motor bekend. Maar bij een borstelloze motor kennen we de positie van de motor niet, dus het is een nadeel van een borstelloze motor, ik kon er niet achter komen hoe ik hem moest besturen. Uiteindelijk besloot ik om 3 MG995-servomotoren te gebruiken voor het Gimbal-project met een hoog koppel. Ik bestuurde 2 servomotoren voor de rol- en steekas met behulp van de MPU6050-gyro, en ik bestuurde de yaw-asservomotor met behulp van de HC-05 bluetooth- en Android-app.
Stap 1: Componenten
De componenten die ik in dit project heb gebruikt;
1- Arduino Nano (1 eenheid) (Micro-usb)
2- MG995 servomotoren (3 stuks)
3- GY-521 MPU6050 3-assige versnellingsmeter/gyroscoop (1 eenheid)
4- HC-05 Bluetooth-module (om de yaw (Servo3) -as op afstand te bedienen)
4-5V draagbare micro-usb-oplader
Stap 2: Implementatie van 3 servomotoren + MPU6050 Gyro + HC-05
Servo bedrading
Servo1 (Roll), Servo2 (Pitch), Servo3 (Yaw)
Servomotoren hebben 3 draden: VCC (rood), GND (bruin of zwart), PWM (geel).
D3 => Servo1 PWM (gele draad)
D4 => Servo2 PWM (gele draad)
D5 => Servo3 PWM (gele draad)
5V PIN van Arduino => VCC (rood) van 3 servomotoren.
GND PIN van Arduino => GND (bruin of zwart) van 3 servomotoren
MPU6050 gyro-bedrading
A4 => SDA
A5 => SCL
3.3 V PIN van Arduino => VCC van MPU6050
GND PIN van Arduino => GND van MPU6050
HC-05 Bluetooth-bedrading
D9 => TX
D10 => RX
3.3 V PIN van Arduino => VCC van HC-05 Bluetooth
GND PIN van Arduino => GND van HC-05 Bluetooth
Stap 3: 3D-ontwerp en functionaliteit
Ik heb het 3D-ontwerp van Gimbal voltooid door te verwijzen naar andere Gimbals die op de markt worden verkocht. Er zijn drie hoofdcomponenten die draaien met servomotoren. Ik ontwierp een GoPro mount die past bij zijn grootte.
Het.step-bestand van alle 3D-ontwerpen wordt onderaan gedeeld om het bewerken gemakkelijker te maken.
Stap 4: Besturingsmechanisme
Het belangrijkste algoritme van mijn Gimbal-project maakt gebruik van Quaternion-rotatie, een alternatief voor Euler-hoeken. Ik heb de bibliotheek helper_3dmath.h als referentie gebruikt om vloeiende bewegingen mogelijk te maken met behulp van het Quaternion-algoritme. Hoewel de respons van de pitch-as soepel verloopt, blijft de rol-as achter om op de beweging van de stick te reageren. Door het Quaternion-algoritme te gebruiken, kon ik Roll- en Pitch-servomotoren besturen. Als u de gier-as wilt gebruiken, moet u mogelijk de tweede MPU6050 gebruiken om de gier-as te bedienen. Als alternatieve oplossing heb ik HC-05 geconfigureerd en de gier-as op afstand bediend met de Android-app met behulp van knoppen. Bij elke druk om op de knop te drukken, draait de gier-as-servo 10 graden.
In dit project zijn de bibliotheken die ik extern moest importeren als volgt;
1- I2Cdev.h // Gebruikt met wire.h om communicatie met MPU6050. mogelijk te maken
2- "MPU6050_6Axis_MotionApps20.h" // Gyroscoopbibliotheek
3- // Hiermee kunnen digitale pinnen worden omgezet in RX- en TX-pinnen (er is een HC-05 Bluetooth-module nodig)
4-
5- // Hiermee kan worden gecommuniceerd met I2C-apparaten die twee datapinnen gebruiken (SDA en SCL) => MPU6050
De hoofdcode is gemaakt door Jeff Rowberg en ik heb deze aangepast aan mijn projectfunctionaliteit en heb alle functies in een ino-bestand van commentaar voorzien.