Let's Make Robots!

Yet anothter "Valkyrie" clone

stepdirection.c4.12 KB
rename_to_makefile_without_extension.txt9.78 KB

 Here you can find Version 2.0:






Inspired from Tinheads "Valkyrie 2.1" is started building my own CNC last weekend. Until now the X and the Y axis are ready and i also got one Motor running.


Differences to Tinheads CNC:

- drawer guide rails with ballbearings

- the table is moving and not the Y-axis

- Sanguino instead of Arduino


The Motors i'm using are from an old Tektronix Plotter. (They are nearly two years older than me... Produced Feb. 1978) They have 1.8° per step so i'm going to have a wonderfull resolution...



This evening i changed the leadscrew a littlebit and now the X-axis works much better. So i have now 2/3 of my cnc working ;-) It also painted an eagle file ;-) And makes funny music while doing this ;-)

I also found out that the G01 F Statement can set the feedrate higher than max. Feedrate. Is there a good reason for this? If not i'm gonna change this in the sourcecode. Editing the gcode by hand is a lot work ;-)


Tommorrow i will start assembling th z-axis.


Next Update:


 It's done!!! at least for now ;-)



YAU (Yet another Update):


Yesterday evening i tried to mill a PCB. After about 1 hour good work it started loosing steps. First on the Z-axis and then on X too. I think i will have to increase the Voltage. 'til now I'm using 5V and the motors stay cool. So there is ptential for more torque i hope. I'm driving the Motors in fullstep mode with 2 Coils powered a time. I think this is the strongest mode they can be driven...



Update: New Video

Update 14. Feb. 2010:



Today I switched over to EMC2 to control the Mill. For this I had to change the Stepperdriver Firmware a littlebit so that it will accept step/direction signals. I attached the sourcecode and the makefile to this page.


Result: its working really good with EMC2. I can drive all axis at double speed because EMC accelerates the Steppers so they don't loose steps.



Update 19. Feb. 2010


My dremel clone broke down tonight - still running but a 1mm mill-bit makes about 2mm line. You can fell that theres a little play on the bit-clamp. So i'm going to buy a new one. But now i have to make a decision dremel 300 or proxxon FBS240E or Proxxon IB/E



+ up to 40.000 RPM

+ cheap 50€

+ 125W

- they don't say anything about accuracy

- hard to mount


Proxxon FBS240E:

- only 20.000 RPM

+- a littlebit more expensive 60€

- 100W

+ collet-chuck (Spannfutter)

+ seems to be better mountable

- they don't say anything about accuracy


Proxxon IB/E:

- expensive 90€

- 100 W

- only 20.000 RPM

+ is professional mountable

+ has a high accuracy 3/100mm


I hope they have them all available in the hardwarestore tomorrow so that i can get hands on them. If anybody reading here has a quick suggestion, please post....

Update 26. Feb. 2010:


It's a Proxxon! A FBS240/E. And it seems to work quite good! But the axis speed of my mill is much to low (120 mm/min). So I decided that i need a new stepper-controller. This time with integrated current-limiting. I took a look at a lot of available circuits on the net but then I've found this one:


It's just 20 Euros (PCB) and gives me some important new features: sleep and boost.  For 20 Euro i cannot make my own pcbs... (time, material, failures...) I will try 12V tomorrow. Lets see what speed i will get out of it ;-)






Update 1.3.2010:


I installed the new stepperdriver and it was a great success! Had a little trouble with some old atx-powersupplies but now it works!

Old speed was 2mm/sec and acceleration of 1.5 mm/sec^2 on all axis

New speed:

X: 6mm/sec 10mm/sec^2

Y: 10mm/sec 13mm/sec^2

Z: 15mm/sec 20mm/sec^2

All 12V, X and Y running at 1A each, Z at 2A.

Things to change:

- find a cheap bigger powersupply 30-40V 4-5A

- exchange Motors on X and Z (the motor on Z is the strongest!!!)

- change the 8mm thread-rod on x axis to a 12mm one (to get rid of the wobbling problem.....)



Update 9.3.2010:


The Proxxon ist also a piece of....

Tonight it broke down. A 1mm tool makes an about 2mm hole... I will try to get my money back tomorrow. Instead of the proxxon i ordered a Kress 800FME. With this I hope I will have enough power and longtime qualitiy. The give 10 Years warranty and its a professional tool.


Not so good:

Last week milled a really good holder for the proxxon. But this is unusable for me now, because the kress spindel has an 43mm mount...



Update 16.3.2010:



The Kress spindle cuts everything like butter ;-) Now i can do some Aluminium too:



Comment viewing options

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

Looks good so far :)

How are those drawer rails behaving ? Do you get play using them?

Also have you tested the motors with the drivers?

BTW that printer must have been full of goodies:) They built thigs a lot different back then, I was born in 77 it is as old as I:D 

daniel79's picture

Hi Tinhead!

 the y-axis has no play (i can feel none..) The x-axis has the problem that it can wind/curl (dont know the right word) a littlebit. But the leading screw isn't installed 'til now. I hope it gets  a lot better with it, but if not i have also another idea in my mind.


I tested them with the driver and at first they behaved very well. But then running them in single steps i recognized the motor make three steps in one direction an one back. I tried playing aroundwith your code (v.2) and got it working in fullstep-mode without the direction-change. But all this could be an issue to my limited (too low) powersupply i used til now.


Is it right that i used the v.2 motordriver software (blink_pwm.c). The v.1 i couldn't compile. Make reported me a few errors i didn't really understand.




TinHead's picture

If you built the v.1 driver you should also use the v1 firmware, v2 does things a lot differently.

Post the build problems you had.

daniel79's picture

I built the v.2 Stepperboard. I changed the layout a littlebit but the schematics are the same. I kicked of the 7805 and converted it for one sided layout with not so much wiring. (two sided is so hard to align ;-)


I also found my failure compiling the .1 : My toolchain was outdated. Updating to the newest crosspack (i'm on mac) solved the problem!

At the moment i'm reading a lot of stepper theory. This evening i will try out a few changes to your tinyprogram. The thing is i don't really need halfstepping because my steppers have 1.8°. But because of noise halfstepping would be nice...




TinHead's picture

... skills are not the greatest, a look at my code is welcomed.

What I tryed with v.2 was to achieve microstepping but it turned out I can't get it to work. So I have settled for half stepping with constant torque, this works very nicely with my motors. 

So what the code does is basically this:

1. It initializes the PWM outpus of timer0 and timer1 in 8 bit frequency correct mode with prescaler 8

2. The step sequence is actually the normal 4 step sequence with each steps devided in half so 8 steps

3. For each step different currents are set in coil A and B as such that each step is taken between the normal full step position and the half step positions, this way all steps are done with both coils enabled 

So if you use 200 steps per revolution motors, to get this half stepping method work properly you will mostlikley have to adjust a lot of stuff because I tuned the PWM frequency for my motors which are very different. 

To use fullstepping just remove the PWM functions, and remove every second entry in the stepping sequence, to use normal halfstepping the sequence has to be different.

Also take care on the voltage/amperage rating of the motors you use, because the driver does not do proper current limiting so it can be easily destroyed in the case when the motors nominal rating is 3v/1amp and you are driving it with a higher voltage. Because the higher the voltage the higher the amperage it will draw and since no chopper is involved the l298 will fry while trying to provide the amps.   


daniel79's picture

I'm planning to reduce the current using PWM. Later i will perhaps build small limiting boards for each driver.(the LM338 looks nice for this)


What were the facts you used for optimizing the pwm for your steppers? My Problem is i haven't a datasheet for my motors. Google only finds products using this motor....

I asume they are 1.8-3V @ 1A. I will just try how high i can go without them getting hot ;-)



TinHead's picture

But not quite the one for the motors.

So the facts I used were basically none to start with .... just lots and lots of trials and errors and white hairs ... until I finally got something usual. 

Basically you adjust it until you get useful torque out of them. I use my own low tech approach to test the torque, if I can't hold the motor shaft from turning then it has good torque :)