Arduino UNO R3 female pin headers spacing?


#1

Hi,

For my grandson I am designing project PCB with a Arduino UNO onboard.

I am stuck on the physical pin header placement for the UNO. I have an UNO clone here and Sparkfun blank PCB shield which I thought might be helpful whilst laying out the UNO part of this project, unfortunately the two have physically different header placement between the headers? I now don’t know which one to trust?

To add to the confusion the spacing on the Arduino R3 module in the KiCad library is different to the physical measure boards I mentioned above.

I have looked on the Arduino site to see if I couldn’t find an official header pin header placement with dimensions and have been unable to locate it if it exists?

If anyone can confirm what the distance is between the A0-A5 (6pin) > 5V, 3.3V, GND (8 pin) headers and between the PD0-PD7 (8 pin) > PB0-PB5, GND, AREF, PC4-PC5 (10 pin) header.

The discrepancies are around 0.9mm to 1.20mm enough to be off pitch if I get it wrong.

Any assistance in clarifying the correct spacing would be greatly appreciated.

Cheers,

Ian


#2

I got here an UNO R3 SMD:

Which looks exactly like this one:

image

And I can give/confirm you these dimensions (green = confirmed, blue = additional, red = modified, black = didn’t check):

The spacings between the terminal headers is between the housings, not the pins. You have to add 2.54 mm to those to get from one pin to the other. Should work out if you then cross check them with the dimensions given that rely on that datum hole at the top left. this might be a brain fart though, as sometimes those housings are thicker at the ‘ends’ vs between pins… sorry

original images from here…
https://www.google.com/search?q=arduino+uno+dimensions


#3

I had difficulty getting definitive dimensions for Arduino Pro Mini and related modules, and have a few examples on my desk where suppliers modified the pin locations for reasons known only to them. Some discussion on the topic is at Finding Arduino Pro Mini Footprint.

Good luck to you,
Dale


#4

The only thing that comes to a definitive reference is the Uno R3 reference files (in Eagle, but easy to load in KiCad or Eagle). https://www.arduino.cc/en/uploads/Main/arduino_Uno_Rev3-02-TH.zip

There are plenty of variations though, people like to try to “correct” the odd pin spacing or don’t bother to look up the reference design.

You can find some user generated drawings at https://forum.arduino.cc/index.php?topic=24228.15

If it is wrong it would be useful to get it updated.


#5

Thanks Bob,

I have found a good drawing and have contacted Matthew Beckler the guy that drew it to see if this is the final and correct version from his feedback. So I can’t say it’s a reference for sure but it could be useful to compare it with the Eagle design.

I wonder where the KiCad UNO R3 profile that is in the KiCad library came from?

!

B


#6

That is one I have used before but couldn’t find it again. I did find some errors in it but I think they are fixed in latest revision.

That’s a good question but unfortunately quite hard to answer unless you trace the commits over time (and multiple repos).


#7

Hi Joan,

Thanks for the input.

Yes sorry I meant between the pin header pins not the actual body of the pin headers. Hopefully the Eagle UNO drawing will confirm the pin spacings on the drawing from Mathew I just posted up and the mystery of the spacing is put to bed.

Cheers…


#8

In the drawing you posted, the hole is at x:600,y:2000, which converts to x:15.24mm,y:50.80mm.
Measuring from an edge to a center of a hole is rather difficult. :wink:
I checked that one again and the diameter is 3.2mm while the distance of the edge to the ‘hole-edge’ is 13.5mm. Put together this gives 13.5+3.2/2 = 15.1mm.
closer to 15.24, but not quite there.

The vertical distance is given between x:100 and x:2000 which converts to 48.26 mm, where I got 48.35mm.
Distance from the edge in both cases is x:100, which comes to 2.54 mm which I could find.

The pins that I could confirm from that hole in x direction are given as x:940 and x:1800, which translates to (minus the hole x:600) x:8.636mm and x:30.48, which confirms those two.
At the bottom there is x:1300 and x:2000 which (again minus x:600) translate to x:17.78mm and x:35.56mm respectively, both confirmed.

So yeah, pretty safe the dimensions you’re actually interested in are correct.


#9

The official Arduino Uno R3 pin headers on one half of the digital side of the board are “off grid”.

Normal Pin-Header spacing is 0.1" between them. The oddball Pin-Header has 0.06" spacing in only one axis.


#10

What I think you meant is the oddball spacing is 0.06" off the standard 0.1" spacing, so it is 0.16" between centers from one connector strip to the other.

I remember reading the reason why, but all I could find this morning is this:

What I remember of the original, longer explanation from Massimo is the error was due to trying to rush the original design out for fabrication to meet a deadline. He had nudged the off-grid connector out of the way for something but forgot to put it back. Once the error was discovered it was too late.

The knock-off effect that I’ve seen is this accidental misalignment has become an orientation key. When searching for the original story (which I couldn’t find, hopefully someone else can find it for us) I cam across a lot of hits thanking the odd spacing from keeping them from accidentally plugging in a shield backwards.


#11

Arha that explains it! This makes sense and supports Mathew’s drawing. So the unknown variable is now locked down. Thanks for passing on this important Arduino development history.

Once the error was out the bottle it would have been very difficult and messy to try and get it back in! :grinning:

I heard back from Matthew Beckler today the young man who drew the Arduino dimensional drawing and confirmed the v1.04 drawing is the latest version. Matthew has been very supportive and was even going to do some further checking against a reference Eagle UNO file.

It appears from what you have uncovered about the original design error (now a feature) now fully supports the Mathew’s drawing and confirms what I am seeing on the Arduino clone boards plus or minus a whisker!

I am happy to move forward on the connector spacing. Thanks for everyone’s valuable input and kudos to Matthew for the effort in generating the drawing.


#12

Just a quick follow up. I heard back from Matthew Beckler who kindly checked the original UNO Rev 3 file in Eagle and confirmed the following.

“I did double-check the official UNO Rev 3 Eagle files, and it is indeed 0.16" between the two pins on the upper row, instead of the usual 0.1" pin spacing. Let me know if there are any other dimensions you need double-checked or are curious about.”

Thanks again for everyone’s help including a very helpful Matthew Beckler…


#13

I don’t think this is a good way to describe the issue. Looking at the lower pin-header spacing, the “blank” space is on the 0.1" grid; the end result is 0.2" distance between the populated pin-headers.

On the top row, the leftmost pin-header is not on the 0.1" grid as there is only 0.06" clearance between the pin-headers; the end result is 0.16" (instead of 0.2") between the populated pin-headers.

The distinction that I’m attempting to clarify is that the individual pin-headers have a fixed 0.1" distance spacing and issue of the topic is is solely due to oddball spacing of the one particular pin-header.


#14

I think we were saying the same thing, but different ways.

But IMHO the big crime is the ICSP connector… Pin1 at 2505.512x1198.031. That just screams “haphazardly placed”. Especially since these pins can be used as an alternate SPI location for non 328 based arduinos that use this form factor.


#15

I don’t know where those numbers come from, but in the official Arduino design file it’s exactly 2505,1200.

As I mentioned, I found some errors in that drawing. Anything that is not the official Arduino reference should be taken with caution.


#16

I agree. However, it looks as if this issue has bit more than one person on designs that did not work after fabrication; including one of my own board designs.

@SembazuruCDE I don’t disagree with anything you wrote, I just did not think it was as clear as it could be; and even my first post wasn’t as clear as I thought it was after re-reading it the next day.


#17

Appears that it could be simply due to manufacturing tolerances. Or, maybe a way to track any copyright on the image? (But I thought it was Open Source?)


#18

For reference, the source of the drawing is https://www.wayneandlayne.com/blog/2010/12/19/nice-drawings-of-the-arduino-uno-and-mega-2560/

The problem with crowd sourcing information is that the crowd often gets things wrong. Then instead of correcting the error, the crowd propagate the misinformation, and misinformation becomes “truth”.