3 Simple Ways to
Share What You Make

With Instructables you can share what you make with the world — and tap into an ever-growing community of creative experts.

PhotosPhotos

Share one or more photos of a project, recipe, or whatever you've made, quickly and easily.

Step by StepStep-By-Step

Share your step-by-step photos with text instructions of what you made so others can do it too!

VideoVideo

Share your how-to video. You'll need your embed code from a video site such as YouTube.

Interfacing Electronic Circuits to Arduinos

Interfacing Electronic Circuits to Arduinos
Interfacing Electronic Circuits to Arduino

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 adsRemove these ads by Signing Up
 

Step 1Deciding to Do the Project

Deciding to Do the Project
Step 1a: Solved Already?
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 StepDownload PDFView All StepsNext Step »
5 comments
Apr 28, 2011. 4:08 PMpaulware says:
Awesome...
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
Nov 27, 2011. 10:59 AMncormia says:
Thanks for a great start to working with ARINC 429! You saved me weeks!

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.
Dec 6, 2011. 3:26 PMncormia says:
Lo-Speed works fine too. Not sure what I was doing wrong before but it definitely would not have worked before the upper-word bit order was reversed. I've had to take a side-trip into RS-232 in order to complete the other part of my project but I'm getting back to the ARINC side to de-construct the final few GAMA labels.

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

Pro

Get More Out of Instructables

Already have an Account?

close

All Steps Viewing
View all steps of an Instructable on the same page when you're a Pro Member.

Upgrade to Pro today!
11
Followers
6
Author:maewert
I'm an aerospace engineer by trade but am interested in astronomy, robotics, CNC machines, Arduinos, you name it.