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

83,045

836

54

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!

2 People Made This Project!

Recommendations

  • Make it Glow Contest 2018

    Make it Glow Contest 2018
  • Plastics Contest

    Plastics Contest
  • Optics Contest

    Optics Contest

54 Discussions

0
None
mendelecha1

1 year ago

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.

0
None
allted

1 year ago

Thanks for the great Instructable, I voted!

0
None
MattiV

11 months ago

what parts need convert whit sketchup because my hardware stroe no have 25 or 25,4mm OD tube,, only 20 and 30 mm have. how can if use scale function ? and make 30mm OD tube ?

1 reply
0
None
garzoMattiV

Reply 16 days ago

Unless you can scale up also screws, motors and roller bearings it won't work because of obvious reason.

1
None
dkimbril

Tip 9 months ago on Step 11

So detailed with graphics of hardware parts but lacking in the software setup part. Screenshots would have been great.

0
None
dkimbril

1 year ago

Have you tried using Matter Control for both slicer and controller?

0
None
grovento

1 year ago

Nice work!
Question 1: when changing the function (ie 3D printer or laser engraver) what do I have to change? Just the control (Repetier or GRBL) and also the firmware?
Question 2: What other software chain can I use for 3D printing and CNC?
1 reply
0
None
mimaxgrovento

Reply 1 year ago

I think so. I've always been concerned about software, and I want to have a All-One software:

0
None
IamTheMomo

1 year ago

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?

5 replies
0
None
68KIamTheMomo

Reply 1 year ago

Computer Numeric Control:

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

0
None
MikeC133IamTheMomo

Reply 1 year ago

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

0
None
TardisrepairmanIamTheMomo

Reply 1 year ago

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! ;-)

0
None
DanielB402IamTheMomo

Reply 1 year ago

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)

0
None
TinTxt

1 year ago

"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.

3 replies
0
None
Mad MontyTinTxt

Reply 1 year ago

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.

0
None
ChipheadNet

Reply 1 year ago

agree 100% I opened the instruct able because of the look and no mention. very sad it does look exactly like Alted design, no mods even.

0
None
ToolboxGuyChipheadNet

Reply 1 year ago

Please consider that this is his First 'ible, and may not yet be familiar with 'ible expectations for acknowledging his sources or references. I am sure he will fix that oversight.

0
None
sgbotsford

1 year ago

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.