PCB Milling with Autolevelling



We get the File with the G-Code that generates the toolpath for the isolation milling from Eagle. The G-Code assumes that the copper clad board is completely flat. It is recommended to modify the G-Code of the board before sending it to the CNC machine in order to account for unevenness of the physical board. The tool used for this purpose is available at

http://www.autoleveller.co.uk/

Hardware setup

The autolevelling method utilizes that fact that the copper board as well as the carving tool conduct electricity. When they touch, the resistance becomes zero, and that fact can be measured in one of the input ports of the CNC controller.



You have to tell LinuxCNC that one of the input ports is a probe input.



Isolation Milling Process - Two Steps

This section describes the procedure for physically making a board after we have generated the milling files in Eagle. We will use the word "example" in the naming of the circuit files in Eagle. So we start out with the following files:

example.top.drill.tap
example.top.etch.tap
example.top.mill.tap

To begin:
  • Open Autoleveller



  • click on "Browse for GCode" and navigate to
example.top.etch.tap

in your Eagle project directory

Check create probe file only

and click on create levelled GCode

This will create a file named

ALProbeexample.top.etch.ngc

This file will reside in the same folder as the file that you just loaded.

  • Fix the board as flat as possible to the CNC table.
  • Connect the board to one of the probe inputs.
  • Connect the V bit to the other probe input.
    • Open LinuxCNC.
    • Load the file ALProbeexample.top.etch.ngc


    • Move the V bit over the bottom left (x=0, y=0) of the board with the jog controls
    • click on home for all axes
    • run the program
    • A notification will appear reminding you to connect the probe-then hit resume
    The program will now lower the z-axis until the probe makes contact. Then it will move the z-axis up and a new notification will appear asking you to remove the probe cable. If you don't do that, the cable will wrap around the spindle!

    • click on run to start the level acquisition

    Once the process is finished, the board level data will be saved in a file named

    RawProbeLog.txt

    Located under your home directory at ~/linuxcnc/configs/your_machine_config

    This is what the file contained in my case:

    0.000000 0.000000 0.000313 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    0.375125 0.000000 0.006141 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    0.750250 0.000000 0.009221 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    1.125375 0.000000 0.010220 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    1.500500 0.000000 0.005724 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    1.500500 0.460250 -0.001519 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    1.125375 0.460250 0.003143 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    0.750250 0.460250 0.003310 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    0.375125 0.460250 -0.000187 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    0.000000 0.460250 -0.004433 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    0.000000 0.920500 -0.007014 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    0.375125 0.920500 -0.002518 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    0.750250 0.920500 -0.000686 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    1.125375 0.920500 -0.002102 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
    1.500500 0.920500 -0.006098 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

    It represents the elevation of the board in millimeters, relative to the starting position.


    • Open Autoleveller and click on Browse for Probe Log. Navigate to the probe log, uncheck "create probe file only" and click on "Create Levelled GCode". This will create a file named
    ALexample.top.etch.ngc


    • Open LinuxCNC and open the file named ALexample.top.etch.ngc


    • Click on Run. 
    The program will now prompt you to connect the probe. Do so and click ok in the dialog. The program will then lower the z-axis until the probe makes contact. Then the program will prompt you to remove the probe connection. Do so and  click ok in the dialog. Then the program will start the isolation milling process.


    Here is a picture of the finished product:


    Amazing result with a home CNC machine!


    Isolation Milling Process - One Step

    Once you are comfortable with the process, you can do the milling in one step. Just uncheck the "create probe file only" checkbox and click on "Create Levelled GCode". Again, execute the file  ALexample.top.etch.ngc in LinuxCNC, this time the probing and milling will be done from one G-Code file.

    Drilling Process

    Unfortunately, the drill G-Code generated by pcb-gcode seems to have some flaws. The code contains some M06 commands that cause the program to stop. A user on the pcbgcode.org forum has found a fix that works by changing the file

    pcb-gcode-3.6.2.4/settings/gcode-defaults.h

    http://pcbgcode.org/read.php?4,967,967

    Also, the thickness of PCB boards tends to be 1.6 mm which results in a drill depth of -0.069 inches (make sure you enter the correct depth for your board)



    After that, you can simply load the file

    example.top.drill.tap

    in LinuxCNC and run it. Make sure to zero the drill before you start.


    What not to do

    One of the advantages of using the probe input is that the Z-motor stops when the bit touches it. It is recommended to always prepare your G-Code file with Autoleveller, because Autoleveller adds a section of code that probes the board before any milling is done.

    Here is what happens when the height of the bit is not properly set:


    in the bottom left of the picture, the drill bit was pushed into the board, breaking it off. The bit was subsequently dragged across the board, wiping out the previously created traces-ouch!



    Tips and Hacks

    Sometimes, the auto-levelled gcode will not go deep enough and barely scratch the surface of the PCB. The gcode is consistent in that it considers the unevenness of the board everywhere, it just stays too high the entire time. In that case, you can trick the gcode by physically changing the Z-reference. At the moment when the gcode finds the Z zero, push the board down just a little bit. This will trick the system into thinking that the board is actually lower than it really is, therefore going deeper this time.















    3 comments:

    1. Great blog. All posts have something to learn. Your work is very good and i appreciate you and hopping for some more informative posts,
      Cnc controller board

      ReplyDelete
    2. Thank you for a very interesting article. I greatly appreciate the time you take to do all the research to put together your posts. I especially enjoyed this one!!
      Cnc controller kit

      ReplyDelete
    3. Interesting information and nice article. I was curious about this subject on PCB router.

      ReplyDelete