Stap 3: Code Overview
Set_Waypoint(Longitude,Latitude,Altitude)
In werkelijkheid zijn er nog steeds veel van bytes die moeten worden verplaatst tussen registers, en een heleboel timers die moeten nauwkeurig worden ingesteld. Dit is mijn eerste keer werken met dergelijke "low-level" code, maar begrijpen hoe deze dingen werken is echt verheugend, en krijgt u veel meer vertrouwen in de lange termijn.
Op het meest elementaire niveau is onze autopilot-systeem in wezen een servo-switch, die of beslist te schrijven servo waarden van de RadioOntvanger (verzonden door u via zender) of van de berekeningen van de automatische piloot. Wel of niet het vliegtuig is in de automatische piloot wordt vastgesteld van de staat van een tuimelschakelaar van de borstband bevindt. De status van deze schakeloptie ontvangt meer dan een van de normale kanalen van radio's (dwz landingsgestel of kleppen).
Berekening van de automatische piloot uitgangen begint met sensor lezingen. Mijn project maakt dit mogelijk met behulp van de I2C-bus. Elke sensor dient een zeer specifiek doel. Uw versnellingsmeter laat je de netto kracht op uw vliegtuig minus de versnelling als gevolg van de zwaartekracht te meten. Ervan uitgaande dat de zwaartekracht is de grootste kracht op uw vliegtuig, kun je gemakkelijk een vector < accel_x, accel_y, accel_z > de toonhoogte en de rol van uw vliegtuig te vinden. Uw magnetometer zal u vertellen de netto magnetische kracht op uw vliegtuig, in Gauss < mag_x, mag_y, mag_z > deze informatie kan worden gebruikt om te vinden van uw vliegtuigen rubriek ten opzichte van het magneetveld van de aarde. Hoewel in theorie dit genoeg informatie om te vliegen moet, zijn beide van deze sensoren zeer lawaai-naar voren gebogen. De versnellingsmeter wordt in wezen meanlingless zodra uw motoren zijn uitgevoerd (en dus veel lineaire-acceleraties ondergaan) en uw magnetometer drijven zal als je gashendel op en neer (van wijzigingen in het magnetisch veld veroorzaakt door uw motoren).
Gelukkig, uw gyroscoop is hier aan de dag te redden. Het is immuun aan lineaire acceleratie (trillingen) en aan veranderingen in het magnetisch veld. De gyroscoop zal u uw hoeksnelheid vertellen over de x-, y- en z-as. Als u deze waarde op de juiste wijze integreren, moet u zitten kundig voor vinden hoeveel de vliegtuigen roll, pitch en yaw veranderd tussen calcuations. U vertrouwen niet, echter uitsluitend op de gyroscoop omdat
1) de gyroscoop zal nooit een nul te lezen, zelfs als je hem plat op de tafel
2) u accumuleren fouten naarmate jullie integreren omdat u niet kunt voor u integratie constante (C oplossen)
Als u weet niet calculus, wees niet bang, wij zullen u lopen door het tempo.
Het ook mogelijk om uw GPS als drift-vrije yaw gegevensbron gebruiken als de vernieuwingsfrequentie en de nauwkeurigheid van GPS is goed genoeg.
U combineert al deze informatie maken een nauwkeurige oreintation van het vliegtuig (pitch, roll, yaw). Met deze waarden kunt u een PID-lus die het vliegtuig in een gewenste richting moet houden.
Zodra u de houding van het vliegtuig bepalen kan, moet u berekenen welke houding krijgt uw vliegtuig naar het volgende waypoint. Dit kan worden bereikt door het vergelijken van de GPS-coördinaten van de locatie van de vliegtuigen naar de gewenste locatie van vliegtuigen. De GPS de peiling zullen verschaffen voor het vliegtuig (richting het moet naar) terwijl de kompas/gyroscoop zorgt voor de kop (de manier waarop het vliegtuig eigenlijk kampt). Althoo