Sida 1 av 1

Accelerometer

Postat: 5 april 2021, 23:26:48
av Shimonu
Har påbörjat ett enkelt projekt där jag tänkte utnyttja en accelerometer för att mäta hur något är vinklat. Jag kan hämta mätvärdena och allt verkar stämma. Jag hittade en sida som ger lite tips: https://www.hobbytronics.co.uk/accelerometer-info

Så jag försökte mig på att implementera utnyttjandet av två axlar så jag kan få god precision i ett plan, vinkel = atan(x/y). Vinklar jag mina breadboard där jag har allt monterat verkar det stämma. Vinkeln ökar eller minskar med rimliga värden. Tester jag däremot att ställa den på ända får jag inte riktigt 90 grader eller pi/2 utan det blir något under, kring 70 grader och jag måste vinkla över en del för att jag ska få till 90 grader ut. Det jag testade med var vinkeln mellan x och z då det var enklast när kortet ligger ner men när jag testar x och y axlarna verkar jag få korrekt resultat. Så varför beter sig z-axeln annorlunda? Är det något knas eller något jag behöver hantera?

Det är en MPU9250 och manualen säger: "When the device is placed on a flat surface, it will measure 0g on the X- and Y-axes and +1g on the Z-axis."
Ligger den på bordet visar den ett råvärde kring 1200 på z-axeln men vrider jag så x eller y pekar ner visar de istället kring 1000 eller strax under.

Re: Accelerometer

Postat: 6 april 2021, 19:36:00
av agehall
Och hur läser du av sensorn? Vad säger självtestvärdena den kan leverera? Vad är X,Y och Z-offset-registren satta till?

Re: Accelerometer

Postat: 6 april 2021, 19:54:44
av Icecap
Kanske man ska kompensera för den lokala tyngdkraft vid att kalibrera datan som kommer.

Själv fick jag kalibrera mobilens kompass vid att vifta med den och då tyngdkraften är vad som mäts och att den varierar lite lokalt och och en del mellan ekvator och Sverige.

Re: Accelerometer

Postat: 6 april 2021, 20:02:00
av danei
Jag gissar att du utgår från att värdet 1000 motsvarar 1G i beräkningen. Stämmer det bättre om du använder värdena från kalibreringen? Uppenbarligen är ju inte 1000 1G i alla riktningar.

Re: Accelerometer

Postat: 8 april 2021, 00:29:34
av Shimonu
Sa lite fel i första inlägget, koden är lite gammal så mindes fel. Det var inte råa värden jag läste utan skalade, så 1000 motsvarade 1G som danei säger.

Jag klurade ut hur offset-registrena fungerade och satte värden baserat på hur mycket det skiljde sig från vad jag tyckte att det borde vara. Då tog jag också medel av 10 värden för att få något rimligt. Då kom jag ner ganska nära noll. Jag hade fortfarande någon ganska konstant offset kring 50-100 beroende på axel som jag inte förstod och det hårdkodade jag bort. Det verkar ge ganska bra värden nu. Däremot skulle jag väl vilja jobba vidare på det så jag slipper en kalibrering där enheten måste ligga stilla och förstå de hårdkodade värdena.

Finns det en best practice kring kalibrering? På telefoner får man ju vifta den som en 8 i luften men det kanske är mer användarvänligt än att behöva lägga ner telefonen och inte nödvändigtvis mer exakt?

Re: Accelerometer

Postat: 8 april 2021, 01:11:11
av AndLi
Är inte 8 viftandet för att kalibrera magnetfältssensorn som används till kompassen?

Skulle man kalibrera en Accelerometer skulle jag gissat att man sakta vill ha alla sidor nedåt så man kan utnyttja jordens dragningskraft som referens?
Att ha den bara liggandes platt på bordet ger väl egentligen bara en nollpunkt för X&Y och 1G för Z?

Re: Accelerometer

Postat: 8 april 2021, 13:00:05
av Icecap
Och igen: 1G är INTE den samma på olika ställen av jordklotet! Eller jo, som mätenhet är 1G väl definierat.

Men dragningskraften varierar mellan olika lokationer. Vid ekvator är den lägre och vid polerna högre. Detta borde kunde räknas ut vid att räkna ut den totala kraft-vektor och normalisera alla värden ut ifrån det värde.