MillingPrintedCircuitBoardsOnTheProxxon

Adrian McEwen edited this page Oct 27, 2016 · 1 revision

Milling Printed Circuit Boards on the CNCMill

How to use the small CNCMill to create single- or double-sided PCBs.

Overview

There are a number of steps to run through to create your own printed circuit board (is it still a ''printed'' circuit board if it's milled?)

  1. Design your circuit. For this guide we're assuming you use Kicad, but anything that generates Gerber files should be okay
  2. Prepare the GCode. Use LineGrinder to generate the relevant GCode files from the Gerber files (We haven't tried it yet, but http://flatcam.org/ could be another option over LineGrinder)
  3. Level the milling bed. This ensures your PCB is at a consistent height, for better results
  4. (for double-sided) Drill the reference pin holes
  5. Mill the isolation cuts for the bottom copper layer circuit
  6. (for double-sided) Using the reference pin holes and some old broken milling bits as pegs, flip the board over and relocate it
  7. Mill the isolation cuts for the top copper layer circuit
  8. Drill the holes for any through-hole components
  9. Mill round the edges of the PCB
  10. Check over your new PCB, solder it up and use!

Software

  • [http://www.kicad-pcb.org/ KiCad]
  • [http://www.ofitselfso.com/LineGrinder/LineGrinder.php LineGrinder]
  • [https://github.com/winder/Universal-G-Code-Sender Universal GCode Sender]

Instructions

Prepare Gerber and Drill files

These instructions are for Kicad, but there should be similar options for other PCB design packages (and feel free to split this section to provide instructions for other software!).

  1. Design your circuit board. Position it in the top-left corner of the Pcbnew sheet, otherwise you'll have a massive distance from the mill's origin to where the action happens. It also helps to have pretty thick tracks (0.8mm track width seems to work nicely) and bigger vias if you use them (via diameter of 1.6mm, and via drill of 1mm, for example). For double-sided boards you'll need some 3.175mm holes to use as location points for the reference pins.
  2. In Kicad's Pcbnew choose "File" -> "Plot", and specify an "Output Directory" where the resultant Gerber files will be saved.
  3. Ensure the plot format is Gerber.
  4. Select the layers that you'll be milling. These will usually be the "Edge.Cuts" and either/both of the "F.Cu" and "B.Cu" for the copper layers.
  5. Click on "Plot" to generate those Gerber files.
  6. If you've got mounting holes, reference pins, or any through-hole components you'll also want to generate the drill file.
  7. Click on "Generate Drill File"
  8. Ensure the "Drill Units" is set to "Millimeters"
  9. Ensure the "Drill Map File Format" is set to "Gerber
  10. Change the "Zeros Format" to "Keep zeros"
  11. Click on "Drill File" to generate the drill file

Generate the GCode

This is all done using LineGrinder. It's Windows-only it seems, but might be possible to run it under Mono on Linux. There is also http://flatcam.org/ which should be cross-platform (and is targetted at Linux).

First Time

  1. Install LineGrinder
  2. Download the settings for the Proxxon mill from https://github.com/DoESLiverpool/somewhere-safe/blob/master/Workshop/CNCMill/LineGriderSettings.xml and replace the default ones.

Each Time

For each of the Gerber files you need to mill, open the Gerber file (or drill file), then click "Convert to GCode" to generate the GCode, and then save the relevant GCode files.

  1. Generate the bed-levelling and PCB edges GCode files from the Edge.Cuts Gerber file
  2. Generate the isolation traces GCode file(s) from the F.Cu and/or B.Cu Gerber file(s), and the reference pins GCode if you're milling a double-sided board.
  3. Generate the drill GCode file from the drill file

Mill the board

Prep

  1. Read the LineGrinder manual. It does a really good job of talking you through the steps undertaken to mill a PCB, including tips on getting the height right for clean cuts.
  2. Bolt a sacrificial piece of wood or MDF to the bed of the mill. It should be a few centimetres bigger than the PCB you're milling in both dimensions, and thicker than the depth your drill file will drill to. 6mm MDF has worked well so far.
  3. Read the LineGrinder manual (in case you thought you could skip it in the bit above :-)
  4. Run the Universal Gcode Sender software, and configure the correct serial port to use. The Firmware is GRBL and the baud rate is 9600. Don't open the connection just yet.
  5. Clamp the shopvac nozzle pointing at the milling bit, positioned from in front of the mill. Check that none of the clamps are in a position where they'll foul movement of the mill as it moves around.
  6. Get some ear protection from the "Ear Protection" drawer
  7. Get some eye protection from the "Safety Glasses" drawer

Note: If you're unsure of how things are running - especially the first time you try any milling - it makes sense to set the home position of the mill a few centimetres above the actual workpiece. That will let you try it out to check that it goes to the positions you expect it to, and won't run into the clamps, etc. Once you're happy that it's moving as you expect, start again with the proper home position.

Level the bed

  1. Put an end-mill or router bit into the collet
  2. With the mill turned off, move the bit by hand to the top-left of the area that you want to mill. Position the bit so it just touches the surface of the wood. This is the home or machine zero position, which corresponds to X0Y0Z0 in the GCode.
  3. Open the connection in Universal Gcode Sender and then straight away turn on the mill's power supply (the ProfiLine 3524 24V DC supply in a beige box). The mill will move up by 20mm.
  4. In the "File Mode" tab of Universal Gcode Sender, load the bed flattening Gcode.
  5. Click "Visualize" to open the G-Code Visualizer window. This will show the path that the mill is going to take. It should mostly be a load of concentric rectangles with a couple of cyan lines off to the top-left corner, and a yellow rectangle.
  6. The yellow rectangle indicates where the mill is currently positioned. If you leave the G-Code Visualizer open you can watch its position as it runs through the code. You can also try moving the mill around with the jog controls to see it move. In the "Machine Control" tab, the X, Y and Z + and - buttons will move the mill by 1mm in each direction. Hitting the Z- a few times will move the mill down a few millimetres, and move the yellow rectangle down a bit too.
  7. Set the spindle RPM to the right value to mill with the bit you're using and the material that the sacrificial bed is made from. It is set by the dial on the right-hand side of the mill.
  8. Turn the spindle on using the rocker switch next to the speed control on the right-hand side of the mill.
  9. Check that you're ready to level the bed, and that nothing will impede movement of the mill.
  10. In the "File Mode" tab, click on "Send" to start the milling process.
  11. Turn on the shopvac when the bit enters the bed material, to extract any dust/shavings/etc.
  12. Watch the mill at all times, and be ready to switch it off (at the ProfiLine power supply) if anything goes wrong. Ideally '''before''' it goes wrong, particularly if it seems to be heading for collision with one of the clamps or the end of its travel.
  13. Once the bed is levelled, cut a suitably sized piece of blank PCB material, and stick it to the indentation on the sacrificial bed with double-sided tape.

Change bits and reset the Z height

Whenever you change bits you're likely not to put the new bit in at the right height for the home position to be correct. Follow this procedure to avoid that.

  1. Using the jog control, move the Z layer up to give you room to change bits.
  2. Put the new bit into the collet. You might need to swap collets too depending on the shank diameter of the old and new bits.
  3. Use the jog control to move the bit somewhere above the copper surface (X0Y0 is likely to be off the edge of the PCB because that's where the bed-levelling started)
  4. Set the correct Z height
  • For drilling or edge milling, where the exact Z height isn't so critical:
  1. Use the jog control to set the Z position to 0. If the new bit is sitting lower than the old one, and you can't move to Z0, move it close to the surface (e.g. to Z4) and loop through these steps twice - once to manually position it to a bit above the height you can get to (e.g. if you got to Z4 then leave at least 4mm between the bit and the surface); and then again to zero it properly.
  2. Turn off the mill
  3. Manually position the bit to touching the surface
  4. Turn the mill back on
  • For isolation cuts, setting the Z height precisely is essential:
  1. Use the jog control to set the Z position to Z3.
  2. Turn off the mill
  3. Manually position the bit so that a spare bit can just roll underneath it (read the LineGrinder manual for a proper explanation of this procedure)
  4. Manually move the bit down another 0.175mm (assuming you're using a 1/8" or 3.175mm shank bit)
  5. Turn the mill back on
  6. On the "Machine Control" tab, click "Return to Zero" to have the mill return home ready for use

Cut the isolation track for the top copper surface

  1. Change to a V-groove bit using the bit-changing process above.
  2. In the "File Mode" tab of Universal Gcode Sender, load the top copper isolation Gcode.
  3. Click "Visualize" to open the G-Code Visualizer window. This will show the path that the mill is going to take.
  4. Set the spindle RPM to the right value to mill with the bit you're using and the material that your PCB is made from. It is set by the dial on the right-hand side of the mill.
  5. Turn the spindle on using the rocker switch next to the speed control on the right-hand side of the mill.
  6. Check that you're ready to level the bed, and that nothing will impede movement of the mill.
  7. In the "File Mode" tab, click on "Send" to start the milling process.
  8. Turn on the shopvac when the bit enters the material, to extract any dust/shavings/etc.
  9. Watch the mill at all times, and be ready to switch it off (at the ProfiLine power supply) if anything goes wrong. Ideally '''before''' it goes wrong, particularly if it seems to be heading for collision with one of the clamps or the end of its travel.

Drill the through-holes

TODO: It would be better to split the drill file into separate GCode steps, one for each size drill bit, because GRBL doesn't support the tool changing codes. For now this assumes you'll drill using the smallest drill bit and then use those as pilot holes for any larger holes (e.g. mounting holes)

  1. Change to a 1mm drill bit using the bit-changing process above.
  2. In the "File Mode" tab of Universal Gcode Sender, load the drilling GCode file.
  3. Click "Visualize" to open the G-Code Visualizer window. This will show the path that the mill is going to take.
  4. Set the spindle RPM to the right value to mill with the bit you're using and the material that the PCB is made from. It is set by the dial on the right-hand side of the mill.
  5. Turn the spindle on using the rocker switch next to the speed control on the right-hand side of the mill.
  6. Check that you're ready to level the bed, and that nothing will impede movement of the mill.
  7. In the "File Mode" tab, click on "Send" to start the milling process.
  8. Turn on the shopvac when the bit enters the material, to extract any dust/shavings/etc.
  9. Watch the mill at all times, and be ready to switch it off (at the ProfiLine power supply) if anything goes wrong. Ideally '''before''' it goes wrong, particularly if it seems to be heading for collision with one of the clamps or the end of its travel.

Mill the PCB edge

TODO: Update this once we have a suitable bit for cutting the PCB edge

Settings

Various notes from previous experiments. Don't take any of these as facts, just notes of things we've done.

MDF:

  • Feed rate: ???
  • Spindle speed: 10000 rpm

PCB Isolation Cut

  • Bit: V-groove
  • Feed rate: About 10 inc = 25 cm per minut
  • Spindle speed: 15000-20000 rpm

PCB Drilling

  • Bit: drill bit
  • Feed rate: ???
  • Spindle speed: 13000 rpm
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.