Lighting Controller

There are various options to illuminate the flight deck. Vendors have produced solutions which allow you to distribute 5V current over the many panels of the aircraft and also internally dim the integral lighting.

Unfortunately not all solutions meet the necessary requirements of a cockpit using OEM panels (incandescent bulbs) – the controller board must be able to manage high currents and also vary light intensity by reading dimming (potentiometer) values.

The Airbus pedestal, main instrument panel, and glareshield have a total of three pots which need to input to the controller. Two pots control the lighting of the Flight Control Unit (integral and vizor light) and one pot on the pedestal controls the backlighting of the pedestal and main instrument panel.

Mick Cliffe, an experience cockpit builder (and fellow Australian) recommended the use of the the N-Drive Shield, an Arduino shield which sits on top of an Arduino UNO. Using a custom script, you can direct the N-Drive to read independent pot values and change the intensity of the pulse width modulation (PWM) outputs.

After experimenting the conclusion was that the N-Drive fundamentally works, but it could not be integrated into the simulator. There was a significant amount of noise from the PWM and this was interfering with the Flight Control Unit – values would randomly injected into the system, creating havoc and an unsafe flying scenario. After weeks of investigation it was determined that it was the ground side sinking of the N-Drive causing these issues.

Out of necessity, the Soarbywire Light Controller was born – The N-Drive Shield schematics (TAPR Open Hardware License) was modified to allow for intensity (supply side) sourcing instead of (ground side) sinking.

The three potentiometers and 4 outputs were utilised to enable backlighting in the flight deck. No noise or electrical interference was observed with the Light Controller integrated into the simulator. The MOSFET transistor also allows for the passage of high current into an incandescent bulb panel system without considerable concerns.

Light Controller
– 4 potentiometer inputs (analog control)
– Screw terminals for inputs and outputs for easy mounting
– 4 source outputs (MOSFET)
– Source (vs sink) type output eliminates interference and noise
– Noise and buzzing frequently heard with PWM can also be eliminated with frequency changes
– Link potentiometer control to multiple outputs (e.g. integral light potentiometer controls MIP and pedestal backlighting)

Light Controller PCB with parts list provided are available for USD 20.00
Output Amplifier PCB with part list provided also available USD 20.00

Contact if interested

Sample Light Controller Arduino Code (AirbusDimming.ino)

// Airbus Backlighting Control
// Pedestal Integral Backlight, FCU Integral Backlight, FCU Vizor Backlight
// Interfaced with Soarbywire Light Controller 

#define MIP 3                // Source Connections 
#define PEDESTAL 5
#define FCU 9
#define FCU_VIZOR 10
#define Analog1 0             // Analog Integral Backlight (MIP & Pedestal) 
#define Analog2 1             // Analog FCU Integral Backlight   
#define Analog3 2             // Analog FCU Vizor Backlight 

void setup() { 
  // put your setup code here, to run once:
  pinMode(MIP, OUTPUT);    
  pinMode(FCU, OUTPUT);

void loop() {
// Changes the default PWM frequency for the supply connections to reduce noise
TCCR2B = TCCR2B & B11111000 | B00000111; // for PWM frequency of 30.64 Hz, D3
TCCR0B = TCCR0B & B11111000 | B00000101; // for PWM frequency of 61.04 Hz, D5
TCCR1B = TCCR1B & B11111000 | B00000101; // for PWM frequency of 30.64 Hz, D9, D10
 // Read analog values
  int Analog1_Value = analogRead(Analog1);    // MIP & Pedestal Integral Backlight Pot
  int Analog2_Value = analogRead(Analog2);    // FCU Integral Backlight Pot
  int Analog3_Value = analogRead(Analog3);    // FCU Vizor Backlight Pot 
// Map the potentiometer value to 1-255
  int Intensity1 = map(Analog1_Value, 0, 1024, 0, 255);     // MIP & Pedestal Integral Backlight
  int Intensity2 = map(Analog2_Value, 0, 1024, 0, 255);     // FCU Integral Backlight
  int Intensity3 = map(Analog3_Value, 0, 1024, 0, 255);     // FCU Display Vizor Backlight
// Output  the respective value to the integral back light bulbs
  analogWrite(MIP, Intensity1);
  analogWrite(PEDESTAL, Intensity1);
  analogWrite(FCU, Intensity2);
  analogWrite(FCU_VIZOR, Intensity3);

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s