In de categorie vragen die ik niet op de multiwii-forums durf te stellen: Ik gebruik sinds kort een magnetometer (MAG) op mijn Nanowii-Quad, hoewel het resultaat tot nog toe niet heel schokkend is, lijkt het wel wat te doen voor Yaw in de wind. Ben de PID nog langzaam aan het opvoeren, lijkt al wel beter te worden. Wat ik me af vroeg; waarom gebruiken 'we' de andere assen van de MAG eigenlijk niet in MultiWii ? En zou ik dat zelf kunnen toevoegen ? In multiwii.ino zie ik het volgende staan: Code: #if MAG if (abs(rcCommand[YAW]) <70 && f.MAG_MODE) { int16_t dif = heading - magHold; if (dif <= - 180) dif += 360; if (dif >= + 180) dif -= 360; if ( f.SMALL_ANGLES_25 ){ rcCommand[YAW] -= dif*conf.P8[PIDMAG]>>5; } Hier wordt in de laatste regel de YAW aangepast. Alleen de rotatie dus. Aan de data in MultiWiiConf te zien werkt mijn kompas echter in 3 dimensies. Kan ik niet ook voor ROLL en PITCH zoiets doen ? Zodat je iets krijgt als: Code: #if MAG if (abs(rcCommand[YAW]) <70 && f.MAG_MODE) { int16_t dif = heading - magHold; if (dif <= - 180) dif += 360; if (dif >= + 180) dif -= 360; if ( f.SMALL_ANGLES_25 ){ rcCommand[YAW] -= dif*conf.P8[PIDMAG]>>5; rcCommand[ROLL] -= dif*conf.P8[PIDMAG]>>?; rcCommand[PITCH] -= dif*conf.P8[PIDMAG]>>?; }
Ik vraag mij af wat dit als voordeel moet opleveren? Om horizontaal te blijven heb je toch de stable functie...
Misschien is het mijn brakke afstelling maar, mijn stable is (in de wind) niet echt om over naar huis te schrijven. Mijn quad is te klein om een GPS aan te hangen, bovendien heb ik te weinig geheugen (NanoWii). Ik dacht/had gehoopt een soort drift-compensatie er uit te halen. Maar misschien is het allemaal niet zo'n goed idee, ik heb de code 'eromheen' geprobeerd uit te pluizen maar het voert allemaal misschien wel een beetje ver... Iemand die uit kan leggen wat dit precies doet: Code: conf.P8[PIDMAG]>>5 En dan met name '>>5' is dat een soort bit-shift ofzo ? ze doen hier het differentiaal * de PID voor MAG, maar dan ?