Borstlösa Gimbal med Arduino (3 / 4 steg)
Steg 3: Med hjälp av Accelerometer och Gyro
Accelerometern kan Arduino att förstå vår kamera position vid varje given tidpunkt med hänvisning till allvar och upptäcker axiella accelerationer. Gyrot upptäcker förändringar i vinkel. Med denna data vi skapat en servo (en feedback loop som närmar sig en given uppsättning punkt) att hålla gimbal på en fast position. Vi använde MPU 6050 6-DOF (frihet) accelerometern och Gyro monterat på GY 521 breakout ombord.
Vi fast accelerometern till Arduino som kan ses på bilden ovan. Tyvärr finns det inga datablad för denna utbrytning styrelse. Detta är vad vi hittade i kommentarerna på Amazon:
- VCC: + 3.3V från Arduino (bifoga 0.1 microFarad kondensator till marken)
- JORD: JORD
- SCL: A5 på Arduino Uno (med 2.2 k dra upp motstånd till Arduino + 5V)
- SDA: A4 på Arduino Uno (med 2.2 k dra upp motstånd till Arduino + 5V)
- XDA: Inte ansluten
- XCL: Inte ansluten
- ADO: GND
- INT: Digital stift 2 på Arduino
Vi sökte runt och hittade några Arduino skisser som ger dig rådata. Detta är dock ganska bullriga och inte särskilt användbart, särskilt i servo-ning. MPU 6050 har en inbyggd i Digital Motion Processor (DMP); instruktioner på att använda det finns dock inte. Några lysande person på MIT (tack Jeff Rowberg!) omvänd konstruerad chip och beräknat ute hur till aktivera DMP och få ren och stadig data från det. Vi använde hans kod som tillät oss att ta emot data i flera olika former inklusive Euler vinklar, Quaternions eller Yaw Pitch och rulla (YPR).
Vi beslutade att använda YPR data eftersom det direkt korrelerad till hur vi styr vår kamera. Vi har en pitch motor (tror letar du upp och ner) och en rulle motor (tror en bank flygplan). När vi hade data i denna form kodning var relativt lätt och skrev vi en grundläggande servo kod om du vill stänga motorn till oavsett vilken vinkel vi ställa in i koden, genom "uppräkning" sinusvåg i rätt riktning. Bekvämt, våra två motorer motsvarar exakt två av dessa koordinater, så att vi kan två servomotorer separat utan att de stör varandra. Detta var ett relativt enkelt koncept core till vårt projekt.
YPR data är lite knepigt eftersom det bara ger vinklar mellan -90 och 90 grader så servo ibland blir förvirrade om det blir nära horisontell, teoretiskt inte ett problem i en gimbal ansökan (men fortfarande en plats att förbättra tror vi).