|

Simple
proof-of-concept DIY force feedback test rig |
Introduction
Different System Approaches
Attempt 1
Attempt 2
Attempt 3
Software
Test Rig
Effects and Impressions So Far
Way Forward
Test Rig
To test the approach I've modified my simple
SideWinder joystick. (I've ordered a flight yoke which I'll
try to modify as a more finished project when it arrives - delivery
date keeps pushing out). Two
Hitec HS-815BB servos are
connected one to each axis by bent coat-hanger wire sprung
links. This looks pretty basic but the engineering behaviour
is sound and is sufficient for testing the behaviour of the
system. The link and servo arm positioning is important as
the line of action of the forces on the joystick must be
maintained so that they maintain a roughly constant moment
arm about the stick pivot point - I haven't quite managed
this but it's close enough for testing.
The servos are driven by a
Pololu Serial
16-Servo Controller which is driven directly via a serial
port from the PC software (the link is to their 8-servo unit
which should also work).
I also found that removing the internal return springs
from within the joystick makes for a better calibration and
final response from the system.
System
Behaviour
For someone who hasn't used a force feedback
joystick before the effects are interesting and a bit of an
eye-opener. With the control loader deactivated the joystick
is quite floppy (I removed the built-in return springs),
when the software is activated the servos come on and it
turns into a much stiffer damped control stick.
The basic unloaded motion is heavier (more
damping) than the original joystick feel - it is much more
difficult than before to flip the stick from one extreme to
the other (as if there's nothing attached to it). With the
aircraft stationary the elevator weight pulls the stick
forward and it requires a pull on the stick to bring the
elevators level. During takeoff as the runway speed picks up
the elevator lift builds and holding the elevator level
becomes lighter, however pulling the stick back at rotation
to bring the nose up brings on a noticeable force reaction
as the elevator starts to generate lift. In the air
adjusting the trim eases the holding loads wherever the
stick is.
|

Sample output
trace - aileron lift & stall buffeting during
left/right banking manoeuvres |
Aileron
aerodynamic effects are similar, left-right movement of the
stick is heavier when the aircraft in the air. I've also
programmed the lift coefficients to peak at control surface
deflections of about 11° at which point they stall and
buffeting comes on (see
NASA). I think my 11° is probably slightly low but this
is easily adjusted in the coding. I'm not an aerodynamicist
so am not sure about the accuracy of this behaviour but I
thought I'd add it to see. So an extreme control
movement generates a building force reaction which then
drops of with buffeting as the aerofoil stalls - you can
effectively feel where the ailerons are.
All the control surfaces become quite
strongly self-centering when the aircraft is in flight, even
though the centering springs in the joystick have been
removed.
Interesting effects arise when you put the
aircraft into a steep climb and feel the stick become
progressively lighter as the airspeed drops right off. Going
into a steep nose down orientation brings load back onto the
control stick rapidly as the air speed picks up quickly in
the dive.
I haven't added full aircraft stall effect
yet although elevator stall and full stall seem to coincide
a bit..
Landing approach is interesting - the
controls feel progressively lighter as the speed drops to
landing speed although the elevator weight starts to become
noticeable. As the gear goes down the air buffeting comes on
and is maintained proportional to airspeed squared -
diminishing as the aircraft runs out on the runway and the
speed drops. The sudden spike in G-force at touchdown comes
through as a snatch in the elevator movement and if you
touch down one wheel first the resulting sharp roll
acceleration comes through in the aileron axis - you can
feel how good your landing was!
Overall I'm quite pleased with the effects.
It's difficult to show feedback forces visually but here's a
couple of movie clips - one showing the system doing its
elevator calibration cycle and the other showing gear
buffeting coming on and then back off again as the gear is
lowered then raised (in level flight).
Elevator Calibration Clip
Gear Buffeting Clip
So what's not so good - other than mechanical
shortcomings of the crude test rig (slightly asymmetrical
loading effects and weak mechanical links) there are two issues
mainly. The first is the servo behaviour - when holding load
they buzz slightly (probably at the position feedback loop
processing speed) and this propagates through the links to
the stick. The effect is mild however and is quickly
forgotten but it would be nice to remove it completely.
The
other is a natural by-product of my method of reading the
current control position from the sim's internal data. There
is a time delay in the stick movement being reported in the
sim and then by FSUIPC to the control loading software. This
looks as if it is about 0.2s. The effect of this is that the
servo position can never match exactly the control stick
position - it will lag it by a small distance related to how
fast the stick is moving - in effect this speed related
delay introduces an effective base damping force to the
system response. I would like this to be less than it is so
that the unloaded response is lighter, however to do this I
need to eliminate or reduce the stick position data
transmission delay. I don't think the effect is noticeable
in-flight because the small damping force is swamped by the
other system forces, but on the ground it is. One solution
is to monitor stick position independently and directly pass
the data to the loading software bypassing the flight sim.
The Way Forward
Overall the system behaviour is certainly good enough
to attempt an implementation on a bought flight yoke, and I
would also like to try a rudder implementation. The question of
how a more powerful system might be implemented for a full
size flight stick is interesting. I think a solution using
more powerful stepper motors in a similar open-loop system
has good potential. Stepper motor drives can be quite
inexpensive and are effective in open loop situations and if I can find a micro stepping motor
controller that can be driven directly though a serial port
by the control loader software the beta software could be
used without much modification.
The approach to control loading could allow DIY'ers greater flexibility in customising builds for their
own pits by allowing a range of more powerful motors to be
used. The driver hardware is also very straightforward with
all of the "clever" stuff being handled by the control
loader software. There is also clarity in how the force
feedback effects are being generated and I should be able to
modify this if requested.
A further advantage of the method is the way
in which the stick position can be controlled over its full
range by the control loading software. This allows effects
to be programmed such as getting one stick to follow the
position of another without the need for a mechanical
linkage between them, or for driving stick position in
response to, say, autopilot manoeuvring actions.
© This site is
copyrighted, If you'd like more information or have any
comments please contact me at