|building and operating a CNC router|
|Jeffrey, Jobj, tomvdz, Tom, berz|
The goal of this project is to build a CNC router that can mill regular PCBs with non-SMD IC components, MDF, stryrofoam HDPE and nylon. The budget is around 1000 euro. We ended up going for the MiniCnc, made at TimeLab Gent
the CNC router
The minimal distance between tracks when milling PCBs is about 0.2 mm, according to the people at timelab Ghent. The maximal range is (X:173mm, Y:179mm).
At the moment the base plate is not parralel to the X,Y plane. There seems to be some glue residue on the base plate which we should sand off.
At the moment the accuracy is limited by the dremel, and the runout on its spindle. This can be seen when milling a point with a small diameter endmill, instead of a small hole, a tiny circle will be milled. Probably the accuracy can be increased with a better spindle (with ball bearing) like the KRESS 800 FME
We added a LED to the carriage to illuminate the milling area.
The CNC router controlled by sending it gcode. The sending of the gcode is done with replicatorG. Multiple programs can be used to generate gcode.
ReplicatorG will report about a feedrate of zero, this is normal acording to https://groups.google.com/group/ultimaker/browse_thread/thread/6892f2b14d11b361 and is caused by our CNC lacking a feedback mechanism. We are using replicatorG version 25. if starting replicatorG normally it will not be able to control /dev/ttyUSB0 to talk to our CNC. So you either have to start replicatorG as root or run
sudo chmod 777 /dev/ttyUSB*
Cadpy can transform bitmaps to gcode. Beware that multiple versions of this tool exist, not all of which do work with our machine.
Software we haven't checked out yet
- pycam looks promissing for milling out 3d objects and 2d engravings: pycam
- Inkscape gcodetools. See the void logo gcode made by Yvan: gcode.
To engrave a flat surface:
- make a black and white png of what you want to mill
- Input this in cad.py, adjust the width, height and depth of the engraving. Adjust the tool width and overlap.
- If you want to engrave the outline: set contour to 1
- If you want to mill out the whole black area: set contour to -1
- fix the errors in the gcode outputted by cadpy manually
- copy the gcode to replicatorG
- put the CNC on the surface you want to engrave and callibrate the Z axis on multiple points to make sure the engraving surface is parallel to the X,Y plane
Some interesting links about milling PCB's:
- Example of milled PCB + milling bit
- other examples of milling bits
- Good tutorial with theoretical background
- website of Kris Wauters who has a lot PCB milling experience
The last days we've discovered some problems when milling PCB's. The accuracy of the CNC router seems to be pretty good, however it seems that our current milling bits are not suitable to perform the job. The ball point milling bit gives smooth tracks without sharp edges, but the milling width is heavily influenced when the PCB surface isn't flat. The other fine milling bit could not deliver smooth tracks due to sharp edges.
Milling PCB's produces fine dust. A wooden box was made to prevent breathing in small copper particles.
Jeff bought better milling bits and straight PCB's:
- 5x Carbide PCB Engraving Bits CNC Router Tool 15° 0.1mm
- 5x Carbide PCB Engraving Bits CNC Router Tool 40° 0.1mm
- 5x Carbide PCB Engraving Bits CNC Router Tool 60° 0.2mm
- 10x FR4 PCB Copper Clad Laminate 10 x 160 x 100mm 1.6mm 1/1
- Find a better way to fix the PCB's. The best way seems to be using double sided tape, egally applied to the bottom PCB surface. Then the PCB is attached to the flattened (by milling) MDF surface. The tape will help in straighten the PCB surface by pulling it against the MDF surface.
- Buy strong double sided tape (not very thick)
- Make a flat bottom surface. Please notice that 'flat' is relative to the CNC machine & milling spindle (Dremel). So the best way to do this is placing the CNC router on a new MDF panel (18mm minimum) and mill about 1mm of the surface away. Then we are sure that the relative height/depth is the same for each possible coordinate. We need the following:
- MDF panel (700 x 700 x 18 mm) (or thicker)
- milling bit for MDF, flat top (10 a 20mm milling diameter)
- accuracy testing on pcb milling
- test 1
-spheric milling bit, 1mm -speed F66 -depth -0.1mm (0.2mm will be fine too) -accuracy: very fine to 1mm distance between lines -no rough edges
- test 2,3,4
-pointed drilling bit -speed F66 & F30 -different depths: from 0.2mm to 0.4mm -accuracy: +- 0.25mm, but edges are too rough and unclean
- used G-code
G21 ; millimeters of course! G90 ; absolute position, no opto-end stops... ;G91 ; relative position, no opto-end stops... G92 X0 Y0 Z0 ;huidig pos = oorsprong G00 Z05.000 ;boor omhoog G1 X10 Y10 F66 ;begin pos 1ste lijn G1 Z-0.4 F66 ;boor omlaag G1 X30 Y10 F30 G1 X30 Y20 F30 G1 X10 Y20 F30 G1 X10 Y27 F30 G1 X30 Y27 F30 G1 X30 Y32 F30 G1 X10 Y32 F30 G1 X10 Y34.54 F30 G1 X30 Y34.54 F30 G1 X30 Y37.08 F30 G1 X10 Y37.08 F30 G1 X10 Y38 F30 G1 X30 Y38 F30 G1 X30 Y38.75 F30 G1 X10 Y38.75 F30 G1 X10 Y39.25 F30 G1 X30 Y39.25 F30 G1 X30 Y39.5 F30 G1 X10 Y39.5 F30 ;G1 X10 Y110 Z-1.0 F66 G1 Z+5.0 F66 G1 X0 Y0 Z+5.0 F66
- I fixed the PCB on a MDF bottom plate with double sided tape
- I place the 60° 0.2mm bit in the Dremel
- I loaded the same test shape that we used before for testing PCB milling
- Some parts on the PCB are milled deep enough, others are not
- This can be solved by milling a square in the MDF bottom plate, so that the whole surface is equal in depth related to the CNC machine
- With the 15° 0.1mm bit we should be able to increase the depth easily
- Edges are very smooth (best so far)
A nice guide made by a guy who makes robotics components in his garage. He mills out the parts, makes a silicone mold and then casts the parts in PU. Buildlog: buildlog, part 1 and part 2 of the guide.
- replace the plastic guiding bearings with some better metal bearings. One of the plastic ones has the tendency to stay behind
- make .g (the extension for gcode) an accepted extension on the wiki so we can upload it here.
- Create an emergency stop button. While there is a stop button in replicatorG, this doesn't immediately stop the CNC, which will first execute some cached instructions.
- while the endmill is less than 1mm, it's path seems to be about 2mm to the naked eye. This greatly decreases our accuracy.
- Try alternative versions of cadpy that don't require manual editing.
Possible future projects
- cutting PCB circuit boards (resolution limits between two layers of 0.2 mm and 0.8 mm)
- prototyping custom boxes for the Nanode and Arduino kits people own
- cutting out mechanical parts for robottics.
- for furniture restoration: 3D scanning woodcarvings and recreate missing pieces.
- making models, molds, spare parts wich could be hard and/or expensive to come by.
Drilling holes in PCB (before etching)
- We did a quick test with a 1mm drill in MDF
- It looks great
(calibrate the Z axis to right above the pcb) G21 (units in mm) G90 (absolute position) G01 x0 Y0 Z5 (drill up to 5mm for safety while moving due to uneven surface) G01 x0 Y2.54 (move to the first coordinate) G01 Z-4 F100 (start drilling to -4mm) G00 Z5 (drill up to 5mm again) G01 x0 Y5.08 G01 Z-4 F100 G00 Z5 G01 x0 Y7.62 G01 Z-4 F100 G00 Z5 G01 x0 Y10.16 G01 Z-4 F1 G00 Z5 G01 x0 Y12.7 G01 Z-4 F100 G00 Z5 G01 x0 Y15.24 G01 Z-4 F100 G00 Z5