Thoughts on sensitivity of controls

I have been testing new hardware more thoroughly and noticed, that different sims have very different controls sensitivity settings (and ways to adjust it).  More than that, some of the sims tend to react on even the slightest jitter from Hall effect sensors and ADC (which is really almost nonexistent), while others ignore it completely.  That means that often, there’s a need for per-sim or even per-aircraft setting.

Simchair MKIII cyclic and pedals are sensitive enough to emulate the control response of lightest and twitchiest helicopters out there. But what if you feel it is too sensitive for the particular helicopter model you want to fly? Or, maybe the sim you are flying in treats joystick sensitivity settings differently, or even doesn’t have proper controls settings at all? What if setting curves is not what you want, but your sim doesn’t have any linear sensitivity adjustment options?

I’ve been comparing DCS UH-1 and Dreamfoil 407 for X-Plane today and noticed a strange thing: while I’ve been able to hover perfectly in a Huey (using plain raw ADC values and linear axes settings), the 407 was really uncomfortable. The controls felt overly sensitive (I flew a 450 RC heli with a 3D printed Bell type head with no stabilization, it’s not that I cant fly 😀 ). I noticed that virtual stick movements in the cockpit are actually larger than mine. That’s where I decided to work on that. Simchair definitely needed a way to adjust stick and rudder sensitivity.

There are two ways of doing that: logarithmic mapping (curves) and linear mapping. The first one is present in every sim and allows for smoother control around an axis center. The second one maps all your ADC range to a smaller number of points (so your axis will only be able to move to the given percent of its full range), thus decreasing sensitivity while keeping things linear. It is present in DCS, but I haven’t seen it anywhere else, so I decided to implement it in firmware. After some testing, the ability to switch between regular and increased sensitivity modes was added as well.

I will probably make a separate device for this kind of settings, but for now, you can switch controls sensitivity with a button of the B8 cyclic stick grip. There are two modes of button behavior: pseudo force trim mode and toggle mode. In toggle mode, you press the selected button on a stick to reduce sensitivity and press it again to restore its default setting. Pseudo force trim mode kinda emulates pilot’s actions on a helicopter with a force trim on. When doing precise maneuvers, e.g., hovering, you have to press force trim button on your stick. While you are holding the button, stick precision increases, and returns to a default setting when you release it. It is not how it works in a real heli, but is probably the best way to implement it in a sim without force feedback on a stick.

A few words about force trim from a pilot of a real Huey:

verticallyreferenced@slinkysoars The only thing I’ve found the force trim good for is holding the controls still when running on the ground. I turn it off before lifting, and it’s the first thing I touch after I land.

Thinking of ADC and Hall effect sensor jitter, I decided to add optional filtering as well. Let’s look at the code:

#define ADS1115_RESOLUTION 15 //bits, min 12, max 15

// use a button on cyclic to switch sensitivity in flight.
// this kind of functionality is not available in a real aircraft, however
// it may somewhat resemble simulated force trim.

// a button on which device to use for a switch

#define SENS_DEVICE “b8_stick”

// enable or disable switch function, will use the selected button on a stick;
#define SENS_SWITCH_ENABLED 1
#define SENS_SWITCH_BUTTON 0 //0 is the first button

// switch behavior available options: “FORCE_TRIM” or “TOGGLE”
// FORCE_TRIM will reduce sensitivity to CYCLIC_SENS and //RUDDER_SENS
// while SENSITIVITY_SWITCH_BUTTON is pressed, “TOGGLE” will act
// as a regular switch

#define SENS_SWITCH_MODE “TOGGLE”

// if SENS_SWITCH is disabled, these values will be used;
// set to 100 for full axis range
#define CUSTOM_CYCLIC_SENS 80
#define CUSTOM_RUDDER_SENS 80

#define XY_FILTERING_ENABLED 0
#define RUDDER_FILTERING_ENABLED 0

To sum it up, setting sensitivity to 80 percent made physical movements of the stick the same as they show up on the screen for the 407. It became a joy to fly. Filtering doesn’t seem to affect anything but input lag, so I disabled it by default. You can always try setting up curves in your sim; I recommend using 5 to 10% as a default value.

Download an updated .ino file from GitHub.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.