CAD Software

After looking at several possibilities for CAD software, it appears to me that the main criteria are:

  • Online connection required or not
  • 2D or 3D

2D or 3D

2D software is sufficient for existing (paper) plans, or simple designs. The main problem is that parts cannot be interpolated. Take a wing for example. If the wing is rectangular, we only need to draw/create a single rib and can then manufacture as many as we need. However if the wing is tapered in any way, it becomes necessary to create each rib separately which is a lot of work.

The same applies to the fuselage. If it has a lot of curves, things get messy in 2-d very quickly.

Hence my preference is for 3-D CAD software that is capable of interpolating complex shapes to arrive at rib, stringer and other complex shapes.

Online or stand-alone

It is a lot of work to create a 3D CAD software. And software companies face a problem: in order to exist, they have to keep selling software. But once a customer buys an application, how do you get the customer to spend money on an upgrade? While this may work the first few times, soon the application will reach a level that is sufficient for most users, any they will start to delay upgrading or foregoing them entirely. For this reason, software companies have switched en-masse to subscription services.

And since 3D CAD is complex, and rather a speciality, these returning fees tend to be rather high. Wel, high for incidental private use. For a company that uses CAD software a lot, it is still rather cheap. Sure, one can download a trial version, a ‘student’ version etc. But as long as we depend on an internet connection to have a working software, we are also at risk of suddenly being cut off. That is especially annoying if -after a couple of years- we suddenly need to access our old design again.

For this reason I have chosen for an offline, stand-alone 3D CAD application. In addition costs is an issue, I strongly prefer a freeware application. I am quite willing to pay something once I find the software really useful, but I first want to see how things work as I cannot see from the descriptions if the software will fullfil my needs.

I don’t know if there are many 3D CAD programs that are freeware, but the one that pops up almost immediately is FreeCAD. It is available for Windows, Linux and Mac (I use a Mac, but can also run Linux).

I have had a first go at it. And it is not easy ;-), i.e. one does need to read and follow instructions. I have now worked through two examples, but am not yet at a point where I feel capable of creating a design from scratch. At least the terminology is starting to become familiar.

The first shopping list

I went to the V1 Engineering site and checked which components they used for their electronics. After all, I am presuming that my electrical setup can be identical to theirs. Then I went to the banggood website and selected those items I think that I will need.

Click on the pictures or links to be taken directly to the banggoods website. Note that on some links I may earn a referral fee.

  • An Arduino board suitable for shields. I ended up with this one

arduino board

Arduino Mega 2560 Rev3 documentation

PDF Documentation

  • A RAMPS v1.4 shield for the Arduino:

RAMPS board

Documentation from banggood

Reprap Documentation

I did order some jumpers with this board which was probably unnecessary as the board comes with 20 jumpers. If you look closely you can see that some pins have been bent durning shipping. But it does not seem to be of any significance.

  • A display and SD-card slot for the Arduino (LCD 12864):


Reprap Online documentation

  • The stepper driver (DRV8825):

Stepper driver

The heatsink is included with the driver.

If you clicked through to the banggoods website you may be wondering why I did not order a complete set like this. The reason is the drivers and the LCD screen. I wanted a bigger LCD screen, but especially I wanted a stepper motor driver capable of driving higher loads. For a 3-D printer the smaller drivers will be sufficient, but a CNC has to actually push the tool into the material, which I expect to translate into higher current consumption by the stepper motors. I also did order slightly stronger motors than usual.

  • The stepper motor (Nema17 59Ncm):

Stepper motor

Actually, the picture above is not of the correct motor, though it looks very similar. Banggood send me three motors, one of which was the wrong one, and that one was also damaged to the point of being unable to turn. If you look carefully you can see the damage just before the connector. After contacting banggood customer support and providing them with the necessary proof (pictures) they offered to send me a new one, of the correct type.

This leads me to a tip: At this time (March 2019) banggood shipped the ordered items in a plastic bag. Though they do wrap things up, the handling during transport must be quite ‘forcefull’ because all three motors lost their protective covering and were simply banging around in the plastic bag and damaging each other. It may be better not to order the motors together with other stuff. Because once a motor looses its protective covering, it will probably start damaging the other stuff in the same bag. In fact, I would not order a motor from banggood again, but rather order it from a local outlet (at a higher price) simply because of the potential damage.

  • Some heatsink glue:

Heatsink glue

  • A shock absorber for between the stepper motor and the stepper motor mounting bracket:

Shock absorber

  • Stepper motor mounting bracket:

Stepper mounting bracket

  • A power 24V supply:

Power supply

The stepping motors need a 24V power supply, this is the highest voltage in the system. The Arduino and Ramps board need 12V, for which I added a step-down converter from 24V to 12V.

  • A step down 24V to 12V converter:

Step down converter

That is the entire list. The next step is to mount these components on a breadboard and see if I can get the steppers stepping …

Btw the components do not have documentation with them, that must be found elsewhere on the internet.

The next steps

So, how to go on from here?

I anticipate that the actual build of the mechanical part is not all that difficult. The most work is to provide a proof of concept. Which in this case can be done by assembling the necessary electronics, steppers and software. Then when a 3-D design is made it can be translated to g-code and uploaded to the Arduino and it should drive the stepper motors. This can be done without the mechanics of the real CNC.

For a proof of concept, the I would need .

The banggood website seems to offer all I need for this at good prices. The Arduino, RAMPS, Drivers, stepper motors, and the power supply.

So this is what I will do next: Find out which parts to order, order those parts, assemble them and then provide the proof of concept. I think the total cost of this phase is less than 200 euro’s. Note that I won’t be cutting any parts yet. I simply want to see the steppers stepping such that I can then go to the next phase of actually building a (small prototype?) CNC.

The phase after that would be the construction of the CNC. Total cost can be quite low, but are strongly dependant on the size. Bigger is of course more expensive. Right now, it seems that another 300 euro’s could see me a decently sized CNC. Even if it is not quite as big as I would like. Even if I have to add another 100 or 200 euro for things like motor, tools etc, it should be possible to keep the total cost to about 700/800 euro’s. Which means -at least for now- a green light!


MP-CNC mechanics

The MP-CNC uses a single rod for its axis, both for support of the Z and X axis assembly. These rods are the basic structural elements.

Photo by V1 Engineering, click image for link.

Not visible in the picture above are the belts that are used to move the Z assembly. They can however be seen in other pictures at the site. I wonder if the design initially used friction drives and belts were added later.

Axis support

The main problem I foresee when using this type of setup is sag. Remember that I would like to build a CNC with 2000mm of workable area in the X-axis. A rod of that length would noticeably sag. Probably more than 1 or 2 mm, but at the very least more than the wanted accuracy of 0,1mm.

To avoid that I will be using the previously mentioned SBR12, SBR16 or SBR20 rails.


These rails usually come with two sliders that can be used to mount the other axis on. The sliding construction is quite firm and can be used to put considerable force on the tool.

Belts or linear ball-screws?

Using belts is a common way for cheap CNC machines. The more expensive machines use linear ball-screws. These allow much more force to be brought upon the tool and as such allow for greater precision on hard materials and/or higher speeds.

Using a belt on a 2000mm axis feels like a recipe for disaster. Maybe it won’t be a problem at all, but I simply do not like trying. Hence I will be using linear ball-screws.

These look like this:


It is hard to see in this picture, but if you google ‘ball-screw’ then you can find some close ups that show the difference between a lead-screw and a ball-screw. A ball-screw is a kind of ball-bearing mounted on a threaded rod. A lead-screw is a ‘normal’ screw that is optimised for use as a precision stage driver. However a lead-screw is less efficient, cannot transfer as much force, and will likely develop slop over time. The lead-screw is cheaper, but imo the ball-screw more than justifies its higher price.

Stage design

Unfortunately I do not have a picture for this, so bear with me as I try to describe how the X and Y-axis will look like…

The SBR16 rods will be mounted on either side of a long table. A bridge will cross from one to the other, mounted on the sliders. Above or to the side of the rod, the ball-screw will be mounted and fixed to the bridge. Then when the screw is turned, the ball-bearing will push or pull the bridge along the X axis.

The ball-screw is mounted on just one side (initially). The rigidity of the X-bridge should be enough to prevent torsion forces from deflecting the tool. If necessary, another ball-screw can be added to the other side, with its own stepper motor.

The X-bridge will receive a similar structure for the Y-bridge. And the Y-bridge will receive a Z-bridge. However The Z-bridge has only limited travel and there are ready build units at a decent price, so it does not make sense to build this myself.



The MP-CNC uses an Arduino microcontroller to control the stepper motors of the CNC. I am not very familiar with the Arduino but there is a website for them: Arduino.

The Arduino is a series of small computers with lots of input/output possibilities. On their website you can find (a lot of) different versions of it. Looking at the V1 site, they sell the Arduino-nano so that is probably the one they use for their MP-CNC.

The Arduino is a general purpose controller, so it should be possible to use other Arduino boards as well.

The Arduino cannot drive a stepper motor directly, it needs additional hardware to do that.

Some Arduino board support so called ‘shields’. A Shield is a board with additional hardware that plugs directly on top of some of the Arduino boards. In fact they are placed on top of the I/O pins of the Arduino boards. Reducing the amount of soldering to be done.

There are ‘shields’ available that contain stepper drivers, or which contain pins onto which stepper drivers can be plugged.

There are also complete boards that include the stepper drivers right on the main board that also contains the processor. That is not a bad idea, but seems more expensive and when a driver gets damaged, the whole board must be taken out and repaired. Using a shield based approach means that it is easier to swap out a defective stepper driver. I will have to compare costs to see what approach I will take. A shield seems intuitively the better approach.

There is an Arduino shield specifically developed for the RepRap 3D printer, called the RAMPS. This shield is used in the MP-CNC and probably many other CNC machines. It is a no-brainer to use this shield as well. So I will.

The RAMPS shield can host 5 stepper drivers and has a couple of other pins for I/O operations such as end-stop detection or temperature control. I do not know yet if any of these will be needed, but at least 3 drivers will be necessary for a CNC.

New schematic overview

We can now enhance the simple schema from the previous post:



The SW side (Firmware) is still a bit of an issue. The Arduino needs some firmware to interpret the G-code and translate that into stepping motor commands.

I see that V1 enginering uses an adaptation of ‘Marlin’ as their firmware. Marlin also has its own website: Marlin. Marlin is a 3-D printer controller firmware for a.o. the Arduino. It thus seems that a 3-D printer and CNC are similar enough to both use the same (?) firmware. But is it? after all V1 has its own firmware project on github. Why is that? do they change the Marlin code for their MP-CNC? questions I do not have an answer on yet. (V1 writes that ‘only minor’ changes are necessary, but are these configuration changes or SW changes?)

For now I will assume that I can use the MP-CNC adaptation of Marlin.

LCD and SD-Card interface

We do need an interface through which we operate the CNC machine. We need a display, a few buttons, and a way to transfer the G-code to the CNC-Controller (Arduino).

The reprap community has designed such a device in the the form of a LCD display with selection button and a SD-Card reader. The combination of Arduino, RAMPS and LCD/SD-Card/Selector makes for a complete self-sufficient CNC controller. New G-code is transported to the CNC-Controller using an SD-card. The LCD will show a menu from which we can select items via the selector/button and thus initiate the execution of the G-code.