Cockpit Interface Electronics:
Part Two: Phidgets
For a number of years, the EPIC was the only commercially
available product that enabled the average person to interface a homebuilt
cockpit to their PC. This changed in 2002 with the arrival of Phidgets.
You'll note that this review is more detailed than the work I did
for the USB EPIC product. I have written it this way because I felt that
Phidgets are far less known than EPIC and a more detailed examination was
A Phidget is literally a Physical Widget. The original design concept behind them was to make physical interfaces as easy to build as graphical ones. It just so happens that a number of the Phidgets that they make are a great fit for the home cockpit builder.
With the discovery of Phidgets, the bar of entry to the homebuilt simulator hobby fell nearly to the floor. Cockpit interfacing was now well within even the most stringent of builder budgets. Instead of having to pony up nearly $500 just to get started, you could "test the waters" as it were for as little as $75!
Phidgets are made as simple as possible to both enable quick & easy understanding by non-technical people as well as avoid "extras" that most users don't need. This makes it a very good choice for our projects. Keep in mind that a Phidget is not a "drop in" device like EPIC is. Like EPIC, you have to write software to make it work. However, unlike EPIC you only have to write software on the host computer and you can do it in Visual Basic. There two things to note about this. First, the EPIC is designed to be able to send keystrokes to the host as if a user pressed a key on keyboard. The Phidgets are not.
To talk to a Phidget, you need to write software to handle this.
Fortunately, this is very easy to accomplish with the freely available SDK
or Software Development Kit. The SDK is aimed primarily at users of
Microsoft Visual Basic but you're not restricted to that as the only
option. I'll go more in-depth on this later.
I'm going to give you an overview of some of the common Phidgets
that I've used. these include:
Phidget InterfaceKits, 4/8/8, 0/32/32 and 0/256/0
Phidget Servos, single, 4 servo and 8 servo models
Phidget InterfaceKits are easily identified by their feature codes. The feature code will tell you at a glance what the particular Phidget IK you're looking at can do. The feature code is a three part number separated by the "/" character. The first position is the number of analog inputs the device has. The second indicates the number of digital inputs and the last indicates the number of digital outputs.
The first Phidget InterfaceKit is called a 4/8/8. It supports four analog inputs, 8 digital outputs and 8 digital inputs. The device I have is the
S/N 1 prototype and doesn't reflect current production modules. The current production version of this differs in several important ways:
The production version is an 8/8/8, four more analog inputs than on the prototype. The 8/8/8 also supplies a 2 port USB hub and a common
ground output system. The 4/8/8 I have can only drive LEDs as there is no common ground to allow the use of an external output power supply. The
8/8/8 device also requires an external power supply to handle the load required by the 2 port USB Hub.
One thing to note about the analog inputs is that they do not appear as joystick axes to the host. I've found this to be the only
down-side to utilizing Phidgets for cockpit interfacing. It should be noted that when using an open simulator such as MSFS or FlightGear, you
can use the SDK to interface the Phidget analog channels just as if you had a joystick connected. You can also utilize the analog channels for
non-joystick functions such as toe brakes while using a standard joystick interface for the primary flight controls.
I would imagine that if there is enough of a call for it, Chester might be open to modifying the Phidget InterfaceKit driver to allow it to be seen as a
joystick by the host.
This is the 0/32/32 Phidget InterfaceKit. It provides 32 digital or switch inputs and 32 digital outputs. The board has a common ground
for both the inputs and outputs and each output channel can support up to 250ma of current draw. The common ground system will allow you to use different voltages on different channels depending on your needs. For instance, if you've got a mix of 5, 12 and 24 volt indicator lamps, you
can operate all three types simultaneously by joining the ground (negative pole) of each power supply to the ground connector on the 0/32/32 module.
Next up is the 0/256/0 Phidget. Unfortunately, I don't have a picture of this Phidget handy.
The 0/256/0 InterfaceKit presents a 16x16 input matrix on a DIP header along the side of the board. It can be optionally configured as an
8x32 matrix for compatibility with EPIC input wiring. The input matrix is diode-isolated in the same way the EPIC matrix is.
The Phidget Servo devices are nice and compact units that come configured to drive a single servo up to 8 servos on a single board.
A PhidgetServo can control just about any common 3 wire servo such as those made by Futaba, JR Electronics or Tower Hobbies. Since a servo is not capable of being driven 360 degrees, they're not much good for continuous-rotation instruments like compasses, altimeters or ADIs.
However, they're a great fit for instruments such as vertical velocity indicators, rpm gauges, airspeed indicators or other partial-rotation gauges. If you really like the idea of using a servo, you can always attach a server to a 2:1 gear set to obtain a nearly 330 degree rotation.
The single servo PhidgetServo obtains its power right off
the USB cable. The 4 and 8 servo versions require an external power supply
as the load is too high for a standard USB port or hub.
For building instruments that require a continuous rotation such as a
compass, you could use the Phidget Stepper.
This Phidget can control 2 bipolar stepper motors and has 2 digital inputs for
"home" sensing. An external power supply is required and it can handle a maximum
load of 2 Amps per coil. Stepper motors that require between 5V and 30V
This is a PhidgetPower. This Phidget is designed to provide a variable DC power output. For instance, you could connect a DC motor to it and control the speed of the motor via software. This particular PhidgetPower is the external power version. It requires an external power supply to power the load and can control two devices. I've got a great use for this little thing, but I'm not going to tell anyone yet. :)
Finally, we have the PhidgetLED. This device will allow you to control up to 8 seven segment LED displays or 64 individual LEDs. This is a good choice for building transponder or radio frequency displays. It gets power from the USB cable, so it would be a good idea to use a powered USB hub with this device.
There are more Phidgets that you can check out by going over to the Phidget website. There is a lot of documentation there as well as programming examples and a Phidget community forum.
The cost and ease of use are big plusses with the various Phidgets. The only real down side is they do require some programming to use. This is not necessarily a bad thing however. The Phidget SDKs are very easy to use and understand and can be used with Visual Basic, Visual Basic .Net, C#, C++ and Delphi. The primary functional advantage over EPIC is you only have one software element to track. With EPIC, you've got to write EPL and if you want to take full advantage of EPIC, you need to write host-side software as well. With Phidgets, you only need the host-side software. There is also support Phidget support for Linux where there is none for EPIC. This can be especially important for those of you working with simulator software such as the Linux version of FlightGear.
Phidgets can be purchased directly from the Phidgets website. All prices shown are in Canadian Dollars. Non-Canadian customers should head over to the Currency Exchange to obtain up to date equivalent prices.
This has been Part Two of my Cockpit Interface Electronics series and I hope you've enjoyed reading it. If you have any questions, comments or corrections, please feel free to contact me at email@example.com.
Gene Buckle, February 12th, 2004
Last Updated: 12Feb04