Are MPUs subject to interference from Brushless EDFs?


Got a very strange one here that I am hoping somebody will have encountered before.

This project uses an 8" cube with a brushless electric ducted fan (EDF) as a thrust source. I have an MPU-9150 to keep the balance. The EDF is powered by two 3P lipo batteries, controlled by a Turnigy AE-100A Speed Controller with BEC. Because of suspected interference caused by the ESC when the EDF is powered up, I put everything else on a separate 3rd battery. So the micro servos that run the directional fins, the Arduino, and the radio receiver are all powered by a separate battery with a Pixnor Multirotor Power Distribution Board providing the power to everything. There is even a large 12V relay that is operated by a switch to provide power to the EDF so that I do not have to keep plugging/unplugging a battery connection. The input to the ESC is just the signal and ground (common ground between the ESC and the Arduino) so the BEC of the ESC is not even being used.

When I power up and calibrate the 9150, I am getting degree readings on two planes of very low values - e.g. it is on a flat surface. As soon as I power up the EDF, the readings go crazy.

Attached is a text file showing the output of the Arduino. The column that starts 26(LJUD) is the value read from the RC Left Joystick Up/Down, which is the thrust control of the EDF, so you can see when that goes above my activation value for the EDF of 80 is when the EDF is being kicked in. In the beginning of each line are the angle readings and if the cube thinks it is flat (+/- 5 degrees from calibrated flat) the word UP is at the beginning of the line. When I powered up the EDF, I was holding it down to the table, so the angle of the cube never changed (other than small vibration amounts). The angular readings from the 9150 MPU go crazy! I even have it taking an average of the last 3 readings to try to smooth the transitions.

So the question is, am I still somehow getting an electrical feedback from the ESC, or - since the EDF is brushless and drawing as much as 100A when it is at full power - could it be giving off an electro-magnetic interference that is screwing with the MPU?

I am attaching a picture of where the MPU is in the cube. It is hard to tell the depth with one picture, but the ledge/platform the MPU is mounted on is at the very bottom of the EDF where the air is coming out; but it is nonetheless only about an inch away from the housing of the EDF.

Thanks for any suggestions you may have!


Problem_Readings.txt (2.6 KB)

If you are using the magnetometer, it will be confused by magnetic fields from the motor and wires carrying large currents. It should be placed as far as possible from those sources of interference.

Not just from the motor - all the high current wiring will be putting out fields too. Ducted fans are much less efficient than big props so all the currents will be very high (30A or more?)

You need to use just the accelerometer and gyro from your IMU, and mount a compass chip on a boom well away from all the high currents and motors to correct for yaw drift. 8" cube will entirely be swamped with magnetic noise.

If you can disable the contribution of the magnetometer of the 9150 (no idea if possible), try that to see if its only the magnetometer affected. I'd imagine the vibration might be an issue too given the ducted fan - that could affect the accelerometer adversely, and in extremis the gyro too.

Alas magnetic shielding is made from iron, very heavy and thus not practical.

Ducted fans are much less efficient than big props

I suppose that is why airplane manufacturers have all but quit using props. At least for commercial aircraft.

Thanks for the posts so far - I appreciate the input.

You pretty much validated what I was thinking, that magnetics of the motor were hurting the 9150, and although I had not thought about EM off of the big current wires, they are luckily all on the other side of the cube.

I did move the 9150 down to the bottom edge of the cube and it does appear to have helped some, but some of the raw values have huge jumps and are causing me to write a ton of additional code to try to detect and eliminate.

The problem with using the accelerometer and gyros only is that without a solid reference that the magnetometer provides, they get more and more out of sync with the “world”. Although, the amount that the readings vary in that situation may be much less than this one, so I may have to re-consider! I have used a 9250, and 6250 on this always trying to get stable readings because I have a very small amount of tilt in any direction before I have to immediately correct it.

I have thought about trying to shield the 9150; would any metal work or does it have to be iron? For balancing purposes, there are some very large steel nuts attached in a couple of places by tie-wraps, and one is on the same side as the 9150, so if I found something I could put kind-of around the 9150, do you think it would have to be iron or would any metal work?

Any ferrous material near the magnetometer is also problem.

For proper operation in an environment like that (if at all possible) it is essential to calibrate the magnetometer. The best available procedure is this one.

Hi rtinker,

The Invensense accelerometers are very sensitive.

Are you sure it isn't vibration from the EDF that's causing the measurements to go crazy? Have you tried detaching the MPU-9150 from the chassis with the EDF running, are the accelerometers still affected? Are you getting similar “noise” on the gyroscopes that aren't as affected as much by vibration? Are you using the MPU-9150's internal digital low pass filter? Are you minimizing the effect of vibration by fusing the gyroscopes and accelerometers using either complementary or extended kalman filters for angle estimation?

I'd also check the ground returns paths. If possible I'd route the Arduino's ground and the BEC's ground directly back to the battery through a ground star point on an Arduino shield or similar.

The noise is definitely from the EDF powering up; I did test with it unattached, and also with me holding down the drone/cube and just ramping up the EDF, you can see the values start to jump.

This is part of a project for my son and he is running out of time, so we decided to yank the 9150/9250 and go with a 6250 which eliminates the magnetometer. The libraries (even the popular Rowberg ones) did not provide anything super useful for this application, so I just took yaw-pitch-roll value and while it is not provided with an earthly reference and can drift, I think it is working OK for now. The values with the magnetometer were certainly the best though, so if anybody knows of some 9 axis sensors that are less sensitive to EMF, let me know. My son will get graded on the concept and his design, but I still want to get the software perfected at some point!

Have you set the MPU's digtial low pass filter? A multi-rotor (drone) needs it to be set at the 20Hz or 42Hz level. Any higher (the 98Hz, 188Hz and 256Hz options), noise enters the system that can cause the aircraft to wobble or violently twitch, any lower (at the 5 and 10Hz settings), and valuable information is filtered out, causing the aircraft to oscillate as the flight control system becomes unstable.

Using Jeff Rowberg's code you just need to add the following line to setup():


for 20Hz or:


for 42Hz.

For the MPU6050 the definition's just replaced with: MPU6050_DLPF_BW_20.

Kris Winer also has some excellent example code for the MPU-6050, MPU-9150 and MPU-9250. It's at the register level, but really nicely commented and easy to follow.

PaulS: I suppose that is why airplane manufacturers have all but quit using props. At least for commercial aircraft.

No, I said ducted fans are less efficient than big props - ducted fans are less efficient because the air stream is much faster, so more power is needed for a given net thrust.

Turbofans are less efficient than big props (and turboprops). However if you want to go close to the speed of sound big props go supersonic at the tips and stop working. Ducted fans can be kept subsonic and thus be made to work in that regime (because you direct all the air to the slower moving part of the fan and lose the tips!)

We are not talking of anything like supersonic here, so the bigger the prop the better - more momentum change per watt. Of course the weight of the prop has to be considered.