|Flight Stick Control Unit with Pedals and Brakes
I'm very fascinated of Flight Simulators. Perhaps it runs in the family as my big brother also always liked to use Flight Simulators a lot and has driven it as so far to take a real Commercial Flight Certificate and have jobs as pilot some days a week. From the first monochrome version I had from Microsoft on my old Commodore PC-10II with 64Kbyte RAM running at speed 4.77 MHz bought in 1985 I have for fun used Flight Simulators in a lot of versions in a lot of years to measure the ever growing computer performance that is developing each year. I also used another Flight Simulator on the market called "Fly" which delivered a lot of Graphical features in top of the Microsoft Versions. Today I'm using the Microsoft Flight Simulator 2002 Professional Edition. This version includes flying lessons and has air traffic controller's conversations in the speaker.
To check the computer evolution I always have found that using a Flight Simulator program is a good Benchmark test to test the improvement and performance of both the Motherboard and Graphics Card. This is because the simulator designers always squeezes the computer capacity and performance to the very edge to give a smooth simulation with a lot of dynamic graphics going on.
The only annoying thing in using the Flight Simulator with a Joystick is that you have to use a computer keyboard to push all the "real" buttons.
This was where this project started. I would make my own Steering Control Unit to the most needed functions and then also use the PC keyboard for the rest of the controls. I would in-design the highest possible use of buttons on the standard Game Port using a standard Joystick driver. Of coarse buying an expensive "Plastic" Joystick would be too easy - I preferred to build my own version of wood.
I talked to my father-in-law about this project. Years ago he had a private license (A-license) for real planes and he shares my fascination about Flight Simulators. He is a very skilled and innovative person in doing all kind of mechanics just what I needed to carry out my dream of making my own Flight Control Unit which would include a lot of mechanics.
We discussed the project, the possibilities and agreed to start it up during the winter 1999.
The first part of the project was to have an overview of the circuit and electronics and then when this was investigated and designed using a "muck-up-model" (prototype), the mechanical part could start up.
Our plan was to have 2 independent units connected to each other with a cable fixed to the pedal unit so that this unit was optional. In the Yoke unit a connector socket was placed. This connector connects the cable from pedal unit when wanted. This is useful when you have to take it away. The main unit with the Flight Handle (Yoke) and Throttle control and all the switches will be connected to the PC Game Port and placed on a table with the Keyboard on a shelve. From this via a connector the other part including the pedals and Brake Switch can be connected and can be placed on the floor. The Game Port is often today combined into the Sound Cards and is therefore placed in the Sound Card bracket as a 15 pin DSUB Male Connector. This was our ideas. Now we had to do a lot of hard work! A lot of investigation had to go on. First of all what is the possibilities of the standard Game Port now almost included on Sound Cards. This is what discovered.
Game Port Pin-Out
Game Port Pin functions (DSUB-15 Female):
As one can be from the table the Game Port has been developed to support two different joysticks with each 2 buttons and 2 analog inputs (X-Y direction). I research a little and found that a lot of manufactures of Flight Controllers used a combination of inputs from the two different Joystick pins in the Game Connector: 2 analog inputs for the Yoke (X-Y) 1 analog input for the Throttle and that?s it.
|2||Button 1 Joy 1|
|3||X axis Joy 1 |
|6||Y axis Joy 1 |
|7||Button 2 Joy 1 |
|10||Button 1 Joy 2 |
|11||X axis Joy 2|
|13||Y axis Joy 2|
|14||Button 2 Joy 2 |
I investigated my CH Flightstick Pro
and this was using the analog inputs as described. This CH Flightstick Pro also had the following digital inputs. 3 thumb buttons, a trigger button and a 4-way (POV) hat switch in the joystick. This is a total of 8 digital inputs - but only 4 have been designed for two different joysticks. This is possible because the Joystick driver combines the two inputs for both joysticks to one.
In this way 4 digital inputs are available. All the pins are driven high (+5V) from a pull-up resistor on the PC Game card. Each button needs to pull the pin low when pressed. 4 pins can then be in two different positions. Low (0V) or high (+5V) this gives 24 = 16 different combinations. Because the combination "1111" is the combination where no buttons are pressed, there are only 15 usable combinations. Another factor, which influence the combinations, is that I wanted my unit to be compatible with an already existing Windows Driver. The driver I found supports 4 inputs for the hat-switch and 10 inputs for other functions. By trying to make the different combinations on the game port while watching the Joystick driver Setup Window I found out that the combination "0100" was not used.
This gives me 14 different input combinations to use. The power can be taken from one of the +5V pins in the connector, so no external power needs to be connected.
I did the following distribution of the inputs:
|# of Digital Inputs||Function|
|4||4-way (POV) hat switch in right handle |
|1||Brake switch (in pedal unit)|
|2||Horizontal rocker switch in right handle|
|2||Vertical rocker switch in left handle|
|2||2 independent buttons in left handle|
|3||3 independent buttons (in the table console unit)|
|3.Reverse Engineering of CH Flightstick Pro Joystick|
Because one of my design criteria's was not to have to develop a Windows Driver for my Steering Control Unit I start examine my First CH FlightStick. This joystick have a 4-way hat controller a trigger button and 3 other buttons. This is 8 inputs. I start finding the connections by removing the rubber buttons and unscrew the four screws. Inside I find a small printed circuit board with 3 ICs. After a little study at that board I find out that it has been designed using two cascade coupled prioritized 10-4 BCD encoders, which then are logical OR?ed together to give only four outputs.
The reason for making the inputs prioritized is a little clever. Because the Game Port only supports one code at a time we need to decide which of the button we pushed that have to have their code sent to the Game Port.If you are using the 4-way Hat switch these 4 buttons needs to be highest priority because this is important under landing an take-off to be able to see in different directions instead of pushing Flaps Up which needs to be done before the landing session for example. I made the following schematic in Orcad Capture to have it to other purposes.
CH Flighstick Pro Diagram:
Orcad file /
After finding out which pins to connect to which I started making my own design. The electronic schematic has been drawn using Orcad Capture from Cadence Design Systems. Orcad Capture is tool for drawing diagrams for electronic circuit designers. Orcad Capture is also able to produce different output files such as a BOM file (Bills Of Materiel) and a Netlist for various PCB design tools such as Protel. Both the BOM and netlist file is available for download here:
BOM text file /
Calay 9.0 Net List
Orcad file /
|5.Programmable Logic Device Code|
Instead of using more standard CMOS Logic ICs, I choose (for fun) to use only one IC. This makes it easier to connect! We have to find a PLD, which have 14 inputs and 4 outputs and runs on +5 Volts. I choosed a Lattice 20V8 which have 20 pins and can be programmed to fulfill my needs.
To develop the logic equations for the Programmable Logic Device I choosed the ABEL programming language which is easy for this project.
ABEL file /
ABEL (Advanced Boolean Equation Language) allows you to enter behavior-like descriptions of a logic circuit. ABEL is an industry-standard hardware description language (HDL) that was developed by Data I/O Corporation for programmable logic devices (PLD). There are other hardware description languages such as VHDL and Verilog. ABEL is a simpler language than VHDL, which is capable of describing systems of larger complexity. ABEL can be used to describe the behavior of a system in a variety of forms, including logic equations, truth tables, and state diagrams using C-like statements.
I used the tool from Lattice Semiconductor Corporation called ispDesignExpert now changed to ispLEVER to compile the ABEL file to a JEDEC file
When having the Jedic File (Joint Electron Device Engineering Council) you are able to program the PLD
with almost all kind of PLD programmers.
In programmable logic, the term JEDEC refers to a textual file containing information used to program a device. The file format is a JEDEC approved standard and is commonly referred to as a JEDEC file.
The next thing to do now is all the mechanics. This is where my father-in-law has to think. I supply him with 2 potentiometers one for X-direction
and one for Y-direction for the Yoke. Then one potentiometer for Throttle and a least one potentiometer for the pedals.
4 digital inputs for the (POV) Hat switch and then 10 buttons. Now all these things need to be integrated into some robust and nice
looking wood boxes. We decide that the Yoke need to have a neutral position in both X- and Y-direction.
Therefore some spring arrangements need to be made. The Throttle is designed like in a Sports Plane where you ask for more motor rotations
if you pull in a handle in the dashboard. The pedals also need a neutral position where the two pedals are beside each other.
When moving one pedal down there has to be a mechanism that presses the other pedal up and vice versa.
And at least a switch has to be activated when pressing both pedals down with the same force.
This will be used as a brake - also as in a real plane.
Some pictures are shown resized. If you want to see them more detaliled -
right click on the pictures and save them to your own PC and see them there.
|Yoke Control Unit - Handle|
|Left Handle Controls
||Right Handle Controls|
|Left Console Controls - 3 Buttons & Horizontal Trim |
|Right Console Controls - Vertical Trim & Throttle|
|Rear View - Pedal Connector Panel|
|Rear View - No Pedals Pressed
|Rear View - Right Pedal Pressed|
|Complete Steering Control|
|7.Windows Driver Installation|
Instead of developing my own Windows Joystick driver one of my purposes from the very beginning was as already stated to use a already existing driver which was capable of using all the combinations that the 4 digital inputs on the IBM Game Port supports.
The task was to find a driver which supported 2^4 different buttons - 1 (no buttons pressed) = 15 possible combinations.
Download and install the driver.
Windows Joystick Driver:
1. Install the above file and run 'C:\CHdrivers\setup.exe'
2. Go to Control Panel and double click Gaming Options
3. Select the joystick as shown on the picture. Remember to check the Rudder/Pedals checkbox
4. Check that status is now 'OK'
5. Press the Properties button to adjust the joystick. The following adjust window will be opened
6. Press the Calibrate button and follow the instructions to calibrate the joystick
7. After calibrating the joystick You can now test the buttons. Using the Right (POV) HAT-Swich will look like this:
8. Pressing button '2' shows
9. Your joystick is now ready for use!
|7.Flight Simulator 2002 Setup|
When starting up FS2002 you need to use the following procedure to program your Joystick setup to match
your newly developed Fligh Steering Control Unit. The FlightSimulator needs to what function your buttons has to control.
... Will be continued ...