
PAGE 1
PAGE 2
CONTROL SYSTEM AND SOFTWARE
The search for improved control force smoothness has also
lead me to a number of substantial improvements in the motor
control system and drive software. A major issue here has been
substantially improving the response time of the control
system and this has required both hardware and software
changes. The current control system is shown schematically
to the right.
The active yoke forces are calculated by the BFF Control Loader
software which (currently) runs on the same PC as the flight sim.
Rather than try to handle all the control functions in a
single CPU process the
main software element uses two additional independent background processes to
separately extract flight data from the sim and to read and
process the 12 bit yoke position feedback signals. This
allows the different control functions to run at different
speeds as required - eg for fast processing of feedback
positions to get smooth velocities and for slower controlled speed extraction of flight data
from the sim to protect sim frame rates. The use of multiple
processes also serves to isolate the core yoke load control
loop from refresh time variations and possible stuttering caused by differing flight sim loading.
The yoke position feedback is via Leo Bodnars BU0836 12bit
USB joystick module. The software taps into the high
resolution joystick feedback independently of FS9/FSX so the
same pots are used as the usual control inputs to the flight
sim - no need to double up on joystick pots.
The calculated flight yoke loads are exported at 115200 baud via virtual serial
port (physically USB) to a 40 MHz PICAXE 28X2 based Signal
Processor. The Signal Processor sends the
torque demands on to Devantech MD03 motor controllers on an
I2C bus to drive the torque output and also monitors the
software output so as to shut the drive to the yoke when the
Control Loader software stops sending data. The torque
demand is refreshed at about 80Hz by the software. The
hardware configuration will allow additional motor drivers
to be added to the I2C bus - eg for a foot pedal unit and
eventually for a complete 2nd (co-pilot's) yoke and pedals
station, without extensive changes to the system.
|

 |
The control loading model used in the system determines
instantaneous yoke loads from the sum of aerodynamic & trim
components, weight/mass components, buffeting and vibration
components and additional friction and damping effects.
Force components that are control surface position or speed
dependent are determined using the direct feedback of
position and speed from the yoke rather then from control
surface position and speed reported by the flight sim. The
flight sim internal control surface positions are subject to
considerable filtering and delay by the sim software and in
my view are
not suitable for high fidelity real-time control of the yoke
loading. Their use introduces too much time lag into the
system which seriously compromises the loading output.
A further important need for high speed smooth position
feedback relates to the induced torque compensation
functions of the system. The instantaneous motor output torque is
determined both by the software driven voltage output of the MD03 motor
controllers and by any motor back-emf generated by the pilot
driven speed of the yoke. The back-emf induced torque acts
like a speed dependent "damping" force which resists the
yoke motion and makes the yoke feel heavier. To
control this basic "feel" of the yoke the software
and control system
induces a torque compensation component applied proportional to yoke
speed to cancel out the back-emf induced torque. This
requires smooth feedback of yoke speed without significant
time lag and this is provided by the independent fast background
processing of the 12 bit position feedback.
The 12 bit position feedback handling runs at about 125 Hz
which allows real-time filtering of the position signals and
so smoother control surface velocity readings.
A quick note on trim - the control surface trim model used
by the system is independent of the
flight sim's internal trim handling. This allows more
realistic trim behaviours to be implemented which allow the yoke axes to be
brought into load balance in any position by adjusting the
trim pots.
HOW DOES THE YOKE FEEL?
Notwithstanding my comments on the effect of motor torque
ripple on the yoke feel I think the overall feel of the yoke
is promising. Effects such as increased aerodynamic control
surface loading due to increasing air speed come through
cleanly and as with any of the force components are
adjustable in intensity through the software set up. These
have a clean effect of returning the aileron or elevator
axis to a central position of balance if released by the
pilot - the yoke does not need centring springs. Mass and
acceleration components are also there - the static weight
of the elevators can be clearly felt on the ground and the
weight variation due to aircraft G-Force variations can be
included. In general force variations due to aircraft
accelerations can be felt clearly - eg sudden roll
accelerations come through in the aileron forces, touchdown
accelerations come through (vertical accels to the
elevators, roll accels to the ailerons etc).
In addition to these forces which are derived directly from
the aircraft speed and motion additional "manufactured"
effects can be added. Stall buffeting can be configured,
buffeting due to lowering landing gear into the airstream
and engine power related vibration can be added. The
software driven system has provision for these, however I
think there is a bit of work needed to tune the effects to
get the buffeting and vibration feel right.
The software based approach gives huge scope for adding and
tuning force effects. The current control system also is
much more stable than my previous efforts and undamped
oscillations due to excessive lags in the feedback loop that
made some earlier experiments "interesting" have been
removed. The clean velocity feedback also has allowed me to
build in over-speed detection which now cuts the drive to
the yoke if unusually fast movement speeds are detected.
On the downside the torque ripple due to the motor
commutation is an issue and it is mainly felt on the
elevator axis. It appears as a light but regular series of
detents when the elevator control is moved slowly and this
is most noticeable as a feeling of stickiness when making
small in-flight pitch adjustments. I think I might be being
over-critical here, certainly if I compare the yoke feel to
that of a Saitek yoke I have which has a strong mid detent
and definite stickiness in the motion, but given the cost of
the motors and other elements of the yoke I think the feel
needs to be good.
I would estimate the total cost of the yoke parts to be
around the £600 mark - with the motors accounting for about
half of this. More expensive than a passive flight yoke but
considerably less than a commercial system which could
easily cost 10 or more times this.
THE WAY FORWARD
I think it is worth experimenting with disc-armature motors
to see if the final motor torque ripple/detents can be
removed from the yoke feel. The software and control
hardware elements are in place to yield an effective DIY
control loader flight yoke.
The drive software currently includes a third rudder output
channel although I haven't yet worked on a design for the
force feedback pedals mechanism yet - there are many great
examples around of effective designs to give ideas. So this
is something for the future.
An
interesting further option which should not be difficult to
implement is to include control options for a complete 2nd
(co-pilot's) yoke and pedals station. To accomplish this
only requires additional software coding and additional MD03
motor drivers for the second set of motors. A possible
control scheme is to allow single button-presses on the
yokes to be used to indicate to the software which station
is "active" and which is in "following" mode. The software
would then be configured to drive the "active" station in
the normal force feedback mode but to place the passive
station into a position following mode. In this
position-following mode the system would drive the yoke and
pedals in a closed loop position controlled servo mode
following the positions of the active controls - this can be
done in this system with software changes alone, no
structural changes to the hardware design would be required.
This would allow the use of mechanically independent pilot's
and co-pilot's stations which would ease overall cockpit
design and build workload.
Off course the basic drive and control systems would also be
applicable to force feedback flight stick or tiller type
controls.
I'l add more info when I have it.....