Introduction: 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)

I'm going to update all in https://www.mischianti.org/category/tutorial/cyclone-pcb-factory-how-to-build-it/

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.

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: 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 12: 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 13: 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 14: 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 15: Electronic: Wiring, Buttons and Led

As described i connect all with dupont.

I add resistance directly to the led wire.

Step 16: 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 17: 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 18: 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 19: Case

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

Step 20: 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 21: Firmware: Configuration

<p>$0=10  (step pulse, usec)<br>$1=25  (step idle delay, msec)
$2=0  (step port invert mask:00000000)
$3=3  (dir port invert mask:00000110)
$4=0    (step enable invert, bool) 
$5=0    (limit pins invert, bool) 
$6=0    (probe pin invert, bool)
$10=1 (status report mask:00000011)
$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)
$21=1 (hard limits, bool) 
$22=1 (homing cycle, bool)</p><p>$23=3 (homing dir invert mask:00000001)<br>$24=25.000 (homing feed, mm/min) 
$25=500.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$30=1000 (Max spindle speed, RPM) 
$31=0 (Min spindle speed, RPM) 
$32=0 (Laser mode, boolean)
$120=10.000 (x accel, mm/sec^2)  
$121=10.000 (y accel, mm/sec^2) 
$122=10.000 (z accel, mm/sec^2)
$130=160.000 (x max travel, mm)  
$131=96.000 (y max travel, mm) 
$132=40.000 (z max travel, mm)</p>

Step 22: 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 23: Test: Probe

Simple video of Probe testing.

Step 24: Test: Autolevelling ChiliPeppr

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

Step 25: Test: First File Sended

Test send file and mill an OSB table.

Step 26: 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 27: 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 28: 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 29: 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: https://github.com/CarlosGS/Cyclone-PCB-Factory

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

My thingiverse: https://www.thingiverse.com/xxreef/designs

Where you can find fixed part and upgrade.

Grbl github: https://github.com/gnea/grbl

Where you can find arduino grbl firmware.

My github: https://github.com/xreef

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

GitHub fritzing folder https://github.com/xreef/grbl/tree/master/resource...

Here the fritzing file.

Bluetooth information: https://www.instructables.com/id/Arduino-Remotewireless-Programming-and-Test-With-H/

How to program and wire bluetooth.

Guide to milling PCB with ruoter: https://www.instructables.com/id/Milling-PCB-easy-...

Some video: https://www.youtube.com/playlist?list=PLOHujNnRvJ6...