Milling Custom PCB's with Snapmaker


As I outlined in the video, which if you haven't seen yet, make sure to check it out at the link above, I recently made a camera slider with an old A4988 stepper motor driver that is quite loud and has a lot of vibration. This is obviously not good for a camera slider, since it needs to be as smooth as possible to not affect the video quality. To fix this, I added a Go Pro anti vibration mount that I 3d printed. This seemed to work pretty well for my phone, but since I have upgraded to a nicer camera, I need to revisit that solution so I can mount my Canon camera onto the camera slider. 

I decided to swap out the A4988 driver with a TMC2209 driver, but unfortunately this meant that I needed a new circuit to work with the TMC2209. I created and ordered the original PCB from JLCPCB, but I wanted to save some time and money this time by routing the PCB myself. So, to accomplish this, I updated my circuit to work with the TMC2209, created a single sided PCB design using EasyEDA, and created CNC jobs with FlatCAM so I could route the PCB with my Snapmaker Original CNC machine!

Check out the video on how I did this, and check the documentation below for a full write up! (If the documentation is incomplete, I promise I'll get to it shortly!)



  1. Install FlatCAM
    1. Original Instructions
    2. Instructions I had to follow for Python 3
  2. Design PCB using EasyEDA
    1. Eagle is a good alternative, but EasyEDA is free
    2. Put all tracks on the bottom layer
    3. I increased the track width to 0.5mm 
  3. Download Gerber files
  4. Open Bottom layer Gerber file
    1. File->Open->Gerber File
    2. Select the Bottom Layber .GBR file
  5. Mirror and move the Gerber file
    1. The bottom layer gerber will be opened in the plot window but it needs mirrored
      1. Since the gerber represents a top view of the bottom layer
    2. Select the Gerber in the project panel and click Edit->Move to Origin
  6. Select the bottom layer gerber in the project panel and click the properties tab
  7. Scroll down and select Isolation Routing to create the geometry for the routing
    1. This will create a new object in the project panel under Geometry in case you need to find it again.
  8. Configure the bit tip diameter, feed rate, and any other parameters
  9. Scroll down and select Generate CNCJob Object
    1. This will create a CNC object which can also be found in the project panel under CNC Jobs.
  10. Repeat steps 4-9 for the pcb holes and board outline
    1. For the holes cnc job, you'll need to open an Excellon file instead of a Gerber file
    2. Instead of Isolation Routing you'll need to select Drilling Tool
    3. For my purposes, I used the same bit for all the holes, so I selected all the different hole diameters and configured them to be done with the same bit.
    4. For the board outline, open the board outline Gerber and select cutout tool to generate the geometry for it.
  11. You should now have three different CNC Jobs
    1. The Isolation Routing for the tracks
    2. The drilling file for all the holes
    3. The board outline cut
  12. Save all the CNC Jobs to a flash drive with the .nc extension
  13. Mount a spoilboard to the Snapmaker and create a simple rectangle in Luban to ensure the work surface is completely level to the x axis.
  14. Mount the copper blank to the spoilboard using some thin double sided tape
    1.  I used some carpet tape I picked up at Lowes.
  15. Insert the V bit (or other bit) that you're using for the track isolation routing.
  16. Move the bit to the origin point and set the origin using the Snapmaker UI.
  17. Start the Isolation Routing CNC job.
  18. Swap the bit out for the hole drilling bit, ensure you don't move along the X or Y axis.
  19. Move the bit down to the proper z height and set origin again
  20. Start the Drilling CNC job.
  21. Swap the bit for the board outline cutting bit, set z height and start board outline cut.
  22. You should now have a custom PCB routed that you can use for your project!