Sida 12 av 34

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

Postat: 4 oktober 2012, 23:54:52
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

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

Postat: 5 oktober 2012, 14:42:20
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?

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

Postat: 5 oktober 2012, 15:37:27
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.

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

Postat: 18 oktober 2012, 23:38:31
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!

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

Postat: 26 oktober 2012, 21:24:02
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! :)

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

Postat: 26 oktober 2012, 21:27:31
av PeterH
Lycka till 8)

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

Postat: 26 oktober 2012, 22:04:18
av Andax
Har ni matlab? Om du kör symbolic toolbox borde du kunna få den att spotta ut ett förenklat, direkt uttryck.

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

Postat: 26 oktober 2012, 22:55:45
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.

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

Postat: 26 oktober 2012, 23:20:04
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"

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

Postat: 26 oktober 2012, 23:34:04
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;

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

Postat: 28 oktober 2012, 16:08:42
av Greve Hamilton
Mycket intressant arbete! Jag läser gärna artikeln sedan när den är klar.

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

Postat: 30 oktober 2012, 22:36:39
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

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

Postat: 7 november 2012, 10:10:33
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

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

Postat: 7 november 2012, 11:48:06
av lond
Skall kolla i min kod när kommer hem från jobbet.

\\\ Marcus

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

Postat: 7 november 2012, 12:08:43
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. :?