Stap 3: Gebruik van de versnellingsmeter en de Gyro
De versnellingsmeter kunt de Arduino te begrijpen van de positie van onze camera te allen tijde met betrekking tot de zwaartekracht en axiale acceleraties detecteert. De gyro detecteert wijzigingen in de hoek. We met deze gegevens een servo (een feedback-lus die benaderingen van een bepaalde set punt) gecreëerd om te houden van de gimbal op een vaste positie. We gebruikten de MPU 6050 6-DOF (mate van vrijheid) versnellingsmeter en Gyro gemonteerd op de GY 521 breakout board.
Wij de versnellingsmeter aan de Arduino aangesloten zoals te zien in de afbeelding hierboven. Helaas is er geen data sheet voor dit breakout board. Dit is wat we hebben gevonden in de commentaren op Amazon:
- VCC: + 3,3 v van Arduino (bijvoegen 0.1 microFarad condensator op grond)
- GND: GND
- SCL: A5 op Arduino Uno (met 2.2 k pull up weerstand Arduino + 5V)
- SDA: A4 op Arduino Uno (met 2.2 k pull up weerstand Arduino + 5V)
- XDA: Niet verbonden
- XCL: Geen verbinding
- ADO: GND
- INT: Digitale Pin 2 op Arduino
We zocht rond en vond enkele Arduino schetsen zodat u de onbewerkte gegevens. Dit is echter vrij luidruchtig en niet bijzonder nuttig, met name in servo-ing. De MPU 6050 heeft een ingebouwde in digitale Motion Processor (DMP); instructies over het gebruik van het vindt echter niet. Sommige briljant persoon aan het MIT (dank Jeff Rowberg!) reverse engineered de chip en bedacht hoe de DMP activeren en de schone en gestage gegevens ophalen uit die. Wij zijn code waardoor ons te ontvangen van de gegevens in verschillende vormen zoals hoeken van Euler, quaternionen of Yaw Pitch en Roll (YPR) gebruikt.
We besloten om het gebruik van de YPR-gegevens omdat het direct gecorreleerd aan hoe we onze camera bestuurt. We hebben een worp motor (denk op en neer op zoek) en een roll-motor (denk een bancaire vliegtuig). Zodra wij de gegevens in deze vorm had de codering is relatief eenvoudig en schreven we een fundamentele servo-code om te schakelen van de motor welke hoek we die in de code, "verhogen" de sinusgolf in de juiste richting. Gunstig, onze twee motoren voldoen precies aan twee van deze coördinaten, dus we de twee servomotoren afzonderlijk zonder hen kunnen zich met elkaar te mengen. Dit was een vrij eenvoudig concept kern aan ons project.
De YPR-gegevens is een beetje lastig omdat het geeft alleen hoeken tussen de-90 en 90 graden zodat de servo af en toe krijgen verward als het wordt in de buurt van horizontaal, theoretisch niet een probleem in de toepassing van een gimbal (hoewel nog steeds een plaats om denken we).