Flightsim Home
Side Stick

AC/DC Meter Panel

By Pim van Vrijaldenhoven

The Hardware

Note if you use Prosim737, you no longer need this!

Just like many other cockpit builders who donít like to have holes in the overhead panel, I looked for a way to make the AC/DC Meter Panel functional.  Since there are no ready-made solutions available on the market as far as I know, I decided to do it myself.  I did this for a number of reasons:

  • I had never done any programming with MS Flight Simulator
  • I gave me chance to understand the workings of pmSystems better
  • I have been employed most of my working life with the market leader in hand held digital multimeters, so I know about meters
  • It would be fun

Then I started to look for what would be available in terms of components that could be easily connected to pmSystems and would be affordable.  I wound up with the PhidgetTextLCD with 8/8/8 card.  This card features a two-line 20 character display, plus 8 digital inputs, 8 digital output and 8 analog inputs and interfaces with the PC via a USB port.  It does not require an external power supply.  In terms of width, the display fits perfectly in the FlyEngravity overhead panel that I use.  The only drawback is that in a real panel the two display lines are much farther apart. 

My intention was to provide as much functionality as possible within the limitations of pmSystems.   I got most of the information from Pat Booneís Boeing 737 Management Reference Guide, Edition NG.


There are three switches that need to be interfaced to:  the DC selector, the AC selector and the Maintenance button.  I wired them in parallel, position 1 (STBY PWR) to DI0, position 2 (BAT BUS/ GRD PWR) to DI1 and so forth.  The Maintenance button is wired to DI7.  To select the appropriate switch the common poles are connected each via a diode to three digital outputs.  The DC selector is connected to DO0, the AC selector to DO1, and the Maintenance button to DO2.  The cathodes of the diodes are connected to the digital outputs of the Phidget board.

For clarification use this wiring table:

DO0 DO1 DO2 DO3  
Position 2  BATBUS    GRDPWR - FWD DI1
Position 3  BAT         GEN1      - AFT DI2
Position 4  AUX BAT APU GEN   - FWD DI3
Position 5  TR1      GEN2        - AFT DI4
Position 6  TR2    INV             - R DI5
Position 7  TR3      TEST           - L DI6
Position 8  TEST  - X - DI7

The Phidgets board is mounted on a 120 x 60 mm piece of aluminum with a cutout for the display.  It is painted black and mounted on the overhead using doubly sticky tape.

Note that the AIR TEMP selector was added later and is not needed for the proper operation of the AC/DC panel.


After installing the Phidgets driver software, the proper operation of the switches can be easily verified. Just run the Phidget Interface Kit 8/8/8.  To activate a switch the output must be unchecked (pulled low) and the others checked (high). 

 In the image on the right the AC switch is activated. The switch is set here to position 3 = GEN 1.


The Software

To make it all run a dedicated piece of software must be written. This software must sense the settings of the switches, pass them on to pmSystems via FSUIPC, read the pmSystems variables, format them and display them on the Phidgets board. In addition it must implement the Maintenance switch since it is not modeled in pmSystems.

The first question was kind of software APIís are available for both the Phidgets board and FSUIPC. Both Phidgets and FSUIPC feature quite a number of supported languages. I chose a Microsoft Visual Basic 2005 Express approach. Reasons being the development tool is free of charge and I am familiar with ASP.NET.

I started to download the FSUIPC SDK and studied the VB.NET code. It is written for .NET 1.1 so I imported it in the .NET 2.0 environment. In addition I made some changes to the code so it is now a class by itself.

I looked on the various pmSystems files what variables were available.  I found that the five values on the panel have offsets and are:

Const ACAmps As Integer = &H57A2
Const DCVolt As Integer = &H57A4
Const DCAmps As Integer = &H57A6
Const ACVolt As Integer = &H57A8
Const GenHz As Integer = &H57AA

Const BusSelect1 As Integer = &H56ED
Const BusSelect2 As Integer = &H56EE
Const PWR As Integer = &H5616

I also use PWR so the display is blanked when no power is available.  It is mystery to me how the five variables are filled when the BusSelect values change.  I could not find it in the pmsys737.lgc file (build 110).

Normal Mode

With the two switches - DC left and AC right - you can view the various voltages, currents and frequencies that the various sub system deliver.  This is only partially modeled by pmSystems.  For example the TR's (Transformers Rectifiers) show always 0 V and 0 A, the battery always has an 8 A drain and the AC current has always the same value irregardless of current loads like galley, lights and so on.

Maintenance Mode (no faults)

By placing both switches in the Test position, the unit enters in maintenance mode.  It initially shows all the pixels on the LCD display.
By pressing the MAINT buttons or after 15 seconds it shows the message on the right if no electrical faults are present

In order to create some electrical faults I had to make some modifications to both the pmsys737.lgc and pmsys737.txt files.  In the pmsys737.txt I added the following line:

textlightbox ELEC, -93,60.0,.6,o,ElecFault,7,3

in section Battery.  This add the ELEC annunciator.  Since pmSystems only supports two electrical faults I added the following line to pmsys737.lgc:

elecfault = gen1fault or gen2fault

This will illuminate the ELEC light if a generator fails.  In our simulator we can clear faults without the need for a service technician.

Maintenance Mode (faults - ELEC light on)

By placing both switches in the Test position, the unit enters in maintenance mode.  It initially shows all the pixels on the LCD display.
By pressing the MAINT buttons or after 15 seconds it shows the first fault.  By pressing the MAINT button, it will go to the next fault.
If no more faults are present the following message will show:
Now press the MAINT button for about 6 seconds or until the message on the right appears.  The fault conditions are removed and the ELEC light should be extinguished.

Since there is no standard way to cause any of the faults I have provided a small program to do just that.  The program also allows you to turn on ground power and start and stop a pushback.

For more information about the software see the panel software page.  If you have any questions or remarks please send me an e-mail at: