Week 07: Diving in and using the Serpentine 2.0

The Serpentine 2.0 3d Printer's first 3d concrete print on 10/9/2015 at CCA San Francisco.

The Serpentine 2.0 3d Printer's first 3d concrete print on 10/9/2015 at CCA San Francisco.


The Serpentine 2.0 is shared resource for the Creative Architecture Machines studio. You should treat it like a new puppy (He is cute, cuddly and fun, but also prone to accidents and running into the street!). If you see a small problem with the machine – for instance if something comes loose - please try to fix it. If something is very wrong – for instance if you see or smell smoke – please warn your colleagues by posting a sign and sending out a group email!

Posting images: Share the daily trials and tribulations of the studio to social media sites like Instagram, Facebook, Twitter etc. If you do so please use the hashtags:

#creativearchmachines #cca #digitalcraftlab 

You should always do your best to credit folks and ask permission if you are posting images of people’s faces. 

Step 01. Safety in numbers - A Team of Two

The machine must be operated by at least 2 people at all times (One person to monitor the computer and send G-Code; the other person is closely monitoring the machine’s operation). Both people should wear protective goggles and gloves if necessary. Both people 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. 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

Always walk around the machine before you use 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? After you have plugged in and turned it on you should double check that the micro-controller fan is on and that it’s the power light is on too.

Step 04. Manual Collision Check

Before homing the machine make sure that your machine’s custom “end-effector” (aka print head and material augur and/or container) does not collide with the limits of the machine. You can manually (by hand) move the gantry 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?

Hint: 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!!

Hint: 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” (aka print head) to it home base. 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. 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.

G28.2 X0 Y0 Z0 (Home XYZ axis)

Note: The machine 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.

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 MM (millimeters). The X and Y units should always be positive, while the Z units will be negative numbers. (We may change this in the future.)

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 fancier 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 / augur.   

Hint: Your final move should NOT be to send the machines diagonally back to 0,0,0, or to Home the machine!

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 to clean and ready for the next team to print, for classes to meet, or for visitors to walk through.

What else did we miss? Send me an email to add/subtract/clarify or make suggestions! jason@future-cities-lab.net  and mshiloh@cca.edu

serpentine 3d printer creative architecure machines cca 10102015 -2.jpg