Category Archives: Force feedback

The challenging task of implementing realistic control loading and autopilot functionality on a large scale.

Dynamic force feedback implemented and tested

I know, I know…it’s been over a year since my last update. I have been working on implementing dynamic force feedback, a slow but steady process that required designing, and sometimes redesigning, custom made transmissions for driving all three control axes.

I am happy to report that I now have all three axes working after a great deal of calculation, consultation, and trial-and-error experimentation with various transmission designs intended to mate the BFF do-it-yourself force feedback interface cards to the original Boeing flight control structures. There were several examples of such implementations out there on the web, most of which involved expensive custom gearing and none with an original 737 mechanism.

The designer of the BFF cards is extremely helpful with the installation and operation of the cards themselves, but leaves it to the simulator builder to come up with the proper mechanisms for driving the controls. My first step was to consult my pilot buddy Andy Schwartz (of the mechanical engineering firm SSA Engineering) for some badly needed help with the engineering. Armed with some actual Boeing flight control tension specifications from David Allen, Andy confirmed that the specified motors, gears and belts that I had dreamed up would supply the required forces at the man-machine interface.

The BFF card designer specified a particular motor from an Italian manufacturer, which does not accept credit cards, Paypal or Bitcoin and required an international wire transfer for payment. The motors themselves arrived almost a month later, and only then was I able to start designing custom motor mounts to fit onto the existing Boeing structure. One of these was fairly simple but the other two were complex shapes that required some time to fabricate using my old friend, the electric 4.5 inch angle grinder. After cutting the shapes from 3/16 inch steel plate, I cleaned up the sharp edges with a polishing disc attached to the same tool. As the steel was not stainless, I applied several coats of gray primer to prevent corrosion before installing into the floor structure. The motors themselves were mounted through a hole drilled in  each plate. A rubber/cork gasket cut from a sheet obtained at my local auto parts store was used to help reduce noise and vibration from the motors.  A large number of fasteners was used for each mounting plate with the same goal in mind. The largest plates, the one used for the pitch and roll axes, serve double duty as structural supports since they cross the midline and connect and maintain the proper spatial relationship between the two halves of the divided flight deck floor.

Custom fabricated plates (painted Boeing grey) for dynamic force feedback and interface cards. Top plate, left: a total of seven interface cards, mostly for controlling the throttle quadrant and control yoke buttons. Top plate, middle: Meanwell S-350-24 24 volt DC power supply. Wires in recycled AMP cannon plugs above connect to the throttle quadrant. Top plate: right: elevator motor, planetary gearhead, and pulley/pushrod connected to original Boeing elevator torque tube at top right. Bottom plate, left to right: Meanwell 24v power supply, solid state relay for activating 28 volt devices with 12 volts signals, Phidgets 8/8/8 interface card to measure brake excursion (by sliding potentiometers) and stick shaker activation.
Custom fabricated plates (painted Boeing grey) for dynamic force feedback and interface cards. Top plate, left: a total of seven interface cards, mostly for controlling the throttle quadrant and control yoke buttons. Top plate, middle: Meanwell S-350-24 24 volt DC power supply. Wires in recycled AMP cannon plugs above connect to the throttle quadrant. Top plate: right: elevator motor, planetary gearhead, and pulley/pushrod connected to original Boeing elevator torque tube at top right. Bottom plate, left to right: Meanwell 24v power supply, solid state relay for activating 28 volt devices with 12 volts signals, Phidgets 8/8/8 interface card to measure brake excursion (by sliding potentiometers) and stick shaker activation.

Having finished mounting the motors,  I was able to start the task of wiring the cards. Ian provides extensive instructions with the cards, and suggested an inline circuit breaker for each axis to use as a ‘kill’ switch in the event of undesired behavior. I happened to have about ten 28-volt circuit breaker switches lying around  as a result of the circuit breaker switch airworthiness directive that became effective for piston Beechcraft aircraft in 2010. The FAA forced operators of these aircraft to replace thousands of these switches with newer models after a few reports of failures and resultant smoke in the cockpit episodes. So I chose three of these with appropriate amperage ratings and installed them in an existing structural support under the FO side left rudder skid. I left enough slack in the wiring to allow them to be repositioned to the underside of the main instrument panel after that component is installed later. These switches are not airworthy per the AD, but perfectly functional for this purpose.

Beech circuit breaker switches re-purposed as kill switches for dynamic control loading motors.  For now they are mounted below the FO side left footrest. I left enough slack to allow them to be repositioned below the FO side of the main instrument panel later.
Beech circuit breaker switches re-purposed as kill switches for dynamic control loading motors. For now they are mounted below the FO side left footrest. I left enough slack to allow them to be repositioned below the FO side of the main instrument panel later.

I would have preferred to have mounted all three BFF interface boards somewhere above the flight deck to facilitate their maintenance, but practical concerns prevented me from doing so. Because the motors have integrated position sensors, the signals carried by the small gauge wires back to the interface boards are very low voltage and Ian recommends not extending the shielded wire bundles coming from the motors. The cable bundles are short, no more than three feet. As there are also large heat fins on the cards, they could not be located in an enclosed part of the cockpit without complex cooling systems including ducting. So I had no choice but to mount the cards underneath the floor in areas that would be relatively accessible with a mechanic’s creeper.

Custom fabricated plates (painted Boeing grey). Top: initial yaw axis motor mount, left in place to add structural stability. Middle: three BFF BLDRV-12/24 cards for dynamic force feedback. The plate also has two fans for heat sink cooling.  The middle of plate has the roll axis motor, with two pulleys for setting the correct tension on the timing belt. Bottom: original Boeing elevator torque tube, painted in zinc chromate green.
Custom fabricated plates (painted Boeing grey). Top: initial yaw axis motor mount, left in place to add structural stability. Middle: three BFF BLDRV-12/24 cards for dynamic force feedback. The plate also has two fans for heat sink cooling. The middle of plate has the roll axis motor, with two pulleys for setting the correct tension on the timing belt. Bottom: original Boeing elevator torque tube, painted in zinc chromate green.

The BFF cards can be daisy chained together in order to allow the use of a single USB interface cable. This is advantageous because the boards were designed to use a specialized USB PICAXE cable that uses a 1/8 inch mini stereo jack that costs $30 and must be ordered from the UK. The software identifies the different control axes by the use of jumper pins that are set on each board. Ian recommends that all three interface cards be co-located, so that each length of daisy-chain serial cable between boards are no more than eight inches to eliminate noise. I could have achieved this by mounting one card above the roll axis motor mount plate, but this would have made it very difficult to access from the underside, so I elected to purchase a second PICAXE cable to allow me to locate one interface card about 12 inches away from the other two. As also recommended by Ian, I installed two cooling fans, one for the pitch axis and one that is shared by the roll and yaw axes.

It took a few weekends to cut, crimp and run all the wire between the wall outlet, power supplies, and interface boards. I took advantage of some existing Boeing light fixtures used by mechanics when accessing the forward flight control bay, using another old Beech circuit breaker switch in the process. I will be happy to have these lights operational the first time I have to venture under the flight deck on the creeper.

When I first applied power and fired up the BFF test software, all three axes moved, but not very much. After a few emails exchanges with Ian, I got the pitch and roll axes moving but it was clear the yaw axis, with the belt-driven design that I came up with initially, was never going to work because the motor needed to make at least 120 degrees of revolution in order to achieve initial calibration. So I elected to relocate the yaw axis motor from the midline to a place just outboard and forward of the rudder crossover linkage. I was hoping to build a transmission with spare parts on hand, but a brief experiment with direct drive with a pushrod and the largest gear I had in stock resulted in the same problem: not enough rotation to pass the calibration routine. So I ordered two additional timing belt pulleys, fitting the small one to the motor and the large one to a custom fabricated shaft/plate assembly that attached to the Boeing mechanism. This replaced an original autopilot component made out of plastic, which was apparently designed to shear in the event of a control jam.

The small silver timing belt pulley on the right is mounted to the motor shaft, while the large silver pulley to the left is mounted to the Boeing mechanism. The black pulley in the middle sets the proper tension.
Yaw axis drive mechanism. The small silver timing belt pulley on the right is mounted to the motor shaft, while the large silver pulley to the left is mounted to the Boeing mechanism. The black pulley in the middle sets the proper tension.

The roll axis is controlled by a motor mounted in the midline, fitted with a timing belt pulley and long belt with a number of flat pulleys to correctly set the tension. I was able to find some blocks online that were cut with the timing belt pitch, through which the ends of the belt were sandwiched. I then drilled a hole through the end of each block, passing an existing Boeing cable already connected to the aileron/spoiler controls.

This axis initially had too much slack to calibrate the motor. A call to David Allen revealed that there is a spring inside the FO side aileron hub that allows the Captain and FO side aileron/spoiler controls to decouple in the event of a control jam. Conveniently, there was a rigging pin hole in the mechanism used to immobilize the spring. After testing out what David promised me was true, I simply tapped some threads with a 3/8-16 tap, cut a countersink, and inserted a screw, locking the aileron and spoiler hubs together, resulting in a much smoother mechanism.

The pitch axis motor is mounted to a custom fabricated plate that crosses the midline to help index the two halves of the flightdeck floor. A thick aluminum block moves the motor close enough to the elevator torque tube to use the existing Boeing mechanism.
The pitch axis motor is mounted to a custom fabricated plate that crosses the midline to help index the two halves of the flightdeck floor. A thick aluminum block moves the motor close enough to the elevator torque tube to use the existing Boeing mechanism. The pushrod seen connected to the large silver pulley to the right is connected to a tab on the Boeing elevator torque tube.

The pitch axis motor is fitted with a NEMA 34 planetary gearhead with a 10:1 reduction ratio, a simple, cost effective alternative to building a custom transmission. The planetary gearhead was then fitted with a large pulley which was then attached via a pushrod to a pair of existing tabs on the elevator torque tube.

Contemplating force feedback

After reinstalling the control columns and re-linking the rudder pedals and brakes, I started mounting springs and heavy duty drawer slides to implement static control loading like that provided by the excellent gear made by Northern Flight Sim. While searching online for parts I came across Ian Hopper’s force feedback site, where he sells hardware and software for implementing force feedback for mid size (think a heavy duty control yoke, like a CH Products yoke made out of metal parts) and larger cockpit setups.

After discovering this I became obsessed with adding this functionality to my simulator. My basement is fairly big, with nine foot ceilings, but I know I will never have enough room for full motion. Adding force feedback would lend a great deal of realism to my setup. Force feedback adds two characteristics simultaneously: dynamic control loading, so that the pilot feels the aerodynamic effects of turbulence and configuration changes, and autopilot functionality, so that flight controls move appropriately when the autopilot is engaged.

This may turn out to be the most challenging hurdle in the project. Ian has created an excellent, highly cost-effective solution to this problem, but he leaves it up to the buyer of his products to properly construct the mechanisms that connect to this controller cards and specified motors.

I have an advantage in that my flight controls were built by Boeing to withstand years of abuse, so all I really have to do is design three transmissions each using this small motor to create realistic forces on a larger scale. It is this particular problem that has had me stumped for the past three months, trying to specify the proper transmission in the most cost effective way. I know it can definitely be done, the question is how?