Very simple and cheap mechanical aspects:
Three 12 volt battery powered drills provided X, Y, Z movement.
A cheap hand-held electric drill provided the cutting head. (Bargain on burning out three of these). A Dremel type tool - shown below - was tried initially but was too fast and eventually threw the bit through the window. (Bargain on replacing one window).
Wood rasp cutting head - up to 25 mm which allowed approx 10mm undercut.
Threaded rod lead screw, 10mm nuts, skateboard wheel bearings.
Particle board base, 40X40 RHS frame, 25X50 aluminium brackets.
Three magnet letter 'O's from a children's toy.
A tired 386 laptop.
Safety glasses - at all times - vacuum cleaner and broom.
Dick Smith parallel port interface kit controlling:
Analog output 1: XYZ motor power supply through a Dick Smith variable DC power controller;
Digital output 1..4: Power reverse polarity and XYZ on/off relay switches;
Analog output 2 and analog input 1..3: Hall effect XYZ rotation sensors;
Digital output 5: Cutting head on/off (240 volt appliance timer plug hacked into on its low voltage side);
Digital output 6: Signal light.
Elecromagnetic interference was a huge problem - the crackling motors and relays would swamp the hall effect signals. On trial runs the XYZ motors would drift by 50mm or more. The cumulative error would result in a collision between the XYZ carriage and the frame.
This was to solved with:
Capacitors across the motor terminals;
'Bean can' EMF shielding as well as coax signal cables;
Separate power supplies for the power (old car batteries) and signal sides of the system;
Stronger signals - hall effects closer to the signal magnet as well as a stronger North/South magnet signal rather than a North/Nil signal;
Ramping to full XYZ power only after relays had switched - good for relay life as well;
Software signal filters and more efficient - faster - software.
25mm slices, 144 off.
Save as a STL file
The software was the trickiest part of the build, but one that could be completed in the lounge, drinking tea and watching bad T.V. Software modules were as follows:
Read STL file, validate and normalise, remove duplicate coordinates, and pack into a single long integer - typically 20,000 points stored.
Drive parallel port - read and send appropriate signals to the Dick Smith interface.
Manage signals and XYZ motor instructions. Eg., filters, timing loops, power settings. These timings were critical because the programme worked in a simple linear fashion - no parallel processes and no interrupts. Thus processing and switching had to be completed quickly to allow incoming signals to be read. Moreover allowance had to be made for the interaction between the physical environment and the computer programme. For example, signals could occur because of motor overrun or motor stalling on a signal point. Lots of trial and error...
Determine movement geometries. Eg., to enable a traverse the cutter had to first move out from the job then up. Mssrs Pythag, Descartes and Trig .
Determine the tool path - actually a very simple collision routine.
Provide user displays, options and menus.
Generally the cutter was accurate to 3mm - more than good enough for polystyrene. It NEVER drifted even though each job required several thousand signals and several hundred relay operations. The software tool path was a little stupid and wood rasp cutter was a little brutal - but that's another story.
The most difficult part of the job was preparing the polystyrene blanks for cutting. To save money each blank had a rectangular centre cutout which was glued together with other cutouts and oddments to form the next blank. PVA glue proved best as it sands and cuts easily.
Each 25mm layer took approximately 4 hours to cut. YouTube video above (lo-res WMV)