Polar CNC Plotter

by Deepaksh123 in Circuits > Arduino

23704 Views, 218 Favorites, 0 Comments

Polar CNC Plotter

IMG_0304.jpeg
IMG_0302.jpeg
28 January 2024
Polar CNC Plotter #Arduino #diy #3Dprinted #project #electronic #viralshorts #like #share #subscribe

In this Instructable, I will show you how to make your own Polar CNC Plotter. The materials used for this project are old Wi-Fi camera, discarded materials from my old laser printer, Pinch rollers from old Tape recorders, 3D printed parts and wooden piece. I also used cheap 28byj-48 Stepper motors to make it cost effective. This plotter is very compact, light in weight and looks cool. Let’s get started!

Supplies

IMG_0625.jpeg
Capture.JPG
IMG_0703.jpeg
IMG_0685.jpeg
IMG_0620.jpeg
IMG_0642.jpeg
IMG_0702.jpeg
IMG_0624.jpeg
IMG_0717.jpeg
IMG_0709.jpeg
IMG_0622.jpeg
IMG_0645.jpeg
IMG_0710.jpeg
IMG_0609.jpeg
IMG_0614.jpeg
8.JPG
IMG_0715.jpeg
IMG_0639.jpeg
IMG_0640.jpeg
  • Arduino Uno (1pcs)
  • 28byj-48 Stepper motor (2pcs)
  • ULN2003 stepper motor driver (2pcs)
  • Servo motor (1pcs)
  • Cable zip ties (2 pcs)
  • Acrylic circular sheet (20 cm diameter)
  • Old Scanner head of LaserJet printer (used as rail track)
  • Pinch rollers from old Tape recorders (3pcs)
  • Wires
  • 3D printed parts
  • Old wireless camera
  • Wood piece(29cm X 10cm X 1.2cm)
  • Super glue
  • Rubber sealing washer
  • Straw (spiral cable wrap/ cable sleeve)
  • LED light strip
  • Double sided foam tape
  • Screws
  • Wood texture colored paper
  • Cardboard sheet
  • Paper clips
  • Color pens
  • A4 White paper sheets
  • Jumper wires
  • Pen Spring
  • Smooth steel rods (1.5mm dia., 65mm length- 2pcs)
  • Heat shrink sleeve tubes (1mm dia.)
  • 5V DC Power Jack Socket Female (1pcs)

 

Tools used:

  • 3D printer
  • Scissors
  • Screw driver set
  • Soldering iron
  • Vernier Caliper Digital
  • Measuring tape/ scale

Build Linear X-Axis

IMG_0674.jpeg
IMG_0635.jpeg
IMG_0637.jpeg
IMG_0638.jpeg
IMG_0621.jpeg
IMG_0657.jpeg
IMG_0646.jpeg
IMG_0651.jpeg
IMG_0655.jpeg
IMG_0660.jpeg
IMG_0661.jpeg

Linear X-axis consists of a Old Scanner head of LaserJet printer (used as a rail track) mounted on the 3D printed supports on either ends.

A LED Strip of 3 LEDs putted in the scanner head which is also powered by the same power source as that of servo motor.

A set of parts are designed and 3D printed to hold Stepper motor and servo motor together which can travel linearly on the rail track with the help of 3 pinch rollers, which I got from old tape recorders.

A 3D printed pulley is attached to the shaft of stepper motor with the help of glue. On the pulley a rubber sealing washer is attached, which help in gripping and rolling on the rail track.

The whole set is hold together with the help of shafts of pinch rollers.

The 3d printed supports are attached to the wooden piece (base) with the help of self drilling screws.

You can download STL files of 3D printed parts provided at the end of this tutorial.

Build Rotary Y-Axis

IMG_0617.jpeg
IMG_0618.jpeg
IMG_0666.jpeg
IMG_0669.jpeg
IMG_0700.jpeg
IMG_0718.jpeg
IMG_0619.jpeg

Y-axis rotary table consists of:

Bottom part of old Wi-Fi camera already consists of one unipolar stepper motor having a driver gear (teeth) meshing with a driven gear (teeth) so I need only one new unipolar stepper motor.

A circular piece of cardboard sheet is attached to the back of circular Acrylic sheet of (size 20 cm dia.).

This circular acrylic sheet is fitted on the top of driven gear with the help of screws.

The driven gear is supported by a bearing already fixed in the Wi-Fi camera body.

The Arduino Uno with ULN2003 motor driver as per the circuit diagram enclosed in the body of Wi-Fi camera.

A separate power port is used to power up the ULN2003 motor drivers along with stepper motors, Servo motor and LED light Strip.

The body is now attached to the wooden piece with the help of a screw.

The wooden piece (29cm X 10cm X 1.2cm) is covered with a Wood texture colored paper or you can use paint as well.

Note: The center of rotary table should be marked on the acrylic sheet because it is essential for a polar coordinate system.

Build Z-Axis (Pen Holder)

IMG_0665.jpeg
IMG_0662.jpeg
IMG_0675.jpeg
IMG_0676.jpeg

Z-axis consists of a servo motor and a pen lifting mechanism which consists of a 3D printed slider on smooth steel rods (mm dia.) and a pen spring.

A separate 3D printed part is used to hold servo motor. The whole assembly of the Z-axis i.e. servo motor is attached with the parts of X-axis with the help of superglue.

A wire is attached is to the rotary axis of the servo motor and the pen lifting part so that the pen tip can lift move up and down.

Schematics and Circuit Diagram

circuit diagram.JPG
IMG_0684.jpeg
IMG_0688.jpeg
IMG_0689.jpeg
IMG_0691.jpeg
IMG_0692.jpeg

The Polar CNC Plotter general parts includes two 28BYJ-48 stepper motors and a servo motor controlled by Arduino Uno with the help of two ULN2003 stepper motor drivers. It consists of Y axis as a rotary table, X axis move linearly forward and backward relative to the center of rotary table and Z axis (servo motor) move linearly up and down to carry out lift a pen up/down.

The motors (28byj-48) are connected to a controller card (Arduino UNO) that uses the chip ULN2003.

This board is connected to pins A0, A1, A2, A3 for the Y-Axis (IN4->IN1)

2,3,4,5 Digital pins to the X-Axis (IN4->IN1).

The servomotor connected to pin 11 of Arduino UNO

All the components is powered with an external power supply (5v -12v DC).

Assembling All Parts

IMG_0672.jpeg
IMG_0704.jpeg
IMG_0628.jpeg
IMG_0629.jpeg
IMG_0644.jpeg
IMG_0670.jpeg
IMG_0680.jpeg
IMG_0695.jpeg

Assembling all parts together. Make proper connections of stepper motors, ULN 2003 stepper drivers and servo motor with the Arduino UNO as per the circuit diagram.

Place the ULN 2003 stepper drivers on the Arduino Uno with the help of double sided foam tape.

Use jumper wires to make necessary connections as per the circuit diagram.

Wrap up the wires of all X-axis stepper and servo motor together with the help of a plastic straw. I converted a plastic straw into a spiral cable wrap/ cable sleeve with the help of a pencil sharpener.

Hold this cable sleeve with one of the 3D printed vertical stands with the of zip ties. Make sure that the hanging cable sleeve does not touch the rotary table.

Adjust the X axis and Z-axis (pen holder) so that the pen tip should coincide with the center of rotary table.

Mount Arduino Uno along with ULN 2003 Stepper motor drivers inside the body of wifi camera properly.

Close the body of the camera with the help of screws.

The Assembly of all parts is done.

GRBL Firmware

grbl settings.JPG

Download and install GRBL firmware for Arduino Uno:

https://github.com/ruizivo/GRBL-28byj-48-Servo

This GRBL uses an ugly hack to control two motors unipolar stepper motors as 28byj-48 and also supports a servo motor on pin 11.

GRBL Settings:

X axis travel resolution ($100) : It is calculated on the stepper motor’s step angle - steps per revolution

Y axis travel resolution ($101): The Y axis rotates, so we have to calculate it. Steps/mm of rotary Y axis is defined by angle in polar coordinates i.e. steps/degree (STEP/° ):

Stepper motor step angle: According to the data sheet, when the 28BYJ-48 motor is operated in full-step mode, each step corresponds to a rotation of 11.25°. This means there are 32 steps per revolution (360°/11.25° = 32).

In addition, the gearbox inside the motor has a 64:1 gear reduction. This results in 2048 (32*64) steps per revolution.

My Plotter’s Gear ratio= 12:43

Y axis STEP/mm ($101) = STEP/ANGLE = (2048 x 43)/ (360° x 12) = 20.38 STEP/°

NOTE: This value does not work for my machine. So, I put different values for STEP/°in the UGS by sending command in UGS to move 360mm. After several attempts the Rotary Y-axis rotated exactly one revolution. The value of STEP/° for my plotter is 16.233

STEP/° is the key for the CNC machine to work properly in polar coordinates based on GRBL firmware.

Inkscape to Generate Gcode

photo_2024-01-27_21-41-21.jpg
photo_2024-01-27_21-41-19.jpg
photo_2024-01-27_21-41-23.jpg
photo_2024-01-27_21-41-17.jpg

I used Inkscape software to generate G-code.

Steps for generating Gcode in Inkscape:

Download older version of Inkscape i.e. Inkscape 0.48.5 and download MakerBot Unicorn Gcode extension from the following links:

https://inkscape.org/release/inkscape-0.48/?latest=1

https://github.com/martymcguire/inkscape-unicorn

MakerBot Unicorn Gcode extension helps in creating the G-code files from texts or images.

After downloading MakerBot Unicorn Gcode extension, copy the files of this extension and paste these files inside the extensions folder of Inkscape.

In my computer system the location of Extensions Folder as shown below:

C:\Program Files\Inkscape\share\extensions

Open INKSCAPE.

Click on File tab > Document properties > Width and Height to 100mm each.

Drag and drop the particular image in Inkscape > Select Image > Convert to Path > Delete the original image > Path tab> Object to path

Go to File tab > Click on Save As > file name. MakerBot Unicorn Gcode extension , adjust the values on the pop-up box. My setting is shown in the picture below:

NOTE: The Homing value of X and Y should be 0.0

After generating Gcode, open Gcode file in notepad and do the following changes to gcode:

Replace M300 S30.00 (pen down) with Z-1

Replace M300 S50.00 (pen up) with Z0

Also remove upper and lower part of Gcode

You can take the help of this video to generate Gcode from Inkscape.

After making these changes, save the file.

You can simulate this gcode using CAMotics software which is a open-source simulation software.

CAMotics downloading link: https://camotics.org/download.html

Cartesian to Polar Conversion Using TkCNC Editor 3.0

photo_2024-01-27_21-41-15.jpg
photo_2024-01-27_21-41-13.jpg
photo_2024-01-27_21-41-10.jpg
photo_2024-01-27_21-40-44.jpg
How to convert Cartesian Gcode to Polar Gcode

tkCNC Editor 3.0 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. It is available for download with 30 days trial version. I used this software for Conversion of G-code from Cartesian to Polar coordinates.

You can download and install tkCNC Editor 3.0 from the following link:

https://www.tkcnc.com/download.html

Steps to convert Cartesian gcode to Polar gcode using tkCNC Editor 3.0:

Open tkCNC Editor 3.0

Go to File tab > Open CNC file

Select the whole gcode with key combinations Ctrl+A

Go to "Modify" > Click on Cartesian to Polar Conversion, a polar coordinate settings window pops up.

Plane: XY.

Conversion type: Interpolate polar points.

Machining tolerance = 0.010.

Select both tick boxes: Start from angle zero and Infinite rotation axis.

Click "OK" and then conversion is started.

After Cartesian to Polar Conversion save the file with “.nc ” extension.

Open the file in notepad and do the following changes in Gcode:


Replace All Z-1 with M3 S30

Replace All Z0 with M5

Replace All ZNaN F3500 with Blank Space

Replace All N1 with Blank Space

Replace All C with Y

NOTE: The servo motor understands the commands M5 and M3 S30 which corresponds to Pen Up and Pen Down respectively. Polar coordinates are represented by and in this software. We need to replace "C" by "Y" so that the GRBL firmware can understand these commands. 

Now save the file with a different name.

You can test/simulate this polar Gcode with CAMotics Simulation Software. You find that this Gcode works properly. Hence we successfully converted a Cartesian Gcode to Polar Gcode.

See the video for more help.

As we already uploaded the GRBL firmware to the Arduino Uno so we are ready to test this polar Gcode on Polar CNC Plotter.

For this we need Universal Gcode Sender(UGS), it Sends the G-code file to Polar CNC plotter and monitors the CNC in action on its Visualize Window.

You can download UGS from the following link:

 https://winder.github.io/ugs_website/download/

Working

IMG_0272.jpeg
IMG_0299.jpeg
IMG_0291.jpeg
IMG_0281-1.jpeg

Connect USB Cable to Arduino Uno port and 5V DC power to the power port.

Cut a 20cm diameter circular paper sheet from a A4 white paper sheet and place this sheet on the acrylic rotary table of the Polar CNC Plotter.

Hold this paper sheet on circular acrylic sheet with the help of paper 3 paper clips.

Put color pen in the pen holder of the plotter.

Open UGS, select Port and set Baud to 115200, click on Connect tab.

Set the original coordinates by button Reset Zero. It should be located in the center of rotary axis.

Click Open > Browse to the G-code file "tiger face POLAR.nc" that is converted by tkCNC Editor.

Click Send button and Polar CNC Plotter will start drawing the image.

The image below shows a tiger face drawn by a Polar CNC machine after conversion of Cartesian to Polar coordinates. I also tested the Polar CNC machine by drawing three gears.

STL Files

3.JPG
4.JPG
6.JPG
5.JPG
1.JPG
2.JPG

Final Words

I made this project from old scrap materials such as old wifi camera, old LaserJet printer, discarded tape recorders, and some 3D printed parts to make a low cost Polar CNC Plotter.

If you have any query regarding this tutorial, feel free to ask in comments section.  

Hope you enjoyed this session of Instructables. Thanks for reading my work. I feel glad if you make your own Polar CNC Plotter with the help of this tutorial.

Stayed tuned to my Instructables channel for more upcoming exciting projects.

Thanks again.