PCB Milling complete process for through hole and SOIC with Carvey

This is a start to finish PCB milling with Carvey and Easel software. It includes through hole and surface mount components.

I used FlatCAM to convert my gerber files to gcode. I wrote a small .NET utility (you can download it and use it for your own projects GCodeCleaner.zip (13.6 KB)) to preprocess the FlatCAM output gcode so Easel would accept it. Everything I used was either from Inventables (FR1 material, drill bits, mill bits) or free (FlatCAM, Target3001 schematic capture and pcb layout). No height probing, or customizations were used, this was done with an entirely stock Carvey setup. The project is included as a PDF file with plenty of pictures and screenshots.Carvey PCB Milling Project.pdf (1.0 MB)
If you decide to use the GCodeCleaner utility, just unzip it and put it into the folder containing your FlatCAM gcode files. It is easy to use and the pdf file includes a description.


That is a nice clean looking board. Well done.

That’s a really helpful article - thanks very much. It gives me some confidence as I approach my first Carvey PCB job that it might actually work out.

I had to work through the overlap procedure for myself to make sure I understood it, and ended up with a formula for the tool diameter to enter into Carvey for each pass.

If the bit has an effective cutting width of CutWidth (0.3mm in your article), and the overlap as a percent of the cutting width is OLapPct, then the amount the tool diameter increases on each successive pass is

Spacing = 2*(1-OLapPct)*CutWidth

If Pass is the pass number (1, 2, …), then

ToolDiameter = CutWidth + (Pass-1)*Spacing

I hope you have good success with your project.

I’ve cut alot of boards since writing the article and ended up just using the FlatCAM built in 'Width (# passes)" parameter instead of making separate geometries. Can’t emphasize enough how important it is to have a nice clean and flat waste board. I sand mine between uses and make sure that if there is a bow in the board that it is ‘down’ in the middle and up at the edges.

Since I read that FR1 material can absorb moisture over time, I have adopted the practice of spraying the board after assembly with a clear Rustoleum spray for protection (after using pieces of painters tape to cover connectors, test points, etc). The picture is my latest board.

Being able to use Carvey to cut boards has been a huge help to my engineering business.

1 Like

Awesome looking board!

I am teaching a class soon on how to make our own Arduino UNO board. I have the design files in eagle.

Do you have a rundown on how to make it from eagle to carvey?

I have all the materials and the driblets. I am only using through hole components.

Any help to make my life easier to prepare the class would be really appreciated!

Great article.
Thanks for sharing.
Have you done any SMT boards?
Also where are you buying your boards they look very clean.

Eagle had a add on called PCB-GCODE that should work if its still available, I haven’t used eagle in ages but if you can find the add on it would work out nice for you, along with FlatCam.

1 Like

I’m sorry KikoLobo, but I have no experience with using eagle file formats.

I have made a couple boards with one SOIC on them. Below is an image of a SMT PCB I am about to cut. It has 2- 14pin SOIC, about 20- 1206 size resistors and caps and a few SOTs. It is all SMT except for connectors, switch and LED.

Practices I have adopted.

  1. I’m using single sided FR1 6x6" material from Inventables. I check the edges for burrs and smooth with a file if necessary since otherwise it throws off the height setting on the corner clamp. I use double-sided tape every 1.5 inches or so going the full width of the board, making sure if there is a crown in the pcb stock that it is bowed down in the middle. Tape has to be along the bottom edge to make sure the corner clamp includes tape thickness. I make sure the board is firmly pressed down against the wasteboard (1/4"x1"x6" poplar from Home Depot)
  2. I set the trace width at 22mils to ease issues with board height variations since I don’t take the steps to probe the surface. I’ve made my own patterns for 1206 resistors and caps to include larger solder landings.
  3. Use a 20 deg .1mm V bit for isolation routing.
  4. After routing, drilling and cutout, I assemble the board, mask off connectors and TPs with painter tape, and then spray both sides with clear Rustoleum to protect FR1 from absorbing moisture and to delay oxidation.

I have made quite a few pcbs up to 4"x5" in size with these techniques. It is handy to be able to make arbitrarily shaped boards using FlatCAM/Easel. I have made trapezoidal and curved pcbs with no problem at all. Hope this is of some help.


Here is an assembled all SMT board, slightly modified layout from what was previously uploaded. Remaining pads are all for connectors or wires.

Thank you for this write up, I’m finding it indispensable for doing a through hole board for the first time ever, much less with the Carvey. One place I’m having trouble is getting a consistent Z depth for both mills and drills. I will use the same gcode on two different blanks with quite different results. I’m thinking it comes down to how tight you make the smart clamp, with a very tight hold causing the wasteboard to lift at the other end and the mill to gouge, so I try to go as light as I can, and then it often does not go deep enough. Do you thing the smart clamp tightness can make such a difference and do you have any tricks for making Z depth consistent, other than those you’ve mentioned above?

By the way, I am finding Easel accepts the FlatCAM gcode without needing to remove the leading zeros so I have not needed to use your cleanup tool at all.

I do all my cuts with the FR1 blank taped to a 1/4" thick wasteboard. I use poplar from Home Depot and make sure the crown is down, so that the nearest and farthest edges are curled up if there is any curl. That way the Smart Clamp and the other clamps pull down the curled up edges. I run the double-sided tape in strips the full width of the board making sure I start the first strip completely along the nearest edge so the Smart Clamp is over tape. Spacing between tape strips is about 1". I run my knuckles firmly along the copper pressing down where the tape strips are. The FR1 blanks almost always have a slight lip around the outside from the manufacturing process, so I file those off until I can’t feel anything with my along the edge where the Smart Clamp will be. As you mentioned firm tightening of the Smart Clamp is very important. Also, I vacuum thoroughly after each task, and when I change blanks, I make sure there is no debris on the bottom of the Smart Clamp. Because I always have a wasteboard, I overdrill each hole, making sure they go completely through and slightly into the wasteboard, so through holes are never a problem. Isolation routing is the task where the height accuracy is so important.

Easel did add the gcode leading ‘0’ stripping a while back, so it saves a step when coming over from FlatCAM.

Hope that helps. Best of luck with your projects!

1 Like

Ok I have loaded Target 3001 and I can’t figure out how to export to GRBL.
Can you shead some light on how to do this?

The workflow I described is…

  1. Create Schematic and then the pcb board layout in Target 3001.
  2. Export Gerber format for the desired layers (normally these are Top, Bottom, and Drill) at a minimum.
  3. Install the open source program FlatCAM, and import the layers into it. Use FlatCAM as described in the pdf file in this project writeup to create routing geometries and export as gcode files. There would be separate gcode files for isolation routing, each drill size, and the board cutout.
  4. Import each gcode file separate into Easel, install the proper bit and run the file.

Hope that helps.

yes however I do not use Easel. but I can just load it into Mach3

This is the problem. I do not see a G-code export from flatcam
I am unable to reproduce what the steps are in the PDF you spoke of.

ugh. Flatcam is horrible.
There is no way to select the text to get rid of it.
The interface hides features and its soo un intuitive…

This will not work if I can’t take out the text demo crap that Target 3001 puts in there.

Here is the text I want to get rid of.

I haven’t used the free Target version so can’t comment exactly on how to remove text, but any item on the pcb layout should be able to be selected and removed. The DipTrace free version does not have any text added.

In FlatCAM, the sequence is

  1. Select the Gerber file such as the Top layer. and make settings in the ‘Isolation Routing’ area at top. Then press ‘Generate Geometry’
  2. Select the Geometry file you just created and make the settings in the ‘Create CNC Job’ area at top. Then press ‘Generate’. This produces a file with a _cnc at the end.
  3. Select the cnc file just created and press the Export G-Code button near the bottom at left.

If you want to delete the unwanted pcb text in FlatCAM, you need to create the geometry first. The select Edit Geometry in the Edit menu. Now you can select items and delete them. Then you have to select Update Geometry.

After spending many hours of working I have figured that out. Flat cam does have some good features but its missing the ability to select multiple items. But I found another program that is better than Target and does not produce the extra text.
Made this. Soldering would have been better if I switched tips but I moved my stuff and they are MIA at the moment.