Step 01. Safety in numbers - A Team of Three

The machine must be operated by at least 3 people at all times (One person to monitor the computer and send G-Code; the other person is closely monitoring the machine’s operation and a third to pour material). All people should be wearing protective goggles and gloves if necessary. All should understand what the machine is about to do and understand when something is going wrong. Establish your team first, then move on to the next step.

Step 02. Take Charge

Let everyone around you know that you are about to use the machine. This also includes verifying with your teammates that the material and the code is ready to operate or to be mixed. When you are in charge of the machine you must keep your eye on the machine’s operation, but more importantly, you must ensure that nobody “crosses the yellow CAUTION line” with their hands, cameras, or by leaning in. The yellow line must not be crossed while the machine is operating. You should also use the cheap yellow caution tape to tie-off an area that might not be safe.

Step 03. Physical Obstruction Check

Treat the machine with respect and always walk around the machine and inspect it visually before operating it. Look for anything that might be obstructing the machine. Are the tracks free and clear? Is anything crooked or seems strange? Are the Emergency Stops dis-engaged, visible and ready to use? Are the limit switches engaged and or in working order? After you have plugged in and turned it on you should double check that the micro-controller fan is on and that its power light is on too.

Step 04. Manual Collision Check

Before homing the machine make sure that your machine’s custom end-effector does not collide with the limits of the machine. You can move the gantry by hand in the positive and negative X, Y, Z directions to ensure no collisions will take place. If you realize there may be a collision you should manually adjust the limit switches with an M5 screw driver. The limit switches will stop the machine from crashing into itself!

Important Note: If you change the location of the limit switches then it is critical that you update you digital model!

Step 05. Digital Model Obstruction Check and G-Code Validation

Does the digital model match the size and orientation of the physical machine and location of its limit switches? Are all X and Y G-Code values positive (greater than or equal to zero)? Are all Z G-Code values negative (less than or equal to zero)? When you scan down through the G-Code – does it seem logical? Where will your print start and end?

Tip: In Grasshopper – use the Bounding Box (BBox) command to generate a bounding box around your final intended toolpath / 3d piped extrusions. Does the size of this bounding box exceed the limits of the machine?

Step 06. Drivers and Software

Please see this short blog post that covers installing the FTDI Drivers to communicate with the TinyG microcontroller; installing and configuring CoolTerm to send G-Code to the TinyG over your serial post (USB). You need to do this before moving forward!!

Tip: Open CoolTerm first, then plug the TinyG’s USB cable into your laptop. CoolTerm will identify the COM Port assigned to the TinyG in the lower left of the window. You then manually press “Connect” to initiate communication and begin sending G-Code to the machine!

Step 07. G-Code + Homing the Machine

A great TinyG G-code cheat sheet is here. Always start with the G28.2 command to send the machine’s end effector to its origin point. Homing sends the machine to it’s Z Min, X Min and Y Min locations (in that order) by triggering the limit switches. You should always be ready to hit the Emergency Stop button during this process. You should also manually double check that your custom end-effector will not collide with anything prior to activating the machine as mentioned in Step 4. To start the homing process you just cut and paste G28.2 code into the CoolTerm terminal. Your personal reminder notes (in brackets) do not get sent to the micro-controller.

e.g. G28.2 X0 Y0 Z0 (Home XYZ axis)

Note: The machine’s firmware has been coded to offset the home 2cm from the X Min and Y Min limit switches, and 1cm above the Z Min Switch. This ensures that the gantry has backed-off the limit switches so we can begin operation.

Method for Homing just one axis: Sometimes you may want to home just one or two at a time.

For Example:

G28.2 X0 (Home just the X axis)

G28.2 X0 Y0 (Home both the X and Y axis)

G28.2 Z0 (Home just the Z axis)

Step 08. Setting Absolute Origin at current “homed” location:

Next we need to tell the micro-controller that its current position is 0,0,0. Type this into the terminal and hit “Enter”.

G28.3 X0 Y0 Z0 (Set Absolute Zero to current location)

Now – if everything was done correctly - the current position of the end-effector is 0,0,0 and this should now match up with 0,0,0 in your Rhino / Grasshopper model space.

Step 09. Rhino / Grasshopper Units

For now the X and Y axis G-Code should be in CM (centimeters), while the Z axis is using millimeters(mm). The X and Y units should always be positive, while the Z units will be negative numbers.

Step 10. Preparing the Printbed

Do not print directly onto the larger provided print bed! I recommend that each team use a ¼” or 1/2“ piece of plywood wrapped in plastic as your print bed. Please feel free to experiment with heating the area around the print to speed up drying times.

Step 11. G1 Traverse with Feedrate Commands

For now we’ll be sending our end-effector from point-to-point-to-point using XYZ coordinates. A G1 command is the most common command in G-Code.

Here is an example that will move the gantry orthogonally:

G28.2 X0 Y0 Z0 (Home XYZ axis)

G28.3 X0 Y0 Z0 (Set Absolute Zero to current location)

G1 X10 Y0 Z0 F100 (Go straight to X10 at a speed of 100)

G1 X0 Y10 Z0 F200 (Go straight across to Y10 at a speed of 200)

G1 X0 Y0 Z-100 F100 (Go up 1cm at a speed of 100)

G1 X0 Y0 Z0 F50 (Cut diagonally across back to 0,0,0 at a slow speed of 50)

Here is an example that will move the gantry diagonally / directly to the point:

G28.2 X0 Y0 Z0 (Home XYZ axis)

G28.3 X0 Y0 Z0 (Set Absolute Zero to current location)

G1 X10 Y10 Z-100 F100 (Go to X10, Y10 and Z-100 at a speed of 100)

G1 X0 Y0 Z0 F50 (Cut diagonally across back to 0,0,0 at a slow speed of 50)

Step 12. Calibrating the Feedrate (F)

It takes a lot of trial and error to set the correct Feedrate. Each unique material and extrusion (augur) speed will demand its own unique Feedrate. Starting with a Feedrate of 200 (F200) is a good start point. I recommend that you print a few 20cm lines – back and forth on top of itself at least 4 times – to figure this out. You can also vary the Feedrate from the start to the finish. A slow Feedrate will release more material, while a faster Feedrate will release less material. For example almost all structures found in plants, animals and most (good) buildings vary the size and thickness of their components depending on their compressive, tensile or bending performance needs.

Step 13. Match the Z step height in Grasshopper with the extruded material height

Similar to calibrating the Feedrate, it takes a lot of trial and error to find the correct Z step height of your extrusions (this is essentially the height between layers). I suggest running the Feedrate test and Z Step height test at the same time. To establish the Z step layer height measure the height of the 4 layers you printed and divide that number by 4 to get your step size. There are more sophisticated ways to do this but this should be good enough for our low resolution architectural scale 3d prints.

Hint: To complicate matters further, most materials will shrink by a small percentage (sometimes as much as 5-10%!) as they dry (lose water). This can be simulated to a certain degree by using the Scale component in Grasshopper. Each material will shrink at a unique rate and %. Keep this in mind when you are doing multi-material prints, or you need your 3d print to interface or connect with other materials, objects or fasteners.

Step 14. Pause all motion for a few seconds

You may want to pause (also called “Dwell”) the machine to turn on an end-effector (extruder) or make last minute adjustments. The G4 commands makes this possible.

Here is an example of a 20 second pause in the middle of a move:

G28.2 X0 Y0 Z0 (Home XYZ axis)

G28.3 X0 Y0 Z0 (Set Absolute Zero to current location)

G1 X15 Y0 Z0 F150 (Go straight to X15 at a speed of 150)

G4 P20 (Pause / dwell the gantry for 20 seconds)

G1 X0 Y0 Z0 F50 (Return home to 0,0,0)

Step 15. Thinking ahead to the end of a print

When you are done your print you’ll want to move the extruder head away from your printed artifact in a rapid and controlled manner. Your last move might be a smooth rapid traverse line 4-5 inches away from your object. A lot of times you’ll drawing a tangent line up and away from your object – to open space - with 2X your current Feedrate. This final move will also make it easy to identify and turn off your attached extruder.

Tip: Your final move should NOT be to send the machines diagonally back to 0,0,0, or to Home the machine! Otherwise the machine could potentially collide with the print.

Step 16. Shared Clean-up

This is a group project. Everyone must help cleanup after a 3d print. Nothing should ever be unnecessarily left on the print bed, on the common tables, or in the circulation spaces. The space should always be cleaned and ready to continue printing on.