I usually design a PCBs in a different way than most people do. The “normal” way is to use dedicated PCB cad software, like Eagle or gEDA. This has several advantages like schematic editors, auto routing, net lists etc. However, when I work on a project, it is usually a PCB that shall fit inside some casing or mechanical structure. I then need to export and import the PCB shape, component placement, housing etc between the 3D cad and the PCB cad. I think this limits the design freedom and it is quite annoying to spend a lot of time trying to synchronize the same design in two programs.
My solution is to use the 3D cad for everything, including PCB design. There are several advantages with this method:
- Everything in one place (one file), both the PCB and the mechanics
- No need to spend any time synchronizing files between programs
- Very easy to tweak and optimize the complete project
- Complete control over every single line
- It is easy to export milling and drilling paths to produce the PCB
- I work extremely fast in Rhino. The best programs are the ones that you know well and have access to…
The biggest downside is that you have to route the board manually, but personally, I think this is an advantage. If you are good at it – manual routing out ways the auto routing routines that exists in free software (especially on single sided boards). It is also a quite fun and challenging task. Try it and let me know if you agree ;)
Step by step:
- Place the components
I start with creating an outline for the PCB and then reuse components from other projects. A component means a 2D vector image with component outline, pad outline and hole positions. I use different layers to separate the different parts of a component.
- Create components that are missing
if a component is missing I just build a new. Using a caliper or datasheet this is done in just a matter of minutes.
- Route the traces
It is now time to route the PCB. First I try to imagine the best position and rotation for the different components, and then I add traces to connect all the pins on the component. I have separate layers for VCC and GND which gives the traces a different colors. Routing is an iterative process and it usually takes a few iterations until I get a result that I am satisfied with.
- Optimize the board
It is now time to optimize the board. This means that I tweak the positions of components and traces. I also add chamfers on traces and makes sure that the PCB is as dense optimized as possible.
Done – I have now designed a PCB! Usually I produce the board by milling (see this post), but I can also print a vector mask that can be used for direct toner transfer or UV exposure. If so I export the 2d vector to illustrator or inkscape and fill areas like traces and pads. Then the black and white image can be printed on toner transfer paper or OH sheet.
And old school at the same time. This is how things were done before PCB Cad programs became common place, like in the 1980’s :-) I remember doing this with tape. Lifting, re positioning, etc in iterations. After some time you get a feel for laying things out and it goes quite quickly. For small 2 sided this would still make sense.
Lots of good information in your posting, I would like to tweet your blog post so I can visit again in the near future.