jump to navigation

NexGen Flight Simulator: Hacking the Navigation Computer Display June 6, 2013

Posted by phoenixcomm in 16 Segment driver, Aircraft, Arduino, CP-1252/ASN-128, DIY Aircraft Cockpit, Embedded CPU's, Ethernet, Flight Simulation, Hardware, Indicator Lamps, Multi Function Display, ps2 keybaord, Semiconductors.
Tags: , , ,
1 comment so far

CP-1252This is the CP-1252/ASN-128 Navigation Computer Display.  The NCD was originally designed for Doppler  navigation, but will work in my application. I have reprinted the Analysis of this from my WordPress Blog (22Apr2011)

The Analysis:  The NCD is comprised of 4 groups: Display, Keyboard, Rotary Switches, and Thumb Wheel Switches.  The Display is comprised of 4 16-segment and 13 7-segment PinLite lamps, and two LED’s.  The keyboard is comprised of a 10 key number pad and 4 special keys, it also encodes A-Z. There are two rotary switches, and two thumbwheel switches as well. I also found a users guide, TM-1-1520-238-10 pages 3-34 through 3-46 on the web.

In it’s dim past it had been converted to a flight sim, and the only thing left whrere: the display, switches, light plate, and lots of wire. Each component, had each of their connection(s) brought out in to a header.

The Plan: As it is almost impossible to find a 16-segment display driver, but I really found two parts MAX6954 (SPI and QSPI interface), and MAX6955 (I2C interface). Both devices have the same programing model and have a I/O expander which could handle the keyboard. I have chosen to use the I2C interface. I have broken down the NCD into the following sub-units:

  • Two MAX6955AAX+ :
    • one will handle the 4 16-segment displays.
    • one will handle the 13 7-segment displays.
  • The keyboard will be interfaced via a standard Ps2 keyboard encoder that will be harvested from an old ps2 keyboard.
  • I will also need 2 bytes of I/O as well:
    • 1 byte of output to handle the two rotary switches, via two priority encoders (74LS148).
    • 1 byte for both thumbwheel switches (they are encoded to 4 bit BCD).
  • And lastly I need a USB interface to talk back to the IOP (IO Processor)

I also need a embedded microprocessor, the NCD information does not need to be super fast, as in reality it is only a dumb terminal, so an Arduino should be able to keep up with everything, if there are speed issues I will most likely switch to a TI Stellaris Launchpad module.   The NCD is either taking keystrokes from the pilot, or updating the display. In the words of the Outer Limits “There is nothing wrong with your television. Do not attempt to adjust the picture. We are now in control of the transmission. We control the horizontal and the vertical”. In the scheme of things this unit will only be another end point on the IOP which is sending the key strokes or and knob turns to the simulation processor. And in turn the NCD in effect listens to the NavGroup via the IOP for present positiontime to go etc.

 Keep Tuned in More to Come!

NexGen Flight Simulator Blog Index

614L-8 ADF Control Head Hacking, Part 2 January 31, 2013

Posted by phoenixcomm in ADF, Collins 614L-8, DIY Aircraft Cockpit, Flight Simulation, Radio Sub System.
Tags: , , , , , , ,
add a comment

The Plan Continued.

  • We need to pick a embedded cpu. The requirements are:
    • It must handle all of the GPIO (see part 1 for the I/O Table), or about 20 pins.
    • It needs a USB interface for a data link to talk to the host.
    • It needs to generate the BFO signal.
    • It needs a PWM output to drive the meter.
  • We need to design a interface card. It should have a relay for the Dial Lamps, and a connection to the Panel Lamp Dimmer. It should have a jack to connect the gain potentiometer to the audio system. It should also have an output for the ADF flags, in various instruments.
  • We also need to replace the syncro with static digital encoder. It must be static as when the system powers up there is no guarantee where the dial will be tuned to. Remember this is just a AM radio.
  • Here is a block diagram of the ADF systemADF-System
  • Now we must get the syncro out of the frame. Here is an abbreviated version, I will post some photos when I do the work.
    (TM 11-5826-255-35 page 3-12):

    1. Loosen two Dxus fasteners located on rear cover, and slide the rear cover off the control unit.
    2. Remove three screws and three lock washers securing retaining (rear) plate to frame.
    3. Remove fixed resistor from retaining (rear) plate by removing the screw.
    4. Remove four screws and nuts securing connector to the retaining (rear) plate.
    5. Remove the retaining (rear)plate.
    6. Loosen two setscrews on collar, and remove spur gear from shaft of helical gear.   Note. If the setscrews cannot be reached, the tuning gear train must be disassembled.
    7. Loosen two setscrews on collar, and remove spur gears from the shaft of transmitter syncro.
    8. Remove collar.
    9. Loosen the three screws located around transmitter synchro at the shaft end.
    10. Orient three rim-clinching clamps to permit removal of transmitter synchro and remove the transmitter synchro.
  • Remember re-assembly is just the reverse order. Make sure that you keep all of the screws, etc. in a nice safe place. What I like to do is to put the screws back where they came from.

614L-8 ADF Control Head Hacking, Part 1 January 30, 2013

Posted by phoenixcomm in ADF, Collins 614L-8, DIY Aircraft Cockpit, Flight Simulation, Radio Sub System.
Tags: , , , , , ,
add a comment
Collins 614L-8

Collins 614L-8

This is the ADF Control Head that I chose form my project.  It is a Collins 614L-8. they are plentiful on Ebay.

The Analysis    The Unit is tuned via a 400hz syncro transmitter. So it looks like I will have to find a replacement for the syncro.  The Loop Switch in the upper left must be rewired and the switch logic for the Band Selector Switch behind the Tuning Knob seams ok, but that will have to be verified. The Gain Control is just a 5k pot,  and the Function Switch behind it just need some pull-up resistors. It looks like I can drive the Tuning Meter with a PWM signal from the controller.  Also there is a BFO Switch which induces 142.5 Khz signal on top of the audio.

The Plan   Well first I need to score a copy of the maintenance manual they are kind of pricey on Ebay so I dug a little more. In the military the Control Unit is part of AN/ARN-83 and I found pdf copies of TM 11-5826-225-12 and TM 11-5826-225-35 with schematic, part diagrams, etc. Also you can score the operators manual here.

Next we have to identify the goes inta and the goes outas, so here goes:

Connections Map
PIN I/O DESCRIPTION CPU PORT CPU PIN
O Loop Ant, Right Step
O Loop Ant, Right Slew
O Loop Ant, Left Step
O Loop Ant, Left Slew
O Function Switch, ADF
O Function Switch, ANT
O Function Switch, LOOP
O Range Switch, 190 – 400
O Range Switch, 400 – 850
O Range Switch, 850 – 1750
O BFO Switch
 O Gain Control, Bottom
O Gain Control, Top
 O Gain Control, Arm
 I Tuning Meter
GROUND
 P Dial Lamps
 P Panel Lamps

The Tuning Meter is a dc micro-ammeter requiring 100 micro-amps for full scale deflection.

Stellaris LM4F120 LaunchPad Evaluation Board or the best 13 bucks you ever spent! December 2, 2012

Posted by phoenixcomm in Arduino, DIY Aircraft Cockpit, Flight Simulation, Linux, ps2 keybaord, Software, TI Cortex™-A8 CPU, TI EK-LM4F120XL LaunchPad, TI Stellaris.
Tags: , , , , , ,
1 comment so far

What in the world do you get for $12.99?? LM4F120_LaunchpadYou get this cool 80Mhz 32 bit ARM Cortex M4F Launchpad Board!

So lets take a look at this thing. Well for openers we get both 16/32 bit instruction, and the F stands for Floating Point. It comes with its own on-board USB In-Circuit Debugger. On-board I/O is USB,  CAN, SPI, PWM,  ADC. 16 MHz main xtal oscillator, 33MHz Real-Time Clock xtal. And plenty of memory: 256KB of 40Mhz Flash, 2KB of EEPROM, 24KB SSRAM, an MPU.

TI has provided a great Student Guide and Lab Manual. I went to TI training it cost me $25.00 and I got my kit plus the Ken Tec QVGA TFT display with a resistive touch overlay. 350px-Kentec With this I can model my CDU with out any of my hardware. I also found a nice App Note on using this board as a I/O processor (shows you how to hook up a PS2 keyboard). I looks like I can put my code that’s in my Linux box into the Stellaris board, but at this time im not shure of my code size as yet.  I have only been messing about with this for a month. But I have been busy moving 😦

Now for what do you use for the IDE? Nope we can use Code Composer 5 (Eclipse) and the licence is forever as long as you have the board plugged in. No you can remove it and put in a different one.

Meet the Arduino Killer!! The BeagleBone! November 5, 2012

Posted by phoenixcomm in Arduino, Beagle Board, BeagleBone, DIY Aircraft Cockpit, Flight Simulation, Linux, ps2 keybaord, TI Cortex™-A8 CPU.
Tags: , , , , , , , ,
add a comment

All I can say is: Holly crap Batman

they got it right!

I plugged in the little board (its size is 3.4″ × 2.1)Image It comes out of the box with the Angstrom Linux distro, an RJ45 (Ethernet) and 2 USB ports, one is to connect to your host and the other is for devices, and then just a shit load of I/O! let me explain: two I²C ports, five UARTs,  a SPI interface, a CAN interface, eight PWM ports for motor control etc, eight Analog-to-Digital Converters, and count them 66 general purpose Digital I/O pins!! There are a mess of Shields but here their called Capes, an no your Arduino Shields will not fit.

Gone is the Arduino  bastard kind of C language! Now instead of their smallish library, you can draw on 35+ years of code. No more add-hock programming. It’s not a new paradigm its Linux.  Now I can write and test my code in Eclipse, move it to the bone, recompile / re-target it, or do that on the desktop and run it!

Ok the Bone has a 720Mhz TI Cortex™-A8 CPU, 256Mb DRAM, + Flash. All of this for just under 90 bucks!

Ok like I said before I plugged it into my Linux Mint desktop via the USB port. The board came up within less than 10 seconds. I located it in the finder told it to ‘exit’ thats to change modes on the USB interface,  and then in Chrome and entered 192.168.7.2 in the URL bar and hit enter and I am in the Cloud9 IDE but more about that later.

Enjoy!!

BTW: My first Challenge is to migrate the PS/2 keyboard code from the Arduino Playground. http://www.arduino.cc/playground/Main/PS2Keyboard to the BeagleBoard.

Arduino Trials and Tribulations, Part 4 (The Linux Platform) July 15, 2012

Posted by phoenixcomm in Arduino, DIY Aircraft Cockpit, Flight Simulation, Linux, Mint 12, Software.
Tags: , , , , , ,
add a comment

Well now that I am using Linux Mint 12 with a Cinnamon Desktop for my development with Eclipse (Juno) for my C programming environment. I wanted to make my work easier, so first thing I did was to put my lpr icon on my Desktop…  unfortunately there was nothing in the menu tools. So with a little digging, I found a cool solution so from a terminal, you might want to sudo into shell (sh):   gnome-desktop-item-edit ~/Desktop/ –create-new
Which brings up the Create Launcher tool.  Now edit the tool to as shown, press ok, and you get a new icon on your desktop, that looks like a spring. So right click on it and bring up the property dialog and change you icon.  Now you can drag any file from you desktop filer and drop it on you printer and presto it prints!!

Ok now on to more fun… Well I’m going to move my arduino tools to this box now..
First thing when you try to configure your arduino’s serial port my box only gave me /dev/ttyS0 but we need a serial usb port…. so you need to make sure your that you arduino is unpluged, and run lsusb from your terminal, and you get this:
$lsusb
Bus 005 Device 006: ID 413c:2010 Dell Computer Corp. Keyboard
Bus 005 Device 007: ID 413c:3200 Dell Computer Corp. Mouse
now plug in the arduino and run it again.
$lsusb
Bus 005 Device 006: ID 413c:2010 Dell Computer Corp. Keyboard
Bus 005 Device 007: ID 413c:3200 Dell Computer Corp. Mouse
Bus 003 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
$sudo modprobe usbserial vendor=0x403 product=0x6001
now when you go to the arduino console you can now select /dev/ttyUSB0

enjoy
One note: That is only for that jack. If you want to map the other USB jacks just repeat the steps.

Having Network problems with Linux Mint 12 April 16, 2012

Posted by phoenixcomm in DIY Aircraft Cockpit, Ethernet, Flight Simulation, Linux, Mint 12.
1 comment so far

I recently installed a fresh copy of Linux Mint 12 (32bit) on an older motherboard (Asus P4M800pro) with an VT6102 (Rine II) on the motherboard, and a 3Com nic installed in a pci slot.

Here is the gist of what happened:

  • I had a cable plugged into the 3Com nic, and no cable plugged into the Rine II.
  • I tried in vain to configure the Rine II but when you clicked on the jack icon at the top of the screen, the 3Com nic was in black and the Rine II was grayed out.
  • So I went through the Applications/System Settings/Network: I saw both nics. The 3Com showed all the info (address, mac, mask, dns, etc), and a dark configure box.
  • But when I clicked other wired network (Rine II) all it showed me that it was unplugged and the mac address. But it would not let me configure the nic.

After using the system for about a week with out the nic working, I had a bright idea, I would plug in the Rine II into a switch (not going anywhere)

BINGO! That did it and now it let me configure the port..

POSTMORTEM:  I have been a Unix developer, system administrator for over 35 years and for the past 12+ years it had been working on Sun UltraSPARC’s and a few OpenBSD transparent firewalls.  No mater if the cable was plugged in or not, it should have let me configure the nic.

Radio Subsystem – Putting Together the Linux Pc. April 6, 2012

Posted by phoenixcomm in Arduino, ARINC 410, Audio, DIY Aircraft Cockpit, Ethernet, Flight Simulation, Linux, Software.
add a comment

Well here I am again.. still talking about this radio system..
The Plan:   Well I have an older pc that will be the donor. It has a old ECS K7S5A pro motherboard. Yes its only 32 bits, but it has 5 PCI slots, more than enough to hold a video card, a ethernet adapter, and a few Sound Blaster PCI-16 cards. ALSA or Advanced Linux Sound Architecture should handle the multiple audio cards.  The motherboard has a built-in ethernet adapter which will connect to the Internet, and other ethernet adapter will connect to the private simulator network, so the radio subsystem can get messages from the navigation subsystem (latitude, longitude, and altitude), so I can get the slant range information of the radio that the pilot has selected. This calculation gives us: From/To, DME and is the Nav radio valid. One of the other programs running on this box is a Morse Code signal simulator, as all Nav radios use a Morse Code identifier.  This Pc is also hooked up to the Arduino which talks to the radio heads. This is accomplished by using a virtual comm port,  over a USB cable.   I plan on using Linux Mint on this box, as it is light weight.

 I will use a tool, UNetbootin, to download an image onto a USB stick for booting, it was so simple to use ‘even a cave man could have done it‘. Later when every thing is installed and running properly, I will use the Yacto Project to generate a custom distro.

Update:  ECS K7S5A pro motherboard’s BIOS could not be reset. . So I installed an ECS P4M800pro-m. It has a built in Ethernet port, VGA adapter,  and only 3 pci expansion ports, so in this box there are 2x Soundblaster PCI16 cards and a 3C905-TX Fast EtherLink 10/100 NIC.

ARINC 410 Interface subsystem February 21, 2012

Posted by phoenixcomm in Arduino, ARINC 410, Audio, DIY Aircraft Cockpit, Ethernet, Flight Simulation, G-4390, Gables Engineering, Linux, Radio Sub System, Semiconductors, Software.
Tags: , , , , , , , , ,
5 comments

Well it’s about time I posted this interface. I’m not going to show you the whole thing because it goes on for pages and pages. Instead I’m going walk you through one channel in and one channel out.  I’m going to assume that you have a older radio head you know the ones with out the fancy LED displays.  Most (here I go assuming again) use the ARINC 410 interface which is a 2 of 5 code. I described it here in an older blog.

G-3717

Gables G-3717 Dual Nav Head

Nav Pinout

The Analysis: Well the first thing we found out about ARINC 410 that the signals are low active which means they must be ‘pulled up’  if the radio head does not have pull up resistors installed. As you see from the NAV-1 table we need the following information:

Signal Name ARINC410
Whole MC TENS A, B, E
Whole MC UNITS A, B, C, D, E
FRAC. MC TENTHS A, B, C, D, E
FRAC. MC HUND. B, C
DME TENS A, E
DME UNITS A, B, C, D, E
DME TENTHS A, B, C, D, E
DME HUND C
FREQ SEL COM.
DME Indicator 2
ILS Energize
ILS TEST SW
POWER
PANEL LTS  28v
DIAL LTS  28v
VOLUME 3

The Plan and a little more Analysis:  I need to get the 4 connectors for the Gables G-4390 (five heads in one panel).   So the one connector is a PTO2A-22-55P so I need my connector guy to give me the mate to this number. It looks like I only have to worry about the fields labeled DME and that a max of 5 bits. So I’m just going to throw away the other 3 bits. There is no off the shelf  2 0f 5  to ASCII decoder, so lets not worry well do that in the driver..

I picked a Arduino  Duemilanove to run the driver and talk to the flight simulator. It only has 14 digital I/O, so could use the Mega 2560 as it has a bunch of digital I/O.

The Plan:  Ok. So we have to talk to the different heads in the plane. And you could have a bunch. So we need a protocol to talk bi-directional to the heads.. here we go.

  1. Write to the interface the head & channel you want to talk to.
  2. Read the response from the head.

Bi-directional communication must use two ports one out and one in.. but its easy to combine them and use tri-state drivers.  First I want to use the 74LS125 or 126. This is an quad package, with each of the buffers having separate controls.   So I can get away with 8 bits..  first since the max we need is to count 0 – 5 thats 3 bits. So lets use the first 3, that give us 5 more to select a max of 32 heads. So lets take a pair of 74LS138 3 to 8 decoder one of them has to be hooked up to the D0, D1, D3 to decode which of the words you want A to E. The second 138 is hooked up to the D4, D5, D6 this will give us 8 radios, really 7, because I’m going to use 0 for power status & LED controls..  Next you have to AND the Radio + Chanel to drive the 5 74LS125 Tri-State Control signals..   So if you use my signals you end up with this: EN_Chan1 + EN_Radio1 = EN_R1Ch1.

The Software:  Ok here goes I’m not going to write the code.. but here is what you need to do.

  1. Initialize the registers.. #int radio = 0; int channel = 0; odd = 0; max_radio = (you radio count + 1(status)); freq [radio][chan]; freq2[radio][chan];
  2. Start Odd / Even loop.. #for(odd = 0; odd < 2; odd++)
  3. Start Radio loop.. # for(radio = 0; channel < max_radio;  radio++)
  4. Start Channel loop.. # for(channel = 0; channel < 5; channel++)
  5. write to the control register with radio, channel.
  6. read the control register and store the results..
  7. if ( odd = 0){ freq[radio][chan] = result from reg}
  8.  if (odd = 1){ freq2[radio][chan] = result from reg}
  9. if (odd > 1) write ERROR.
  10. End of Channel Loop
  11. End of Radio Loop
  12. if(odd = 1){  now check for changes.. you want to do this with some loops..
  13. if( freq[radio][chan] != freq2[radio][chan])  its changed.. now send to the simulator..
  14. odd = 0;}
  15. End of Odd /Even loop

FINS & FYI:  You will need a bunch of the 125’s and lots of pull up resistors. Just for doing my Gables G-4390 with out any more radios lets do some math.. 5 heads * 5 channels per * 5 bits = 5 cubed or 125 buffers (32 packages)  & 125 resistors this is not including status or light drivers..  I wire wrap (power tools), but that a lot of buffers. I am working on putting the whole thing into a Xilinx part. This is a product that I am going sell at Flite-Tronics.com. This still leaves the problem with audio, or driving other indicators, like ILS flags, etc.   If you attempt this I really recommend that you check out Avnet they have the best prices for semiconductors period.

I wish to thank Gables Engineering for the pin-outs and outline dimensions.

Driving those pesky indicators. December 30, 2011

Posted by phoenixcomm in Arduino, Boeing 707, Boeing 727, DIY Aircraft Cockpit, F-18, Flight Simulation, Indicator Lamps, Power Systems, Relay.
add a comment

Well here we are again, and I am having to drive multiple of voltages for my indicator lamps…. This can be a pain in the rear… Let me see I have  5 volts, 12 volts, 28 volts. Take your pick..

You have several choices:

  1. Do nothing, just buy lots of power supplies.
  2. Change out all the lights to one voltage. (big bucks)
  3. Something else maybe?

Me I’m out there anyway so I’m going with you guessed it: ‘C’.

The Analysis: First a little background…
Rule #1:  Computers Logic (TTL) does not like voltages over 5 volts dc.
So how do you drive a 28 volt lamp from a computer?  There are several ways..

  1. Relays..(ADVANTECH PCLD-785B with 24 relays) This card retails for $240.00. Or you can find them used for about $50.00 on ebay. This tends to be some what costly as you have to buy the boards and then a driver for them. It’s more than little kludgy with tons of wire screwed down, on barrier strips. But it does work and its bullet prof. But remember all those power supplies.
  2. HEX INVERTER BUFFERS/DRIVERS WITH OPEN-COLLECTOR HIGH-VOLTAGE OUTPUTS SN5406 and SN7406 have minimum breakdown voltages of 30 Volts DC. But when they fail it could put raw 28 volts on your computer! Ouch!
  3. Optoisolator I like a little 6 pin dip a TIL111 will handle 0 to 30volts DC with TTL inputs.  If  you want you can buy them at Digi-Key for about 18 cents each, and if you look around you can buy them cheaper else where.   Add a few parts for decoding and latch, you can drive all of your lamps.

So lets see 18 cents x 64 optoisolators is less then $12.00. This means that with just 16 cards you could drive 1024 lamps…  But wait a minute I said DC right? (Who said we had to drive the lamps with AC). Now that we have DC you can easily create a divider or regulator for you lamps from one 28 volt power supply.

%d bloggers like this: