Homebrew, open source, repurposed, hacked, software defined, open hardware

Saturday 8 December 2012

A gEDA PCB pad without a solder mask - HOWTO

While designing with the OSS gEDA toolsuite for pcb design, I found myself with a pcb with an AVR micro destined to have an Arduino serial bootloader installed.

I needed to figure out a simple way to create a row of six pogo pin pads on the PCB to allow in circuit programming.

The difficulty arises when trying to create what is effectively a row of pads without a solder mask in gEDA.

Normally, the only way to have a soldermask clearance around a pin or pad is for it to be an element itself, or part of an element.

Despite multiple attempts, based on mailing list hints found with google, I could not turn a polygon or track into an element via the "select", "cut to buffer", "convert buffer to element" process one can use for a via.

A simpler solution was found in the document "Footprint creation for the
open­source layout program 'PCB' " by Stephen Meier and Stuart Brorson:

Currently found at:

http://www.brorson.com/gEDA/land_patterns_20050129.pdf

The solution was to create a footprint comprising a row of six pads, in which the clearances could be easily specified.

The example provided for an 0805 SMT resistor:

Element["" "" "" "" 1000 1000 -1000 -1000 0 60 ""]
(
Pad[-3000 0 -3000 0 4000 1200 4600 "" "1" "square"]
Pad[3000 0 3000 0 4000 1200 4600 "" "2" "square,edge2"]
ElementLine [-5000 -3750 6250 -3750 600]
ElementLine [6250 -3750 6250 3750 600]
ElementLine [6250 3750 -5000 3750 600]
ElementLine [-5000 3750 -6250 2500 600]
ElementLine [-6250 2500 -6250 -2500 600]
ElementLine [-5000 -3750 -6250 -2500 600]
)


was modified to the following, based on my 40mil wide tracks and 100mil track spacing:

Element["" "" "" "" 1000 1000 -1000 -1000 0 60 ""]
(
Pad[-3000 0 -3000 0 8000 1200 10000 "" "1" "square"]
Pad[7000 0 7000 0 8000 1200 10000 "" "2" "square"]
Pad[17000 0 17000 0 8000 1200 10000 "" "3" "square"]
Pad[27000 0 27000 0 8000 1200 10000 "" "4" "square"]
Pad[47000 0 47000 0 8000 1200 10000 "" "5" "square"]
Pad[57000 0 57000 0 8000 1200 10000 "" "6" "square,edge2"]

)

and then saved as "PogoPads.pcb"

Then, in PCB, one can use "File" -> "Load element data to paste buffer"

and proceed to load and place the saved pogopad footprint over the 100mil spaced trackwork where the row of six pogo pin pads was desired (after using the TAB key to flip the PCB over, allowing the pogo pads to be placed on the solder side of the board):

 
In this case I have made the 6 pogo pin footprint seven pads in length, to keep the +5V centred on the row of pads, in an effort to avoid possibly expensive reverse polarity mistakes in the event of a hand held pogo pin programming tool being used the wrong way round.

I then added a via in the gap between the 4th and 5th pogo pads to act as an alignment aid for the pogo pin tool/jig, in case I find that it is required or useful.


The keen eyed will see the nearby, six pin, in circuit programming header which will be the alternative means of programming the board, and the row of pins for the AVR and decoupling cap just below the newly placed pogo pin pads.

And here's a top side view of the same bit of the board:






The pogo pads are just visible on the bottom side.


For those wondering what pogo pins are, they are spring loaded pins held in a jig that can be pressed against pads on a target PCB, allowing testing or in circuit programming to be done without a bulky or expensive programming header being needed.

This technique should also work for transmission lines.

UPDATE: here are some pictures of the final result. The PCBs were done by Mitch, at Hackvana. You can compare the final product with the gEDA screenshots above. Note also that by doing lands this way gEDA will generate a solder stencil containing the lands. You can ditch the solder stencil gerber if you do not need a solder stencil. Alternatively, generate your required solder stencil gerber file before adding the lands. 



1 comment:

  1. This comment has been removed by a blog administrator.

    ReplyDelete