Electronics DIY blog

DIY is fun and is food for the brain and spirit. Don't be afraid to learn.



Friday, August 31, 2012

3D preview of a PCB- EagleUP

I just found out about this plugin today. And man is it good.

It's the eagleUP plugin. It allows you to create a 3D view of your PCB design in Google's Sketch Up (my all time favorite 3D tool and the winner award for the most easy and comprehensive 3D software ever).

Sketch Up is designed for even a 3D noob like me to do wonders.

The wonderful thing about this plugin is that the model library is virtually endless. You can practically use any model from Google's warehouse (and there are plenty of them). Many users contribute for this library so it's always expanding.

This blog new background was done with it.

It's worth checking out. ;-)

Monday, August 27, 2012

Pimp my toy

The other day my 2-year old got a brand new firemen car that only played a sound or two and nothing more. The toy was quite dull but my kind was all over it because he loves everything with a siren.

I thought to my self. This ride need to be pimped. I said "Son I'm going to put an emergency light on that truck". He kept on going "Dadd...put...light...truck". Man was I under pressure.
So I did. I started to look at the car here:
Original toy

This is a 2xAA battery powered toy. So 3V doensn't allow me to use a popular 555 IC. To do a low voltage blinking led I needed and alternative circuit. So I remembered a simple oscillator circuit that is even easier to make. It' an astable multivabrator circuit made with 2 NPN transistors.

The circuit is similar to the one in this link.
Since this is such a low voltage application I replaced one of the collectors resistences by the LED directly.
This made the LED glow nicelly. I also changed some of the components values because of the LED blinking rate. The polarizing resistors were 47Kohm and the capacitors were 10uF. The transistors I used were a couple of BC549B I had laying around.

I took some prototyping pref-pcb and soldered the compontens. Don't mind the tallness of the components. I made this so I can (who knows) reuse them.


The astable multivibrator circuit

Looking at the toy there is a 2PDT switch that turns the toy on. The switch has 3 poositions OFF-DEMO-ON. So I will power the "blinker" in that switch for the ON position.


Identifying the ground and power spots

All soldered in place
 Then I took my dremel tool and drilled the roof of the toy bellow the light cover and glued it all in place with a hot glue gun.


Drilled roof top


Glued LED
 And here it is a PIMPED TOY CAR. The firemen truck now has a blinking light. I hope my son likes his "new" toy. ;-P

Toy with the added blinking emergency light

Friday, August 24, 2012

PCB - Post processing

So. Here is a little trick to post process a homemade PCB board.
This is valid for both mechanical and chemical echting.

This is a small USB bit whacker I made for quick prototyping. Well it's not that small but this is a first version and it's a single side board.

1º Step - DRILL

First step if you are not making the drilling with your CNC or you are making an chemical echting make all the drills on the board.

2º Step - DEBURR

Use a very fine grain sandpaper or oil stone do deburr all imperfections off the PCB. That will make it look like this photo.

Deburred PCB

OK don't mind that accidental cut on the pad...uugghhh. Looks very scratched doesn't it?
Let's make it pretty.

3º Step - "KIND OF" THIN PLATING
Hummm..thin plating finish would be nice. Well you can do something very similar. Apply a silver iodide (silver nitrate based compound) used to repair and clean jewelery. Here in Portugal there's a product called Pratex.
This will also ease the soldering work.

Here is a photo.

Finished PCB treatment

Nice!!
Despite the...uuuggghhhh...accident...uuuuggghhh (rush is your enemy). Looks quite good.



Thursday, August 23, 2012

Milling PCB in a CNC - The guide

OK. So here is a little resume of my process to make PCB with my crap of a CNC.

I'm using freeware version of Eagle to make the schematic and board and then I use pcb-gcode plugin to generate the gcode for the milling.

My steps are these:-Make the schematic and board in eagle.
-After all is in place use the Drc tool in eagle to check your clearances. To do this go to the clearances tab of the Drc tool and set all clearances according to this formula:

Minimum clearance = tool width + (2 * safety offset from pad/via distance)

Why?
Because using the same formula in the pcb-gcode plugin will allow you to make the PCB using 2 passes (making a PCB in a single pass doesn't always ensure proper isolation and almost always needs deburring and more the two passes is excessive and time consuming). The 2-pass isolation has yield the best results for me with a 10º v carbide bit. I'm still waiting for the 60º bit. I'm hopping it can produce similar results with a single pass. For now I'm sticking with 2.

The above formula is a reference and should be used has a reference only. If overlay occurs it's not the end of the world. The amount of overlay is the problem. Some SMD components might not even comply with the clearances. It's OK. But you should check the generated gcode for those places to see if they where properly isolated.

-Next configure pcb-gcode plugin. If you are going to work in metric units (mm) change the gcode-defaults.h in the setting folder of the pcb-gcode plugin to output the coordinates with only 3 decimal places after the floating point.

This is done by changing this line:
string FORMAT     = "%-6.4f ";      /* coordinate format */

To:
string FORMAT     = "%-6.3f ";      /* coordinate format */

Milling depth = -0.05mm
Remember most copper sheets in raw PCB is 35 microns (0.035mm). 0.05mm should be enough without going too deep.

Tool width = 0.2mm.
In my case I'm using a 0.1mm v-bit 10º. I set this to 0.2mm to compensate for run-out, vibration and bit wobbling (being such a thin bit it bends while trying to remove the copper. It's like forcing a needle to scratch a surface. Bending will occur. Also must compensate for the widening of the tip as it goes deeper.

Default isolation = 0.15mm
this is an other place where you can compensate for all the variables above. I prefer not to do it here. In here I like to put the amount safety margin to apply to pad/via clearance.

Isolation step <= Tool width.

Maximum isolation = Default isolation + Isolation step.
This insures 2-pass milling.

Don't forget to set the feeding speed. I'm using between 60 and 100mm/min. Faster then that bits will brake, deformations in isolation will be produced and you don't want that.

-After a good gcode is achieved It's milling time. Secure the PCB to the table in a way that avoids (un)leveling (usually the PCB is not perfectly flat due to storage conditions).
Two ways to do this.
The pro way. Use a vacuum table.
The cheap and dirty (but totally works). Double side scotch tape. This the one I use. It works (period). Read this.
Home the bit with one of the to procedures I've mentioned in a early post (Eagle2GCode - Part 2).

And you are good to go. You should be ready to start milling.

Good luck.

Tuesday, August 7, 2012

Eagle 2 GCode - Part 2

OK seems my early considerations where partially wrong. The depth of the engraving bit must be ~0.05-0.06mm.

My initial considerations where wrong because I was not homing the bit properly.

Two ways to home the bit (that are actually almost the same).


Homing method 1 (cheap and dirty) - Use an power source of some kind to drive an LED (in series with a resistor if not adequate to drive the LED directly) and use the contact between the bit and the raw copper as a switch to indicate if there is contact between both.
Here is a schematic.

Homing detection schematic


Homing method 2 (more precise) - Exactly the same but using on of inputs in the CNC control board/Software.

Note: For some reason the EMC 2 is rounding my GCode floats to the 0.1mm scale. Don't know why this is happening but I'm upgrading to EMC 2.5.0 seems to have fixed it. Also I had to reconfigure the gcode-default.h file of the pcb-gcode script to write floats with 3 digits after the dot separator. This prevent rounding errors of the gcode interpreter in the EMC 2 reported in arc movements in mm units.


This is a picture of my first trials.

From left to right - 1st attempt had a bad configuration was doing it half sized, next is 1,2mm deep with multiple passes (excessive), next reduced number of passes (still excessive), next at 1mm with one pass (still excessive but acceptable).

These are my SMD trials (just a simple SOIC8 circuit and a resistor)


1st SMD trial


1st SMD trial detail (depth 0.075mm to deep in the majority of the circuit)
2nd SMD trial detail (depth 0.05mm to shallow in some places)

Here are a few videos from the machine working.









Despite the results are not perfect I'm getting pleased with it. There are still a lot of headroom and some tricks in my sleeve to improve this with minimal changes.
Let's see how far I can take this.

Friday, August 3, 2012

CNC Control Software

For the CNC control software I've chosen the LinuxCNC. It's free, open source, easy to configure and use, and there's a huge community that continuously improves it. There's a ton of documentation about how to configure this software but the quick guide is a good place to start.

For the PCB machine code generation I user the free version of Eagle PCB and the awesome pcb-gcode plugin.

The sync tuning of these two tools can do all the difference between a nice clean PCB and a bad one.

I'll keep dumping my tune-up's here, along with pics of the results.

Cheers.

Thursday, August 2, 2012

Eagle 2 GCode

I'm now in a test and trial fase for achieve good PCB boards with my CNC.

After 2 kind of failed circuits, here are my early conclusions:

Engraving at 0.2mm depth is to much. 0.1mm is to shallow in some areas due to CNC table alignment defects and the PCB raw sheet defect (it’s not perfectly flat since the board may be bend due to incorrect storage positions and handling). 0.12-0.15mm should yield the best results (still to be tested).
I'm using a 0.1mm 10º V carbide bit to do routing isolation. Applying the formula for the cutting tool wide in this wiki I should consider a minimum tool size (width) setting of 0.15-0.2mm (that also compensate the above errors plus spindle and bit run out).
To keep it simple and fast I’ll be only performing the isolation routing and skip the copper removing in bigger areas. For this pcb-gcode plugin for Eagle should have the following configs:

Tool depth for isolation and Z Down - 0.12-0.15mm (value to be tested) (Z Down is negative)
Default Isolation (*), Maximum Isolation and tool Size – 0.15-0.2mm (this will insure a single passage – the isolation routing passage).

(*) Default Isolation is the tool offset from the track. For best results this should be the same as the tool size. ALWAYS do the Clearence check in the DRC tool of EAGLE. Set the DRC checking rules in the Clearence tab to at least 2xDefault Isolation + 1xTool Size. This checks for error of overlapping that otherwise may result in the isolation routes not being generated.

Also using Voronoi-Regions gcode generetor software can be a good solution to maximize copper area and conductivity.


I’ll test some more and post the results later.