CNC Drum Plotter

by Deepaksh123 in Circuits > Arduino

2972 Views, 48 Favorites, 0 Comments

CNC Drum Plotter

IMG_7676.jpeg
CNC Drum Plotter
CNC Drum Plotter #3dprinting #arduinodiy #cncplotter #arduinoprogramming #arduino
IMG_7671.jpeg

A CNC Drum Plotter using a cardboard paper tube is an interesting DIY project that combines creativity with engineering. A CNC drum plotter works by rotating a cylindrical drum (cardboard paper tube) to move the paper and using a pen or marker to draw on the surface. The plotter has two main axes:

 • X-axis: Moves the pen horizontally.

 • Y-axis: Moves the paper by rotating the drum.

This project is based on Arduino Nano and runs on GRBL code. It consists of two 28byj-48 Stepper motors, one servo motor and 3D printed parts. This machine is made up of easily available parts like Arduino Nano, 28byj-48 Stepper motors, bicycle’s spokes, bearings, string/thread and 3d printed parts. Let’s make it.

Supplies

IMG_7466.jpeg
IMG_7468.jpeg
IMG_7482.jpeg
IMG_7486.jpeg
IMG_7489.jpeg
IMG_7497.jpeg
IMG_7499.jpeg
IMG_4957.jpeg
IMG_4963.jpeg
IMG_4964.jpeg
  1. 1pcs x Arduino Nano
  2. 2pcs x 28byj-48 Stepper motors
  3. 2pcs x ULN2003 Stepper Motor Driver
  4. 1pcs x Servo Motor
  5. 1pcs x Cardboard paper tube
  6. 2pcs x Bicycle’s spokes
  7. 1pcs x Header pins
  8. 1pcs x PCB Sheet (4.5cm X 2.5cm)
  9. 1pcs x Aluminium Composite sheet (28cm X 13cm)
  10. 1pcs x String / Thread
  11. 1pcs x Power Supply 5V-9V DC.
  12. 1pcs x Female DC Power jack
  13. 1pcs x Old gas cylinder washers
  14. 2pcs x Idler Bearing
  15. 2pcs x Jumper Wires
  16. Adhesive tape
  17. Double-sided foam tape
  18. Black matte vinyl sheet
  19. Super glue
  20. 3D printed parts
  21. Some Screws


Tools used

  1. 3D printer
  2. Mini drill machine
  3. Screw driver set
  4. Soldering iron
  5. Vernier Caliper Digital
  6. Measuring tape/ scale

X-axis

IMG_7563.jpeg
IMG_7566.jpeg
IMG_7573.jpeg
IMG_7578.jpeg
IMG_7581.jpeg
IMG_7583.jpeg
IMG_7584.jpeg
IMG_7588.jpeg
IMG_7607.jpeg

This CNC drum plotter general part includes two 28BYJ-48 stepper motors controlled by Arduino Nano with the help of three ULN2003 stepper motor drivers and one servo motor. The X-axis consists of bicycle’s spokes. X-axis slider moves linearly moves linearly to and fro between the 3D printed stands which carries Z-axis servo motor whose shaft attached with a pen with the help of 3D printed part.

I have used bicycle spokes as the rail guides for this CNC Drum Plotter. The idea of using bicycle spokes as linear rails make the whole machine affordable and of less weight.

Two bicycle’s spokes are used as linear rail. The length of each spoke is 23.5 cm.

For the pulley of the stepper motor I have used an old gas cylinder washer attached to a 3D printed pulley. This washer helps in gripping the string.

Make necessary 3D printed parts to hold stepper motor and to hold idler pulley.

On one end attach a stepper motor and on other end attach an idler 3d printed pulley mounted on the 3D printed part.

Y-axis (Drum)

IMG_7608.jpeg
IMG_7614.jpeg
IMG_7615.jpeg

The drum comprises a section of a Cardboard paper tube with two 3D printed parts. The Y-axis consists of a drum whose motion is controlled directly with the stepper motor. One end of drum is supported by stepper motor and other end supported by a bearing. The whole assembly is supported with 3D printed parts.

Drum Dimensions are:

Length of the drum = 21cm

Outside diameter of drum = 5.5cm

Inside diameter of drum = 5cm

The paper dimensions are determined by curved surface area of the drum. The maximum paper size that can be placed on the drum is 21cm X 18.5cm.

For the drum you can also use a PVC pipe of required size.

Cut the required size of paper overlap it on the drum’s curved surface and seam the mating ends of the paper with the adhesive tape.

Base

IMG_7499.jpeg
IMG_7503.jpeg
IMG_7555.jpeg
IMG_7553.jpeg

Take a Aluminium Composite sheet and cut a piece of size 28cm X 13cm.

I used Black matte Vinyl sheet to cover the fiber sheet to give it a shiny and aesthetic look.

Attach 3D printed supports at the bottom of the fiber sheet with the help of superglue.

You can use a plywood as well.

Schematics and Circuit Diagram

circuit_image.png
IMG_7481.jpeg
IMG_7522.jpeg
IMG_7525.jpeg

The Connection should be made as per the circuit diagram. The motors (28byj-48) are connected to a controller card (Arduino Nano) that uses the chip ULN2003.

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

D2, D3, D4, D5 Digital pins to the X-Axis (IN4->IN1) and  

The Servomotor connected to pin D11.

To overcome the complexity of the circuit connections I have made a custom PCB with header pins, some jumper wires and DC power jack. You can make your own PCB or you can order online.

I have powered this PCB with 5V DC power supply and Arduino Nano is powered with PC.

To hold all electronics circuit together I have created a custom 3D printed box. You can download all STL Files provided at the end of this tutorial.

Software Used

Download Arduino IDE

https://www.arduino.cc/

Download Inkscape version 0.92

https://inkscape.org/release/0.92.2/windows/

Download Universal Gcode Sender

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

Link to download GRBL file:

https://github.com/robottini/grbl-servo

Upload GRBL

GRBL 28byj-48 + Servo Motor uploading error fix

Download the library file > unzip it and load to arduino as:

File > Example > grbl upload compile and upload code to arduino nano.

If you find any error while uploading the code, see this video:

Create Gcode File Using Inkscape

I used Inkscape software to create Gcode file.

Download all the above mentioned software along with 4xidraw Extension.

Extract and install all the software.

Open Inkscape file location > copy all the files of 4xidraw Extension to the extensions folder of Inkscape.

After adding 4xidraw extension to Inkscape follow these steps to create Gcode file:

Open Inkscape > File tab > Document Properties > set page size as 100mm x 100mm

Drag and drop the particular image of your choice, adjust the image size accordingly and place it on the page.

Select the image > Go to Trace Bitmap >  convert to path

Delete the previously inserted image.

Then go to Extensions tab > Click on 4xidraw Tools > Save the parameters as shown in images > Click Apply > Gcode generated.


Assembly of All Parts

IMG_7648.jpeg
IMG_7650.jpeg
IMG_7651.jpeg
IMG_7652.jpeg
IMG_7629.jpeg

With the help of screws all final parts are assembled together to form basic structure of the machine. The 28byj-48 Stepper Motors with pulley belt mechanism is used for X-axis.

Attach the X-axis stands on the base plate made up of Fibre sheet with the help of screws.

The Y-axis drum is placed between 3D printed stands whose one end is supported by stepper motor the other end is supported by a roller bearing mounted on the 3D printed piece.

Mount the Z-axis stepper motor on the slider of X-axis with the pen attached to the servo motor shaft with the help of 3D printed part.

After completing all this process, place the paper on the drum such that all the whole area of paper is covered.

GRBL Configuration and Calibration

Open GRBL Controller > Select COM port > Set Baud rate 115200 > click on "OPEN"

Go to "COMMANDS" Tab

Enter $$ for GRBL configuration

To calibrate X-axis and Y-axis we need to know current values of $100 and $101 which denote steps per mm for each axis.

To get these values we need to open UGS and connect it with Arduino nano. After successful connection enter $$ in commands tab. Note down the current values of $100 and $101

For Ex:-

Current $100 value = 100

Current $101 value = 100

Enter 10mm to commands to run X-axis and note own the distance travelled by X-axis. In my case

Desired Length = 10mm

Actual Length = 8mm

To Calibrate X-axis use this formula to get the new value of $100 value

New $100 value = (Desired Length / Actual Length)* Current $100 value

(10 / 8) * 100 = 125 = New $100 value

Use similar procedure to calibrate Y-axis.

Enter 10mm to commands to run Y-axis and note own the distance travelled by Y-axis. In my case

Desired Length = 10mm

Actual Length = 8mm

To Calibrate Y-axis use this formula to get the new value of $101 value

New $101 value = (Desired Length / Actual Length )* Current $101 value

(10 / 8) * 150 = 187.5 = New $101 value

Enter this value in command tab:-

$100 = 125

$101 = 187.5

the X-axis and Y-axis values for my plotter are:

$100 value = 100.0

$101 value = 25.0

STL Files

Capture5.PNG
Capture4.PNG

Working

IMG_7671.jpeg
IMG_7678.jpeg
IMG_7683.jpeg
IMG_7685.jpeg
IMG_7686.jpeg
IMG_7696.jpeg

Now it’s time to stream Gcode, open UGS > Go to machine > Reset to zero > go to "FILE MODE" Tab Browse > select your gcode file and hit enter. Your machine starts plotting.

Final Words

This setup provides a cost-effective way to create a functional CNC drum plotter. If you have any query regarding this tutorial, feel free to ask in comments section. Hope you like this project. Thanks for reading my work. I feel glad if you make your own CNC Drum plotter with the help of this tutorial.

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

Thanks again.