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!
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
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.
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:
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:
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
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
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.
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:
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
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.
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.