KrisBarrett.com » Page 'Make a Custom Arduino Shield'

Make a Custom Arduino Shield

Arduino Shield

After many months of working on my Arduino based project, I decided to finalize my project by making my own custom PCB.  At first I wanted to design a PCB that connected to the Arduino through a series of cables.  After some thought however, I realized that a shield would be better because it would eliminate the need for cables.  This tutorial assumes an understanding of Cadsoft Eagle.  For more information about Eagle, see the Eagle Tutorials section below.  Here are the steps to make your own Arduino shield:

  1. Part Selection- Carefully select your parts. Ensure that your parts meet your performance and power requirements.  It is better to carefully choose your parts now, than wish you chose something else later.
  2. Prototype – Prototype your design on a breadboard.  Ensure that your functional, performance, and power requirements are being met.  Change your design as necessary.  Do not begin designing the PCB until you are completely satisfied with your prototype.


    Figure 1:
    Breadboard prototype

  3. Schematic Capture
    1. Add Custom Parts to Eagle – Place all of your parts in the schematic before drawing any wires.  This allows you to identify which parts you will need to create yourself.  I had to create a custom part for the Arduino.  Drawing a symbol for the Arduino was easy.  Drawing the package was a little bit more difficult because I had to determine the spacing between the headers.  I easily obtained this information from the Arduino Eagle files which I downloaded from the Arduino website.  Download my Eagle Arduino library here.


      Figure 2:
      Header locations relative to one another.  I obtained this information from the Eagle file.


      Figure 3:
      Arduino symbol and package that I created in Eagle.

    2. Connect Parts - After placing all of your parts in the schematic, carefully connect your parts together using the wire tool.  If you make a mistake on your schematic, it will ultimately show up on your PCB.
  4. PCB Layout - Place the parts on the board.  If your PCB is long enough, the PCB will rest on top of the USB connector on the Arduino.  Parts and traces should not be placed here because it could potentially short out your PCB.  I accidentally placed the DC power connector in this area. Fortunately,  I was able to insulate the USB connector with a piece of electrical tape.  Also, follow PCB layout guidelines.  I learned this the hard way when I discovered that the rapid switching of the transistors was inducing a voltage in one of the traces connected to the button.


    Figure 4
    :
    I made the mistake of placing a part above the USB connector.  I prevented the part from shorting out by placing some electrical tape on top of the USB connector.


    Figure 5:
    The shield also doesn’t sit properly because of my poor layout.

  5. PCB Fabrication – Generate the CAM files.  You could fabricate the PCB yourself, but I highly recommend BatchPCB.  BatchPCB fabricates inexpensive, production quality PCBs.  The only drawback is that you have to wait three weeks to a month to receive your order.  BatchPCB has a tutorial on generating the files that they need to fabricate your PCB.


    Figure 6:
    Final product from BatchPCB.

Final Thoughts
Although I am not happy with the way my PCB turned out, I learned valuable information about PCB design.  I am sure that if I follow PCB layout guidelines, I can get this PCB to work properly.  I hope people can learn from my mistakes on this project and design a better Arduino shield of their own.

Eagle Tutorials
Schematic Capture
Creating Custom Parts
PCB Layout
Generating CAM Files

12 comments to “Make a Custom Arduino Shield”

  1. Very good post about the construction of Arduino shields. I suggest you to put a link to RSS Feed on your blog in order to people be informed about the new posts in your blog.
    Jeronimo
    http://www.blogdoje.com.br
    Avr, Arduino & ARM

  2. [...] – Make a custom Arduino shield [...]

  3. Your very detailed lesson on the construction of the Arduino Shield will definitely save time and frustration for us who are less experienced in this area. Good job!

  4. [...] – Make a custom Arduino shield [...]

  5. [...] cogsci informationdesign informationoverload paperbits memex engelbart augment video via:ixda.org) KrisBarrett.com » Blog Archive » Make a Custom Arduino Shield "At first I wanted to design a PCB that connected to the Arduino through a series of cables. [...]

  6. hello Kris!

    how many light bars does this shield support?

  7. Julian, that is a great question. According to SparkFun Electronics each light bar absorbs approximately 90 milliamps at 12 volts. The relevant trace widths on the printed circuit are rated for about 1.42 amps. The shield should therefore be able to drive about 15 light bars.

    Ignoring the limitations of the printed circuit board, the shield should be able to drive about 25 light bars. This assumes a forward current gain of 25 and a maximum base current of 30 milliamps, each transistor would be able to sink 0.75 amps or 2.25 amps total.

    However, each of the TIP31 transistors are rated for a maximum collector current of 3 amps. In this case, the shield would be able to sink 9 amps or drive 100 light bars! Note that this would require additional transistors to supply the necessary base current to each of the TIP31 transistors because the Arduino cannot supply more than 30 milliamps. Alternatively, you could replace the TIP31 transistors with Darlington transistors.

    I say all of this with some uneasiness because I think the light bars actually absorb more than 90 milliamps. Also, I haven’t tested any of this.

  8. [...] Instead of relying on the usual project wiring, Kris designed a custom Arduino shield for controlling an LED light bar. He was also kind enough to document the ins and outs of his process – After many months of working on my Arduino based project, I decided to finalize my project by making my own custom PCB. At first I wanted to design a PCB that connected to the Arduino through a series of cables. After some thought however, I realized that a shield would be better because it would eliminate the need for cables.- Make a custom Arduino shield [...]

  9. Hi,

    would you mind posting your custom “Arduino package” ?

    I’ll be trying to make a single sided usb arduino clone and this would really help me out.

    Thanks

  10. Andre,

    The package, symbol, and device that I used to make my Arduino shield is included in the Eagle library posted above. The package is very basic: it includes the locations of the 0.1 inch male headers, but no board outline or anything like that. Here is that link again for convenience. Good luck on your project. Let me know how it goes and if you have any more questions.

  11. Thanks!

    Sorry, I think I read too fast and skipped the link.

    I’ll let you know how it goes, I might start a thread on the Arduino forum.

  12. [...] http://www.krisbarrett.com/2008/09/03/make-a-custom-arduino-shield/ [...]

Leave a comment

XHTML - You can use:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>