Introduction: Concrete 3D Printer
Structurally robust 3D printed concrete would be a formidable tool for designers and architects. In fall of 2014, my colleague Alan Cation and I created a mobile 3D printer that can print large objects in sawdust as part of our Master of Architecture studies at CCA. We decided that while sawdust was a really great material for testing our technique, we'd really rather be printing concrete. But in order to use our mobile 3D printer with concrete, we first had to understand a few things about how concrete behaves as a powder bed printer material.
Alright, put on your dust mask and boiler suit and calibrate your digital calipers, it's time to get dirty.
What you can expect to get out of this Instructable:
We're going to be creating a CNC machine, but you don't have to deal with any of the hazardous parts of CNC operation (read: no spindle). And since we're using a self built solution for controlling the machine, you get a real up close and personal look at how we turn computer geometry into gcode instructions.
- An in depth introduction into how powder bed printers work
Coming out of this, you'll feel like a 3D printing champ.
You'll get to walk all the way through the powder bed 3D printing process, from understanding the geometric constraints and possibility all the way to how to excavate your print without breaking it.
- The power to 3D print in Concrete!
While we focused on printing sculptural/structural/architectural objects, don't let our architecture bias limit your imagination! You could totally print cool pots and outdoor furniture and sand castles with this
Lastly, a word on our approach to teaching this technique:
While we're going to show you specifically how we got this thing to work, there's many ways to skin this particular cat (not that we condone the skinning of cats). Substitute, experiment and share what you find!
Step 1: CNC Hardware Setup - Items
This is a list of the things that are mostly necessary for the hardware setup:
Gantry - Alas, an important aspect to building a 3d printer is acquiring a gantry! We used a modified shapoko CNC machine in order to gain control. Here is a link on how to assemble the shapoko. We extended the gantry to have 4' x 6' aluminum rails.
Microcontrollers - As a microcontroller, we used arduino uno boards, both for the gantry control, as well as for the pump to deposit binding agent. The programming of the microcontrollers will be included later in the instructable. Shapoko also has information on how to setup the wiring for the motor controls, and it comes with one uno board and a stepper motor shield. The peristaltic pump will need its own uno board and motor shield. We also have a file for our 3d printed motor mounts.
End Effector - The end effector consists of a peristaltic pump with tubing, a nozzle, a 3' aluminum rail, and a reservoir for holding binding agent. It is possible to motorize the Z axis, however we found that it was faster for us to manually control the Z height in our printing process. We also have attached the .stl files for the 3d printed parts.
Print Bed - The print bed is an optional approach. We built one in order to have some degree of material containment, but it is not necessary to the print process to have one. We CNC milled plywood in order to construct our print bed. Here is what you will need if you decide to build one, otherwise, you can just rest the gantry on posts.
2 sheets 4' x 8' - 1/2" plywood
2 sheets 4' x 8' - 3/4" plywood
Step 2: CNC Hardware Setup - Assembly
The gantry assembly is very well documented in a link found above. As for the print bed, if you so choose to build one, the steps can be found in the drawings here. If not, it is possible to mount the gantry on 4 posts sticking out of the ground. The DXFs for the print bed can be found here. The Posts are the first things to assemble, then the frame, and the posts are added to the frame.
The binding agent reservoir and mount for the peristaltic pump are mounted to the X-axis of the machine, and the arduino boards are mounted to the Y-axis.
Step 3: Materials & Choosing Your Concrete Mix & Binder
You will need a ton of sand (literally) and half as much cement. You can get away with much less of these materials if you print smaller scale things. We used 1,000 lbs of sand and 500 lbs of cement in order to print 3 objects with a 2' x 3' x 1' volume.
We used a 30 grit fine aggregate sand and white cement for the majority of our prints with a 2:1 sand to cement ratio. We used this due to the fine aggregate sand, with a thicker aggregate you could use a 3:1 ratio.
The binding agent that we used was a soil hardener called polypavement, which comes in 5 gallon buckets. The polypavement takes effect with an evaporative process, so the concrete will set initially, and as it excavates, the polypavement makes the material even stronger afterwards.
It is also handy to have a plethora of 5 gallon buckets, as well as a tarp.
Step 4: Software (CNC Control)
Now that you've got your hardware and material requirements out of the way, it's time to make this CNC move.
If you've followed our recommendations so far, you've got a modified and extended Shapeoko 2 CNC machine with a reservoir and peristaltic pump strapped to it and ready to rock. Since we also need to control a peristaltic pump, and manually cut our layer heights for tool paths, we chose to use Rhino, Grasshopper and Firefly to run our machine.
The attached grasshopper script functions as a gcode "translator". It accepts surfaces and solid objects as input and turns them into a series of instructions for the CNC machine to follow. These instructions are simply coordinates and which the g-shield that drives the stepper motor then converts into signals that drive the stepper motors. WHAT A TIME TO BE ALIVE.
Download the attached files and take a look around. It'll be much easier to understand what's going on once we get rolling.
Step 5: Printing Process
So by now, you should have your machine built, materials mixed and software downloaded. Time to start slinging concrete.
The print process can be described as a repetition of the following steps:
0. Bed Setup
Before you get started, you need to take the overall height of the bottom of your bed (in millimeters) and input it into the script in the marked spot. If you want an explanation of why, read step two real quick then come back. Also, create a physical "origin" position to re-calibrate your machine from just in case your computer randomly crashes while you're printing. Trust me, you'll want to do this.
1. Add concrete and level the bed:
The amount of concrete you need to add depends on how big your bed is. We found for a 3'x2' print we were adding around 4 quarts of mixed concrete for a ~6 mm layer. In order get a good bond between layers, keep each layer below 10 mm.
Leveling the bed is a craft within itself. Practice makes perfect here. Just try to get it as close as you can. Smooth even motions work better than short choppy ones. Also, try varying the angle that you're sweeping out material.
We chose to use the angle of repose of concrete to retain our bed. If you're doing this, make sure you sweep material off the side of your bed each time you add more material in order to create more support for the next level of sand.
Set your origin point in grasshopper to a place clear of your print and leave it there until you're ready to do a height check.
2. Read your layer height & input it into the script.
Move the CNC carriage to the middle of your print (height check setting). Then, using a laser ruler (like this one), measure distance between the carriage and the top of your powder bed. Normally, in powder bed printing, the bed is precisely leveled by a machine after each layer, so the layer height is known. This number is then subtracted from the overall bed height and your current height in the model is found.
Since we are working at low resolution and large scale, we don't really need (nor do we actually have) that much control. So instead of matching our bed height to our model, we just match our model to our layer height! Brilliant!
Make sure you've got plenty of glue in the reservoir and let her rip. Set the machine to "run" and switch the toggle that stops the counter reset. Now sit back and watch as your machine does all the work for you. I find this is a good time to measure out more material for the next layer, put on new work gloves, make sure your dust mask is in good shape and contemplate the futility of existence.
4. Rinse & Repeat
Send your machine to the origin to get it clear of the bed and level the bed. Nice work! You're 3D printing in concrete!
A few general notes:
- Keep that bed level! Take your time, it'll make your life easier. While this printing technique is pretty forgiving, divots and any other aberration in the bed make the binder pool and spread out instead of penetrating directly down. It'll make your print prettier, I promise. See the video above to see how I did it.
- Make sure your design fits within the angle of repose of your sand. You'll save material and time if you plan ahead here. We've found the mixed sand/cement stands at about a 35-40 degree angle.
- If you mount a work lamp to the side of your bed, the shadows it throws can help you spot uneven spots easier.
Step 6: Excavation
Now that you've completed your print and you've let it cure for about 12 hours, you're ready to excavate it. Starting from the top, slowly scoop off unfixed concrete, carefully feeling for edges of the print. We found that small plastic cups were the best for excavating, as they were both soft enough to not damage a print and held enough concrete to be useful. If you let your print sit even longer it will continue to cure and gain strength. Conventionally mixed concrete generally gains it's full strength after 24 days, but this is far from a conventional mixture, so expect your print to be more like a weak plaster mix initially, gaining strength as the poly-pavement and concrete continues to cure.
If you've made it this far, nice work! Post your results and findings in the comments below and let us know how your print went.