welcome to the cnc design blog

June 16th, 2008

this blog is about two students at DTU and their experiences while trying to build their own cnc milling machine.

we hope that this blog and the material related to it can provide some guidance for others interested in building their own cnc. if this is the first time you a reading here, a good place to start your research on the project would be this post: project overview

this is work in progress. the blog, the cnc machine, the writing. so bear with us.

if you have questions, suggestions or comments, please contact us or comment on this blog!

final day: the long hard road of iterations

June 16th, 2008

the two last days we’ve been working hard getting the cnc mill ready for our final presentation. it has been hard work, and we have to be honest and say that we ourselves are not thoroughly impressed by our own results.

although the cnc has gotten a lot of improvements the last couple of days:

the motor control has been moved into a much nicer housing. we found a cast away pc rack cabinet, and the cnc motor control, power supplies, switches and cables fit very nicely in there. there is even room for a cool little unix machine, should we ever get the money for that.

we added some nice distance pieces to the mill instead of our previous very bulky mount. we produced the pieces in two lengths: 20 and 40cms, so we can change the pieces if we would like to cut deeply on the z-axis

front view

also we made a suction base for the cnc, basically a wooden box with A LOT of little holes in it. attach a vacuum cleaner to the box, and voila: you have suction. we are hoping that this suction will be enough to keep flat objects in place when milling and that pieces of cut-off material will be sucked of the milling subject, but this is yet to be tested.

in conclusion (we have to conclude now, the machine is not done, but the official DTU course is over) we can say, that we have learned a lot about mechatronics in this course. above all we have gained a lot of respect for mechanism designs and the precision of industrial grade equipment. it would have been many times easier to build this machince at DTU, but building it at halfmachine has taught us some cool DIY tricks and has forced us to be creative in relation to materials & design and to think mechanisms trough in a more pessimistic and practical way. it is unfortunate that the frame we bought used for this project was of so low quality, as we think our cnc machine could be OK for small scale projects with the current motor control, had only the frame been more reliable.

the cnc machine is operational, yes:

but in real life there is still a long way to go before this machine is useful for the purposes that we had in mind.

the list of possible improvements is as follows:


  • the z axis is simply to wobbly to do any real 3D work - we have considered changing the metal rods to hardened printer rods, but we believe, that to properly fix this, the cnc requires a complete redesign of the z-axis mechanism.
  • the motor mounting unscrews it self during operation. we need better fastening of the motors.
  • we never finished a safety mount which was elegant enough for daily use. we tried building one of wood, but the result was simply too bulky. glasses have gotten us through so far, but we would like to implement a acrylic “cheese bell” which fits over the cnc.


  • finding any proper open source (or at least cheap) CAD/CAM package has been very hard. the cam package for rhino looks promising, but we haven’t had time to go into this.
  • seemingly simple tasks like transfering an illustrator file to g-code has been surprisingly difficult - we’ve gotten some results with cambam and lazycad (.ai -> .dxf -> g-code), but the workflow is tediuos and the resulting g-code has been extremely dumb; that is, lines and curves divided into very small line segments, rendering any complex pictures (including round objects) super heavy and nearly impossible to process.


  • our milling tools are bad: we use a dremel, which has no feedback mechanism. this means that the dremel is rotating at many thousands of RPM when not cutting, and then dramatically loosing rotational speed when touching the milling subject giving an unwanted difference in milling speed throughout the material. buying a cutting tool with feedback mechanism (or constructing our own) would allow us to cut materials that are more fragile, and materials that might melt or otherwise react in unwanted ways when approached by a cutting tool rotating too fast.
  • a general feedback mechanism for the frame/cutting head position would be super nice. with no feedback, even the slightest imprecision will add up throughout a more complex milling operation and result in the final millings being more off target that necessary with our mechanical precision.

we are planning to continue working on the cnc - and so are the people at halfmachine - but first we need some holiday! check back on this blog in a month or two. there might be more news for you.

we’ve taken a lot of documentation photos and bring a little excerpt below. do check our cnc flickr photo pool for the full selection.

its milling time!

June 5th, 2008

now with a functional cnc, its finally time to have some fun milling


it’s been a dream for me to make automated stencils for a long time, and with the help of illustrator and the supercool plugin scriptorgrapher, we’ve got some pretty hefty patterns to cut

10th day - milling n’ grilling

May 3rd, 2008

Since the machine performed well on the testrun, we had some minor things to sort out. The motorconnection had to be tighten up, and Nicolas from Halfmachine did a great job on this.


The motors are now held in place by a couple of bolts with machine screws going through them.


We solved the tool mount by attaching a perforated metal plate on the z axis. The holes on the plate allows us to mount milling tools with heavy duty wire strips. The is a quick and dirty solution, which will work for now.

We also began constructing on the machine housing. We found some used wooden plates and made the bottom-suction-room. since we havnt got any plexi-glass yet, we could not finish it. Its larger than first immagined though. The distance from the materialtable to the tooltabel should be about 400mm (so you can get big pieces into the machine) and the z-axis with motor sticks up about 350mm. With a little clearence and 50 mm ind the bottom for the suction we have a machine approximately 1m tall. We will post a picture soon, when it is a bit more finished.

The next step was to actually mill. First of all getting some gcode established for something that we liked. After a few hours Nicolas and Jakob Remin made a first cut-out with CNC:

jakob remin med skilt

the text seen on the sign was made using the linux script called “truetype to gcode” which comes with the linux emc package, and allows you to trace any text string and true type font to finished gcode very easily.

Now we can mill, but there are still some things left. We need to build the housing, so the machine can work in a safe environment. We need to figure out a quick way of establishing the gcode. We need to make a more step-by-step guide to the project.

Celebrating the first cut-out is also essential - the machine would be veru dissapointed if we would not appreciate its effort. Having a grill”party” at the boat was neccessary:
grillmeister 2food
grillmeister 1grill party 3

We hope to finish the rest in 2 days.

9th day: cross town traffic: driving for materials

April 25th, 2008

cross town traffic

this day was spent driving around copenhagen getting parts and materials for the cnc machine… we should now be all ready to build the housing next week

new housing design with detachable distance pieces & base

April 18th, 2008

in order to allow us to mill on larger objects than the CNC machine and housing we redesigned the construction and mount for the cnc machine. we can now detach the distance pieces from the base of the cnc machine and move the machine to larger objects (say a table top or a hood of a car) and mill on top of these

new construction

the material table underneath the distance pieces is a perforated plate, with a vacuum cleaner mounted underneath, giving us suction to clean off excess matarial

we’re getting the distance pieces milling in the workshop of DTU by professional craft men, since it is essential that the X/Y frame is parallel with the base / milling object


and on the 7th day we have movement

March 28th, 2008

our machine is moving! it is now possible for us to control the cnc machine with linux cnc … we simply forgot to apply jumpers to the motor control board defining the microsteps that we apply to stepper motors (we thought applying no jumpers meant standard setup, but it turns out, that you had to apply at least one jumper to have an acceptable motor configuration)

setting up the motor control:
setting up the motor control board with EMC2 is really easy — it comes with a setup wizard which allows you to assign specific pins in the paralel port to specific home switches, motor steps etc.

Screenshot-EMC2 Stepper Mill Configuration

on homing difficulties:
we need to set up the cnc machine so it can always find its absolute position — this is done with home switches on the X/Y/Z axes, and should be a simple task, but alas, quoting from the manual:
“Homing seems simple enough - just move each joint to a known location, and set EMC’s internal
variables accordingly. However, different machines have different requirements, and homing is
actually quite complicated.”

so we need to read up on: homing setup: chapter 5.4 homing in the EMC2 manual

also the connection between our motors and the driving shafts are too loose — this can be seen our the first test drawing made with our wonderful machine:

first test drawing

the letters are written mirrored and on top of each other — they should be like the vector layout below


the connectors are simply not tight enough to withstand the rotational torque when the machine is moving fast between letters (when drawing the letters are “milled”, so the machine is moving much slower)

but hey: this is all minor tweaks and mechanicals — all very fixable! yeah! what a nice way to start a weekend :D

6th day: the first testing

March 24th, 2008

Even though we were hoping it would have been to much to ask, if all have just been perfect in the first run. But nothing really happened.


We have connected all the hardware to the controlboard, and followed the configuartion of the system in the software, but we cant get the motors running yet :(

We will call it a day, go home and read the manual (here) and hopefully come back next time and start running.

6th day - connecting to the controlboard

March 24th, 2008

So now we need to connect it all to the controlboard. The two motors controling the x-axis is going to be connected to the same terminals, so those we have found a connector for on the ship.


The motors are now ready to be connected to the controlboard


along with the swithes, the power-supply, the emergency stop and the computer, the machine is now a mess:


We have considered along the way how to connect things in a way, that makes it possible to do a better design in the end - soon we will clean up the mess, and hopefully get a nice little machine.

6th day - limit and home switches

March 24th, 2008

Before running the machine we have made the limit- and homeswitches. Most of the configuration can hopefully be done in the software, but the tool used is probably not always the same. Therefor we have decided to make one limit-switch were there is a risk for the tool to hit the frame if not configured right. The rest of the limits is not changing, and therefor should we have chosen to configure these in the software.

soldering limit switchglueing limit switch
making limit switchlimitswitch mounted 2

The home switches are mounted in all axis, and provide a point in the space for the machine to calibrate (0,0,0). It is worth considering where to mount the home-switches so that the point is suited as a starting point. It depends on wich direction is front of the machine. The home of the z-axis should always be when it is at its highest. The small switches is wired together on a board, for convenience when we shall connect them to the controlboard.

The swithes are powered by 5V when not opereated, and when pushed the power is cut. This makes the power fluctuating in the air not affecting the terminals.