Korkens styrkort för multirotors (KFly) - Nya bilder s. 27!

Berätta om dina pågående projekt.
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av LHelge »

Låter spejsat :D, börjar glömma bort mycket reglerteknikskurserna redan, exakt linjärisering kommer jag iaf ihåg, när man hittar en olinjär funktion som är "inversen" av systemets olinjäritet och på så sett ger en linjär utsignal. Är det något liknande detta du har gjort? Får några jobbiga vibbar från någon tentauppgift där man skulle hitta "hidden states" som kunde ge upphov till instabilitet vid exakt linjärisering... 8)

Jo, ska nog bygga klar den, nu när jag fått igång min RepRap öppnar det ju lite nya möjligheter till byggen, håller på att printa ut en tricopter som jag beställt lite delar till, tänkte testa hobbykings nya fartreglage som är speciellt framtagna för multirotorer. Så då måste jag anpassa min controller till att styra tricopters också. I v 1.5 har jag fixat 8 outputs med i princip samma firmware, vore kul att bygga någon hexa och octa oxå, de går ju basera på i stort sett samma delar som tricoptern med en annan basplatta i mitten.
tail1.jpg
tail2.jpg
arm.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av Korken »

>> exakt linjärisering kommer jag iaf ihåg, när man hittar en olinjär funktion som är "inversen" av
>> systemets olinjäritet och på så sett ger en linjär utsignal. Är det något liknande detta du har gjort?
Nej, jag har olinjär reglering genom att använda omega från ekvationen nedan som återkopplad derivata.
Bild

Ser snyggt ut! Håller plasten vid en kraschlandning?
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av LHelge »

Den är riktigt stark men håller nog inte för hur våldsamma krascher som helst. Däremot kan man skriva ut lite reservdelar som bytes ut på en minut med skruvmejsel som enda verktyg.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av Korken »

Mer information på regulator fronten!

Nu har jag kommit på ett sätt att använda kvarternionen direkt i regulatorer utan att behöva gå genom DCM-element!
Här är en simulering är jag säger åt den att göra en flip. :) Allt är med verklig inertia samt saturation på maximalt moment som motorerna kan ta fram!
Film:

Utöver detta så är jag nästan klar med min artikel om den. När den är klar om inskickad så tänkte jag lägga upp den här för de som är sugna på att tugga lite matte. :D
Nu tillbaka till skrivandet!
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av Korken »

Mer saker händer! :D
Jag blev lite less på att min estimerare var väldigt ineffektiv (drog först typ 50% an MCUn och efter optimeringar typ 5-10%) så jag har börja knega Python igen.
Jag skriver just nu ett Python script som tar in alla mina matrisekvationer och skriver ut dom till färdiga optimerade uttryck (typ som loop unrolling fast den optimerar ekvationerna), allt utom inversen.
Detta borde ge en rejäl prestanda boost, så får se hur stor koden blir, men så mycket som den drar nu är inte okej. Wish me luck! :)
Användarvisningsbild
PeterH
Inlägg: 8635
Blev medlem: 15 mars 2006, 15:57:10
Ort: Gävle/Valbo

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av PeterH »

Lycka till 8)
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av Andax »

Har ni matlab? Om du kör symbolic toolbox borde du kunna få den att spotta ut ett förenklat, direkt uttryck.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av Korken »

Jo, gick snabbt över till Matlab. :) Fick totalt spunk på Python, inte alls som jag kommer ihåg det.
Läste det i ettan (länge sedan) och tyckte då att man kunde göra allt med det, men Matlab va 100ggr enklare. :D
Det svåraste i Matlab är att göra symbolic matrix -> C-kod funktionen.
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av Andax »

Nu är den versionen av matlab som jag kör på jobbet några år gammal så den har inte funktionen ccode som gör om ett symboliskt uttryck till c-kod.
Men jag gissar att ni har senare versioner på universitetet... Checka "ccode"
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av Korken »

Mycket trevlig funktion, den har jag inte sätt förut! Tackar! :D
Ger inte riktigt vad jag behöver, men med lite regexp på detta så blir det susen.

Första förenklingen: ;)

Kod: Markera allt

  T[0][0] = P11+P55*(dto2*dto2)*(q1*q1)+P66*(dto2*dto2)*(q2*q2)+P77*(dto2*dto2)*(q3*q3)+P22*(dto2*dto2)*(wx*wx)+P33*(dto2*dto2)*(wy*wy)+P44*(dto2*dto2)*(wz*wz)+P15*dto2*q1+P16*dto2*q2+P17*dto2*q3+P51*dto2*q1+P61*dto2*q2+P71*dto2*q3+P12*dto2*wx+P21*dto2*wx+P13*dto2*wy+P14*dto2*wz+P31*dto2*wy+P41*dto2*wz+P56*(dto2*dto2)*q1*q2+P65*(dto2*dto2)*q1*q2+P57*(dto2*dto2)*q1*q3+P75*(dto2*dto2)*q1*q3+P67*(dto2*dto2)*q2*q3+P76*(dto2*dto2)*q2*q3+P25*(dto2*dto2)*q1*wx+P26*(dto2*dto2)*q2*wx+P35*(dto2*dto2)*q1*wy+P27*(dto2*dto2)*q3*wx+P52*(dto2*dto2)*q1*wx+P36*(dto2*dto2)*q2*wy+P53*(dto2*dto2)*q1*wy+P45*(dto2*dto2)*q1*wz+P37*(dto2*dto2)*q3*wy+P62*(dto2*dto2)*q2*wx+P54*(dto2*dto2)*q1*wz+P46*(dto2*dto2)*q2*wz+P63*(dto2*dto2)*q2*wy+P47*(dto2*dto2)*q3*wz+P72*(dto2*dto2)*q3*wx+P64*(dto2*dto2)*q2*wz+P73*(dto2*dto2)*q3*wy+P74*(dto2*dto2)*q3*wz+P23*(dto2*dto2)*wx*wy+P32*(dto2*dto2)*wx*wy+P24*(dto2*dto2)*wx*wz+P42*(dto2*dto2)*wx*wz+P34*(dto2*dto2)*wy*wz+P43*(dto2*dto2)*wy*wz;
  T[0][1] = P12+P67*(dto2*dto2)*(q2*q2)-P76*(dto2*dto2)*(q3*q3)-P21*(dto2*dto2)*(wx*wx)-P34*(dto2*dto2)*(wy*wy)+P43*(dto2*dto2)*(wz*wz)-P15*dto2*q0+P17*dto2*q2-P16*dto2*q3+P52*dto2*q1+P62*dto2*q2+P72*dto2*q3-P11*dto2*wx+P22*dto2*wx-P14*dto2*wy+P13*dto2*wz+P32*dto2*wy+P42*dto2*wz-P55*(dto2*dto2)*q0*q1-P65*(dto2*dto2)*q0*q2+P57*(dto2*dto2)*q1*q2-P56*(dto2*dto2)*q1*q3-P75*(dto2*dto2)*q0*q3-P66*(dto2*dto2)*q2*q3+P77*(dto2*dto2)*q2*q3-P25*(dto2*dto2)*q0*wx-P35*(dto2*dto2)*q0*wy+P27*(dto2*dto2)*q2*wx-P26*(dto2*dto2)*q3*wx-P51*(dto2*dto2)*q1*wx-P45*(dto2*dto2)*q0*wz+P37*(dto2*dto2)*q2*wy-P54*(dto2*dto2)*q1*wy-P36*(dto2*dto2)*q3*wy-P61*(dto2*dto2)*q2*wx+P53*(dto2*dto2)*q1*wz+P47*(dto2*dto2)*q2*wz-P64*(dto2*dto2)*q2*wy-P46*(dto2*dto2)*q3*wz-P71*(dto2*dto2)*q3*wx+P63*(dto2*dto2)*q2*wz-P74*(dto2*dto2)*q3*wy+P73*(dto2*dto2)*q3*wz-P24*(dto2*dto2)*wx*wy-P31*(dto2*dto2)*wx*wy+P23*(dto2*dto2)*wx*wz-P41*(dto2*dto2)*wx*wz+P33*(dto2*dto2)*wy*wz-P44*(dto2*dto2)*wy*wz;
  T[0][2] = P13-P57*(dto2*dto2)*(q1*q1)+P75*(dto2*dto2)*(q3*q3)+P24*(dto2*dto2)*(wx*wx)-P31*(dto2*dto2)*(wy*wy)-P42*(dto2*dto2)*(wz*wz)-P16*dto2*q0-P17*dto2*q1+P15*dto2*q3+P53*dto2*q1+P63*dto2*q2+P73*dto2*q3+P14*dto2*wx-P11*dto2*wy+P23*dto2*wx-P12*dto2*wz+P33*dto2*wy+P43*dto2*wz-P56*(dto2*dto2)*q0*q1-P66*(dto2*dto2)*q0*q2+P55*(dto2*dto2)*q1*q3-P67*(dto2*dto2)*q1*q2-P76*(dto2*dto2)*q0*q3+P65*(dto2*dto2)*q2*q3-P77*(dto2*dto2)*q1*q3-P26*(dto2*dto2)*q0*wx-P27*(dto2*dto2)*q1*wx-P36*(dto2*dto2)*q0*wy+P25*(dto2*dto2)*q3*wx-P37*(dto2*dto2)*q1*wy+P54*(dto2*dto2)*q1*wx-P46*(dto2*dto2)*q0*wz-P51*(dto2*dto2)*q1*wy+P35*(dto2*dto2)*q3*wy-P47*(dto2*dto2)*q1*wz-P52*(dto2*dto2)*q1*wz+P64*(dto2*dto2)*q2*wx-P61*(dto2*dto2)*q2*wy+P45*(dto2*dto2)*q3*wz-P62*(dto2*dto2)*q2*wz+P74*(dto2*dto2)*q3*wx-P71*(dto2*dto2)*q3*wy-P72*(dto2*dto2)*q3*wz-P21*(dto2*dto2)*wx*wy-P22*(dto2*dto2)*wx*wz+P34*(dto2*dto2)*wx*wy-P32*(dto2*dto2)*wy*wz+P44*(dto2*dto2)*wx*wz-P41*(dto2*dto2)*wy*wz;
  T[0][3] = P14+P56*(dto2*dto2)*(q1*q1)-P65*(dto2*dto2)*(q2*q2)-P23*(dto2*dto2)*(wx*wx)+P32*(dto2*dto2)*(wy*wy)-P41*(dto2*dto2)*(wz*wz)-P17*dto2*q0+P16*dto2*q1-P15*dto2*q2+P54*dto2*q1+P64*dto2*q2+P74*dto2*q3-P13*dto2*wx+P12*dto2*wy+P24*dto2*wx-P11*dto2*wz+P34*dto2*wy+P44*dto2*wz-P57*(dto2*dto2)*q0*q1-P55*(dto2*dto2)*q1*q2-P67*(dto2*dto2)*q0*q2+P66*(dto2*dto2)*q1*q2-P77*(dto2*dto2)*q0*q3+P76*(dto2*dto2)*q1*q3-P75*(dto2*dto2)*q2*q3-P27*(dto2*dto2)*q0*wx+P26*(dto2*dto2)*q1*wx-P25*(dto2*dto2)*q2*wx-P37*(dto2*dto2)*q0*wy+P36*(dto2*dto2)*q1*wy-P53*(dto2*dto2)*q1*wx-P35*(dto2*dto2)*q2*wy-P47*(dto2*dto2)*q0*wz+P52*(dto2*dto2)*q1*wy+P46*(dto2*dto2)*q1*wz-P51*(dto2*dto2)*q1*wz-P63*(dto2*dto2)*q2*wx-P45*(dto2*dto2)*q2*wz+P62*(dto2*dto2)*q2*wy-P61*(dto2*dto2)*q2*wz-P73*(dto2*dto2)*q3*wx+P72*(dto2*dto2)*q3*wy-P71*(dto2*dto2)*q3*wz+P22*(dto2*dto2)*wx*wy-P21*(dto2*dto2)*wx*wz-P33*(dto2*dto2)*wx*wy-P31*(dto2*dto2)*wy*wz-P43*(dto2*dto2)*wx*wz+P42*(dto2*dto2)*wy*wz;
  T[0][4] = P15+P55*dto2*q1+P65*dto2*q2+P75*dto2*q3+P25*dto2*wx+P35*dto2*wy+P45*dto2*wz;
  T[0][5] = P16+P56*dto2*q1+P66*dto2*q2+P76*dto2*q3+P26*dto2*wx+P36*dto2*wy+P46*dto2*wz;
  T[0][6] = P17+P57*dto2*q1+P67*dto2*q2+P77*dto2*q3+P27*dto2*wx+P37*dto2*wy+P47*dto2*wz;
  T[0][7] = P18+P58*dto2*q1+P68*dto2*q2+P78*dto2*q3+P28*dto2*wx+P38*dto2*wy+P48*dto2*wz;
  T[0]∞ = P19+P59*dto2*q1+P69*dto2*q2+P79*dto2*q3+P29*dto2*wx+P39*dto2*wy+P49*dto2*wz;
  T[0][9] = P110+P510*dto2*q1+P610*dto2*q2+P710*dto2*q3+P210*dto2*wx+P310*dto2*wy+P410*dto2*wz;
  T[1][0] = P21+P76*(dto2*dto2)*(q2*q2)-P67*(dto2*dto2)*(q3*q3)-P12*(dto2*dto2)*(wx*wx)-P43*(dto2*dto2)*(wy*wy)+P34*(dto2*dto2)*(wz*wz)+P25*dto2*q1+P26*dto2*q2-P51*dto2*q0+P27*dto2*q3-P61*dto2*q3+P71*dto2*q2-P11*dto2*wx+P22*dto2*wx+P23*dto2*wy+P24*dto2*wz+P31*dto2*wz-P41*dto2*wy-P55*(dto2*dto2)*q0*q1-P56*(dto2*dto2)*q0*q2-P57*(dto2*dto2)*q0*q3-P65*(dto2*dto2)*q1*q3+P75*(dto2*dto2)*q1*q2-P66*(dto2*dto2)*q2*q3+P77*(dto2*dto2)*q2*q3-P15*(dto2*dto2)*q1*wx-P16*(dto2*dto2)*q2*wx-P17*(dto2*dto2)*q3*wx-P52*(dto2*dto2)*q0*wx-P53*(dto2*dto2)*q0*wy+P35*(dto2*dto2)*q1*wz-P45*(dto2*dto2)*q1*wy-P54*(dto2*dto2)*q0*wz+P36*(dto2*dto2)*q2*wz-P46*(dto2*dto2)*q2*wy+P37*(dto2*dto2)*q3*wz-P47*(dto2*dto2)*q3*wy-P62*(dto2*dto2)*q3*wx+P72*(dto2*dto2)*q2*wx-P63*(dto2*dto2)*q3*wy+P73*(dto2*dto2)*q2*wy-P64*(dto2*dto2)*q3*wz+P74*(dto2*dto2)*q2*wz-P13*(dto2*dto2)*wx*wy-P14*(dto2*dto2)*wx*wz+P32*(dto2*dto2)*wx*wz-P42*(dto2*dto2)*wx*wy+P33*(dto2*dto2)*wy*wz-P44*(dto2*dto2)*wy*wz;
  T[1][1] = P22+P55*(dto2*dto2)*(q0*q0)+P66*(dto2*dto2)*(q3*q3)+P77*(dto2*dto2)*(q2*q2)+P11*(dto2*dto2)*(wx*wx)+P33*(dto2*dto2)*(wz*wz)+P44*(dto2*dto2)*(wy*wy)-P25*dto2*q0+P27*dto2*q2-P52*dto2*q0-P26*dto2*q3-P62*dto2*q3+P72*dto2*q2-P12*dto2*wx-P21*dto2*wx-P24*dto2*wy+P23*dto2*wz+P32*dto2*wz-P42*dto2*wy-P57*(dto2*dto2)*q0*q2+P56*(dto2*dto2)*q0*q3+P65*(dto2*dto2)*q0*q3-P75*(dto2*dto2)*q0*q2-P67*(dto2*dto2)*q2*q3-P76*(dto2*dto2)*q2*q3+P15*(dto2*dto2)*q0*wx-P17*(dto2*dto2)*q2*wx+P16*(dto2*dto2)*q3*wx+P51*(dto2*dto2)*q0*wx-P35*(dto2*dto2)*q0*wz+P45*(dto2*dto2)*q0*wy+P54*(dto2*dto2)*q0*wy-P53*(dto2*dto2)*q0*wz+P37*(dto2*dto2)*q2*wz-P47*(dto2*dto2)*q2*wy-P36*(dto2*dto2)*q3*wz+P46*(dto2*dto2)*q3*wy+P61*(dto2*dto2)*q3*wx-P71*(dto2*dto2)*q2*wx+P64*(dto2*dto2)*q3*wy-P74*(dto2*dto2)*q2*wy-P63*(dto2*dto2)*q3*wz+P73*(dto2*dto2)*q2*wz+P14*(dto2*dto2)*wx*wy-P13*(dto2*dto2)*wx*wz-P31*(dto2*dto2)*wx*wz+P41*(dto2*dto2)*wx*wy-P34*(dto2*dto2)*wy*wz-P43*(dto2*dto2)*wy*wz;
  T[1][2] = P23+P56*(dto2*dto2)*(q0*q0)-P65*(dto2*dto2)*(q3*q3)-P14*(dto2*dto2)*(wx*wx)+P41*(dto2*dto2)*(wy*wy)-P32*(dto2*dto2)*(wz*wz)-P26*dto2*q0-P27*dto2*q1-P53*dto2*q0+P25*dto2*q3-P63*dto2*q3+P73*dto2*q2-P13*dto2*wx+P24*dto2*wx-P21*dto2*wy-P22*dto2*wz+P33*dto2*wz-P43*dto2*wy+P57*(dto2*dto2)*q0*q1-P55*(dto2*dto2)*q0*q3+P66*(dto2*dto2)*q0*q3-P76*(dto2*dto2)*q0*q2+P67*(dto2*dto2)*q1*q3-P77*(dto2*dto2)*q1*q2+P75*(dto2*dto2)*q2*q3+P16*(dto2*dto2)*q0*wx+P17*(dto2*dto2)*q1*wx-P15*(dto2*dto2)*q3*wx-P54*(dto2*dto2)*q0*wx-P36*(dto2*dto2)*q0*wz+P46*(dto2*dto2)*q0*wy+P51*(dto2*dto2)*q0*wy-P37*(dto2*dto2)*q1*wz+P47*(dto2*dto2)*q1*wy+P52*(dto2*dto2)*q0*wz+P35*(dto2*dto2)*q3*wz-P45*(dto2*dto2)*q3*wy-P64*(dto2*dto2)*q3*wx+P74*(dto2*dto2)*q2*wx+P61*(dto2*dto2)*q3*wy-P71*(dto2*dto2)*q2*wy+P62*(dto2*dto2)*q3*wz-P72*(dto2*dto2)*q2*wz+P11*(dto2*dto2)*wx*wy+P12*(dto2*dto2)*wx*wz+P34*(dto2*dto2)*wx*wz-P44*(dto2*dto2)*wx*wy-P31*(dto2*dto2)*wy*wz+P42*(dto2*dto2)*wy*wz;
  T[1][3] = P24+P57*(dto2*dto2)*(q0*q0)-P75*(dto2*dto2)*(q2*q2)+P13*(dto2*dto2)*(wx*wx)-P31*(dto2*dto2)*(wz*wz)-P42*(dto2*dto2)*(wy*wy)-P27*dto2*q0+P26*dto2*q1-P25*dto2*q2-P54*dto2*q0-P64*dto2*q3+P74*dto2*q2-P14*dto2*wx-P23*dto2*wx+P22*dto2*wy-P21*dto2*wz+P34*dto2*wz-P44*dto2*wy-P56*(dto2*dto2)*q0*q1+P55*(dto2*dto2)*q0*q2+P67*(dto2*dto2)*q0*q3-P77*(dto2*dto2)*q0*q2-P66*(dto2*dto2)*q1*q3+P76*(dto2*dto2)*q1*q2+P65*(dto2*dto2)*q2*q3+P17*(dto2*dto2)*q0*wx-P16*(dto2*dto2)*q1*wx+P15*(dto2*dto2)*q2*wx+P53*(dto2*dto2)*q0*wx-P37*(dto2*dto2)*q0*wz+P47*(dto2*dto2)*q0*wy-P52*(dto2*dto2)*q0*wy+P36*(dto2*dto2)*q1*wz-P46*(dto2*dto2)*q1*wy+P51*(dto2*dto2)*q0*wz-P35*(dto2*dto2)*q2*wz+P45*(dto2*dto2)*q2*wy+P63*(dto2*dto2)*q3*wx-P73*(dto2*dto2)*q2*wx-P62*(dto2*dto2)*q3*wy+P72*(dto2*dto2)*q2*wy+P61*(dto2*dto2)*q3*wz-P71*(dto2*dto2)*q2*wz-P12*(dto2*dto2)*wx*wy+P11*(dto2*dto2)*wx*wz-P33*(dto2*dto2)*wx*wz+P43*(dto2*dto2)*wx*wy+P32*(dto2*dto2)*wy*wz+P41*(dto2*dto2)*wy*wz;
  T[1][4] = P25-P55*dto2*q0-P65*dto2*q3+P75*dto2*q2-P15*dto2*wx+P35*dto2*wz-P45*dto2*wy;
  T[1][5] = P26-P56*dto2*q0-P66*dto2*q3+P76*dto2*q2-P16*dto2*wx+P36*dto2*wz-P46*dto2*wy;
  T[1][6] = P27-P57*dto2*q0-P67*dto2*q3+P77*dto2*q2-P17*dto2*wx+P37*dto2*wz-P47*dto2*wy;
  T[1][7] = P28-P58*dto2*q0-P68*dto2*q3+P78*dto2*q2-P18*dto2*wx+P38*dto2*wz-P48*dto2*wy;
  T[1]∞ = P29-P59*dto2*q0-P69*dto2*q3+P79*dto2*q2-P19*dto2*wx+P39*dto2*wz-P49*dto2*wy;
  T[1][9] = P210-P510*dto2*q0-P610*dto2*q3+P710*dto2*q2-P110*dto2*wx+P310*dto2*wz-P410*dto2*wy;
  T[2][0] = P31-P75*(dto2*dto2)*(q1*q1)+P57*(dto2*dto2)*(q3*q3)-P13*(dto2*dto2)*(wy*wy)+P42*(dto2*dto2)*(wx*wx)-P24*(dto2*dto2)*(wz*wz)+P35*dto2*q1+P36*dto2*q2-P61*dto2*q0+P37*dto2*q3+P51*dto2*q3-P71*dto2*q1-P11*dto2*wy+P32*dto2*wx-P21*dto2*wz+P41*dto2*wx+P33*dto2*wy+P34*dto2*wz-P65*(dto2*dto2)*q0*q1-P66*(dto2*dto2)*q0*q2+P55*(dto2*dto2)*q1*q3-P67*(dto2*dto2)*q0*q3+P56*(dto2*dto2)*q2*q3-P76*(dto2*dto2)*q1*q2-P77*(dto2*dto2)*q1*q3-P15*(dto2*dto2)*q1*wy-P16*(dto2*dto2)*q2*wy-P25*(dto2*dto2)*q1*wz+P45*(dto2*dto2)*q1*wx-P17*(dto2*dto2)*q3*wy-P62*(dto2*dto2)*q0*wx-P26*(dto2*dto2)*q2*wz+P46*(dto2*dto2)*q2*wx-P63*(dto2*dto2)*q0*wy-P27*(dto2*dto2)*q3*wz+P47*(dto2*dto2)*q3*wx+P52*(dto2*dto2)*q3*wx-P72*(dto2*dto2)*q1*wx-P64*(dto2*dto2)*q0*wz+P53*(dto2*dto2)*q3*wy-P73*(dto2*dto2)*q1*wy+P54*(dto2*dto2)*q3*wz-P74*(dto2*dto2)*q1*wz-P12*(dto2*dto2)*wx*wy-P22*(dto2*dto2)*wx*wz-P14*(dto2*dto2)*wy*wz-P23*(dto2*dto2)*wy*wz+P43*(dto2*dto2)*wx*wy+P44*(dto2*dto2)*wx*wz;
  T[2][1] = P32+P65*(dto2*dto2)*(q0*q0)-P56*(dto2*dto2)*(q3*q3)+P14*(dto2*dto2)*(wy*wy)-P41*(dto2*dto2)*(wx*wx)-P23*(dto2*dto2)*(wz*wz)-P35*dto2*q0+P37*dto2*q2-P62*dto2*q0-P36*dto2*q3+P52*dto2*q3-P72*dto2*q1-P12*dto2*wy-P31*dto2*wx-P22*dto2*wz+P42*dto2*wx-P34*dto2*wy+P33*dto2*wz-P55*(dto2*dto2)*q0*q3+P75*(dto2*dto2)*q0*q1-P67*(dto2*dto2)*q0*q2+P66*(dto2*dto2)*q0*q3+P57*(dto2*dto2)*q2*q3-P77*(dto2*dto2)*q1*q2+P76*(dto2*dto2)*q1*q3+P15*(dto2*dto2)*q0*wy+P25*(dto2*dto2)*q0*wz-P45*(dto2*dto2)*q0*wx-P17*(dto2*dto2)*q2*wy+P16*(dto2*dto2)*q3*wy+P61*(dto2*dto2)*q0*wx-P27*(dto2*dto2)*q2*wz+P47*(dto2*dto2)*q2*wx+P64*(dto2*dto2)*q0*wy+P26*(dto2*dto2)*q3*wz-P46*(dto2*dto2)*q3*wx-P51*(dto2*dto2)*q3*wx+P71*(dto2*dto2)*q1*wx-P63*(dto2*dto2)*q0*wz-P54*(dto2*dto2)*q3*wy+P74*(dto2*dto2)*q1*wy+P53*(dto2*dto2)*q3*wz-P73*(dto2*dto2)*q1*wz+P11*(dto2*dto2)*wx*wy+P21*(dto2*dto2)*wx*wz-P13*(dto2*dto2)*wy*wz+P24*(dto2*dto2)*wy*wz-P44*(dto2*dto2)*wx*wy+P43*(dto2*dto2)*wx*wz;
  T[2][2] = P33+P66*(dto2*dto2)*(q0*q0)+P55*(dto2*dto2)*(q3*q3)+P77*(dto2*dto2)*(q1*q1)+P11*(dto2*dto2)*(wy*wy)+P22*(dto2*dto2)*(wz*wz)+P44*(dto2*dto2)*(wx*wx)-P36*dto2*q0-P37*dto2*q1-P63*dto2*q0+P35*dto2*q3+P53*dto2*q3-P73*dto2*q1-P13*dto2*wy+P34*dto2*wx-P31*dto2*wy-P23*dto2*wz+P43*dto2*wx-P32*dto2*wz+P67*(dto2*dto2)*q0*q1-P56*(dto2*dto2)*q0*q3+P76*(dto2*dto2)*q0*q1-P65*(dto2*dto2)*q0*q3-P57*(dto2*dto2)*q1*q3-P75*(dto2*dto2)*q1*q3+P16*(dto2*dto2)*q0*wy+P17*(dto2*dto2)*q1*wy+P26*(dto2*dto2)*q0*wz-P46*(dto2*dto2)*q0*wx-P15*(dto2*dto2)*q3*wy+P27*(dto2*dto2)*q1*wz-P47*(dto2*dto2)*q1*wx-P64*(dto2*dto2)*q0*wx+P61*(dto2*dto2)*q0*wy-P25*(dto2*dto2)*q3*wz+P45*(dto2*dto2)*q3*wx+P62*(dto2*dto2)*q0*wz+P54*(dto2*dto2)*q3*wx-P74*(dto2*dto2)*q1*wx-P51*(dto2*dto2)*q3*wy+P71*(dto2*dto2)*q1*wy-P52*(dto2*dto2)*q3*wz+P72*(dto2*dto2)*q1*wz-P14*(dto2*dto2)*wx*wy+P12*(dto2*dto2)*wy*wz-P24*(dto2*dto2)*wx*wz+P21*(dto2*dto2)*wy*wz-P41*(dto2*dto2)*wx*wy-P42*(dto2*dto2)*wx*wz;
  T[2][3] = P34+P67*(dto2*dto2)*(q0*q0)-P76*(dto2*dto2)*(q1*q1)-P12*(dto2*dto2)*(wy*wy)+P21*(dto2*dto2)*(wz*wz)-P43*(dto2*dto2)*(wx*wx)-P37*dto2*q0+P36*dto2*q1-P35*dto2*q2-P64*dto2*q0+P54*dto2*q3-P74*dto2*q1-P14*dto2*wy-P33*dto2*wx+P32*dto2*wy-P24*dto2*wz+P44*dto2*wx-P31*dto2*wz-P66*(dto2*dto2)*q0*q1+P65*(dto2*dto2)*q0*q2-P57*(dto2*dto2)*q0*q3+P77*(dto2*dto2)*q0*q1+P56*(dto2*dto2)*q1*q3-P55*(dto2*dto2)*q2*q3+P75*(dto2*dto2)*q1*q2+P17*(dto2*dto2)*q0*wy-P16*(dto2*dto2)*q1*wy+P15*(dto2*dto2)*q2*wy+P27*(dto2*dto2)*q0*wz-P47*(dto2*dto2)*q0*wx-P26*(dto2*dto2)*q1*wz+P46*(dto2*dto2)*q1*wx+P63*(dto2*dto2)*q0*wx+P25*(dto2*dto2)*q2*wz-P45*(dto2*dto2)*q2*wx-P62*(dto2*dto2)*q0*wy+P61*(dto2*dto2)*q0*wz-P53*(dto2*dto2)*q3*wx+P73*(dto2*dto2)*q1*wx+P52*(dto2*dto2)*q3*wy-P72*(dto2*dto2)*q1*wy-P51*(dto2*dto2)*q3*wz+P71*(dto2*dto2)*q1*wz+P13*(dto2*dto2)*wx*wy+P11*(dto2*dto2)*wy*wz+P23*(dto2*dto2)*wx*wz-P22*(dto2*dto2)*wy*wz+P42*(dto2*dto2)*wx*wy-P41*(dto2*dto2)*wx*wz;
  T[2][4] = P35-P65*dto2*q0+P55*dto2*q3-P75*dto2*q1-P15*dto2*wy-P25*dto2*wz+P45*dto2*wx;
  T[2][5] = P36-P66*dto2*q0+P56*dto2*q3-P76*dto2*q1-P16*dto2*wy-P26*dto2*wz+P46*dto2*wx;
  T[2][6] = P37-P67*dto2*q0+P57*dto2*q3-P77*dto2*q1-P17*dto2*wy-P27*dto2*wz+P47*dto2*wx;
  T[2][7] = P38-P68*dto2*q0+P58*dto2*q3-P78*dto2*q1-P18*dto2*wy-P28*dto2*wz+P48*dto2*wx;
  T[2]∞ = P39-P69*dto2*q0+P59*dto2*q3-P79*dto2*q1-P19*dto2*wy-P29*dto2*wz+P49*dto2*wx;
  T[2][9] = P310-P610*dto2*q0+P510*dto2*q3-P710*dto2*q1-P110*dto2*wy-P210*dto2*wz+P410*dto2*wx;
  T[3][0] = P41+P65*(dto2*dto2)*(q1*q1)-P56*(dto2*dto2)*(q2*q2)-P32*(dto2*dto2)*(wx*wx)+P23*(dto2*dto2)*(wy*wy)-P14*(dto2*dto2)*(wz*wz)+P45*dto2*q1+P46*dto2*q2-P51*dto2*q2+P61*dto2*q1-P71*dto2*q0+P47*dto2*q3-P11*dto2*wz+P21*dto2*wy-P31*dto2*wx+P42*dto2*wx+P43*dto2*wy+P44*dto2*wz-P55*(dto2*dto2)*q1*q2-P75*(dto2*dto2)*q0*q1+P66*(dto2*dto2)*q1*q2-P76*(dto2*dto2)*q0*q2-P57*(dto2*dto2)*q2*q3+P67*(dto2*dto2)*q1*q3-P77*(dto2*dto2)*q0*q3-P15*(dto2*dto2)*q1*wz+P25*(dto2*dto2)*q1*wy-P35*(dto2*dto2)*q1*wx-P16*(dto2*dto2)*q2*wz+P26*(dto2*dto2)*q2*wy-P36*(dto2*dto2)*q2*wx-P17*(dto2*dto2)*q3*wz+P27*(dto2*dto2)*q3*wy-P37*(dto2*dto2)*q3*wx-P52*(dto2*dto2)*q2*wx+P62*(dto2*dto2)*q1*wx-P72*(dto2*dto2)*q0*wx-P53*(dto2*dto2)*q2*wy+P63*(dto2*dto2)*q1*wy-P73*(dto2*dto2)*q0*wy-P54*(dto2*dto2)*q2*wz+P64*(dto2*dto2)*q1*wz-P74*(dto2*dto2)*q0*wz-P12*(dto2*dto2)*wx*wz+P22*(dto2*dto2)*wx*wy-P13*(dto2*dto2)*wy*wz-P33*(dto2*dto2)*wx*wy+P24*(dto2*dto2)*wy*wz-P34*(dto2*dto2)*wx*wz;
  T[3][1] = P42+P75*(dto2*dto2)*(q0*q0)-P57*(dto2*dto2)*(q2*q2)+P31*(dto2*dto2)*(wx*wx)-P13*(dto2*dto2)*(wz*wz)-P24*(dto2*dto2)*(wy*wy)-P45*dto2*q0+P47*dto2*q2-P52*dto2*q2+P62*dto2*q1-P72*dto2*q0-P46*dto2*q3-P12*dto2*wz+P22*dto2*wy-P32*dto2*wx-P41*dto2*wx-P44*dto2*wy+P43*dto2*wz+P55*(dto2*dto2)*q0*q2-P65*(dto2*dto2)*q0*q1+P67*(dto2*dto2)*q1*q2-P77*(dto2*dto2)*q0*q2+P56*(dto2*dto2)*q2*q3-P66*(dto2*dto2)*q1*q3+P76*(dto2*dto2)*q0*q3+P15*(dto2*dto2)*q0*wz-P25*(dto2*dto2)*q0*wy+P35*(dto2*dto2)*q0*wx-P17*(dto2*dto2)*q2*wz+P27*(dto2*dto2)*q2*wy-P37*(dto2*dto2)*q2*wx+P16*(dto2*dto2)*q3*wz-P26*(dto2*dto2)*q3*wy+P36*(dto2*dto2)*q3*wx+P51*(dto2*dto2)*q2*wx-P61*(dto2*dto2)*q1*wx+P71*(dto2*dto2)*q0*wx+P54*(dto2*dto2)*q2*wy-P64*(dto2*dto2)*q1*wy+P74*(dto2*dto2)*q0*wy-P53*(dto2*dto2)*q2*wz+P63*(dto2*dto2)*q1*wz-P73*(dto2*dto2)*q0*wz+P11*(dto2*dto2)*wx*wz-P21*(dto2*dto2)*wx*wy+P14*(dto2*dto2)*wy*wz+P34*(dto2*dto2)*wx*wy+P23*(dto2*dto2)*wy*wz-P33*(dto2*dto2)*wx*wz;
  T[3][2] = P43+P76*(dto2*dto2)*(q0*q0)-P67*(dto2*dto2)*(q1*q1)-P21*(dto2*dto2)*(wy*wy)+P12*(dto2*dto2)*(wz*wz)-P34*(dto2*dto2)*(wx*wx)-P46*dto2*q0-P47*dto2*q1-P53*dto2*q2+P63*dto2*q1-P73*dto2*q0+P45*dto2*q3-P13*dto2*wz+P23*dto2*wy-P33*dto2*wx+P44*dto2*wx-P41*dto2*wy-P42*dto2*wz+P56*(dto2*dto2)*q0*q2-P66*(dto2*dto2)*q0*q1+P57*(dto2*dto2)*q1*q2+P77*(dto2*dto2)*q0*q1-P55*(dto2*dto2)*q2*q3+P65*(dto2*dto2)*q1*q3-P75*(dto2*dto2)*q0*q3+P16*(dto2*dto2)*q0*wz-P26*(dto2*dto2)*q0*wy+P36*(dto2*dto2)*q0*wx+P17*(dto2*dto2)*q1*wz-P27*(dto2*dto2)*q1*wy+P37*(dto2*dto2)*q1*wx-P15*(dto2*dto2)*q3*wz+P25*(dto2*dto2)*q3*wy-P35*(dto2*dto2)*q3*wx-P54*(dto2*dto2)*q2*wx+P64*(dto2*dto2)*q1*wx-P74*(dto2*dto2)*q0*wx+P51*(dto2*dto2)*q2*wy-P61*(dto2*dto2)*q1*wy+P71*(dto2*dto2)*q0*wy+P52*(dto2*dto2)*q2*wz-P62*(dto2*dto2)*q1*wz+P72*(dto2*dto2)*q0*wz-P14*(dto2*dto2)*wx*wz+P24*(dto2*dto2)*wx*wy+P11*(dto2*dto2)*wy*wz+P31*(dto2*dto2)*wx*wy-P22*(dto2*dto2)*wy*wz+P32*(dto2*dto2)*wx*wz;
  T[3][3] = P44+P55*(dto2*dto2)*(q2*q2)+P66*(dto2*dto2)*(q1*q1)+P77*(dto2*dto2)*(q0*q0)+P11*(dto2*dto2)*(wz*wz)+P22*(dto2*dto2)*(wy*wy)+P33*(dto2*dto2)*(wx*wx)-P47*dto2*q0+P46*dto2*q1-P45*dto2*q2-P54*dto2*q2+P64*dto2*q1-P74*dto2*q0-P14*dto2*wz+P24*dto2*wy-P34*dto2*wx-P43*dto2*wx+P42*dto2*wy-P41*dto2*wz+P57*(dto2*dto2)*q0*q2-P67*(dto2*dto2)*q0*q1-P56*(dto2*dto2)*q1*q2-P76*(dto2*dto2)*q0*q1-P65*(dto2*dto2)*q1*q2+P75*(dto2*dto2)*q0*q2+P17*(dto2*dto2)*q0*wz-P27*(dto2*dto2)*q0*wy+P37*(dto2*dto2)*q0*wx-P16*(dto2*dto2)*q1*wz+P26*(dto2*dto2)*q1*wy-P36*(dto2*dto2)*q1*wx+P15*(dto2*dto2)*q2*wz-P25*(dto2*dto2)*q2*wy+P35*(dto2*dto2)*q2*wx+P53*(dto2*dto2)*q2*wx-P63*(dto2*dto2)*q1*wx+P73*(dto2*dto2)*q0*wx-P52*(dto2*dto2)*q2*wy+P62*(dto2*dto2)*q1*wy-P72*(dto2*dto2)*q0*wy+P51*(dto2*dto2)*q2*wz-P61*(dto2*dto2)*q1*wz+P71*(dto2*dto2)*q0*wz+P13*(dto2*dto2)*wx*wz-P23*(dto2*dto2)*wx*wy-P12*(dto2*dto2)*wy*wz-P32*(dto2*dto2)*wx*wy-P21*(dto2*dto2)*wy*wz+P31*(dto2*dto2)*wx*wz;
  T[3][4] = P45-P55*dto2*q2+P65*dto2*q1-P75*dto2*q0-P15*dto2*wz+P25*dto2*wy-P35*dto2*wx;
  T[3][5] = P46-P56*dto2*q2+P66*dto2*q1-P76*dto2*q0-P16*dto2*wz+P26*dto2*wy-P36*dto2*wx;
  T[3][6] = P47-P57*dto2*q2+P67*dto2*q1-P77*dto2*q0-P17*dto2*wz+P27*dto2*wy-P37*dto2*wx;
  T[3][7] = P48-P58*dto2*q2+P68*dto2*q1-P78*dto2*q0-P18*dto2*wz+P28*dto2*wy-P38*dto2*wx;
  T[3]∞ = P49-P59*dto2*q2+P69*dto2*q1-P79*dto2*q0-P19*dto2*wz+P29*dto2*wy-P39*dto2*wx;
  T[3][9] = P410-P510*dto2*q2+P610*dto2*q1-P710*dto2*q0-P110*dto2*wz+P210*dto2*wy-P310*dto2*wx;
  T[4][0] = P51+P55*dto2*q1+P56*dto2*q2+P57*dto2*q3+P52*dto2*wx+P53*dto2*wy+P54*dto2*wz;
  T[4][1] = P52-P55*dto2*q0+P57*dto2*q2-P56*dto2*q3-P51*dto2*wx-P54*dto2*wy+P53*dto2*wz;
  T[4][2] = P53-P56*dto2*q0-P57*dto2*q1+P55*dto2*q3+P54*dto2*wx-P51*dto2*wy-P52*dto2*wz;
  T[4][3] = P54-P57*dto2*q0+P56*dto2*q1-P55*dto2*q2-P53*dto2*wx+P52*dto2*wy-P51*dto2*wz;
  T[4][4] = P55;
  T[4][5] = P56;
  T[4][6] = P57;
  T[4][7] = P58;
  T[4]∞ = P59;
  T[4][9] = P510;
  T[5][0] = P61+P65*dto2*q1+P66*dto2*q2+P67*dto2*q3+P62*dto2*wx+P63*dto2*wy+P64*dto2*wz;
  T[5][1] = P62-P65*dto2*q0+P67*dto2*q2-P66*dto2*q3-P61*dto2*wx-P64*dto2*wy+P63*dto2*wz;
  T[5][2] = P63-P66*dto2*q0-P67*dto2*q1+P65*dto2*q3+P64*dto2*wx-P61*dto2*wy-P62*dto2*wz;
  T[5][3] = P64-P67*dto2*q0+P66*dto2*q1-P65*dto2*q2-P63*dto2*wx+P62*dto2*wy-P61*dto2*wz;
  T[5][4] = P65;
  T[5][5] = P66;
  T[5][6] = P67;
  T[5][7] = P68;
  T[5]∞ = P69;
  T[5][9] = P610;
  T[6][0] = P71+P75*dto2*q1+P76*dto2*q2+P77*dto2*q3+P72*dto2*wx+P73*dto2*wy+P74*dto2*wz;
  T[6][1] = P72-P75*dto2*q0+P77*dto2*q2-P76*dto2*q3-P71*dto2*wx-P74*dto2*wy+P73*dto2*wz;
  T[6][2] = P73-P76*dto2*q0-P77*dto2*q1+P75*dto2*q3+P74*dto2*wx-P71*dto2*wy-P72*dto2*wz;
  T[6][3] = P74-P77*dto2*q0+P76*dto2*q1-P75*dto2*q2-P73*dto2*wx+P72*dto2*wy-P71*dto2*wz;
  T[6][4] = P75;
  T[6][5] = P76;
  T[6][6] = P77;
  T[6][7] = P78;
  T[6]∞ = P79;
  T[6][9] = P710;
  T[7][0] = P81+P85*dto2*q1+P86*dto2*q2+P87*dto2*q3+P82*dto2*wx+P83*dto2*wy+P84*dto2*wz;
  T[7][1] = P82-P85*dto2*q0+P87*dto2*q2-P86*dto2*q3-P81*dto2*wx-P84*dto2*wy+P83*dto2*wz;
  T[7][2] = P83-P86*dto2*q0-P87*dto2*q1+P85*dto2*q3+P84*dto2*wx-P81*dto2*wy-P82*dto2*wz;
  T[7][3] = P84-P87*dto2*q0+P86*dto2*q1-P85*dto2*q2-P83*dto2*wx+P82*dto2*wy-P81*dto2*wz;
  T[7][4] = P85;
  T[7][5] = P86;
  T[7][6] = P87;
  T[7][7] = P88;
  T[7]∞ = P89;
  T[7][9] = P810;
  T[8][0] = P91+P95*dto2*q1+P96*dto2*q2+P97*dto2*q3+P92*dto2*wx+P93*dto2*wy+P94*dto2*wz;
  T[8][1] = P92-P95*dto2*q0+P97*dto2*q2-P96*dto2*q3-P91*dto2*wx-P94*dto2*wy+P93*dto2*wz;
  T[8][2] = P93-P96*dto2*q0-P97*dto2*q1+P95*dto2*q3+P94*dto2*wx-P91*dto2*wy-P92*dto2*wz;
  T[8][3] = P94-P97*dto2*q0+P96*dto2*q1-P95*dto2*q2-P93*dto2*wx+P92*dto2*wy-P91*dto2*wz;
  T[8][4] = P95;
  T[8][5] = P96;
  T[8][6] = P97;
  T[8][7] = P98;
  T[8]∞ = P99;
  T[8][9] = P910;
  T[9][0] = P101+P105*dto2*q1+P106*dto2*q2+P107*dto2*q3+P102*dto2*wx+P103*dto2*wy+P104*dto2*wz;
  T[9][1] = P102-P105*dto2*q0+P107*dto2*q2-P106*dto2*q3-P101*dto2*wx-P104*dto2*wy+P103*dto2*wz;
  T[9][2] = P103-P106*dto2*q0-P107*dto2*q1+P105*dto2*q3+P104*dto2*wx-P101*dto2*wy-P102*dto2*wz;
  T[9][3] = P104-P107*dto2*q0+P106*dto2*q1-P105*dto2*q2-P103*dto2*wx+P102*dto2*wy-P101*dto2*wz;
  T[9][4] = P105;
  T[9][5] = P106;
  T[9][6] = P107;
  T[9][7] = P108;
  T[9]∞ = P109;
  T[9][9] = P1010;
Användarvisningsbild
Greve Hamilton
EF Sponsor
Inlägg: 544
Blev medlem: 4 september 2004, 15:03:35
Ort: GBG

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av Greve Hamilton »

Mycket intressant arbete! Jag läser gärna artikeln sedan när den är klar.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av Korken »

Greve Hamilton: Det ska gå att fixa. :) jag kommer lägga upp den här när jag får.

Jag kan berätta att artikeln är klar och inskickad!
Tyvärr så får jag inte lägga upp den förns vi vet om den vart accepterad eller inte, hade något att göra med konfidalitetsgrejer som jag inte riktigt förstår mig på.
Nu är det tillbaka till verkligheten och försöka komma igång med programmeringen igen efter ganska mycket tid som det har stått stilla. :)

Kan tillägga att sista HW versionen (2.2) är nu klar med bättre footprints och ska underlätta lödning!
Kommer beställa hem 10 kort och montera ett för att se om alla förändringar är så bra som jag hoppas på. :)

Hej hå, nu kör vi på! :D
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av Korken »

Nu har jag krigat länge med MPU6050n och skulle behöva lite hjälp!
Jag har hållit på att bara testa och se så att allt data som kommer ut ur den ser vettigt ut och med dessa inställningar:

Kod: Markera allt

	/* Set internal clock source and Sleep mode */
	send[0] = MPU6050_RA_PWR_MGMT_1; /* Power management register 1*/
	send[1] = 0b00000001; /* X gyro as PLL reference, sleep disabled */
	I2C_MasterTransferData(I2C2, &Setup, I2C_TRANSFER_POLLING);

	/* Set Gyro range */
	send[0] = MPU6050_RA_GYRO_CONFIG; /* Gyro configuration register */
	send[1] = 0b00011000; /* range = +-2000 deg/s */
	I2C_MasterTransferData(I2C2, &Setup, I2C_TRANSFER_POLLING);

	/* Set Accelerometer range */
	send[0] = MPU6050_RA_ACCEL_CONFIG; /* Accel configuration register */
	send[1] = 0b00011000; /* range = +-16g */
	I2C_MasterTransferData(I2C2, &Setup, I2C_TRANSFER_POLLING);

	/* Set Digital Low-Pass Filter */
	send[0] = MPU6050_RA_CONFIG; /* Configuration register */
	send[1] = 0b00000010; /* DLP level = 2 -> DLP cutoff = ~95Hz*/
	I2C_MasterTransferData(I2C2, &Setup, I2C_TRANSFER_POLLING);

	/* Set Sample Rate */
	send[0] = MPU6050_RA_SMPLRT_DIV; /* Sample rate register */
	send[1] = 4; /* Sample at 200Hz -> 1kHz / (1 + SMPLRT) -> SMPLRT = 4 */
	I2C_MasterTransferData(I2C2, &Setup, I2C_TRANSFER_POLLING);

	/* Set interrupt pin config */
	send[0] = MPU6050_RA_INT_PIN_CFG; /* Interrupt pin register */
	send[1] = 0b00010000; /* INT active high, push-pull, 50us pulse, any read clears interrupt */
	I2C_MasterTransferData(I2C2, &Setup, I2C_TRANSFER_POLLING);

	/* Set interrupts */
	send[0] = MPU6050_RA_INT_ENABLE; /* Interrupt enable register */
	send[1] = 0x01; /* Data ready interrupt */
	I2C_MasterTransferData(I2C2, &Setup, I2C_TRANSFER_POLLING);
Jag har då +- 16g (2048LSB/g) som känslighet på accelerometern men om jag bara lägger den på bordet så får jag ett absolutbelopp av ca 1024 (|a| = sqrt(x^2 + y^2 + z^2)), dvs 0.5g.
Förstår någon varför jag får detta? Med 2048LSB/g så borde absolutbeloppet vara ca 2048.
Samma gäller alla inställningar av acceleration, det blir x LSB/g genom 2 som jag får ut när den bara ligger stilla och jag tror inte vi har halv acceleration i Sverige.

Tankar, idéer, tips om varför det blir såhär?

Register Map: http://invensense.com/mems/gyro/documen ... -6000A.pdf
Användarvisningsbild
lond
Inlägg: 3541
Blev medlem: 23 september 2009, 11:52:45
Ort: Hyssna

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av lond »

Skall kolla i min kod när kommer hem från jobbet.

\\\ Marcus
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Korkens styrkort för multirotors (KFly), Rev.2 på sidan

Inlägg av Korken »

Tack Marcus, gör gärna det! :D

Jag kan tillägga också att alla axlarna har (för någon konstig anledning) bytt tecken mot databladet. Har man så att tex X-axeln pekar nedåt så får jag negativ acceleration, men jag accelererar mot centrum så den borde vara positiv.
Detta gäller för alla axlar. Kanske hjälper till i att hitta mitt fel. :humm:

Edit: Det man blir orolig för är att gyromätningarna inte heller stämmer, för de måste stämma för att filtret ska fungera.
Accelerometern kan jag bara kalibrera, men gyrot är mycket svårare att se om det stämmer eller inte. :?
Skriv svar