This forum is in read-only mode for archive purposes, please use our new forum at https://community.justflight.com
Forum Home Forum Home > Just Chat > Videos
  New Posts New Posts RSS Feed - Hardware Instrument Panel for FSX
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

Hardware Instrument Panel for FSX

 Post Reply Post Reply
Author
Message
Aircraft Aviation View Drop Down
Chief Pilot
Chief Pilot
Avatar

Joined: 15 Mar 2009
Points: 2149
Post Options Post Options   Thanks (0) Thanks(0)   Quote Aircraft Aviation Quote  Post ReplyReply Direct Link To This Post Topic: Hardware Instrument Panel for FSX
    Posted: 04 Aug 2010 at 1:53pm
Hiya everyone,
 
Please enjoy this HD 1080p Res video of me taking off in my Home Cockpit, homemade instrument Panel for FSX. It conists of six gauges and two heavy duty-airliner switches, ALL of which are ex-real-life parts that I've converted for Simulator use.
 
So yes, all of what you see in the video comes from a REAL aircraft, converted for Sim use!
 
Enjoy!
 
 
Please watch in HD 1080p, Fullscreen if you can. Also, for sake of reference, the Gauges are in the following places:
 
- Fuel Gauge - Top Left (Pounds x100)
- VSI - Top Middle (Feet per Minute)
- Airspeed Indicator - Top Right (Knots)
- EGT 1 - Bottom Left (Centigrade)
- Ammeter, Total D.C Cockpit Load - Bottom Middle (Tenths of Amps)
- EGt 2 - Bottom Right (Centigrade)
 
All of the Gauges are interfaced to FSX using Opencockpits freeware SIOC Software, and all are connected to the Opencockpits USBServos Card (upcoming review on Mutleyshangar).
 
If you are interested, this is the SIOC Code that keeps it all running:
 
Quote Var 8500, Link FSUIPC_IN, Offset $02C8, Length 4, Type 1     // Vertical Speed
{
  L0 = V8500 * 0.7895     // FSUIPC conversion, L0=VS
  L0 = ABS L0     // L0 not signed
  L2 = L0   
  IF L0 <= 1000     // First sector
  {
    L1 = L2 * 0.086     // (86 steps/1000 values) = 0.086
  }
  ELSE     // Is a greater value
  {
    L2 = L0 - 1000     //  L2 only have values for next sector
    IF L0 <= 2000     // Second sector
    {
      L1 = L2 * 0.05     // (50 steps / 1000 values) = 0.05
      L1 = L1 + 86     // Add steps of others sectors
    }
    ELSE
    {
      L2 = L0 - 2000     // L2 only have values for next sector
      IF L0 <= 4000     // 3. Sector
      {
        L1 = L2 * 0.0295     // ( 59 / 2000) = 0.0295
        L1 = L1 + 136     // Add steps of others sectors 50 + 86
      }
      ELSE
      {
        L2 = L0 - 4000     // L2 only next sector (Value-1000-1000-200
        IF L0 <= 6000     // 4. Sector
        {
          L1 = L2 * 0.0315     // ( 70 / 2000) =0.0315
          L1 = L1 + 195     // Add steps of others sectors 59+50+86
        }
        ELSE     // Out of range
        {
          L1 = 265        // Max. position
        }
      }
    }
  }
   IF V8500 < 0     // If VSI is Negative
  {
    &VSI = 606 - L1     // Subctract from center
  }
  ELSE
  {
    &VSI = 606 + L1     // Else add to center
  }
}
Var 8277, name VSI, Link USB_SERVOS, Output 4, PosL 348, PosC 606, PosR 871, Type 2     // VSI Servo
Var 9003, name IAS, Link FSUIPC_IN, Offset $02BC, Length 4     // IAS from Sim
{
  L0 = DIV &IAS 128
  L1 = L0 * 1.91 // Calculate Servo Slope
  L2 = L1 + 271.5 // Calculate Servo Intercept
V9000 = L2
}
Var 9000, name Servo3, Link USB_SERVOS, Output 3, PosL 271, PosC 606, PosR 940, Type 2     // ASI gauge
Var 8666, Link FSUIPC_IN, Offset $126C, Length 4 // Fuel Weight

L0 = V8666 // FSUIPC Offset Variable = L0
  L0 = ABS L0     // L0 not signed
  L2 = L0   
  IF L0 <= 400     // First sector
  {
    L1 = L2 * 0.91     // (364 steps/400 values) = 0.91
  }
  ELSE     // Is a greater value
  {
    L2 = L0 - 400     //  L2 only have values for next sector
    IF L0 <= 1200    // Second sector
    {
      L1 = L2 * 0.5975     // (478 steps / 800 values) = 0.5975
      L1 = L1 + 364     // Add steps of others sectors (+364)
    }
    ELSE
    {
      L2 = L0 - 1200    // L2 only have values for next sector
      IF L0 <= 1500     // 3. Sector
      {
        L1 = L2 * 0.47     // ( 141 / 300) = 0.47
        L1 = L1 + 842     // Add steps of others sectors 364 + 478
        }
        ELSE     // Out of range
        {
          L1 = 983        // Max. position
        }
      }
    }
       &FuelGauge = 0 + L1     // Add to minimum (0)
}
Var 6534, name FuelGauge, Link USB_SERVOS, Output 2, PosL 0, PosC 492, PosR 983, Type 2 // FuelGauge Servo
Var 7777, Link FSUIPC_IN, Offset $3AB0, Length 8 // EGT2

L0 = V7777 - 459.67 // FSUIPC Conversion Rankine -> Celcius
  L0 = L0 - 32
  L0 = L0 * 5
  L0 = L0 / 9
  L0 = ABS L0     // L0 not signed
  L2 = L0   
  IF L0 <= 100     // First sector
  {
    L1 = L2 * 0.07     // (7 steps/100 values) = 0.07
  }
  ELSE     // Is a greater value
  {
    L2 = L0 - 100     //  L2 only have values for next sector
    IF L0 <= 200    // Second sector
    {
      L1 = L2 * 1.37     // (137 steps / 100 values) = 1.37
      L1 = L1 + 7     // Add steps of others sectors (+7)
    }
    ELSE
    {
      L2 = L0 - 200    // L2 only have values for next sector
      IF L0 <= 500     // 3. Sector
      {
        L1 = L2 * 1.463    // ( 439 / 300) = 1.463
        L1 = L1 + 144     // Add steps of others sectors (7 + 137)
        }
        ELSE     // Out of range
        {
      L2 = L0 - 500     //  L2 only have values for next sector
      IF L0 <= 800    // 4. sector
    {
      L1 = L2 * 1.437     // (431 steps / 300 values) = 1.437
      L1 = L1 + 583     // Add steps of others sectors (7 + 137 + 439)
     }
     ELSE
     {
          L1 = 1014        // Max. position
        }
      }
    }
   }
&Servo1 = 0 + L1     // Add to minimum (0)
}
Var 5676, name Servo1, Link USB_SERVOS, Output 1, PosL 0, PosC 507, PosR 1014, Type 2 // EGT2 Servo
Var 8785, Link FSUIPC_IN, Offset $3B70, Length 8 // EGT1

L0 = V8785 - 459.67 // FSUIPC Conversion Rankine -> Celcius
  L0 = L0 - 32
  L0 = L0 * 5
  L0 = L0 / 9
  L0 = ABS L0     // L0 not signed
  L2 = L0   
  IF L0 <= 100     // First sector
  {
    L1 = L2 * 0.10     // (10 steps/100 values) = 0.10
  }
  ELSE     // Is a greater value
  {
    L2 = L0 - 100     //  L2 only have values for next sector
    IF L0 <= 200    // Second sector
    {
      L1 = L2 * 1.18     // (118 steps / 100 values) = 1.18
      L1 = L1 + 10     // Add steps of others sectors (+10)
    }
    ELSE
    {
      L2 = L0 - 200    // L2 only have values for next sector
      IF L0 <= 500     // 3. Sector
      {
        L1 = L2 * 1.22    // ( 365 / 300) = 1.22
        L1 = L1 + 128     // Add steps of others sectors (10 + 118)
        }
        ELSE     // Out of range
        {
      L2 = L0 - 500     //  L2 only have values for next sector
      IF L0 <= 800    // 4. sector
    {
      L1 = L2 * 1.373     // (412 steps / 300 values) = 1.373
      L1 = L1 + 493     // Add steps of others sectors (10 + 118 + 365)
     }
     ELSE
     {
          L1 = 905        // Max. position
        }
      }
    }
   }
&Servo5 = 0 + L1     // Add to minimum (0)
}
Var 6551, name Servo5, Link USB_SERVOS, Output 5, PosL 0, PosC 453, PosR 905, Type 2 // EGT1 Servo
Var 9119, Link FSUIPC_IN, Offset $2824, Length 8 // Total Load Amps

L0 = V9119 * 10 // FSUIPC Assign Offset to Variable
  L0 = ABS L0     // L0 not signed
  L2 = L0   
  IF L0 <= 35     // First sector
  {
    L1 = L2 * 0.03     // (1 steps/35 values) = 0.03
  }
  ELSE     // Is a greater value
  {
    L2 = L0 - 35     //  L2 only have values for next sector
    IF L0 <= 50    // Second sector
    {
      L1 = L2 * 3.4     // (51 steps / 15 values) = 3.4
      L1 = L1 + 1     // Add steps of others sectors (+1)
    }
    ELSE
    {
      L2 = L0 - 50    // L2 only have values for next sector
      IF L0 <= 200     // 3. Sector
      {
        L1 = L2 * 2.53    // ( 506 / 200) = 2.53
        L1 = L1 + 52     // Add steps of others sectors (1 + 51)
        }
        ELSE     // Out of range
        {
      L2 = L0 - 200     //  L2 only have values for next sector
      IF L0 <= 335    // 4. sector
    {
      L1 = L2 * 3.36     // (454 steps / 135 values) = 3.36
      L1 = L1 + 558    // Add steps of others sectors (1 + 51 + 506)
     }
     ELSE
     {
          L1 = 1012        // Max. position
        }
      }
    }
   }
&Servo6 = 0 + L1     // Add to minimum (0)
}
Var 5370, name Servo6, Link USB_SERVOS, Output 6, PosL 0, PosC 506, PosR 1012, Type 2 // Total Load Amps Servo
 
All of the above code was written by myself for the Gauges & FSX. The Gauges work with all Aircraft in FSX; PMDG, Level-D, Default, Carenado, Captain Sim, and much more.
 
Thanks,
 
AAWink
 
 

Back to Top
TomA320 View Drop Down
Chief Pilot
Chief Pilot
Avatar

Joined: 02 Apr 2008
Location: Perth Scotland
Points: 10235
Post Options Post Options   Thanks (0) Thanks(0)   Quote TomA320 Quote  Post ReplyReply Direct Link To This Post Posted: 04 Aug 2010 at 2:45pm

Very nice!  That must have taken quite a lot of time and effort converting the real world instruments to be Sim compatible?! 

 

 

Back to Top
Aircraft Aviation View Drop Down
Chief Pilot
Chief Pilot
Avatar

Joined: 15 Mar 2009
Points: 2149
Post Options Post Options   Thanks (0) Thanks(0)   Quote Aircraft Aviation Quote  Post ReplyReply Direct Link To This Post Posted: 04 Aug 2010 at 3:24pm
Originally posted by TomA320 TomA320 wrote:

Very nice!  That must have taken quite a lot of time and effort converting the real world instruments to be Sim compatible?! 

Yes and No. Two of the instruments, namely the VSI and ASI, were very difficult to make. This is because they are (natively) pneumatic Gauges, and of course FSX nor a Computer is going to give a pneumatic output. So, I had to "gut" these instruments and replace the pneumatic system with a Servo Motor, then connect it to the USBServos Card and thereon to the computer where the SIOC Scripting takes hold.
 
The rest of the instruments, luckily, are al natively electric gauges. This means all I had to do was take the electric inputs to these Intruments (2 EGTs, Fuel Gauge and Ammeter) and connect them to the USBServos Cad. However, this did stil ltake some time and was by no means easy.
 
Thanks for your interest!Wink

Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down