DIY Mini CNC Laser Engraver.

258,145

1,280

168

Introduction: DIY Mini CNC Laser Engraver.

This is an Instructables on how I Remixed my old CNC Laser engraver and made a Stable version of an Arduino based Laser CNC engraver and thin paper cutter using old DVD drives and using 250mW laser.

Old Version of My CNC :https://www.instructables.com/id/Mini-CNC-Laser-Wood-Engraver-and-Paper-Cutter/

Old version was not much stable and had some wobble due to uneven parts, so I decided to make a stable version of it using 3D printed parts. Which gave me excellent results in laser engraving even in very tiny details, this machine is cable of doing the work well. You can see the details in the eye of the engraved picture.

Playing area is 40mm x 40mm max.

Step 1: Parts and Materials Required

  • Arduino Nano (with USB cable)
  • 2x DVD drive stepper mechanism
  • 2x A4988 stepper motor driver modules (or GRBL shield)
  • 250mW Laser with adjustable lens (or above)
  • 12v 2Amps power supply minimum
  • 1x IRFZ44N N-CHANNEL Mosfet
  • 1x 10k resistor
  • 1x 47ohm resistor
  • 1x LM7805 voltage regulator (with heatsink)
  • Blank PCB Board
  • Male and Female Headers
  • 2.5mm JST XH-Style
  • 2pin male connector
  • 1x 1000uf 16v capacitor Jumper cables
  • 8x small neodymium magnets ( which I have salvaged from DVD lens mechanism)
  • 1x 2pin plug in screw terminal block connector
  • Zip ties (100mm)
  • Super Glue
  • 6x M3x12 screws
  • 8x M2x5 screws
  • Laser Safety Glasses
"LASER SAFETY GLASSES are must needed in this project".

Step 2: Printed Parts

STL files, see the attached file or go to : https://www.thingiverse.com/thing:3521286

All Parts are printed in ABS material.

Print Settings:
Layer height: 0.2mm

Infill: < 25%

Supports: No

Step 3: Taking Apart the DVD Drive Stepper Mechnaism

Two DVD driver mechanism are required, one for the X-Axis and the second for the Y-axis.
Using a small Phillips head screw driver I removed all the screws and detached stepper motor, the sliding rails and the follower.
The stepper motors are 4-pin Bipolar Stepper Motor.

The small size and low cost of a DVD motor mean that you can't expect
high resolution from the motor. That is provided by the lead screw. Also, not all such motors do 20 steps/rev. 24 is also a common spec. You'll just have to test your motor to see what it does.

Procedure for calculating the resolution of the CD Drive Stepper motor:

In order to measure the resolution of the CD/DVD drive stepper motor,
a digital micrometer was used. The distance along the screw was measured. The total length of the screw using a micrometer, which turned out to be 51.56 mm. To determine the lead value which is the distance between two adjacent threads on the screw. The threads were counted to be 12 threads within this distance. Lead = distance between adjacent threads = ( total length / number of threads = 51.56 mm) / 12 = 4.29mm/rev. The step angle is 18 degrees which corresponds to 20 steps/revolution. Now that all the information needed is available, the resolution of the stepper motor could be calculated as shown below: Resolution = (Distance between adjacent threads) / (N Steps/rev) = (4.29mm/rev) / (20 steps/rev) = 0.214 mm/step. Which is 3 times better the resolution required which is 0.68mm/step.

Step 4: Preparing the Slider.

Using Super Glue I've glued the slider and the guide into one part. Spring is attached to maintain the tension between the guide and the lead screw to avoid black-lash.

Step 5: Assembling the Slider Rails for the Y-Axis

Before assembling the slider into the base I've glued 4x small neodymium magnets ( which I have salvaged from DVD lens mechanism) into the X-plate. This magnets will helps in holding the work piece to the working area.

The smooth rod will keep the sliding mechanism intact to the base.

Step 6: Assembling the Slider Rails for the X-Axis

Here, using super glue and screw I've attached the guiding mechanism to the laser housing.

Attached the stepper motor onto the place using the screws and afterwards inserted the smooth rods and guiding part into the holes given by keeping in mind that slider is moving freely not too hard. And attached the side frame pillars to it.

Step 7: Wiring of Stepper Motors

For the stepper motors I've used old usb cable, because it has 4 wire inside and have a cover on it, and it is more flexible and easy to work with.

Using continuity mode in Multimeter determine determine 2 Coil, Coil A and Coil B.

I made 2pairs of wire by selecting colours, one pair for the Coil A and second for the Coil B.

Soldered them and used heat shrink tube on it.

Step 8: Combing the X and Y Axis

Using 4x M3x12 screws, combined the base and two side frame into one assembly.

Step 9: The Electronics

PARTS USED FOR THE DRIVER ARE:

  • Arduino Nano.

  • 2x A4988 Stepper motor drivers.

  • 1x IRFZ44N N-CHANNEL MOSFET.

  • 1x LM7805 Voltage regulator with Heatsink.

  • 1x 47ohm and 1x 10k resistor.

  • 1x 1000uf 16V capacitor.

  • 1x 2.5mm JST XH-Style 2pin male connector.

  • MALE and FEMALE Header Pins.

  • 1x (20mm x 80mm blank PCB).

In GRBL the digital and analog Pins of Arduino are reserved. The
'Step' pin for the X and Y axes is attached to digital pins 2,and 3 respectively. The 'Dir' pin for the X and Y axes is attached to digital pins 5 and 6 respectively. D11 is for laser Enable. The Arduino gets power through the USB Cable. The A4988 Drivers through external power source. All ground share common connections. VDD of A4988 are connected to 5V of Arduino. The laser I've used runs on 5V and has built in constant current circuit. For the constant 5V source from the external power supply LM7805 voltage regulator is used. Heatsink is compulsory. The IRFZ44N N-CHANNEL MOSFET works as an elelctronic switch when receives digital high signal from pin D11 of Arduino. NOTE: 5V from Arduino nano can't be used beause the laser draws more than 250mA and the Arduino Nano is not capable of delivering that much of current.

Configuring Micro Stepping for Each Axis.

MS0 MS1 MS2 Microstep Resolution.

Low Low Low Full step.
High Low Low Half step.

Low High Low Quarter step.

High High Low Eighth step.

High High High Sixteenth step .

The 3 pins (MS1, MS2 and MS3) are for selecting one of the five step
resolutions according to the above truth table. These pins have internal pull-down resistors so if we leave them disconnected, the board will operate in full step mode. I've used the 16th step configuration for smooth and noise free. Most (but certainly not all) stepper motors do 200 full steps per revolution. By appropriately managing the current in the coils it is possible to make the motor move in smaller steps. The Pololu A4988 can make the motor move in 1/16th steps - or 3,200 steps per revolution.The main advantage of microstepping is to reduce the roughness of the motion. The only fully accurate positions are the full-step positions. The motor will not be able to hold a stationary position at one of the intermediate positions with the same position accuracy or with the same holding torque as at the full step positions.Generally speaking when high speeds are required full steps should be used.

Step 10: Assembling the Electronics to Frame.

Assembled the driver board on the back plate using 2x M2 screws and to the frame of the machine using 2x M3x12 Screws. Plugged in the connections for the Stepper motors X ,Y and the Laser.

Step 11: Adjusting the Stepper Driver Current

To achieve high step rates, the motor supply is typically much higher than would be permissible without active current limiting. For instance, a typical stepper motor might have a maximum current rating of 1A with a 5Ω coil resistance, which would indicate a maximum motor supply of 5 V. Using such a motor with 12 V would allow higher step rates, but the current must actively be limited to under 1A to prevent damage to the motor. The A4988 supports such active current limiting, and the trimmer potentiometer on the board can be used to set the current limit. One way to set the current limit is to put the driver into full-step mode and to measure the current running through a single motor coil without clocking the STEP input. The measured current will be 0.7 times the current limit (since both coils are always on and limited to 70% of the current limit setting in full-step mode). Please note that changing the logic voltage, Vdd, to a different value will change the current limit setting since the voltage on the “ref” pin is a function of Vdd. Another way to set the current limit is to measure the voltage directly on top of the potentiometer and to calculate the resulting current limit (the current sense resistors are 0.1Ω). The current limit relates to the reference voltage as follows: Current Limit = VREF × 1.25 So, for example, if the reference voltage is 0.6 V, the current limit is 0.75A. As mentioned above, in full step mode, the current through the coils is limited to 70% of the current limit, so to get a full-step coil current of 1A, the current limit should be 1A/0.7=1.4A, which corresponds to a VREF of 1.4A/1.25=1.12 V. See the A4988 datasheet for more information. Note: The coil current can be very different from the power supply current, so you should not use the current measured at the power supply to set the current limit. The appropriate place to put your current meter is in series with one of your stepper motor coils.

Step 12: Laser Assembly

The laser I've used is Focusable Laser Module 200-250mW 650nm. The outer metal housing work as a Heatsink for the laser diode. It has focusable lens for the adjustment of laser dot. Connect the laser wire terminal to the laser socket on the driver board.

You can get one Here.

Step 13: Getting Ready!

Using four small Neodymium magnets lock the working piece on the working bed and set the X and Y-axis to initial position (home). Power up the driver board through External power source, and Arduino Nano to Computer through a USB A to USB Mini B Cable.

Also power the board through a external power source.

SAFETY FIRST.
LASER SAFETY GLASSES ARE MUST NEEDED

Step 14: GRBL Firmware

  1. Download the GRBL , Here
  2. Extract on the desktop the grbl-master folder, you find it in the file master.zip
  3. Run the Arduino IDE
  4. From the application bar menu, choose: Sketch -> #include Library -> Add Library from file.ZIP
  5. Select the folder grbl that you can find inside the grlb-master folder and click on Open
  6. The library now is installed and the IDE software will show you this message: The library is added to your library. Check the “libraries Inclusion” menu.
  7. Then open an example called "grbl upload" and upload it to your arduino board.

Step 15: Software to Send G-CODE

Also we need a software to send G-Code to CNC for that I've used the LASER GRBL

LaserGRBL is one of the best Windows GCode streamer for DIY Laser
Engraver. LaserGRBL is able to load and stream GCode path to arduino, as well engrave images, pictures and logo with internal conversion tool.

LASER GRBL Download.

LaserGRBL constantly checks for COM ports available on the machine. The list of ports allows you to select the COM port which your control board is connected on.

Please select the proper baud rate for the connection according to your machine firmware configuration (default 115200).

Grbl Settings:

$$ - View Grbl settings

To view the settings,type $$ and press enter after connecting to Grbl. Grbl should respond with a list of the current system settings, as shown in the example below. All of these settings are persistent and kept in EEPROM, so if you power down, these will be loaded back up the next time you power up your Arduino.

$0=10 (step pulse, usec)

$1=25 (step idle delay, msec)

$2=0 (step port invert mask:00000000)

$3=6 (dir port invert mask:00000110)

$4=0 (step enable invert, bool)

$5=0 (limit pins invert, bool)

$6=0 (probe pin invert, bool)

$10=3 (status report mask:00000011)

$11=0.020 (junction deviation, mm)

$12=0.002 (arc tolerance, mm)

$13=0 (report inches, bool)

$20=0 (soft limits, bool)

$21=0 (hard limits, bool)

$22=0 (homing cycle, bool)

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

$24=50.000 (homing feed, mm/min)

$25=635.000 (homing seek, mm/min)

$26=250 (homing debounce, msec)

$27=1.000 (homing pull-off, mm)

$100=314.961 (x, step/mm)

$101=314.961 (y, step/mm)

$102=314.961 (z, step/mm)

$110=635.000 (x max rate, mm/min)

$111=635.000 (y max rate, mm/min)

$112=635.000 (z max rate, mm/min)

$120=50.000 (x accel, mm/sec^2)

121=50.000 (y accel, mm/sec^2)

$122=50.000 (z accel, mm/sec^2)

$130=225.000 (x max travel, mm)

$131=125.000 (y max travel, mm)

$132=170.000 (z max travel, mm)

Step 16: Tweaking the System

Here comes the Most Difficult part of the Project.

-Adjusting the laser beam into the smallest dot possible on the work piece. This is the Trickiest part which require time and patience using trail and error method.

-Tweaking the GRBL settings for $100, $101, $130 and $131

My setting for the GRBL is,
$100=110.000

$101=110.000

$130=40.000

$131=40.000

I tried engraving a square of 40mm sides and after so many error and tweaking the setting of grbl, I get the proper 40mm line engraved from the both X and Y-axis. If the resolution of X and Y-Axis are not same the image will scale in either direction.

Keep in mind not all Stepper motor From DVD Drives are the same.

It is lengthy and time consuming process but the results are so satisfying when tweaked.

LaserGRBL user interface.

  • Connection control: here you can select serial port and properbaud rate for connection, according to grbl firmware configuration.
  • File control: this show loaded filename and engraving process progress. The green “Play” button will start program execution.
  • Manual commands: you can type any G-Code line here and press “enter”. Commands will be enqueued to command queue.
  • Command log and command return codes: show enqueued commands and their execution status and errors.
  • Jogging control: allow manual positioning of the laser. The left vertical slider control movement speed, right slider control step size.
  • Engraving preview: this area show final work preview. During engraving a small blue cross will show current laser position at runtime.
  • Grbl reset/homing/unlock: this buttons submit soft-reset, homing and unlock command to grbl board. On the right of unlock button you can add some user defined buttons.
  • Feed hold and resume: this buttons can suspend and resume program execution sending Feed Hold or Resume command to grbl board.
  • Line count and time projection: LaserGRBL could estimate program execution time based on actual speed and job progress.
  • Overrides status an control: show and change actual speed and power override. Overrides is a new feature of grbl v1.1 and is not supported in older version.

Step 17: Wood Engraving

Raster import allows you to load an image of any kind in LaserGRBL and turn it GCode instructions without the need of other software. LaserGRBL supports photos, clip art, pencil drawings, logos, icons and try to do the best with any kind of image.

It can be recalled from “File, Open File” menu by selecting an image of type jpg, png or bmp

The setting for engraving is different for all materials.

Define the engraving speed per mm and Quality- lines per mm Video Attached is the time-lapse of the whole process.

Step 18: Thin Paper Cutting

This 250mW Laser is Also capable of cutting thin papers, but the speed should be very low i.e. not more than 15mm/min and laser beam should be properly adjusted.

Video Attached is the time-lapse of the whole process.

Step 19: Vinyl Cutting and Making Custom Stickers

I have made some Custom vinyl sticker. Boarder speed changes with respect to the colour of the vinyl used.

Dark colours are the easy to work with while the Lighter colours are some tricky.

The above Images demonstrate how to use vinyl sticker which are made using the CNC.

But keep in mind that burning vinyl releases carcinogenic fumes. They smell really bad.

♥ Special thanks to the GRBL Developers :)

I hope you liked this project, let me know in the comments if any queries, I would like to see photos of your CNC machines too!

Thanks!! for Your support.

Remix Contest

Participated in the
Remix Contest

6 People Made This Project!

Recommendations

  • Battery Powered Contest

    Battery Powered Contest
  • Plywood Challenge

    Plywood Challenge
  • Plastic Contest

    Plastic Contest

168 Discussions

0
CaptainDracula
CaptainDracula

Question 20 days ago

I cannot transfer the library to arduino. I am getting an error

0
akieran715
akieran715

21 days ago

why do i get a really high pitch noise when it is working

0
khjung1992
khjung1992

Question 4 months ago

**Works on jogging, but not in program
Thank you for sharing your work. It is very useful and the youtube video was very detailed enough so i could build one for me. I've got one issue. When I use GRBL, and Benbox, I am able to jog both stepper motors. But when I run a program with any image, Y axis motor only vibrates, and not rotates. Also the Y motor get's really hot, melt down the printed threads. The X motor seems working fine and laser works fine too. I am running on CNC shield with UNO. Please if anyone has any suggestions, I would be pleased to hear it! Thanks in advance.

0
Arkya Jyoti
Arkya Jyoti

Answer 2 months ago

I guess its probably a power problem. I had the same issue with the cnc shield but it got resolved as soon as i changed the power supply to a steady smps supply.

0
Nuramon
Nuramon

Tip 2 months ago

Hello All,

for all who have the error that the laser only moves around and does not engrave anything.
You have to set the color in LASERGRBL to Red Laser. By default it is set to Blue Laser!

Good luck to you

0
Sparepartsjr
Sparepartsjr

Question 4 months ago

do the parts need to be printed only in ABS?

0
fooskiii
fooskiii

Question 5 months ago

Hello All,

I have put together the cnc engraver but I am running on a cnc shield/uno. Has anybody done this and have some hints and tips.

I have it connected and loaded the GRBL firmware but non of the axis is moving. Any help would be greatly appriceated.

0
khjung1992
khjung1992

Answer 4 months ago

Did you get the connection successful? if not try different baud rate. Does your motor vibrates and not rotates? or just not doing anything? I had a similar issue; it only vibrates and not rotated. I re wired the motor, and started to work. try with different step sizes, and try turning your potentiometer on motor driver.

0
erfanjahanshahlo
erfanjahanshahlo

4 months ago

It was very useful. One question that was not answered anywhere was how many prints should be printed from each stl file. For example, for the engine and its rail place, 2 num should be printed and for the laser holder, 1 num should be printed. If possible, write the name of each file and write the required number next to it. thank you in advance.

1
panivlku
panivlku

Question 8 months ago

Hi, I have just assembled everything and turned it on. Motors are working fine and laser has turned on immediately. But when I start some engraving program, the laser is just moving around build plate and nothing is engraved into the paper. And when it is moving from one line to another, the light is not off, but it is shinier than when it is engraving. Do you have any ideas, where could be a problem? If you need I can send you some pictures.
There is laser what I have bought: https://www.aliexpress.com/item/4000028895737.html?spm=a2g0s.9042311.0.0.653b4c4dpfgmPR

0
no nameo
no nameo

Answer 4 months ago

I got a similar lazar and when I opened mine up it had an internal potentiometer just turn that and it will provide more power to the Lasar and it should start engraving

0
DavidH439
DavidH439

Question 5 months ago on Step 10

I replaced the LM7805 voltage regulator with a 12V-5V buck convertor. Not for any particular technical reason, just what I could lay my hands on. Is there any reason why this is a bad idea?

0
FerminO1
FerminO1

Answer 5 months ago

Actually, that's a great idea! It will be a lot more efficient than the LM7805, it will dissipate a lot less heat.

1
sapatsidis
sapatsidis

Question 5 months ago

works ok but step motor gets very hot ,heat melts the bed clip via motor shaft.
Any solution to reduce heat?
I cannot use it because the mototrs will burn.

0
gamingmaniaks1
gamingmaniaks1

Answer 5 months ago

I had the same problem. Did some research and found out that my stepper motor only had a max current of 0.18A so the formula of VREF is to high wich sends way to much amps to the motor and thus melting it. I broke 2 in the process and my stepper drivers.

0
DavidH439
DavidH439

Tip 6 months ago

<b>A4988 pin locations are sacrosanct</b>
When soldering up my board I casually moved one of the A4988 Direction pins to a different one shown in the pinout diagram. It was done because another wire was too near the correct pin and causing access problems. I reasoned that I'd just have to adjust the GRBL Arduino sketch. I soon discovered the error of my ways. Pin locations have been carefully chosen for optimised performance and not to be touched.
Do not repeat my mistake!

0
DavidH439
DavidH439

Question 6 months ago on Step 19

<b>Re: A4988 Enable Pin</b> I see from your pinout image that Enable is not connected. Is this correct? It may be one of the reasons that some (including me) are having a problem with the motors getting too hot.

0
Einoffel
Einoffel

6 months ago

Hello,
I´ve been trying to build this laser too. The motors are
moving fine but the laser wont emitt anything. I´ve already fired the
laser directly with a 5V Power-Supply and it emitted a red dot. When I´m
trying to activate it through the software nothing happens. The FET was
testet seperatly with a compnent tester witch said the FET is okay. I tried to oscilloscope the Output of Pin 11 everything it showed was a sinus curve with peaks of +/- 250mV
I´m
using an Arduino Nano, $32=1 is set.
Does anyone have an idea where the problem is?

0
Maggie Shah
Maggie Shah

Reply 6 months ago

Hey. Try this commands in these commands section. Of LaserGRBL to check the Laser.
M3 S255 to turn on the laser at full power.
M5 S0 to turn off the laser.