Introduction: Cheap Scalable Arduino CNC, Plotter, Mill, 3D Printer... (MPCNC)

This project is based on Allted's design CC BY-NC 3.0 It is a popular design known as MPCNC, or "Mostly Printed CNC." Allted hosts a full website (Vicious1) with loads of additional information and details.

In this Instructable I'll show you how to make a cheap scalable CNC machine controlled by Arduino. My printer has a usable volume of 1500x1000x200mm. It will provide a computer controlled plate where you can add any kind of tool for your application: laser, mill, drilling machine, 3D printer head, pencil…

In order to maximize customization capabilities and reduce costs:

  1. Most parts are 3D printed
  2. Open source hardware / software
  3. Tube profiles work as Rails

If you are looking for a CNC but don’t want a single purpose thousand-dollar machine, this is your project!!

Be sure to watch the video above, and if you like it please consider subscribing to my channel which has been recently created and will be updated with new amazing projects.

Before starting you should know the usable length, width and height you want for your machine. The less heigth (Z) the better.

Step 1: Tools I Used

In order to follow this instructable, it is supposed that you have access to a 3d printer or 3d printing service.

You will use:

Material required:

  • 1.8Kg filament (ABS is more durable, PLA is easier to print)
  • 1 x Ramps 1.4
  • 1 x Arduino Mega 2560
  • 4 x GT2 16T
  • 53x 608 Bearings (2-RS, Z, ZZ)
  • 5 x Nema 17 Stepper (Recommended ≥2A)
  • 3 x Stepper Drivers A4988
  • 12V 3A power source
  • Bunch of Zip Ties

3d printed parts:

X, Y and Z dimension dependable materials:

  • 25mm OD steel tube:
    • 3 x Rails X = Usable Width + 264mm
    • 3 x Rails Y = Usable Depth + 264mm
    • 2 x Z Rails = Usable Height + 190mm
    • 4 x Legs = Usable Height – 13mm
    • 1 x Allthread = Usable Height + 76mm

  • GT2 belt (2 x Usable Width + 2x Usable Depth)
  • Wiring to extend stepper Wires (at least Usable Width + Usable Depth + Usable Height)
  • 1x Allthread = Usable Height + 76mm

Bolts-nuts:

  • 1 x M8 Threaded Rod
  • 1 x M8 X 130
  • 12x M8 X 65
  • 2 x M8 X 40
  • 28x M8 X 30
  • 43x M8 Nylock Nuts
  • 1 x M8x 25 Coupling nut
  • 19x M3 X 10
  • 57x M4 X 20
  • 57x M4 Nylock nuts

Step 2: Legs

To make one leg:

  • First, take the “Botom corner” part, and fix it to “Lock_Corner” part with a M4x20mmbolt and nut. Beware of the joint shapeto match them.
  • Take one of the leg tubes (Usable Height – 13mm long).
  • Insert one edge of the tube in the “IE_Foot_Bottom” hole and fix it with another M4x20mmbolt and nut tightly.
  • Insert the other edge of the tube in the “Lock_Corner” hole and fix it (M4x20mm + nut) keeping the bolt loose.

WELL DONE!! You have made one leg! Repeat this process with a second leg. Then you have to make two more legs using “BotomM_Corner” and “LockM_corner” which are symmetrical to the non-M parts. Then you have four legs to support the machine.

Step 3: Carriage

Take the “Roller” part

  • Use three M8x30mm bolts to fix three 608 bearings. It will be easier to adjust at the end of the projects if nuts are facing to each other as in the photograph.
  • Don’t tight too much, just to fix the bearing in position.

Adding the “RollerPlate”:

  • Then take the “RollerPlate” part, four bearings and two M8x60 bolts.
  • Insert two bolts on the “RollerPlate” leaving the span rings of the “RollerPlate” in the opposite side of the bolt head.
  • Insert one bearings in each bolt.
  • You must insert the bolts with the “RollerPlate”-bearing sandwich in the two remaining holes of the “Roller”. Pay attention to the direction of the “Roller”, the flat face with two rings should face the bearings. While inserting the bolt put another bearing in each bolt.
  • Add a lock nut to the edge of each bolt.

Repeat this process to have two “Roller” and two “RollerM” completed.

Insert the rollers on their rails (one "Roller" and "RollerM" for X xis and another pair for Y axis). You should insert them with pressure and then, the four rollers should slide easily and equally.

Step 4: Structure

Prepare the structure:

  • Put the legs assembled in step 1 in an approximate location.
  • Over the legs add the Y axis tube (rail) with the roller mounted. The "RollerPlate" must be facing outwards the machine, don't forget it!

Secure it:

  • Add a "Spacer_Corner" over each leg on top of Y axis tube and put the X tube over it.
  • That spacer will secure the X axis tube. Place the "Top_Corner" and secure it with four M3x20mm bolt and nuts. Don't tighten them because calibration will be required further.

Verification:

  • Measure the distances between legs (or "Bottom_Corner" parts) to assure that in both X axes the legs are equally distanced. Repeat it for Y axis.

Step 5: Z Axis

Nut traps:

  • Take the two "Nut Trap" parts and four M4 nuts
  • Insert the nuts into the holes. Put the locking face (the one with rubber) outwards.

Tubes:

  • Take the two tubes for the y axis (Usable Height + 190mm).
  • Make two holes on each tube coinciding with the "Nut_Trap" holes (at 22,5mm and 75mm from the bottom).

Assembly

  • Insert one “Nut_Trap” in each tube until holes coincide.
  • Take the “ToolMount” and fix it to the tubes with four M4x20mm bolts.

Z-lower:

  • Take the "Z-Lower" part. Insert it in the tubes.
  • Put the bearing housing facing opposite to the tool mount side. Pay attention on how it is mounted, the edge if facing to the back of the tool mount.
  • Insert a 608 bearing in the housing.

Z-Motor:

  • Take the "Z-Motor" part and a Nema17 stepper. Attatch it with three M3x10mm bolts
  • Take the "Pineapple_coupler" and attatch it to the motor shaft with two M4x20 bolts and nuts.

Full Z assembly:

  • Insert the mounted Z-motor on the tubes, leaving some mm to the pineapple couplet to freely turn.
  • Then insert the threaded rod in the bearing and fix it to the "Pineapple_Coupler".
  • Fix the "Z-Lower" and "Z-Motor" With four M4x20mm bolts.

Step 6: Middle Pre-assembly

XYZ pre-assembly:

  • Take the "XYZ" part, 4 bearings and 4 M8x30mm bolts and lock nuts.
  • Insert the bolts-bearing stack as shown in image. Look how bolts are inserted.
  • This bolt will not be touched. Assure bolts are tightened and that bearing turn freely.
  • Repeat it for the other XYZ part.

XY pre-assembly:

  • Take the "XY" part, 4 bearings and 4 M8x30mm bolts and lock nuts.
  • Insert the bolts-bearing stack in the housings, as shown in image.
  • This bolt will not be touched. Assure bolts are tightened and that bearing turn freely.
  • Insert one more bolt-bearing.

Nut-Lock pre-assembly:

  • Take the "Nut_Lock" part, Coupling nut and one M4x20mm bolt and lock nut.
  • Insert the Coupling nut in the housings, as shown in image
  • Align Coupling and lock nut faces.
  • Then Lock it with the bolt-nut.
  • This bolt will not be touched. Assure bolt is tightened.

Step 7: Middle Assembly

Take the "XYZ", "XY", one bearing, coupling nut preassembly and a M8x130mm threaded rod:

  • Insert the rod in the centre of the "XYZ" on the hole which is lowered to house the Bolthead / nut
  • Insert then the C"Nut-Lock" hole (NOT the coupling)
  • Then insert the "XY" part with a bearing inside. Beware of the "XY" part position in the insertion. Look for the downwards protusion to orient the "XY" part.

Second part:

  • On the previous assembly, insert the other "XY" part with another bearing analogously inserted.
  • After that insert, the "Spacer" in the rod (with the small protrusion of it towards the "XY" part).
  • The last part to add in the stack is a "XYZ". Then lock the rod.

Stack hardening:

  • Take four bearings and four M8x60mm and nuts.
  • Insert the bolt in the aligned holes of "XYZ" and "XY" adding a bearing in the inner edge of the bolt.

CONGRATULATIONS! your stack is ended.

You're almost done.

Step 8: Full Gantry Assembly

The hardest is done.

  • Take the middle assembly and insert one tube on each "XY" part. In the X axis direction, you will insert a X rail (Usable Width + 264mm), while in the Y axis a Y rail. The rail must enter with pressure towards bearings and then move "freely" (or quite easily).
  • Now, take the Z axis and insert it in the middle assembly. The stepper motor must be un the upper part.
  • Take the full middle assembly and mount its X and y tubes over the rollers. Try to align the tubes with the roller face.

Now you have something similar to a machine. Let's add some motors to it:

  • Take a "Roler_Mount". Add a stepper to it with four M3x10mm bolts.
  • Put a GT2 pulley on the motor axis.
  • Mount the "Roller_Mount" over one Roller and fix it with two M4x20mm bolts.
  • The pulley must be facing outwards the machine.
  • Repeat this until each roller has its motor mounted.

Step 9: Hardware Comes In...

There are two steppers per horizontal axis. They can be wired in parallel or in series. If wired in parallel, to have 2A in each motor it will be neede a 4A driver (which I don't have) But If wired in series a 2A driver can supply 2A to each motor. Because of this serial connection is desired for our project.

Wiring:

  • You will need two sets of wire for series connection.
  • Follow the scheme in the first picture for appropriate wiring.
  • Mount the RAMPS, board over your arduino MEGA 2560.
  • Then, connect the steppers to the RAMPS 1.4 board where shown in the second picture. To avoid damaging other drivers remove (if come mounted) the top two drivers which won't be using for now. You may need them for 3D printer capabilities.
  • In the RAMPS power source connect the 12V power source. Match the "+" sign with the positive of the source.

Belts:

  • The belts go from one corner to the opposite one.
  • Use Zip ties to tighten the belt. First bend the belt over it and tighten a zip to make tooth contact.
  • With a second zip, pass it through the corner hole and then the belt hole to finally close the zip.
  • Then, the belt is guided through the roller bearings up, trough the motor pulley, then down to the other roller bearing and directly to the opposite corner.
  • In the second corner fix it with two zips.

Hardware connection was quite easy after all.

Step 10: Software (easyer Than It Seems)

You now have a PC and an Arduino so you will need software bor both. First lets see what we need:

PC:

  • Arduino IDE: It will upload required firmware to your arduino.
  • CNC controller: It will control the machine sending command to your arduino.
  • CNC generator: A software to generate the file with the machine movements.

Arduino:

  • Marlin firmware: This software can receive commands (from a pc, a sd card or by lcd) and translate it into machine movements.

Upload Marlin firmware to your board:

  1. Download the arduino IDE (Arduino 1.X.X). The current version will not work when compiling, so please download the mentioned one.
  2. Download the Marlin firmware (Click here).
  3. Open the marlin firmware with the arduino IDE.
  4. Connect the arduino MEGA to the PC via USB
  5. selecting Arduino Mega in Tools→Boards→Arduino MEGA 2560)
  6. Choose the serial port for your Arduino board: Tools→Serial Port→ comX
  7. Upload the firmware to the arduino mega (Button pointing right in the upper part of arduino IDE)

As a CNC controller Repetier Host can be used.

CNC generator: It will depend on your final use of the machine. I will show some programs I have used depending on technology (although there are plenty more on the web):

(First CNC / path generator and second CNC controller)

Step 11: Calibrate Your New Machine

This step is critical to achieve a good accuracy with the machine.
There are different methods to calibrate this kind of machine but here we will take the most practical one.

Dimensions (repeat it with Y axis):

  • Measure the 2 x distances between legs
  • Measure x distance between rollers holding the x axis reinforcement bar.
  • The three distances should be the same. If not loosen up required corner or roller mount to assure the measurement.

Ortogonality:

  • Measure the diagonal distances between legs.
  • Both diagonals must be same distance
  • Following the pythagorean theorem, the diagonal must be equal the square root of (X^2 + Y ^2).

Repeat Dimension and orthogonality calibration until you are comfortable with results.

Software calibration (Repeat it for Y and Z axes):

  • Mark the gantry or "Z axis" position.
  • By software, move the gantry in X axis (for example 100mm)
  • Check how much has moved in the axis you want to calibrate
  • If it hasn’t moved what should, then go to the marlin firmware (open it in Arduino IDE)
  • In “config.h” page look for that axis (in this case X) steps per mm constant. There will be a step/mm value.
  • Take that value, multiply it by the distance you wanted to move and divide it by the real displacement distance. You will get a new value. Overwrite the previous constant with the new calculated one.
  • The bigger distance you use for the calibration, the higher accuracy you will get. I recommend using big displacement. In my 1500x1000 machine y used 1400 and 900 respectively. Could have used more but that accuracy was fine for my applications.

Step 12: ENJOY IT!

Now you have your new marvellous machine, is time to use it for your next DIY.

I hope it will help in further projects and remember sharing it with new instructables!!

HAVE FUN!

Comments

author
mendelecha1 (author)2017-09-20

I would
have never imagined how many people would see the instructable. If known, I would
have taken much more care when writing it. I would like to thank those people
who thought about a misunderstanding and provided constructive solutions
instead of mere criticizing.

I am a
newbie about attribution writing. The only reason why I putted the first attribution
sentence which generated so much comments, is that I followed Creative commons
instructions.

Now,
following received comments, I have changed the attribution part as follows: I
have moved it to the first paragraph, MPCNC has been added to both the title and
the first paragraph. I have added links to both, the thingiverse and vicious1
site. I have also added a link to vicious1 shop in materials step.

There might
be spelling mistakes as I am not a native English speaker. Take it into
consideration.

If still
there is no enough attribution to the original author Allted, please comment it
or send me a private message. Unconstructive comments will be ignored.

author
allted (author)2017-09-17

Thanks for the great Instructable, I voted!

author
MikeC133 (author)allted2017-09-17

It would have been nice if it was clear that this was a MPCNC with links to visious1.com website.

author
allted (author)MikeC1332017-09-17

He linked to he thingiverse site, that is technically all the license requires. It would have been cool to get a direct link though.

author
IamTheMomo (author)2017-09-17

Because I have owned two Silhouette cutting machines, I understand what you're building here, but will somebody please tell what the letters "CNC" stand for?

author
68K (author)IamTheMomo2017-09-19

Computer Numeric Control:

https://en.wikipedia.org/wiki/Numerical_control

author
MikeC133 (author)IamTheMomo2017-09-18

You can also check here for the original design and user forums https://www.vicious1.com/

author

Machine tools used to be hand operated.

Then, motors and electronics were added that allowed them to be controlled by numbers punched into paper tape.
This gave us Numerically Controlled tools.

Later, the tape machines and then the electronics were replaced by more sophisticated computers and we got Computer Numerical Control.

CNC

This may seem like ancient history but I replaced tape readers on NC machine tools in the 1980s and 1990s! ;-)

author
DanielB402 (author)IamTheMomo2017-09-17

CNC=Computer Numerical Control

CNC applies to 3d printers, milling machines and systems like this. A computer numerically controls movement of a device (cutter or extruder)

author
valveman (author)IamTheMomo2017-09-17

CNC - Computer Numerical Controller

author
TinTxt (author)2017-09-17

"Cheap Scalable Arduino CNC"? That's a MPCNC and it already has a complete assembly guide and a great community.

Don't say it's based on his design, it's HIS design.

author
Mad Monty (author)TinTxt2017-09-18

I think some of us are being too hard on mendelecha1, taking offense as though he pirated the work. I don't see anywhere that he laid any claim to any aspect of the *design*. His words were, "This project is based on Allted's design CC BY-NC 3.0." The operative word is "project" and he explicitly and unequivocally gave Allted the design credit. He gave *instructions* and that is the essence of an "Instructable" and the root of the word. If you don't think that's a skill worth honoring, you might try reading the instructions that come with most technology, made in China.

As a project, I think he did a pretty good job of presenting it: explaining how to pull it all together - where to get the code, the critical parts, and how to set it up.

Whether he started or ended his intro with the credit, or said it the same way I would have, is kind of splitting hairs. Unless I could say that his instructions were merely lifted wholesale and cite the source, I would be out of line to cast aspersions. A false claim to fame may be a shame, but wrongly impugning the character of a good man is a sin.

I'd like to see comments from anyone who has made this device from these instructions. That would be useful.

author
MikeC133 (author)2017-09-18

Some Old Guy Coding has a lot of videos showing assembly, using the software, and custom mods.

https://www.youtube.com/channel/UCww3Za6jKZvnNReyy...

author
sgbotsford (author)2017-09-17

A useful test is to use it to 'draw' (laser, or pen) a grid of graph paper over the full width of the device.

Test 2: Rotate the entire graph paper by 1 degree before printing. This will check the accuracy of your stepper motors.

Test 3: Place a single dot. Do an extensive series of moves (several thousand) that use the full travel and hit the limit switches.Place a second dot. See if there is an error of closure.

Test 4: Print several moiré patterns.

Test 5: Put a router or dremel tool on it. Deliberately cut too fast. If the stepper motors have too much resistance to stepping, the system should throw a fault, and go through a fault recover -- either shut off, or re-home. I suspect for this, you have to measure the current or the back voltage of the stepper motor.

Test 6: Check for play. Position the carriage from the east. Draw a north-south line. Reposition from the west. Draw the same line. Should be the same.

author
MikeC133 (author)sgbotsford2017-09-18

As shown here:

author
GordonS11 (author)2017-09-18

Thank you for your efforts, great job. Thank you to Ryan for giving his endorsement.

A couple of quick comments:

1) The word "ortogonality" should be spelled "orthogonality" not a biggie, just a word I had to Google :).

2) The metal noise in your video, might have gone over better, if you had spoken about the construction and operation. In my opinion

Thank you again :)

author
RussellS8 (author)2017-09-18

I will build this!

Voted!

Thank you!

author
Swansong (author)2017-09-14

That's a neat design, I'd love to see photos of the completed project :)

author
mendelecha1 (author)Swansong2017-09-14

I hope to upload them on Saturday-sunday. Please vote for me on the First Time Author Contest!!

author
Swansong (author)mendelecha12017-09-18

Great, thank you!

author
JeremyZ2 (author)2017-09-18

Cool design, I voted for you!

author
mwitherspoon (author)2017-09-18

Good work. For 3d Printing and laser this would work great. Though I believe you'll find this mechanisms performance for machining and drilling poor. Depending on your expectations of course. The lateral loads, kickback, torsion things like that will flex the gantry tubes.

author
jacobz_20 (author)2017-09-18

"Cheap" is only true if you already have a 3D printer, it seems. Still, not bad.

author
Malmudena (author)2017-09-18

Great Job!
I love the song in your video, Who is this band?
Thanks

author
susiii (author)2017-09-18

He gave credit to Allted's Design and the link. It was a straightforward, good presentation. I am sure many others have made this also. And you will too. I mostly do crafting and if there is one thing you learn: there is very little that is new. It was an easy download. Thanks.

author
michaelmacnz (author)2017-09-17

Fabulous work WELL done your thinking and planning and execution is just great... im voting too

author
nmohammad (author)2017-09-17

it funny to see allted is responding to most of the question instead of the author

author
Nellson (author)2017-09-17

I built this a month ago, the MPCNC. It's a great machine. You'll find so many mods for it to keep you learning for months under its proper name.

It's open source, but the author here neglected a decent attributation. Did pretty good rehashing the setup directions.

Thingiverse Search on MPCNC.. I'm still designing and adding on to mine. The thing is a blast!! Definiately build one or two!! But do check out Ryan's site at vicious.com as well. That's your main engineer.

author
ThomasK19 (author)Nellson2017-09-17

Your link above does not work (or the server is not setup). The construction looks interesting but I doubt that you could mill anything harder than foam with it.

author
fessyfoo (author)ThomasK192017-09-17

there are tons of videos of people successfully milling aluminum with the MPCNC https://www.google.com/search?q=mpcnc+aluminum&source=lnms&tbm=vid

author
allted (author)ThomasK192017-09-17

Awww come on that isn't right even armchairs engineers should do a little research, Aluminum, steel @4'x4'.

Some cool stuff in the gallery, here https://www.vicious1.com/videos/gallery/

author
ThomasK19 (author)Nellson2017-09-17

There's a post below showing the right link: https://www.vicious1.com/

author
peabody1929 (author)2017-09-14

Do you need end stops on each axes?

author
MikeC133 (author)peabody19292017-09-17

Lots of information here https://www.vicious1.com/forum/search/end+stops/ about end stops

author
mendelecha1 (author)peabody19292017-09-16

It depends on the use you will give to the machine. Having end stops
will assure a home position to reference any path in space.

Anyway, in laser engraving applications, I use the z axis as “focus” to modify
laser spot but don’t use the X and Y axis endstops. To use this setting, I
place the part on the table, and once done place the laser (manually) vin a “local
home” of the part. That’s how I engraved the wood that appears on the video.
This allows to engrave the same image in different positions.

As the machine can be used without endstops and complicates the instructable, I decided not to include Endstop mounting. Seen your comment I will add that feature in the future.

Thanks!

author
PS118 (author)2017-09-15

"Be sure to watch the video above"

What video?

author
mendelecha1 (author)PS1182017-09-16

The one I have just uploaded! ;)

author

You must say at least that is based on a MPCNC!

author
grayl (author)PS1182017-09-16

I too cannot find the video!

author
ericCycles (author)2017-09-17

My understanding is that this design doesn't scale well because as the pipes get longer, they bow under the weight of your tool. There is another project you can find that should be stabler called RootCNC (https://rootcnc.com/).

author
allted (author)ericCycles2017-09-17

That CNC also uses unsupported rails and as such will also suffer looser tolerances with size (as do most any machines), the MPCNC is being used by some people at up to about 4'x4', and if you want bigger than that I have made another machine, the LowRiderCNC.

author
pgs070947 (author)2017-09-17

Regardless of the authorship etc., it's stillnice to see a well presented project like this which brings attention to all the others who contributed.

I probably wouldn't have seen it otherwise. It's a great bit of engineering and inspiration whatever.

author
pyoungblood made it! (author)2017-09-17

here is what I build. the stl 3d print files are free and published on thingiverse. search for mpcnc (mostly printed cnc). The instructions are available on their website https://www.vicious1.com/

you can get the kit with hardware and electronics there as well. Good luck. I would not vote for this as an original instructable

cnc.jpg
author
hpb (author)2017-09-17

This looks very much like the mpcnc.

author
MikeC133 (author)2017-09-17

isn't this just a rewrite of the assembly instructions found on the MPCNC projects website https://www.vicious1.com/assembly/? A lot of the questions here can and are addressed in the designs authors forums https://www.vicious1.com/forum/.

author
ajayt7 (author)2017-09-17

Wonderful project, lucidly related, congratulations!

author
florin2901 (author)2017-09-17

Wonderful idea.....
Nice is too little to say...
Keep it on.