A little further towards a CNC machine
![]() |
| Free CNC Machine |
First of all, I wrote a bunch of new software to drive the mill. My basic architectural choice was to let the firmware draw lines only, and do smart buffering to drive all curves from the host machine. With some care, the buffer size on the Arduino can be quite large.
I've defined a virtual machine on the Arduino to handle a stream of operations. A timer interrupt sits and loops and reads and processes instructions off the queue. A series of registers are used that can be updated or read by instructions.
The interesting twist in this VM is that each instruction can take a fair bit of time to execute. One instruction, for example, is GO, which travels in a straight line at the current feedrate to the point defined by the X, Y, and Z registers. The timer loop is controlled by the feedrate, and each time through the loop, the same instruction's SLICE function is called (as in timeslice), and it does one step or whatever. Other instructions are LOADX, LOADY, GORELXYZ - it's a CISC machine, and the instruction set will be optimized to keep the mill busy with the constraints of the queue.
Also, Philippe (a friend from work) came over yesterday. His kids came to see the goats and sheep, and he came to drop off some awesome old electronics. :-) He brought a bunch of stuff, but one critical piece he brought was a scanner. I couldn't leave it alone, so I stripped it down, and replaced the Y axis on my machine with the scanner. It works good! :-) It's nicer to put objects on.
I drew a few more houses with the machine (my only interesting program to date) with the new software, holding the pen by hand over the moving bed.
Now all I've got to do is build some sort of gantry for the Z axis to mount on. For starters, I'd be happy with something that would just hold the pen for me. :-)
Very cool. It's coming along! Pictures will be up soon...


0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home