3
$\begingroup$

This is my first post.

I am currently building a project for a fixed wing microlight aircraft (UK). The project is a flight computer based around an Arduino and a 4D Systems touch screen. The primary screen is a digital attitude indicator with various EFIS functions. I'm using this sensor currently for pitch and roll:

https://witmotion-sensor.com/products/military-grade-accelerometer-inclinometer-hwt901b-mpu9250-9-axis-gyroscope-anglexy-0-05-accuracy-digital-compass-air-pressure-altitude-rm3100-magnetometer-compensation-and-kalman-filtering

All is good on the ground and I am using the angle output over TTL to determine relative angle. Works perfectly and pitch and roll all display exactly as expected. In the air the pitch works well but roll does not. It's like the sensor is detecting angular acceleration and not absolute angle. As you start to roll the attitude indicator shows the deflection but once stable in the turn it returns to level even though the plane is still banking. As you roll back to level it swings the other way and then settles again.

I am assuming that this is due to the way forces are acting during a turn i.e. the 'downwards' force is perpendicular to the direction of flight and the sensor is getting confused. The sensor has 6-axis and 9-axis modes and both show the same result.

I wondered if anyone else had attempted such a project and what sensor they had used? It's obviously possible to do this using digital sensors as there are plenty of digital AI on the market. I'm happy to try a different sensor but don't want to buy another one until I am fairly sure it's going to work in the air.

Thanks for any assistance! Tim

$\endgroup$
4
  • $\begingroup$ See my comment here aviation.stackexchange.com/questions/106008/… -- the title of the question perhaps could be improved, unless you really are relying only on the linear acceleration (inclinometer) functions of the sensor. $\endgroup$ Commented Jul 18 at 20:20
  • $\begingroup$ You say "In the air the pitch works well but roll does not." -- have you tested the pitch function while looping? I suspect you would find that would not work well either. I.e. I suspect you have a problem with pitch indication that is symmetrical with the problem you are having with roll indication, but you haven't maneuvered the aircraft radically enough to see it. $\endgroup$ Commented Jul 18 at 20:22
  • $\begingroup$ Probably poor use of the work inclinometer - The device is a 9-axis gyro, accelerometer, inclinometer that uses a fusion algorithm to output an absolute angle value in X,Y and Z axis. On the ground that works perfectly - the odd behavior is only in flight where the forces of gravity are obviously acting very differently. Sadly, I am not rated for aerobatics so no looping for me :D $\endgroup$
    – TimG
    Commented Jul 19 at 16:13
  • $\begingroup$ The fusion algorithm is black-box - i.e. I don't know exactly how it's doing it's magic. There are options for 6-axis and 9-axis algorithms and both do the same thing. $\endgroup$
    – TimG
    Commented Jul 19 at 16:15

3 Answers 3

5
$\begingroup$

An inclinometer is fundamentally the wrong tool to measure bank angle. In a coordinated turn, the local acceleration is along the aircraft's vertical axis. An inclinometer does the same thing as the ball in a traditional six pack, not the attitude indicator.

You need some sort of gyroscope to measure roll rate. This roll rate can be integrated to get bank angle. You also need to implement some system to correct for integration errors in the bank angle- essentially what the pendulous vanes do in a tradition vacuum-powered AI.

It looks like the instruments you need are available in the module you've linked and you're just reading the output of the wrong one.

$\endgroup$
6
  • $\begingroup$ If you follow the link to the sensor included in the original post, you'll see that it includes gyroscopic sensors. The unit is described as "9 axis", which appears to refer to linear acceleration, rotational acceleration, and magnetic field sensing, each in all three axes. I suspect the title of the question is misleading. The body of the question does not suggest that the asker is relying on only the linear acceleration sensors (which is what "inclinometer" would suggest. $\endgroup$ Commented Jul 18 at 20:19
  • $\begingroup$ @quietflyer "using the angle output over TTL" and the described way it is working (works on the ground, shows indication when rolling into a turn but then levels immediately) both sound like they are using the inclinometer to me. At the very least that is consistent. $\endgroup$
    – Chris
    Commented Jul 18 at 20:41
  • $\begingroup$ Apologies - I probably used the wrong term as the module is described as a "Accelerometer+Inclinometer" - The module itself is a 9-axis device using a fusion algorithm to output a number of data-feeds. The data feed I am using is the "Angle" feed which is an X,Y,Z absolute position angle driven by the 9 axis algorithm. On the ground this works perfect as described but does not work until the forces of flight. $\endgroup$
    – TimG
    Commented Jul 19 at 16:07
  • $\begingroup$ @TimG What other data feeds are available? Does the pitch output work properly under more aggressive maneuvers like a pushover? $\endgroup$
    – Chris
    Commented Jul 19 at 17:00
  • $\begingroup$ Outputs are: Acceleration XYZ|A|, Angular Velocity XYZ|W|, Angle XYZ, Magnetic Field XYZ|H| and Quaternion Q0-3. $\endgroup$
    – TimG
    Commented Jul 19 at 17:53
3
$\begingroup$

This sounds to me like the item Chris mentioned is necessary is present but just turned up way too high.

You also need to implement some system to correct for integration errors in the bank angle- essentially what the pendulous vanes do in a tradition vacuum-powered AI.

The materials for this module suggest that it does this sort of correction. The question is what sort of timescale it does that correction. The roll and pitch rate have errors, but over a long time scale, you assume your plane is flying level and you have your sensor zero them out.

Could be the algorithm is just too aggressive and is zeroing it out over seconds instead of many minutes. I would look at the datasheet and see if you have any control over the integration time for the corrections.

$\endgroup$
2
  • $\begingroup$ That's what occurred to me reading the question as well. In a traditional gyro-powered artificial horizon, the instrument corrects for precession errors by leveling the wings (i.e. zeroing the indicated roll angle) when showing a very small bank angle. If you hold a 30-degree banked turn, the instrument shows that bank angle as long as you maintain it; if you maintain a turn with a 5-10 degree bank, the gyro will "correct" its precession, and return to wings level. Sounds like the logic in OP's instrument is doing this, but not only at small bank angles. $\endgroup$
    – Ralph J
    Commented Jul 18 at 23:57
  • $\begingroup$ I am using the angle data feed which is an absolute X,Y,Z position measurement - supposedly drawn from a fusion algorithm. On the ground this works perfectly for small and high angles over both short and long term measurements. So it works well for 5-10 degrees and 30 degrees over 1 second or 10 minutes. It's only in the air that the measurements seem to be incorrect. $\endgroup$
    – TimG
    Commented Jul 19 at 16:10
2
$\begingroup$

Interestingly I just found this which is the exact issue I am seeing

“Sustained dynamic accelerations can cause a problem in the estimation of the pitch and roll angles as the assumption that the accelerometer is measuring gravity alone is constantly being violated. The most common case where this becomes a significant problem for an AHRS is when an aircraft is operating in a banked turn. When this occurs, the accelerometer measures gravity plus a long-term acceleration due to the centripetal force created by traveling along a curved path. This results in a measurement vector that acts perpendicular to the wings of the aircraft and cause the AHRS to estimate a roll angle of zero while the aircraft is in fact in a banked turn and thus has significant roll relative to the horizon”

https://www.vectornav.com/resources/inertial-navigation-primer/theory-of-operation/theory-ahrs

Looks like there is a workaround using velocity measurements. I’ll need to do some reading and see why I can do.

$\endgroup$
7
  • $\begingroup$ The key question would be, can the system stop "correcting" the roll angle based on sensed gravity? Or at least, only do it under certain conditions (such as, small roll angle & no heading change being observed). The vanes in @Chris' answer do that - only zero out the roll toward the sensed gravity vector when the roll angle is small. No idea if such settings inside your AHRS are accessible to the user, or not. $\endgroup$
    – Ralph J
    Commented Jul 19 at 20:01
  • $\begingroup$ PS as an aside I am a guy who used a home-made solid state piezoelectric single-axis turn rate indicator (actually closer to "turn coordinator" because gyro sensing axis was tilted) created by a friend to maneuver a hang glider in clouds. Output was very primitive, just 3 LEDs that blinked at varying rates depending on turn rate and direction. It worked fine, at least the few times that I tried it. Gained about 2K thermalling in a cloud once, then icing. Always intended to upgrade to some sort of AHRS-based 3-axis system and actually ordered the sensor unit, but never got around to using it- $\endgroup$ Commented Jul 19 at 20:03
  • $\begingroup$ That’s super cool. I started flying hang gliders 15 years ago and moved over to flexwing Microlights (and also now three-axis). Flying in cloud is not something I would ever have desired to do in a hang glider - respect to you. $\endgroup$
    – TimG
    Commented Jul 19 at 20:12
  • $\begingroup$ I think the answer is not to use the fusion angle output. Rely on the gyro outputs to determine roll and then use the accelerometer to zero the gyro when in level flight. 95% of the flight is going to be level so it should not be too much of an issue to zero out the drift. I’ll have a think about it. $\endgroup$
    – TimG
    Commented Jul 19 at 20:15
  • $\begingroup$ @TimG -- not saying it was very smart... !! $\endgroup$ Commented Jul 19 at 20:16

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .