This is Part 2 of the Loom Printer assembly documentation. It will cover the fabrication and assembly of the machine frame and the conveyor module that allows for "infini-printing" objects of arbitrary length.
Step 1: Print the Build Belt
The Loom Printer's belt is printed in two parts, first on a conventional 3D printer, and then the belt is finished on the Loom Printer itself.
Using your printer of choice, print the "belt3 90mm.stl" file with one single shell at between 0.2-0.3mm layer height. If available, use continuous or "spiral vase" printing mode to avoid a seam. Using Ninjafelx Semiflex, I found 245C and ~60mm/s to work well on a Replicator 2.
Set the belt aside for installation in the following steps.
Step 2: Laser-cut and Assemble the Conveyor Module
Laser-cut acrylic parts:
- 1x "back plate.dxf"
- 1x "spanner plate.dxf"
- 1x "motor mount plate.dxf"
- 1x "cantilever arm A.dxf"
- 1x "cantilever arm B.dxf"
- 1x "idler bar.dxf"
- 2x "corner braces.dxf"
Fasteners can be secured from McMaster Carr or BoltDepot.com.
- 1x NEMA 17 motor
- 1x 101 tooth GT2 timing belt (part number A 6R51M101060)
- 1x 8mm bore 20 tooth GT2 timing pulley
- 1x 5mm bore 20 tooth GT2 timing pulley
- 1x 8mm hardened steel shaft, 220mm (cut to size)
- 1x 8mm hardened steel shaft, 200mm
- 6x 8mm bore 12mm OD flanged bearings
- 2x M3x8mm socket head bolts
- 2x M3x16mm socket head bolts
- 4x M3 washers
- 4x M3x25mm socket heat bolts
- 2x M3 nuts
- 5x M5x12mm socket head bolts
- 1x "motor standoff.stl"
- 1x "belt tensioner.stl"
- 1x "belt3 90mm.stl" (from previous step)
- M5 tap
- M3 tap
- Acrylic glue
Laser-cut the module frame from 1/4" acrylic, tap the M5 pilot holes and the M3 pilot holes. Assemble, clamp, and glue the conveyor frame following the images above. Install two flange bearings in the holes in the cantilever arms. Next, assemble, clamp, and glue conveyor spanner plate to the idler bar, ensuring that the two are square to each other. Once the glue has cured, install the printed belt tensioner following the images above. Install the flange bearings in the tensioner, conveyor frame, and the motor mount plate, making sure that all of the flanges are facing inwards. Thread the GT2 timing pulley onto the 200mm long 8mm shaft and mount the 5mm bore GT2 timing pulley to the stepper motor shaft, oriented so that the set screws are furthest from the motor face (see above).
Installing the belt is challenging (this module needs a redesign). With the motor secured to the motor mount plate, the belt tensioner tightened all the way, and both 8mm shafts set into the idler bar bearings, slide the printed belt over the two 8mm shafts. Loop the GT2 drive belt over the pulley on the 8mm shaft and secure the end of the drive shaft in the bearing in the motor mount plate. Next (this is the hard part), slot the spanner plate into the motor mount plate slots and secure the second 8mm shaft in the second bearing in the motor mount plate. Install this assembly into the cantilever frame following the images above, slotting the ends of the 8mm idler shaft into the two receiving bearings in the frame. Use two M5 bolts to secure the conveyor assembly to the cantilever arms and use the remaining three M5 bolts to secure the completed module to the frame.
Step 3: Laser Cut and Assemble the Lower Frame
You will need to laser cut the following parts from 1/4" acrylic:
- 4x "corner brace with hole.dxf"
- 4x "corner brace without hole.dxf"
- 2x "frame foot.dxf"
- 1x "left frame plate.dxf"
- 1x "right frame plate.dxf"
- 1x "rear frame span.dxf"
- 1x "tape feed corner brace.dxf"
- 2x "tape feed foot.dxf"
- 1x "tape feed mount plate.dxf"
Before removing the protective film for the acrylic, tap all the M3 and M5 pilot holes, then remove the film. Using the gantry to ensure that everything is square, clamp all of the pieces together and glue with acrylic cement. See the CAD and the above orbit of the lower frame for assembly reference.
The tape feed assembly supported an experiment in feeding a long roll of 6" blue painter's through the machine as a continuous build surface. As the tape wound around the drive shaft, however, the radius of the drive shaft increased, inducing growing errors in effective layer height. Ultimately, I tabled this approach, but include the module as it serves as the machine's rear legs and might be of use to others.
Optional spool holder:
- 1x "spool holder.stl"
- 1x "spool holder lock ring.stl"
- 1x "spool holder handle.stl"
Step 4: Install the Electronics
Installing and setting up a control board form a 3D printer is a pretty well documented process. I used the RAMBO board running Marlin. I've attached my configuration.h file for a quick start as well as printed standoffs for mounting the board to the frame.
Step 5: Run Beltbuiler.py Script to Finish the Belt
Once the conveyor module is in place and the electronics are wired up, install Jack Minardi's MeCode library and configure the attached python script to the width of your belt and the spacing of the crosshatching extrusions that you would like. Use the same filament (or not) that used for printing the first stage of the belt. Align the conveyor assembly to the nozzle (using the three M5 bolts that secure the conveyor module to the frame) such that the nozzle is a constant 0.2-0.4 mm distance from the belt across the X-span and is depositing material onto flat part of the belt (ie, after the belt has moved past the idler roller). Adjust the settings in the beltbuilder script if you require a more solid or more sparse cross-hatching.
Step 6: Print Without Bound!
While the hardware is a solid proof-of-concept, there is still much to be improved and the system requires a non-orthogonal slicer. My original (flawed) hypothesis was that a user could perform a series of linear transformations upon an STL, run it through a conventional slicer without any major modifications, and that during printing, the machine would effectively apply linear transformations equal in magnitude, but opposite in direction to "unwrap" the part and compile it with the as-designed proportions. This proved more difficult than anticipated for applying linear transformations to an STL is likely of equal difficulty to writing a non-orthogonal slicer.
I hope that by making this hardware platform available (albeit almost two years after its original completion), the open course community will continue to iterate on the concept and take it further.