Comments (238)
I am in the process of doing just that between the MAX2110X (no magnetometer), MPU9250, LSM9DS0, and BMX055. I will eventually get around to testing the LSM9DS1 and AK9912, et al. but I am starting detailed comparison testing with the four integrated motion sensors listed above.
I don't know what kind of error you are getting but my experience with the AK8963A embedded in the MPU9250 is that with proper bias calibration the data are pretty good. I have also had no problem with the LSM9DSX magnetometers nor the BMX055 but the latter is an odd duck in that the data are magnetic sense data plus a Hall resistance and the magnetic field has to be constructed out of these in software. Still, the resulting data seem OK. All qualitative. I will do quantitative comparisons in the next few weeks of accel, gyro, and mag as well as testing the different data inputs on the resulting open source sensor fusion quaternions, etc.
Right now I can tell you the MPU6500 (accel/gyro in the MPU9250) accelerometer has much lower jitter than the BMX055 accelerometer. I can't say much about the magnetometer relative performance yet but I would ask if your problem with the MPU9250 mag is that you have neglected the bias calibration; this will produce very bad results in any fusion solution.
from mpu6050.
from mpu6050.
from mpu6050.
from mpu6050.
from mpu6050.
from mpu6050.
from mpu6050.
from mpu6050.
First of all, the breakout boards offered from www.aliexpress are complete crap, I would never use them especially if they are purple. It is the MPU9250 QFN chips that are the bargain and well worth buying from "New Hope" seller.
I hope you are not soldering the thermal pad. It must remain unconnected electronically. I don't use a metallized pad underneath the QFN package in my designs and neither does Invensense. This is asking for trouble.
I said the LSM9DS0 might be comparable in performance; I haven't finished my quantitative testing yet. But it is bigger, a bit harder to use, and used to be more expensive but I think the price dropped recently so that now they are about the same price. I will just tell you that in our commercial projects we are using the MPU9250 and might switch to the MAX21105 but haven't decided. We are not considering the LSM9DSX currently.
Sounds like your stencil or the application of solder process if faulty if you are having trouble here. I have soldered hundreds of these with little trouble except the occasional solder bridge between pins.
Maybe your landp pad design is the problem?
from mpu6050.
Sounds very exciting. I am not saying that the data is utter garbage, as i do calibrate the compass. But i tend to experience that it is not acting so stable and easily generate messy data in different environments. It could just be a downside of the MEMS technology with magnetometers.
I am trying to find a few reasons to replace the MPU-9250 with a LMS9DS1. I will be using a few hundred of them and looking at the price tag as a initial comparison we are talking 637$ (MPU-9250) vs. 471$ at 100 pieces. It is a quite significant price difference if they are quite equal in terms of performance.
from mpu6050.
Well, this is a different issue. You can buy (I have) MPU9250s on www.aliexpress.com for ~$5 with free shipping and no sales tax (in US); I would highly recommend "New Hope" as I have bought several things from them many times and the service and quality are very good. The MPU9250 has the advantage in smaller footprint, much simpler design (2 die instead of the four or so in the LSM9DS1) and wider full scale ranges (+/- 16 g). I like ST products generally but in this case, there is no advantage to using the LSM9DS1 over the MPU9250 in my view. The LSM9DS0 might be a competitor for the MPU9250 and I would consider it if I were you. It is larger, a little more difficult to solder mount, but produces very good data. I'll have more quantitative results on this point in a few weeks but the prices are about the same.
from mpu6050.
I bought the initial demo boards from aliexpress, but unfortunately i will need to buy them on tray for the next batches i will be making. I have already soldered quite a few of the MPU-9250 and they are literally a pain in the ass to paste in hand (even with a stencil) and solder in a oven without having to do a lot of post-soldering due to solderball formation under the IC, especially due to the thermal pad in the middle of the IC which causes an unwanted spacing. Besides that the chip is ok, but rumors spread that LSM9DS0 is a good replacement. In which aspects would you say that the LSM9DS0 is superior?
from mpu6050.
I will check out the seller on AliExpress!
I see what you mean with the thermal pad, i have just notified my HW guy, which has clearly made an huge mistake, thanks for the tip!
MAX21105 seems interesting. Which magnetometer will you pair it with?
from mpu6050.
I plan to test both the AK8963A which I already know fairly well and the newer AK9912. BTW, I like the LIS3MDL mag from ST (I currently pair the MAX21100 with it in my breakout boards for sale at Tindie) so I will be testing this in some detail also. Lot's to do, and so little time!
from mpu6050.
I am looking forward to see your results! 👍
from mpu6050.
Kris, how is testing? Are you looking at the AK8963A, AK9912, LIS3MDL?
from mpu6050.
Currently I am testing the AK8963C, LIS3MDL and HMC5883L. I am going to add
the HMC5983 since it is the newer Honeywell offering. I also have some
samples of the AK9912 I want to test, just haven't gotten there yet.
So far I am impressed with the Honeywell mag but it only has 12-bits
compared to the 16-bits of the others so its apparent stability might just
be due to the lower resolution. The LSM9DS1 has the LIS3MDL embedded in it
and I am testing this 9 DoF solution also. Still have a lot of work to do
before I can come to any conclusions but I am working on it.
One thing I already know is that I don't like the Bosch magnetometer.
Kris
-----Original Message-----
From: jheissjr [mailto:[email protected]]
Sent: October 4, 2015 4:21 PM
To: kriswiner/MPU-6050
Cc: Kris Winer
Subject: Re: [MPU-6050] LSM9DS1 vs. MPU-9250 vs. BMX055 (#6)
Kris, how is testing? Are you looking at the AK8963A, AK9912, LIS3MDL?
Reply to this email directly or view it on GitHub
#6 (comment) .
<https://github.com/notifications/beacon/AGY1qm_jNtUJYMx4W3VrhmEdW8ErwQg7ks5
o4au_gaJpZM4EbfGw.gif>
from mpu6050.
What have you seen with the Bosh magnetometer?
from mpu6050.
You can read about the detailed results on the MPU9250 Wiki at my github
site, but bottom line, it is not very easy to calibrate it.
-----Original Message-----
From: jheissjr [mailto:[email protected]]
Sent: October 4, 2015 8:32 PM
To: kriswiner/MPU-6050
Cc: Kris Winer
Subject: Re: [MPU-6050] LSM9DS1 vs. MPU-9250 vs. BMX055 (#6)
What have you seen with the Bosh magnetometer?
Reply to this email directly or view it on GitHub
#6 (comment) .
<https://github.com/notifications/beacon/AGY1qvsJB3IaWD7stvTPoXOiJXzTOSRFks5
o4eaigaJpZM4EbfGw.gif>
from mpu6050.
Did you ever have the chance to try out the AK9912?
from mpu6050.
Still on my list of things to do, but I did get some samples.
from mpu6050.
I've been reading that Helmholtz coils are used for calibrating magnetometers. Do you have access to a Helmholtz coil for your testing by chance? I wish I did lol. I was also thinking it would be good to wrap the magnetometer in magnetic shielding (like MuMetal) to provide a quiet environment for taking noise measurements
from mpu6050.
I don't have Helmholtz coils or Mu-metal but I don't think they are
necessary for the kind of testing relevant for characterizing the quality of
sensor fusion solutions, which is my interest. I have been using Honeywell's
HMC5883 mag lately and I find it is pretty stable compared to the AK and ST
mags. This is partly due to the fact that Honeywell's mags (the newest
HMC5983 too) use a 12-bit ADC instead of a 16-bit one, but their
construction is unique and I am beginning to think superior to standard MEMS
Hall sensors. I need to do more testing, but I am hopeful the HMC5983 will
provide the kind of sensor fusion solution capable of +/- 2 degree heading
accuracy.
-----Original Message-----
From: jheissjr [mailto:[email protected]]
Sent: October 10, 2015 7:38 PM
To: kriswiner/MPU-6050
Cc: Kris Winer
Subject: Re: [MPU-6050] LSM9DS1 vs. MPU-9250 vs. BMX055 (#6)
I've been reading that Helmholtz coils are used for calibrating
magnetometers. Do you have access to a Helmholtz coil for your testing by
chance? I wish I did lol. I was also thinking it would be good to wrap the
magnetometer in magnetic shielding (like MuMetal) for taking noise
measurements to provide a quite environment.
Reply to this email directly or view it on GitHub
#6 (comment) .
<https://github.com/notifications/beacon/AGY1qpA9RPy3cU6M7oUtSqCrWVyCjrftks5
o6cMegaJpZM4EbfGw.gif>
from mpu6050.
@kriswiner,@maziarzamani have you obtained quantitative results for the MPU9250 and LSM9DS1? If so please link me to them. Regarding the MPU9250, why do you think it is not very easy to calibrate?
Which one of these will you recommend for use in Miniature Aerial Vehicles?
Thank you.
from mpu6050.
from mpu6050.
Hi Kris,
How about Your test? Is it worth (in the meaning of data quality - jiggling, acccuracy and sensivity) to replace LSM9DS0 with MPU9250? Or there is any other alternative which gives the good readings?
Bests!
Adam
from mpu6050.
Thank You so much!
from mpu6050.
Hi Kris,
Your Bakeoff is a great bit of work Kris. Practical, to the point, and just the right amount of detail. Exactly what I wanted to know. Thanks.
Well, perhaps there is one other thing I'd like to know...
I'm currently using the MPU9250 for my eldercare activity sensor. I need to do some rather specialised signal processing for my app, which at present has to be done on my host - an M4. I notice that it is claimed that one can write custom signal processing code to embed in the BMX which is an M0 I think.
Do you have any comment or experience on the feasibility/ease/benefits of that please?
Anyone else out there have an opinion.?
from mpu6050.
from mpu6050.
Thanks so much for the swift response. My head is spinning with all the different Bosch variants.
Are you connected with Pesky at all? I'd like to ask more questions about the EM7180, but I don't want to clog up this thread.
from mpu6050.
from mpu6050.
@kriswiner - Great information. Can you comment on the quality of the data from the MPU9250 when forward motion of the device is in excess of 10mph? I am currently experimenting with the BNO055 in an aviation application and it is utterly useless with even the slightest forward speed. This is not just drift, all of the values start producing non-sensical and erratic values. Do you have any data to suggest that the MPU9250 would fare better?
from mpu6050.
from mpu6050.
@kriswiner - Thanks for your comments. The impression I have is that their fusion model is optimized for slow movements only (e.g. applications for VR headsets, etc.). Perhaps, an interesting experiment would be to conduct the tests you previously did for the bakeoff using your 4 different types of MEMS sensors while in a moving vehicle (fixed speed and with acceleration). There is very little data available on how these sensors behave with acceleration/deceleration present.
from mpu6050.
from mpu6050.
@kriswiner Where do you buy EM7180? I couldn't find it anywhere.
from mpu6050.
from mpu6050.
@kriswiner - I am looking more closely at the MPU9250 as a replacement for the BNO055 in our project. It appears that the MPU9250 provides a fusion solution through its onboard DMP processor. Why do you still use the EM7180 (which is short of impossible to source in NA) with the MPU9250? Isn't the EM7180 redundant in this case? What am I missing?
from mpu6050.
Hi Mr. Winer,
I follow you since 1 year ago.
Have you new information about EM7180 +LSM6DSM+LIS2MDL?
Perhaps I have a question: can the madgwich filter be the best solution if it is implemented at very high rate 20khz (STM32F4 employed at firmware level), or in your study the best limit remains 3° accuracy?
Thanks in advance
from mpu6050.
Which ST sensor/IC will be on the ST sensor board? I'm a little confused about the EM7180, is it an ASIC, micro with custom software?
from mpu6050.
from mpu6050.
Interesting. Wouldn't having the magnetometer physically offset from the XY axis of the accel/gyro chip introduce an error in the fusion solution? I suppose you could have the accel/gyro on one side of the board and the mag on the other to minimize this, but that does not appear to be the case with the board you referenced on Tindie. I suppose you could compensate for this in the Madgwick solution, but how exactly?
from mpu6050.
from mpu6050.
After trying out the bno055 and not getting anything reliable I am going to order one of your sensor fusion boards as I really like that the fusion seems to output something I can use:) At the moment I am working on a swarm robot project that I was planning on using a sensor like this one in each robot(100 in total) but it needs to be fairly robust with the calibration as I dont want to wave a 100 robots in the air everyday in figure 8s...I will go insane. But just for arguments sake how well do you think running the fusion software on a esp32 would work using the MPU9250 in comparison to the sensor fusion module you make?
from mpu6050.
Hi Mr. Winer. How about ST board with EM7180? When do you sell this?
from mpu6050.
from mpu6050.
Hello.
Didn't you check BNO080?
It looks pretty powerful and accurate. It's able to calculate full 9DOF on the chip... (what I get MPU9250 is capable only to do 6DoF - without magnetometer).
from mpu6050.
from mpu6050.
from mpu6050.
OK, thank you :)
from mpu6050.
We've been testing the BNO055 9DOF sensor as part of an aviation data logger and even with calibration, the fusion solution gets completely hammered after any acceleration or moderate g-maneuvers (1.1-2g). It appears to us that the BNO055 is primarily dimensioned for use in VR headsets where the acceleration is contained. See an example below. I can assure you, we were not actually flying sideways.
We're going to be spinning a new board with the TDK Invensense ICM-20948 (replacement for MPU9250) and the EM7180, now that we have identified CDIWEB as a North American supplier of this elusive part (MOQ 4000) and we'll see how it holds up under the same conditions.
from mpu6050.
from mpu6050.
@kriswiner - Thank you, I'll get them to provide a quote.
from mpu6050.
from mpu6050.
The ICM-20948 is almost the same as MPU9250 what I see.
Just lower power, magnetometer 16bit (vs 14bit) and SPI up to 7MHz (vs 1MHz).
from mpu6050.
from mpu6050.
from mpu6050.
Yes. I just wouldn't say that it's replacement of MPU9250. It's just for another section of market (IoT etc.)...
from mpu6050.
You can get the EM7180 in any quantity from Omnipro, ask for Tim Lydia.
Do they sell board or just the chip?
from mpu6050.
from mpu6050.
from mpu6050.
Hey Kris, based on your suggestions I am using the 9250 for my application. Any idea how the performance of the Motion library (MPL) invensense provides compares in accuracy to the EM7180?
I've been doing some testing with the MPL and found that the 6-axis is pretty good, but the heading is pretty variable with +- 4 degrees standard deviation. That is after using their built in calibration.
from mpu6050.
from mpu6050.
from mpu6050.
from mpu6050.
from mpu6050.
from mpu6050.
from mpu6050.
Hi Kris,
Great topic and great linked articles! Any chance you will include the STM IIS2MDC magnetometer in your research? However I guess you have more than enough sensors to compare already :-). Probably you already saw this nice overview of STM magnetometers.
from mpu6050.
from mpu6050.
@kriswiner I notice earlier in this thread you were discussing the LIS3MDL and later then go with the LIS2MDL. Do you have any discussion on the differences and why you picked the 2 vs. the 3? I currently have a GPS board with the LIS3MDL and want to understand what limitations I may encounter and if I should try and change chip... Unfortunately they don't seem to be pin compatible so I can't easily switch chip and investigate myself just now.
from mpu6050.
from mpu6050.
I have designed my own breakout board for the ICM-20948. If you are interested, check it out! I would love to get some comments as this is one of my first designs.
https://github.com/dtornqvist/icm-20948-breakout
from mpu6050.
Thanks a lot for all constructive comments! :-)
Currently, I try to live with EAGLE free and is therefore limited to two layers. But I guess I will have to upgrade for more complicated designs.
Thanks for the remark about the capacitor footprints, I changed those.
I have removed everything underneath the ICM-package and moved away the vias. Please check if you think they are far away enough.
I added a solder jumper to set the ICM-address.
I read up on how to make ground planes and added on both sides.
The VCC power traces are 0.4mm, but the 1.8v are 0.2mm. I see now that I missed making them 0.25. Since those are only reference for the signal levels, do you think it is necessary?
Pull-ups on the i2c bus should not be needed as the level translator contains internal pull-ups.
I downloaded the design rules from OSH Park, which were more strict than the original settings i had. The remaining issues now all relate to the footprint of the ICM. My current footprint is from the Sparkfun MPU-9250. Do you know any better footprints or do I have to update manually? Is it possible to get a footprint for this module that fulfill the OSH Park specifications?
from mpu6050.
from mpu6050.
from mpu6050.
from mpu6050.
Hi again Kris,
I have updated the ICS footprint and made sure all traces are at least 8 mil. I have not connected AD0 to an edge pin yet, mostly because I would have to route it to the level converter on the left side of the board and then back to the pin on the right side again...
Please have a look, the git repo should be updated:
https://github.com/dtornqvist/icm-20948-breakout
Thanks!
from mpu6050.
from mpu6050.
Has anyone tried BNO080/085 ?
from mpu6050.
from mpu6050.
Is it real? It costs more than its competitors. I thought it was high quality.
from mpu6050.
from mpu6050.
Hi again Kris,
I have updated the board with many of your points to get better placement of the components and utilize space better, also changed to 0.7 inch width (although I realized that my teensy is in fact 0.6 wide)
After you pointed out to not route under the icm package, I read up on the Invensense guidelines. They say on p1 (Trace Routing) that "Note: For best performance, design a ground plane under the sensor to reduce PCB signal noise from the board on which the sensor is mounted." So I guess that should be there, but they also clearly point out to not have any vias or signals underneath as I had from the beginning.
I am also wondering about the thermals. I might try the soldering oven in our makerspace. If not, I will use the heatgun for the icm and hand solder the rest. Wouldn't the thermals help so I don't have to heat the whole board then?
Thanks!
David
from mpu6050.
from mpu6050.
One thing you could do on the new design is to use a 10 K pullup to 1.8 V for ADO and route the ADO to the unused pin. This way the default would be ADO==HIGH and if someone wanted to change the address, they would ground the ADO pin. This avoids mixing the power rails (as long as hte user does not apply 3V3 to the ADO pin and eliminates the need for the solder jumper, meaning you can go back to the 0.6 inch header separation.
from mpu6050.
It would be cool if someone had tested these sensors and made a video.
from mpu6050.
Need some objectivity in the estimates.
from mpu6050.
from mpu6050.
Thanks Kris,
I went back to 0.6 inch width and removed the solder jumper. I went through the level translator with the signal so I don't need the pull-up. I also removed the ground plane under the ICM.
A question for putting it directly on a Teensy. I have a Teensy 3.6, so I was thinking I could put it so that the left pins align with pins 2-4. The right pins then align with pins 21-23 which are analog outputs. Can the board get ground and 3.3v from them? I see in the data sheet for the icm that the largest draw is 3.11mA, but I don't find if that could be supported from the Teensy analog outputs.
from mpu6050.
from mpu6050.
That's great!
The data sheet for the level translator NTS0104, p17 says: "Each A port I/O has an internal 10 k pull-up resistor to VCC(A), and each B port I/O has an internal 10 k pull-up resistor to VCC(B)". Do you still think I need an extra pull-up?
I am just doing this board to learn and it has been really great with all the advice you have given! If you or someone else want to modify/sell its just to go ahead. I will make a couple myself to test using a soldering oven and to test the IMU.
Thanks!
from mpu6050.
from mpu6050.
I wanted to make it as simple as possible to solder as this is the smallest thing I have ever done. I will let you know how it goes, but it might take a while before i get the cards, components and get down to the lab.
The interrupt levels seem tied to VDDIO as well, so yes very annoying chip...
from mpu6050.
I can happily say that the board seems to work just fine! I also made an initial version of an Android library for it, see: https://github.com/dtornqvist/icm-20948-arduino-library
Thanks for all help!
from mpu6050.
from mpu6050.
Dear Kris,
Could you please share your recommendation which of the modern ST 6dof acc+gyr sensor is best to combine with ST magnetometer like LIS2MDL? Initially i was thinking to use the LSM6DSOX+LIS2MDL pair but then came across your post (https://community.st.com/s/question/0D50X0000B6Re9V/i-am-seeing-odd-current-behavior-with-the-lsm6dsox-but-not-in-lsm6dsm-due-to-int2-connection-to-slave-interrupt). ST has plenty of dev. boards with various acc+gyr and magnetometers but it is not clear which of the sensors LSM6DSM / LSM6DSOX / ISM330DHCX / LSM6DSRX / etc. serves best for new design and works best with magnetometer like LIS2MDL in the Mode 2 (i.e. when mag. is connected to acc+gyr as external sensor). Of course if the sensor has machine learning core or FSM it can be a big plus but after seeing your post at ST forum opens new questions so any suggestion from your side would be of great help.
Thanks a lot for any feedback.
from mpu6050.
from mpu6050.
Dear Kris,
Thanks a lot for your time, the paper and information.
Indeed, the main goal is to get the absolute orientation. Since the device is going to be powered from batter the low power usage is also of a concern. So having your recommendations in mind one could then stick with LSM6DSOX+LIS2MDL option.
Thanks again for your help!
from mpu6050.
from mpu6050.
Related Issues (20)
- Initial accelerometer calibration HOT 46
- FIFO_R_W HOT 7
- Merge the two projects: Aritro Mukherjee and yours HOT 1
- Magnetometer calibration expected result could not achieved HOT 1
- icm 20948 wake on motion interrupt HOT 1
- Calibration question HOT 2
- How to produce the Mxy Mxz Myz point picture? HOT 6
- Using the libriary in a NUCLEO-F746ZG and MBED? HOT 1
- Not sure how to compile successfully for Teensy 4.0. HOT 1
- Calibration Function HOT 6
- offset increasing HOT 3
- who_am_i giving register giving random address HOT 1
- Madgwick Quaternions without accelerometer data HOT 3
- Question : Teensy 3.1 *2 more power than >> Stm32F401 HOT 1
- fifo_count is always 8 after 80 msec @1K hz
- Problem with continues reading FIFO HOT 2
- Good job. Is your libary maintained yet? HOT 3
- MPU6050 Calibrated Acc and Gyro in different measurement range HOT 2
- does calibrateMPU6050 method push biases to hardware register? HOT 4
- Direction for the compass inside Ublox M8N Gps. HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mpu6050.