Introduction: CoreXZ Puzzle Pipe Plotter

About: PLC, Arduino - Do it yourself project

Today, I'd like to share how to build at home a CoreXZ puzzle pipe plotter. It is called "puzzle pipe" CNC because I put pieces of pipe fittings together in a logical way, in order to arrive at the strong and nice mechanisum CNC structure.

The plotter firmware is CoreXY, but it works in another dimension CoreXZ.

Please check my video before getting started!

Step 1: Supplies

I would like to thank the JLCPCB for supporting me on this project. If you have a PCB project, please visit the JLCPCB website to get exciting discounts and coupons as follows:

a. Main materials:

⦾ 1pcs x Arduino UNO R3 or Combo Arduino + CNCShield + A4988.

⦾ 1pcs x Arduino CNC Shield V3 GRBL.

⦾ 3pcs x Stepper Motor Driver A4988

⦾ 3pcs x Stepper motor NEMA 17.

⦾ 3pcs x 50 mm L Stepper Motor Support.

⦾ 4meter x GT2 6mm Timing Belt.

⦾ 4pcs x GT2 5mm Bore Aluminum Toothless Idler Pulley for 6mm Width Timing Belt.

⦾ 2pcs x GT2 Idler Timing Pulley 5mm Bore 20 Teeth.

⦾ 3pcs x GT2 Timing Pulley 20 Teeth.

⦾ 4pcs x Round Shaft Diameter 8mm, Length 500mm.

⦾ 2pcs x Round Shaft Diameter 8mm, Length 200mm.

⦾ 12pcs x Ball Flanged Shielded Bearings 8 x 22 x 7mm.

⦾ 12pcs x Horizontal Ball Bearing Bracket or Vertical Ball Bearing Bracket.

⦾ 1pcs x Power Supply 12/24VDC.

⦾ 2pcs x Clear/White Acrylic, size A3, thickness at least 5mm.

⦾ 4pcs x Copper Brass Pillars L-10mm.

⦾ 2 meter x 8P/16P Rainbow Ribbon Cable.

⦾ 1pcs x 5mm DC Female Power Plug.

⦾ Some small cable ties, cable spiral wrap, bolts and nuts.

b. PVC pipes and fittings:

⦾ 70pcs x PVC Pipe Tee Ø21mm.

⦾ 16pcs x PVC Three Way Tee Ø21mm.

⦾ 16pcs x PVC Four Way Tee Ø21mm.

⦾ 4pcs x PVC Cross Ø21mm.

⦾ 8pcs x PVC Elbow Ø21mm.

⦾ 4pcs x PVC Connector Ø21mm.

⦾ 8 meter x PVC Pipe Ø21mm.

c. Tools:

⦾ Drilling machine.

⦾ Hand saw.

PVC pipe cutter: It was very useful for this project, because I had to cut a lot of connecting pipes.

⦾ Soldering machine.

Step 2: How It Works

My plotter use built-in CoreXY kinematics in GRBL and it has working range about X380mm x Y380mm x Z6mm. It structure is shown as follow:

⦾ The X and Z axes are driven by 2 stepper motors and a common timing belt (CoreXY system). On the Z axis, I attach a PVC pipe containing a pen inside for plotting.

⦾ The Y axis works like other traditional CNCs via timing belt. And the CNC plotter frame is made out of PVC fittings. The following picture shows the plotter's backside.

Step 3: XZ Assembly

I cut 2 acrylic sheets, dimension L180 x W120 x T5mm and drilled holes to mount stepper motors.

Two XZ supports were assembled by PVC pipe tees, three and four-way tees following the shape below, then mounted stepper motors with acrylic sheet to this supports. Two lock bearings were also inserted at 2 open holes.

Assemble one more support to keep XZ axes strong enough.

X and Z sliders were constructed from 2 pcs x PVC tees with ball bearings at 4 ends of these sliders.

An acrylic sheet, dimension L120mm x W120 x T5mm, was drilled and installed 4 toothless idler pulleys in the center.

Assemble the XZ slider.

Combine all parts above together, adjust the X, Z sliders and supports so that they could move smoothly on their linear rails.

Step 4: Y Assembly

Build 2pcs x Y supports as below:

  • The 1st one: it had 2 lock bearings available for the Y linear rail.

  • And the 2nd one: it has one idler pulley and 2 lock bearings.

Build a frame which was used to connect XZ supports and Y supports.

Firstly this framework was hooked up to Y supports.

Step 5: Y Motor and Working Surface

Mount Y stepper motor on an acrylic sheet, dimension L180 x W120 x T5mm.

Build a Y axis support for working platform.

Install Y stepper and working support on the Y frame. I reinforced the support by an acrylic plate at the bottom in order to prevent the working surface misaligned when plotter worked.

I reused the calendar back cover (size 430mm x 330mm) as a Y axis working surface.

Install this calendar cover to its support via bolts and springs. With these springs I can easily calibrate the plotting surface, which I have seen people often use on 3D printers.

Mount the Arduino Uno and CNC shield on the Y axis acrylic support plate.

Step 6: Final Assembly & Pen Holder

Connect XZ and Y frames together.

Install 2 timing belts for 3 stepper motors.

Cut a PVC pipe, placed a pen inside this pipe so that pen tip just sticks out of the pipe. I also put a spring inside this pipe to ensure that the pen tip can move a little bit.

Mount this pen holder to the Z axis.

DONE!

Step 7: Connection

Connect all wires from 3 stepper motors to GRBL shield.

The connections are as follow:

DONE!

Step 8: GRBL Firmware

a. Enable CoreXY kinematics in GRBL firmware:

⦾ Download GRBL firmware files.

⦾ Copy GRBL to C:\Users\Administrator\Documents\Arduino\libraries\

⦾ Go to C:\Users\Administrator\Documents\Arduino\libraries\config.h. Uncomment the command line "#define COREXY" to enable CoreXY kinematics.

⦾ Homing Configuration: I have referred to https://github.com/gnea/grbl/wiki/Two-Axis-System-Considerations.

b. Upload GRBL firmware to Arduino Uno:

Take note that we should modify GRBL's config.h file properly as mentioned above, before uploading the GRBL firmware to our Arduino.

⦾ Open Arduino IDE ‣ File menu ‣  Examples ‣ GRBL ‣ grblUpload.

⦾ Select the correct Port and Board (Arduino Uno) ‣ Compile and Upload the code to Arduino Uno.

c. Step/mm setting:

⦾ X & Y axis travel resolution ($100 & $101):

The X & Y stepper motors steps per revolution: 200.

Micro-stepping: 8.

No of pulleys teeth: 20.

Timing belt pitch: 2mm.

➽ $100 & $101 = (200 steps * 8 microsteps) / (2mm pitch * 20 teeth pulley) = 40 step/mm

⦾ Z axis travel resolution ($102):

The Z stepper motors steps per revolution: 200.

Micro-stepping: 8.

No of pulleys teeth: 20.

Timing belt pitch: 2mm.

➽ $102 = (200 steps x 8 microsteps)/ (2mm pitch * 20 teeth pulley) = 40 step/mm.

Step 9: Softwares

I used the following softwares:

⦾ Engraver Master or Inkscape with Gcodetools extension: create the G-code files from texts or images.

⦾ tkCNC Editor is a text editor, specially designed for CNC code (G-code) editing for CNC machines. It is used by CNC programmers and operators for fast editing and verification of CNC code.

⦾ Universal Gcode Platform (UGS).

In order for my plotter to work with the above hardware configuration, I have to edit the Gcode file, the steps are as follows:

⦾ Open Engraver Master or Inkscape, write a text or load an image then convert it to a G-code and save in my laptop.

⦾ Open file Gcode file by tkCNC Editor software. Select all Gcode line ‣ Go to "Modify" ‣ Swap command... ‣ Click YZ from drop-down list.

Notes: With Engraver Master, I have to change laser OFF/ ON commands to pen lift UP/ DOWN commands:

  • Laser ON: M3 (or M4) is replaced by "G1 Y-1 F500", for example.
  • Laser OFF: M5 is replaced by "G1 Y2 F500", for example.


⦾ Save the Gcode file with different name after YZ swapping command, then open it in UGS. Now my plotter can works as a CoreXZ system.

Step 10: Testing

The result plotting for "JLCPCB" text is shown below:

I also tested with some images and other texts. It gave pretty good results. Especially, the movement of plotter X & Z axes looked amazing!

Step 11: Conclusion

Thank you for reading my work!!!