In this instructable I use an example of interfacing an Arduino to an ARINC 429 transceiver in order to demonstrate the general process of interfacing an Arduino to electronic circuits so you can use these techniques on your own designs.
An ARINC 429 bus is the most common data bus used on aircraft for computer to computer communications. The ARINC 429 bus operates at one of two speeds, called low speed and high speed, which are 12.5 kbps and 100 kbps respectively. The bus operates over two wires (and a ground). Each piece of data is sent in a 32 bit word. Generally the first 8 bits, called the label, are used to identify the data contained within the ARINC word. Bits 9 and 10 often define the Source/Destination Indicator, but sometimes they contain data or are an extension of the label. Data is contained in bits 11-29 and can contain binary twos compliment, binary coded decimal, and/or a set of discrete bits. Bits 30 and 31 contain the Sign Status Matrix, and its values can indicate Normal operation, Failure Warn, No Computed Data, and Functional Test. Finally bit 32 is the Parity bit and is set so that the 32 bit word has ODD parity.
Avionics equipment manufacturers, aircraft manufacturers, and avionics equipment service centers have specialized test equipment to read these ARINC 429 data buses. I've wanted to own and use my own test equipment so I developed the Arinc429eReader. While this could be an instructable on its own merit, I suppose the audience interested in such a device would be small. I will therefore present a more generally applicable instructable on the process of interfacing an Arduino to other electronic circuits.
Remove these ads by
Signing UpStep 1Deciding to Do the Project
First make sure someone hasn't already solved your problem. Go on Google and search.
In my example I found several companies that make ARINC 429 to USB converters but they are rather expensive, $1500 US dollars or more. There had to be a better solution. I found an ARINC 429 transceiver in a 40 pin DIP at a reasonable price. I wrote to the company and they sent me some free samples. Although the transceivers contain both a transmitter and two receivers, I only needed the receivers (at least for now!) so this chip looked good.
Step 1b: Can I do it?
The next step is to determine if you have the skills (and the determination) to see the project through. To determine this I obtained the ARINC 429 transceiver chips' specification and reviewed it.
In my example I saw the chip requires only 5v power and no 'exotic' analog signals.
It also requires a 1 MHz clock to time its operations. I thought that I could maybe use the Arduino's clock or use a 1 MHz clock chip.
It also requires 11 input/output signals in addition to a 16 pin data bus. This is too many pins for the Arduino UNO but is easy for the Arduino Mega.
See Figure 1 attached.
What about software skills? Well, I've done quite a bit of coding for other processors before and I can look through how other library code is written as examples of how others solved similar problems. The open source nature of Arduino is perfect for my needs here.
Step 1c: Should I do it?
The next step is to determine if the project should be done. It will cost money and time. I usually error on the side of trying new things for the experience if nothing else. Asking others for their opinion is often NOT recommended. Remember that most of the people we remember a great people all had contemporaries telling them they were wrong.
I assume that you are ready, willing and able to proceed with your project! Lets get to it!
| « Previous Step | Download PDFView All Steps | Next Step » |










































You have broken this down very clearly and I am anxious to try and build one soon. You definately showed me things I wasn't aware of (writing more than one digital pin at a time, and datasheet basics).
thanks
I discovered that the PINC bit order is the reverse of the PINA bit order on the Mega board. I'm working with the Arduino Mega 2560 instead of the 1280 but, based on a look at the eagle files for the arduinos, I think the same problem is true for both. This impacts the bit ordering for b4 and b2 in the example above. Before trying to parse the ARINC data you will probably want to invert the wires for D15..D8.
This may impact how the high-byte of the control word is handled but so far I've had no problems at high-speed. I have yet to get lo-speed ARINC or Tx working but will post any useful fixes when I do. Oh, I plan to make an ARINC 429 shield for the mega boards if anyone is interested.
Best Wishes
I think now that its running 12.5khz (lo speed) there should be enough cycles to do the other fun stuff. Like that LCD screen you're thinking of. I was just going to build a quick PC-side app to parse the serial data output so I could use it as an aviation data format snooper.
The final Franken-Verter Mega-Shield will (hopefully) have :
* 2 ARINC-429 line level inputs
* 1 ARINC TTL level output (add a driver if you want to use it)
* 2 bi-directional line level RS-232 in/outs tied to the serial 1/2 on the mega board
Glad the lo speed is now working ;-)