Crowd Supply Teardown Conference - Portland

Andrew Sowa While most PCBs can be simple rectangles, sometimes the design requires more complex geometry. EDA tools don't always make this simple, so we will go over a few KiCad tips to make it easier. In this talk you will learn how to import unique board shapes from Fusion 360, create arbitrary fill zones using images, and embed high-frequency RF filters.

Pay What You Want - PCB Art

I will be doing custom PCB Art at least throughout December.  Everything will be pay what you want.  Use my contact page or Twitter to send me the picture you would like for me to convert and I will send you the files to order a custom PCB.  Once you see the result pay what you think it was worth via the button below.  Here is an example of what the process looks like after I convert a photo.

Before

Before

After

After

Pay What You Want

Creating the Benchoff Nickel

Idea

I thought of making the Benchoff nickel after I saw Brian's Hackaday,io profile.  He has a hi-res image of the center a Benchoff Buck which is well suited to being converted to a PCB.  There is only a few colors and they have sharp edges.  Bitmap2Component in Kicad, can easily detect these transitions and convert them into a footprint file.   With the help of a text editor, I was able to manually layer everything into one complete image.  

source image - Hackaday.io

source image - Hackaday.io

Planning the Layers

A PCB typically has five different solid color combinations. Understanding how these relate to each other helped me figure out what layers are needed for which part of the image. The lightest color is solid silk screen 1. This will be the background since that is the lightest part of the image. Bare copper 2 is the next lightest. OSH Park uses ENIG coating on the copper so what you see is actually a small layer of gold. This layer also has the nice affect of being shiny which further highlights the image. Bare FR4 3 is the middle tone. This is beige, plan fiberglass. Solder-mask on top of copper 4 is the first step into the purples. The solder-mask is not completely opaque so the copper helps lighten it up a bit. Our final and darkest color is solder-mask on bare FR4 5. The chart below should give you an idea of the color pallet of the final product.

OSH Park layer color pallet

Seperating Layers

This next step uses KIcad built in Bitmap2Component tool.  Once the tool is open you with then load in the image you want to convert with the Load Bitmap button.  You will see the image loaded into the preview pane.  Switch from Original Picture to Black&White Picture.  This will be your main working image and will tell you what the program will output.  Everything in white will be converted to a Kicad footprint file. The amount of white is controlled by the Threshold Value slider. For my first layer I chose 85/100,. which will be the bare copper layer.   Press Export and save the .kicad_mod file in your prefered location. 

icon

icon

The second layer will be bare FR4.  For this I chose a threshold of 65/100.  Export the same way as the previous step. 

The last two layer use the Negative setting in the Options box.  This inverts the way the Threshold Value slider works.  We need this because we want to isolate the darker sections this time.  The copper and soldermask layer has a Threshold Value of 64/100 and the silk screen layer uses 100/100.

The Negative setting has quirk with that I had to work with.  When it negative mode, it doesn't count transparencies as empty space.  Though the picture above has defined lines around the hair and shoulders,  they are not there when exported.  This extra material will be removed later with the edge cut layer.   For the silk screen layer, I didn't pick any of detail of the image because I just wanted to export the face silhouette.   This was the easiest way to define the head without slicing the orginal pciture into  multiple images. 

Image Scaling

The image size is dependent on original image size and the Resolution setting.  The higher the DPI, the smaller the footprint.  Bitmap Info box will give you an idea on the actual size.  I used 300 DPI for the board I had fabricated, but I could have made it smaller if I used a higher number.   This cannot be resized in Kicad, so you need to get it correct at this stage. 

You can also resize the image in the editor of your choosing.  This would be helpful for persurving the image wuality of vector files. 

Scaling Factor

Scaling Factor

Layer Combining

Kicad footprint are stored in human readable format.   This means you can load them into a text editor and manually make changes.   Below is an example of one of the export files.  The top section in italics hold basic.  This defines it as a logo, gives it a name and reference.   The lines with fp_poly are all the shapes the converter created.   There will be a long list of these followed by a ) to close out the whole file.  

Since I had front silk screen selected in the converter,  all the fp_poly commands have a F.SilkS after the layer.  Unlike the limited selection in the converter tool,  this can be manually changed to any layer you want.   All you need to do is a replace all operation and change F.SilkS to a standard layer name.  For example, from solder mask will be F.Mask and front copper will be F.Cu.  

(module LOGO (layer F.Cu)
(at 0 0)
 (fp_text reference "G***" (at 0 0) (layer F.SilkS) hide
(effects (font (thickness 0.3)))
)
(fp_text value "LOGO" (at 0.75 0) (layer F.SilkS) hide
(effects (font (thickness 0.3)))
)
(fp_poly (pts (xy -4.656667 25.357666) (xy -4.699000 25.400000) (xy -4.741334 25.357666) (xy -4.699000 25.315333) (xy -4.656667 25.357666) )(layer F.SilkS) (width0.010000)
)
(fp_poly (pts (xy -4.487334 25.357666) (xy -4.529667 25.400000) (xy -4.572000 25.357666) (xy -4.529667 25.315333) (xy -4.487334 25.357666) )(layer F.SilkS) (width0.010000)
)
(fp_poly (pts (xy -5.249334 25.273000) (xy -5.291667 25.315333) (xy -5.334000 25.273000) (xy -5.291667 25.230666) (xy -5.249334 25.273000) )(layer F.SilkS) (width0.010000)

When you finish combining everything with the appropriate layers,  load that footprint in pcbnew.  The pictures below show what the completed file looks like.   There was some empty space that i filled in will extra thick lines.  You don't need to be clean because the Edge.Cuts layer will clean everything up once you submit your file to OSH Park.  The outside edge was made with the circle tool and eye balled to the proper size.  Project Files

The backside was made by duplicating everything and using the F key to move it to the backside.   You can also add a different image to the back if you like. 

Profit

If you suck up hard enough, you can turn a Nickel into a Buck.   

Order from OSH Park

16-Channel I2C Relay expander V1.0

A recent project required me to control 48 channels of line voltage.  I knew I needed some relays and more control lines so I went on a search for something affordable.  Numato Labs had a nice 16 channel unit that was within budget and I was able to mock up a working unit by using a MCP23017 from Adafruit   I wasn't happy with the mess of wires and wanted something cleaner. Using Kicad and OSH Park, I made a small form factor surface mount unit.  This reduced my supply wires and allowed me to daisy chain units for easier install. I wasn't sure if the card edge style connectors would work, but they came out nearly perfect.  After a light sanding with a flat file, they easily fit into the terminal blocks.  There are a few things I want to tweak for version two, but feel free to make modifications yourself.  The design files are on Github as well as some example code. 

16-Channel I2C Relay expander V1.0 Kicad Render Front
16-Channel I2C Relay expander V1.0 Kicad Render Back
Order from OSH Park