Let's Make Robots!

Project: The Beast (DIY CNC machine project)

Hi all,

Meet the Beast!

The Beast















 (eh please ignore the junk around it)


Big fat Note: This guy is not the best design ever done, I'm sure it can be done in other ways too, it is more of a proof of concept and if it will be good for something (I mean actually usable or not), remains to be seen when I finish it. This is so because nothing has been calculated or planned beforehand, all you see is created straight from my head with lots of eyballing technique and mostly based on intuition and common sense.

I'm not sure if such a machine can actually be classified as a robot so I'm not going to post it as a robot project for now, it is not done anyway yet so there is time. 

1: Intro

This machine has been inspired by this site here: http://buildyourcnc.com/default.aspx, and the RepRap project: www.reprap.org (actually by the repstrap machines described in there).

I have decided to build such a beast for pure fun and because I hope the in the end (if I actually get it to work correctly) it could be actually useful to cut parts for other projects (read robots :D).

2: Mechanics

The machine is actually pretty simple, it is created of wood conglomerate I had laing around, which in my country is called "pal"and it is used to make furniture (I think it also called mdf but I'm not sure it is the same thing).

It is composed of a base plate which also acts as the X axis, on which the Y axis moves. The Z axis is mounted on the Y axis  and moves along with it.

To allow movement as frictionless as possible the axes are mounted on L shaped aluminum rails and supported by bearings (the pictures will speak for themselves). This setup also ensures minimum unwanted movement for the axes.

Linear Bearings
















 (it an ugly cutting job I know ...) 

The axes are moved using long screws which trough rotation push or pull the axes along the rails.  (Again I think a picture is worth more then words). 


















3: Electronics

The machine is to be controlled by an Arduino interpreting G-Code received trough serial connection from the PC. I chose to create my own motor drivers since driving 3 stepper motors and maybe the cutting tool would have eaten all the IO pins available on the AtMega 168 the Arduino uses,  and the software would have been the killer of this project. 

So I have created the following setup:

- the Arduino will drive the motors trough I2C as a master device

- each axis will be driven by it's own driver taking commands from the Arduino.

The motor controllers are built using l298 as the motor driver and an Attiny2313 to act as a slave on the I2C bus and control the driver.  

Using this setup I still have a lot of IO available on the Arduino (maybe for a LCD screen or a keypad) and the software is as simple as it gets.

The Arduino
















The Arduino

The motor controller















The motor controller and the stepper motor to be used


4: Software

I will use a modified version of the RepRap software on the Arduino. On the motor controllers I have used an I2C library found on avrfreaks.net and code to control the stepper which is written by myself. All software is written in avr-c/c++. 

The Arduino part is yet to be written/modified, I think the motor controller part is almost done (still a few bugs to iron out).

5: Current status

As you can see in the pictures, the mechanical part is 2/3 done I still have to create the Z axis toghether with the tool holder.

The electronics are done for the two axes toghether with the Arduino (single side version), I still need to make one more motor controller fro the Z axis, or two if I decide to have control over the cutting tool too. 


Update 19, Apr:

I have managed to build the third motor controller last evening. Added controller test video :D


Update 20, Apr:

Well since the electronics part seems to work great, today I've done the a lot of modifications on the RepRap firmware for  the Arduino and finished the coding for the controllers. 

I'm pretty happy with the motor controlling part, it looks like I have actually a much better resolution than my poor math calculations gave me: 115 steps per millimeter instead of 48! Don't know why this is so yet, but it is great and I won't bother to find out:D

On the G-code side there is still some work to be done ... It might be not such a great idea after all, mostly because there is no complete toolchain to work with under Linux and I just won't will use windows. I'll see more about that this week .. .

I'll also have to start working on the Z axis (something I have succesfully evaded till now), I still have no clue on the design yet. 

Update 29 April:

Little update, been working for a while at the Z axis, made two versions none really satisfactory, found a design flaw and ranted over the imprecision of my cutting skills:P For now my time to work on this is very limited, hope I will be able to do some more on this Z axis thing over the next two weeks. 


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

From the pictures it seems you used and L297/L298 combo, do you by any chance still have any files related to it? Gerber, eagle, close up pictures or even a wiring diagrams.  

"... The motor controllers are built using l298 as the motor driver and an Attiny2313 to act as a slave on the I2C bus and control the driver."

That was the initial controller I've build and it was really a toy.

If you would have had *really* been reading my stuff you would have found out that:

1. This machine is long gone

2. The Valkyrie is long gone 

3. I have posted sources for all hardware and software over the time.

Cheers dude!



You’re right, I kinda skipped parts .... the important parts ....

I haven’t read all your posts, just did a quick search on LMR and clicked.

Well just because the machines are gone doesn’t mean you deleted everything?! That stuff could always be useful later on.  

I will go through all your post and read a bit more before asking :/ 

... sorry I did not mean to be mean or anything but it's all outhere. 

John_NY gaved you the github link already, if you feel adventurous you might have a look at the latest drivers I currently use:


Those are the serious thing, current limited and add microstepping to the game I would go with them.


Nah don’t worry, impulse posting is a bad habit of mine. With several years of therapy and countless medical tests I should be able to control it J


Yeah I saw that one while searching LMR, definitely bookmaking that for any future project where I really want to make the most of my stepper. For now I just want to be able to use the damn things!

Hi Vince,

The Valkyrie and Beast drivers can be found on github (the design files and code)...


They use L298 and an ATTINY2313 microcontroller for I2C and commands, but not the chopper driver L297.

They're kind of similar in concept to these:


in that they're controlled over I2C.

I started with those drivers (http://letsmakerobots.com/node/12713 ), and when I upgraded to bigger motors, I switched to the L297/L298 combo, and although I still have the Valkyrie drivers, I reclaimed the ATTINY2313 IC's for other projects.

A bit of background,


Y-Axis modification is done, Z-Axis is done, seems fine so far.Yey:D

I have also found the code size problem with the controller  software, it now compiles just under 1k. Yey :D

Still adjusting code here and there, and testing stuff alltoghether I will update with pictures and test movies tomorrow. Yey :D

Yey! :D

Looking forward to some videos! What are you going to mount for a spindle?

I would be very interested in seeing the motors actually moving your table. I am researching a similar project and I am curious how  well your small motors work for you, particularly how much load they will be able to handle.


 Right now it's all back to a big mess off ... stuff because I had to redesign the Y axis in order to be able to have the Z axis attached. I promise I will post tests as soon as I put the whole thing back together, I feel sorry now I did not record the X an Y tests, because this weekend I'm not going to be able to do this because family stuff is going on :), my doughter get's christened (she get's named today).