Hi, I am using Simvim to control an Arduino. Connected to the Arduino are a Yoke and pedals that came from an old Precision Flight Controls console. In other words, connected to the Arduino are analog rotary potentiometers.

Things seem to be working pretty well and I have to say that the calibration routine that Simvim has works pretty well.

My issue is that since the Yoke and Pedals are not connected directly to X Plane but but to the Simvim controlled Arduino and then X Plane, X Plane does not recognize the flight controls in the "Settings" menu. X Plane simply does not see them for configuration although they do work. This means that I do not have a way of changing or reducing the sensitivity of the flight controls. As with several flight sims that I have seen, my controls are way more sensitive than the ones in an actual aircraft.

Is there a way that anyone knows of changing the sensitivity of the flight controls using Simvim?

One thing that I was thinking of is either using a logarithmic amplifier to reduce the "dynamic range" of the linear voltage output of the potentiomenter which is the input to the A/D of the Arduino. Or, would simply reducing voltage range do the trick, by, for example, having the potentiomenter range from zero to 1 volt, lets say, as opposed to a range of zero to +5V. You see, I don't know what the Simvim calibration routine would do to account for this. Actually, knowing what the Simvim calibration routine does would help a great deal in terms of figuring out a possible analog solution.

Thank You

Tom
1 month ago in General Questions by

1 Answer

Tom,

 The X-Plane (and other sims) can recognize only the USB HID input controls. The SimVim is not HID device, and it not using the "real" USB, it's a virtual serial port emulation.

1. When calibrating the pot in SImVim, always use the full maximum stroke you have on your control handle.
2. Make sure you have potentiometer with linear scale.
3. Make sure you have exactly 5v voltage as positive reference for the voltage divider.
4. Use shielded cable, good GND wires.

As an option, in future versions we can provide additional board connected to master, that will be used only for analog inputs (main axes)
 

NOTES:

Actually, most of the joysticks (even the best ones on market ) has a quite short pot working zone (the potentiometer angle is about 60 degrees maximum) and the hand moving range on the thumb level about  120 mm (I'm not talking about yokes).

That means that they may have a real precision about 50-100 "steps" (no matter what the product manufacturer can say).

An analog input of the Mega2560 can be assigned in SimVim with maximum precision of 1000 steps. But this would be absolutely not usable, because of long unshielded wires, bad power and ground, interference, electric noise, and your hands (you cant control 0.1 mm by your hand).

So, we set the default sensibility for all axes as 100 (before it was 300).

This is quite coarse precision, and if you take care of your wiring, have shielded and "grounded" signal wires, making them as short as possible and you have very stable +5V power supply you should not have any problems.

Also, the SImVim analog function includes  non-linear  option (quadratic) that you can set (but it needs to be added to the calibration window as checkbox).

If you have good quality HID input controls, you can  use it as is, without SimVim,
and all analog inputs in SImVim use for any other controls, except flight control axes.
Or, follow the recommendations above.

Vlad

1 month ago by

Vladsim,

Thank you, and I really do mean THANK YOU for your most detailed reply. I agree with everything that you said. I am an electronics engineer myself and have spent years attempting to reduce noise and radiated emissions from designs. I believe that I needed the "push" from you to awaken me to the realities of what noise can do in a system.

In reference to noise reduction and ground return issues, I have the Altium schematic and layout tools and have downloaded the Altium schematic/layout files. I see some problems with ground returns. If I might, I would like to ask your advice on some specific issues that I am sure you have encountered since you know vastly more about the Arduino than I do.

First, it appears that there are two sources of +5 volts. One comes from the USB "USBVCC" and the internal voltage regulator. I propose that as long as the use of current from the USB driver on the PC can be limited to below, I think 500 mA, then the internal voltage regulator should not be used at all. Otherwise, there are two complete return loops for ground. That can't be good.

Second, from the data sheet of the Atmega2560 IC, the analog voltage reference for the A/D converter are provided, on chip "VREF". Usually I don't care for this type of configuration unless I can control the decoupling in the layout, myself. I propose, and yes, I am going to be very "anal" about this, that the ground of the USB be connected, via a thick, conductive wire, to a copper bar outside of the Arduino (and isolated from the chassis), giving the ground some mass. Then the other important analog grounds can be connected, again, with thick wires, to this copper bar. Decoupling caps can be added, on the Arduino board, as close to their "use point" as possible.

As you suggest, I need to replace the copper wires connected to the rotary potentiometers with shielded wire and decoupling at the connection point at the Arduino.

I do not have noise free HID controls. I'm using a console from a 25 year old Precision Flight Controls simulator. It has a good feel.

I do not understand how to add the quadratic function that you mentioned into the calibration routine. Can you elaborate? 

Also, the SImVim analog function includes  non-linear  option (quadratic) that you can set (but it needs to be added to the calibration window as checkbox).

Do you agree with my proposed analysis?

Thank You again

Tom Cipollone

...