Special thanks to gavindar and aathalye for helping keep EDS open late Tuesday evening! Completion of this machine would have been impossible without their generosity of spirit and time.
This week’s project was an all-section project – we were tasked, as a section, to produce a CNC machine of some form. We split up into subteams based on our relative expertise and interest; I was tasked with leading the software team.
As one of the simplifications for this week we were given a Synthetos TinyG CNC controller to run our machine. This XMEGA-based board includes 4 stepper drivers and a Gcode interpreter, allowing control of up to 4 independent axes. Configuration allows the stepper motors to be interpreted as either linear axes or rotary axes, permitting decently complex machines to be operated.
Our section decided to attempt a delta positioner. Background reading revealed that no one has really done delta positioner kinematics with any of the TinyG tools. Luckily, we can push Gcode directly to the TinyG and direct it to move in rail space, and it will do so smoothly and linearly.
The crazy software plan I came up with was this:
I took on the task of pushing Gcode to the TinyG board and wrote a software module to do this.
One of the important features of TinyG is its ability to buffer up to 32 GCode lines at once, and interpolate cleanly between lines. For this to be healthy we need to keep the buffer decently full without dropping commands. To do this, our code subscribes to queue updates in an event loop and pushes GCode lines as long as the queue reports having room for them.
In the meantime, maxallen worked on the SVG-to-toolpath conversion, and agarwalv worked on the conversion of world-space points to rail-space points. This was all successfully integrated early Tuesday evening.
We tested the completed software capability with bare stepper motors and it appeared to work relatively well. Unfortunately, we were never able to test on the full-size machine, as during testing using direct serial control we determined that the drive pinion on one of the carriages was slipping with respect to the stepper motor shaft, rendering it effectively inoperable.
Software wasn’t the only thing I did on this machine; I also did some incidental tasks during the final assembly on Tuesday, including:
I only wish the final outcome were better.