CNC Cyclone PCB Factory, My Way, Step by Step.




About: Software developer but I love electronics, wood, nature, and everything else as well.

I'd like to renew my cnc for PCB so I decide to create new one from an existing project named Cyclone PCB Factory. You can find the original project here.

(I know I need to buy a good webcam)

It's very usefully for rapid prototyping, but when you must do a lot of piece is advisable tu use a service like this .

Step 1: History

I write an Instructable about Millin PCB with my homemade CNC, and I continue to develop and use board for personal use, but I'd like to get a more little CNC with some features like TTrack or probe to simplify the use.

I also refer to my other Instructables to explain the use of bluetooth pass-through serial interface to control CNC wireless.

I write a simple code for CNC shiled to calculate step/mm, you can find It here.

I explain my way to get It efficiently and more comfortable, but this is the first step, next I'd like to do a board to resolve all the problem I find and I resolved now with various simple "service boards".

I change some part like Z Axis with new one to fix a lot of problem, new Herringbone gears to prevent noise and precision problem, and electronic with new one less expensive.

Some part like stepper and smoth rod taken from old printers.

If you have some additional experience or have a better solution write a comment or directly to me, so I can integrate you solution to the board.

Next step is to add a simple display and some digital control and minimal wifi remote.

But do all step by step.

Step 2: Printing Parts: Original

First you need to printing the needed part, as I already say I rebuild some part to fix problem or to get more precision and less noise.

The base part to print from the original project is this:

  • Cycl_YfrontFrame.stlDownload
  • Cycl_rodFixer_x6.stl
  • Cycl_XleftFrame.stl
  • Cycl_XrightFrame.stl
  • Cycl_XYgearCover_x2.stl
  • Cycl_YbackFrame.stl
  • Cycl_Ycarriage_linearBearingHolder_x4.stl
  • Cycl_Ycarriage_nutHolder.stl
  • Cycl_Yfront_RodIdlers.stl

You can find a variant here of left/right frame for little 3d printer.

(Download file from original site so you can get update)

Step 3: Printed Parts: TTrack and PCB Holder

To hold the PCB you can use a TTrack, It's very usefully.

The remixed project is here.

A divided T-Track base can be found here.

(Download file from original site so you can get update)

Step 4: Printed Parts: Z Axis

I completely redo the Z axis to prevent movement and other problem.

You can find project here.

(Download file from original site so you can get update)

Step 5: Printed Parts: Herringbone Gears

I redo the gears also to be more efficient and with less noise.

You can find project here.

(Download file from original site so you can get update)

Step 6: Cutted Parts: Base and Workbed

In the original project there are various file formats of this elements, PDF, images or file to lasercut.

I printed pdf version and reproduce it on a plexiglas sheet.

Exist design to create a printable version, of the base and workbed.

(Download file from original site so you can get update)

Step 7: Parts: Shopping List

You can find a complete shopping list in the official site.

Remember to take personalized parts also.

Wait for electronic part, we are going to do something alternative in the next pages.

The first needed part is

M3 screw;

M8 threaded rods (3Meter);

some M8 smoth rods (I get It from old printer and cut when I assembled first part);

M8 Nuts and M8 Blocked Nuts;

some M8 and M3 washer;

For the 3 Nema17, to prevent deformation of PLA or ABS or PETG material I advise Nema17 damper and my gears with 3 M3 nut and 3 grain to fix It;

Step 8: Parts: Assembly

As already mentioned to assembly all part refer to the wiki of Cyclone PCB, but for z axis refer to thingiverse project..

Step 9: Electronic: Introduction

For electronic I'd like to use Arduino with CNC Schield v3 (with 3 stepper driver), It's open and cheap.

I take 3 mechanical end stop switch as described in the original project (the third one is for Z axis).

3 stepper nema 17 (form factor is important to fit on printed part), if you have some old printer at home now It's the moment to disassemble It.

A bluetooth module like ones described in this instructables It must be an serial pass-through module, not BLE one.

A relay module, a mosfet for additional/future use, 4 buttons, 2n2222a transistor and some capacitor.

Wire, some dupont (male and female), 2 crocodile clip.

A power supply, 12v 10A It's sufficient.

Step 10: Electronic: CNC Shield

You can find this CNC Shield at low cost (eBay).

This is a shield for Arduino UNO, but some Arduino have problem with serial communication with grbl program, in particular some CH340G usb serial connection doesn't work.

My personal experience I have had some problem with micro-usb arduino, but no problem with "standard" arduino USB port (even if It was CH340G).

For this project is preferable to remove all jumper on shield because threaded rod work as demultiplexer then with divider became to slow.

Step 11: Electronic: Stepper Driver

I choice A4988 driver instead a more powerful and precise DRV8825 for 3 reason:

  • A988 cost less;
  • We don't need 1/32 step divider;
  • My motors (taken from old printers) have less than 2A phase.

There is a simple "trick/way" to set correct amperage, you must put tester + on potentiometer and tester - to GND of the driver (look the image) then:

  • DRV8825: Imax = 2 * Vref (if Imax = 1.5A, then Vref is to be set to 1.5/2 V = 0.75V)
  • A4988: Imax = 2,5 * Vref

In my situation I put 0,8v*2,5 = 2A even if the step amp phase is 1,7amp but I need more power hehehe.

Step 12: Electronic: Mechanical Limit Switch

The printed part expect the limit switch in the photo, and It's a good choose to prevent part of noise.

In the last image grab from shapeoko forum, you can see that noise reduction schema is quite similar to the schema of mechanical switch module, but there is a problem, the capacitor is near switch not near pin.

Original guide to remove noise.

To prevent my additional noise I add (as you can see in the picture) an additional capacitor 473 near the controller, if you want, you can add It directly to the wire or create an additional service board, you must connect blue (or green) and black wire of the switch.

Step 13: Electronic: Relay Module

I'd like to use dremel like splindle, It's the more cheap solution, you can get 160w dremel like for 20€.

It's powerful and fast, but to control high voltage you must use relay.

A relay module want a lot of power (40mha is the limit of arduino pins) so I create a service board with an 2n2222a transitor and 1K resistor to power relay and a led also, It take in input (from top to botton at the left of image) GND, signal (spindle enable pin), and 5v VCC, and result in GND (activated from signal) and VCC for various operation. Fritzing schema is available.

Step 14: Electronic: Power Supply

The choice of power supply depend on various factor like the current and voltage of stepper.

But if you must buy new stepper and power supply the solutionis are low voltage and amperage stepper with 12v 10amp (or less) power supply. Low voltage stepper grant low working temperature and prevent deformation of printed part. 12v can power arduino board without volts reduction.

I get a little 10amp power supply and insert It in a case of fired power supply of mini Itx desktop case.

Step 15: Electronic: Wiring

Remember the schema of wiring connection must be integrated with service board that I create to prevent all the problem I encountered.

To connect all I use a dupont and Header pin, very versatile instrument.

The machine get a lot of vibration so when you made al junctions and you test all, fix all with some hot glue.

Step 16: Electronic: Wiring, Buttons and Led

As described i connect all with dupont.

I add resistance directly to the led wire.

Step 17: Electronic: Wiring, Switch and Buttons

Mechanical switch is connected from internal to external as GND, SIGNAL, and you must add a service board to give VCC.

As you can see in the photo service board is simple prefored board that have 2x6pin (male-female) and 3x6pin male, with this I add a pin with vcc to switch and "expanded" VCC and GND for all other component.

As already write I had to create an additional service board to reduce noise near the microcontroller, that simply add a capacitor 473 to the GND and SIGNAL of limit switch (BLUE and BLACK wire), as you can see you can add It directly to the wire.

Step 18: Electronic: Bluetooth and Probe

Bluetooth is connected to RX-->RX, TX-->TX, GND-->GND, VCC-->VCC, and STATE to internal pin of E-Stop (correspond to Reset in the schema). For connection and configuration of bluetooth module you can refer to my guide here, the only difference is that I remove capacitor to reset because It doesn't work, and I reuse the 2n2222 service board to activate a blue led from state to show If cnc is connected.

For voltage divider service board refer to bluetooth instructable.

Connect probe to SDA and GRD (SDA is A5 pin).

The probe helper without a service board to reduce noise can generate error, but work correctly, a schema of system to reduce noise is in the photo.

In my case the module spp-c have a trouble, after about an hour of work It's going to disconnect, so I buy an HC-05 (ZS-040), this module work correctly for a long time.

(You can find service board schema here)

Step 19: Electronic: Wiring, Additional

I add a Mosfet for 12v external power activated with splindle pin, the schema is very simple.

I also add a 7812 as 12v votlage regulator to Arduino and 7805 for 5v external power (5v used for bluetooth and other module if It's necessary).

Remember Mosfet and Voltage regulator can going hot so you must add an heat sink.

I use old CPU heat sink Where I made a hole and doimg a M3 thread.

(You can find service board schema here)

Step 20: Case

I use as enclousure an old ITX desktop case with fired power supply, and the result is in the photo.

Step 21: Firmware: Upload

For the firmware I use a grbl from here.

In my particular situation I don't use a variable splindle so I made a fork of the project here ready to be uploaded as normal ino scketch program (If you want you can import it as sloeber project also).

Step 22: Firmware: Configuration

$0=10 	(step pulse, usec)<br>$1=25 	(step idle delay, msec)<br>$2=0 	(step port invert mask:00000000)<br>$3=3 	(dir port invert mask:00000110)

$3 Identify the direction of movement, you can obtain the same inversion with rotation of stepper plug.

$4=0    (step enable invert, bool)
$5=0    (limit pins invert, bool)
$6=0    (probe pin invert, bool)

$6 Identify the direction when you do the probe

$10=1		(status report mask:00000011)<br>$11=0.010	(junction deviation, mm)
$12=0.002	(arc tolerance, mm)
$13=0		(report inches, bool)

Here you can find adjustment of movement.

$20=1	(soft limits, bool)<br>$21=1	(hard limits, bool)
$22=1	(homing cycle, bool)

This is the property for Limits and homing activation you must activate (and test) in this manner:

activate $21 (hard limits, anche check if they works correctly, click by hand the limit switch when machine is in idle state);

then activate $22 first and $20 then, $22 is the activation of homing and $20 is soft limit (check the size defined in the $130, $131, $132, i explain in order), if you activate $20 first you can broke configuration.

$23=3	(homing dir invert mask:00000001)

Here the direction of homing It's dependent on $3 configuration, if you change $3 you must correct this.

$24=25.000	(homing feed, mm/min)
$25=500.000	(homing seek, mm/min)

Here the speed of homing, for my stepper is to high and block the movement.

$26=250		(homing debounce, msec)<br>$27=1.000	(homing pull-off, mm)

Other homing adjustment.

$30=1000	(Max spindle speed, RPM)
$31=0		(Min spindle speed, RPM)
$32=0		(Laser mode, boolean)

$30 and $31 are needed if you use PWM and variable speed, but I used a Relay to activate spindle.

$32 is laser mode new configuration for laser CNC.

$100=159.000	(x, step/mm) 
$101=159.000	(y, step/mm)
$102=199.000	(z, step/mm)

Here there are the number of step to do 1mm of movement, very important for precision, normally this value is ok for all Nema17 motor but exists not only 200 step motor but 400 or 75 step motor.

I create a simple program to get this value, you can find here.

$110=300.000	(x max rate, mm/min) 
$111=300.000	(y max rate, mm/min)
$112=150.000	(z max rate, mm/min)

This is the max speed of your CNC, remember that threaded rod is a big demultiplex so the speed that you can raise isn't very high.

$120=10.000	(x accel, mm/sec^2) 
$121=10.000	(y accel, mm/sec^2)
$122=10.000	(z accel, mm/sec^2)

Acceleration parameter, we use a big demultiplex as described so they aren't very important for now.

$130=160.000	(x max travel, mm) 
$131=96.000	(y max travel, mm)
$132=40.000	(z max travel, mm)

Here there is the size of CNC area.

Step 23: Test: Homing

Now start the homing test, I create a simple video, I use Universal Gcode Sender, but there are a lot of alternatives like bCNC, Mach3 ecc..

Step 24: Test: Probe

Simple video of Probe testing.

Step 25: Test: Autolevelling ChiliPeppr

Autolevelling feature not working on UGS so to test this features I use ChiliPeppr.

Step 26: Test: First File Sended

Test send file and mill an OSB table.

Step 27: Test: First Milling PCB With Noise Problem.. and Panic!!

I try to mill a PCB without a service board to reduce noise and in the video you can see what's happend.

Go to the first minute of video (1:06).

Step 28: Test: Milling PCB (Puff!!)

First I need a vacuum cleaner :P

Here you can see Cyclone PCB at work.

Now work very good, and It's very precise.

Step 29: Test: Second Milling PCB, My Ciclop 3D Scanner Board

Finally I use the CNC to create a control board for my Ciclop 3d Scanner.

I'm moved, working on the first shot. : D

I tried bCNC with autolevelling, the result It's very very fine, I'm starting write a guide to obtain that result with bCNC.

Step 30: Thanks

As already said (with your contribution) I would like to create a board that includes all the fixes, if you have any experiences to share, write me or comment, so I can integrate your improvements.

Recap of all link

Original project:

Where you can find a lot of usefully info and shopping list.

My thingiverse:

Where you can find fixed part and upgrade.

Grbl github:

Where you can find arduino grbl firmware.

My github:

Where you can find ready to upload grbl and a program to calculate step/mm, or service board schema.

GitHub fritzing folder

Here the fritzing file.

Bluetooth information:

How to program and wire bluetooth.

Guide to milling PCB with ruoter:

Some video:



    • Comfort Food Challenge

      Comfort Food Challenge
    • Faux-Real Contest

      Faux-Real Contest
    • Warm and Fuzzy Contest

      Warm and Fuzzy Contest

    17 Discussions


    8 weeks ago

    Hello, I think it's a very, very, very interesting project, in fact I'm starting to print the pieces. What
    I would like to know is if there is a possibility of using a 52mm
    spindle and if so, if you know what support can be attached to it.
    Thank you for your work

    2 replies

    Reply 8 weeks ago

    The Z axis had interchangeable holder, If I find some time I draw the 52mm holder, but in this period I quite busy.


    Reply 6 weeks ago

    Thank you very much for your answer. a greeting

    2 months ago

    awesome! can you give the maximum size of pcb that this machine can create?

    1 reply

    Reply 2 months ago

    The maximun size is 10cm x 16cm , but with minimal improvement without altering the rigidiy you can reach 20cm x 16cm.
    Tthe only think you must do is put a longer rod and move the holder on Y axies, but so the machine It's no more portable.
    I use wireless and compact size to move It without problem.



    5 months ago


    1 reply

    Reply 5 months ago

    Thanks, I think professional It's too :D


    Answer 5 months ago

    Hi Carter,

    Hehehehehe... What do you mean? The total cost of the various components? Or the time it takes?


    Reply 5 months ago


    If I remember all...

    Arduino Uno 3€

    CNC Shield 2€

    Limit switch 1€

    Bluetooth module 2€

    Led buttons transistor relay screw connector etc. 7€

    Power supply 10€ (I had a power swpply to reuse but I'd like to put It inside the old case of mini ITX power supply).

    linear bearing 3€

    I grab Nema 17, damper and rod and other from old printers.

    PLA for structure and PETG for gears about 10€.

    Case is an hold mini ITX case with fired power supply.

    Dremel like with case and a lot of unusef thing about 24€.

    Shuco plug 4€.

    At the and about 45€ for the machine and 24€ for spindle.

    The price depend on what you have unused in your home, my first CNC made with an old epson scanner plexyglass and other few poor material cost about 20€.