jump to navigation

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.

Advertisements

ARINC-410 Radio Subsystem – Putting it all together March 6, 2012

Posted by phoenixcomm in Arduino, ARINC 410, Audio, DIY Aircraft Cockpit, Ethernet, G-4390, Gables Engineering, Linux, Software.
3 comments

All right we got most of the design out of the way now. So now we just need a plan to bring all the pieces  together.

The Plan:  I figure every body needs a few radios and the guys with the heavy tin needs a lot more. So I need to be expandable, and flexible. So here are the parts of the system:

  • Linux Pc with ALSA, and multiple pci audio cards
  • arduino
  • Radio Heads that are ARINC-410 compliant
  • Master Interface Card – which holds the arduio, and does board decoding. With space for 2 74LS138 decoders
  • Radio Head interface cards one per card.
  • Audio Interface card. This card has 3mm jacks on it to hook to your pc’s sound card.
  • Your audio panel & audio sub-system mixer, etc.
  • Your cables from the Radio Head to the Interface card.
  • Your cables to chain the audio panels together.

Now what form factor are we going to use? I think that the STD Bus (28/56) will fill the bill perfectly. Not only are they still making racks for them (Vector Electronics), but it has been around for almost 30 years and has not died off yet. So there are some surplus parts around. I’m going to keep the mechanics simple. Each card will be plugged into a slot. So the board addressing will be a jumper on the board. KISS. At the other end of the card there will be a standard 40 pin idc right angle header, and a pin header for the audio.

Notes:  

  • The Master Interface Card and the Audio Interface Card have the same address. When you READ you are reading the switch positions. And During a WRITE you are turning on or off  the Digital Switches on the Audio Interface.
  • The Master Interface Card and the Audio Interface Card, may end up as simply the Control Card.

ARINC 410 Subsystem – Audio Routing March 4, 2012

Posted by phoenixcomm in Arduino, ARINC 410, Audio, DIY Aircraft Cockpit, Ethernet, G-4390, Gables Engineering, Linux, Radio Sub System, Semiconductors, Software.
add a comment

These are just some thoughts its not all here yet.

The Analysis: Well we need multiple audio sources, from things like VATSIM, NAV Morse code, co-pilot, weapons officer, and if you are flying formation a plane to plane chatter. For VATSIM, and for the inter-plane chatter we will need internet.

So, we need a computer that will have multiple audio cards, well that is going to eliminate a windows box. So I guess I need a Linux box, and we need a distribution that supports ALSA, the Advanced Linux Sound Architecture. So far so good. This box will also handle the radio ARINC-410 interface(s), the Morse Code generator, do the slant range (figures out if you are in range of the station), and drive my DME display. 

So here are all the components:

  • Radio Heads
  • ARINC-410 Interface Card
  • Audio subsystem
  • arduino
  • Linux pc with ALSA

. Since each ARINC-410 Interfaces have 3 bits for addressing the heads you can have 8 heads per interface. I could add a board select to each board so two boards gives you 16 radios..

Now you will notice that the lower arrow allows you to chain crew stations, so that means you need one audio adapter per crew station. Each of the Isolation Amplifiers use the radio heads volume control.  With all of this we still have not taken care of the mic.

Notes:

  • the audio wiring between the head and the interface has to shielded.
  • I have just use 3 audio sources for an example.
  • Remember that you have to dedicate one channel for an intercom (if you have multiple crew stations).

ARINC 410 Interface subsystem, Continued March 2, 2012

Posted by phoenixcomm in Arduino, ARINC 410, Audio, DIY Aircraft Cockpit, Ethernet, G-4390, Gables Engineering, Linux, Radio Sub System, Relay, Semiconductors, Software.
2 comments

More information and gotchas:  

Interface Specification:  Remember I said that that the ARINC-410 has 5 bits?  That means our Bus_0 through Bus_4 is the ARINC-410 A throgh E.  Now I can use Bus_5 for Read/Write (the write is Low Active). Ok that only leaves one more,  Bus_6 and I’m going to use it for a strobe. I can do that with a Schmitt Trigger.  Now I did say that was all, but hey what about a reset line?? I don’t know if I need one but we can use Bus_7, and that gives us all 8 bits in the interface.

Outputs:  Well what are our outputs?  The table below shows the standard outputs, that is what the interface has to drive.

Function Voltage Notes
Panel Lights 28v
Dial Lights 28v
DME Lamp 28v Only on NAV

We read the position of the power switch in the status register. But it would be nice to drive all those fault flags.  So how do you drive 28vdc from TTL? There are really 4 ways:

  1. High Voltage Inverter Buffer/Drivers; such as 5406, 5416, 7406, 7416. But have no voltage immunity.
  2. Relays; You still need to drive them, that is the coil.
  3. Optoisolator;  such as TIL111. My personal choice for driving HV loads, and there good for 70volts..
  4. Solid State Relays; SSR’s are robust, and can handle both large currents and high voltages.. You can find used ones on ebay.

Audio:  The Gables Radio’s have Volume IN-HI, IN-LOW, OUT-HI and OUT-LOW. This will be a headache  that I don’t want to deal with in this post. But we still need to handle the audio some how. This leaves two choices:

  1. Do what Microsoft Flight Simulator and others do. Just ignore it.
  2. Lets build an audio sub-system.  The benefits really starts to shine when you have more that one position to fill.. ie. pilot, co-pilot, navigator, weapons officer
    • If you fly VATSIM their audio is now on a channel, on the COMM head.
    • We now can simulate Morse Code signals & DME milage station on the NAV head. More later as this will dictate other changes, like outputs to drive from-to flags, etc.
    • You can chain the audio outputs.
    • You can have the same audio at the instructors console.
    • You can record the audio for play back.

Looks like we need a part 3 later..

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.

%d bloggers like this: