Select your entertainment

> Make your own comic

Strip Editor | GTA online | 3D Pinball | 3D Printer | Carputer | Software | Films | Features

3D printer

Fab@Home: I'll replace this with a picture of mine when I get that far What is it?
A rapid fabrication machine, it creates real-life 3D objects from a computer model.

For quite a while now I've wanted to create a machine that could construct real-world 3D objects. It seems like a good fit for my love of computers, writing software and making things.

After looking into this there are companies that already do this and people who've already made their own.

I write design and create software for a living and many times people see that I've written a source control system a code generator or something else that already exists in the commercial and open source arenas. They say to me "Why are you making it yourself? It already exists?".

The answer is because by building something yourself you learn about so many things you'd have never come across if you'd just used an off the shelf component or pre-built piece of software. My desire to understand things so that I can make them myself has given me a wide and deep understandings of many technologies that I just wouldn't have gotten if I had spent my career building software like it was a piece of flat pack furniture.

With all that in mind, here's me learning about what it takes to build a 3D printer of my own...


16th September 2007: Automation

A digital 7 day timer plug, a 24 hour analog plug and a remote control plug

Outside lights controlled by the digital timer plug

Robotic servents
I'm not a lazy person, but where possible I dislike performing tasks that could be automated. Perhaps that's what has pushed me towards a software career spent writing software that makes peoples lifes easier by helping them perform tasks much quicker and more easily than they could do done manually.

I also enjoy automating real-world devices, as they are many things around the house that can be taken care of automatically. For example I have a old FM radio wired up underneath my bed connected to a 7 day digital timer plug. I've programmed it to turn on every work day morning (Monday to Friday) between 7am and 8:30am. This then wakes me up every work day without having to worry about setting an alarm clock.

If you look at the top picture shown on the right you'll see three different types of plugs. The two timer plugs are designed to switch on/off some low powered outdoor lights I have installed on my decking. This means when it gets dark these lights automatically come on, so if I go outside everything looks all nice and fancy.

I also have radio controlled remote control plugs installed in my living room, these are connected up to uplighters and other types of lights. These enable me to turn on and off the various lights in the room from a remote control. This means I don't have to walk over to every single light device in my living room when I want it turned on and off.

Because it's so easy to turn these lights on and off it means I use them much more than I otherwise would. It also means that all I need to worry about is what I want to achieve, not how it will be done. Hopefully that's a not too clumsy way to illustrate that the robotics of the 3D printer are a way to me to more easily and accurately create 3D objects. I *could* make the same objects it will create by hand, but the robotic printer will allow me to do this more easily.

Building materials
I went down to my local DIY centre to look at materials so see what ideas would come to mind. I saw many things that I know I could use to construct the 3D printer device, but the problem is that even with the raw materials available I still need to source the various cogs and other parts that will make up the device.

Because of this I'm considering paying a visit to my parents house to see if they still have the various Lego and Technics I used to play with as a kid. By using these building blocks I'll be working with a material I have lots of prior experience with, plus it'll allow me to more quickly change and adapt the device as I work on it.

Also Technics have lots of gears, cog and other moving parts build into it, so I'm hoping this will be a perfect fit for this project. Perhaps once I've prototyped it I'll be able to build a full scale device from wood and metal, but I think for now this is the best way forwards.

8th September 2007: Steppers are stepping

Wiring up and controlling the stepper motors through software

The stepper motors work!
Now these things took some fiddling as I had no idea what the wiring combination needed to be to make them work, but luckily the incorrect wiring combination can't damage the motor. After quite a bit of playing around, the motors suddenly started working :)

That's the short version of the story... I don't really want to re-live the experience of messing around with those things

These two stepper motors want a 3V input, so I headed down my local cheap shop and picked up a regulated transformer with multiple voltage outputs. I've snipped the adapter off the end of the transformer and wired it up to power the two external inputs for the digital outputs of the MAKE application board.

The transformer can only managed 500mA in current, whereas the two stepper motors are rated at 1.7A. Now I'm still getting to grips with electronics, but I get the feeling this will put the transformer under a fair bit of strain. As it was cheap I'm going to see how long it will last, but I think I'll need to invest in a higher quality and more flexible power supply in the future.

The next steps
Now I have the basic electronics for this project, the MAKE controller, servos and two stepper motors. From these components I should be able to build my 2D then 3D printer system. The next step now is to design and build the printer rig, the actual device that the motors will move around to print.

I'm away for a week now on a narrowboat holiday, floating about the waterways of Wales. It should be most relaxing, a nice break from the world of software that usually makes up my working week. I'll be taking my notepad with me so if I have any good ideas, I'll be able to put them into action when I get back.

7th September 2007: Servos are serving

A short video showing the software I wrote to control the servos

Servos and stepper motors arrived
My two eBay robotics purchases have both arriveds, thanks to both of the sellers for the prompt delivery of these items :)

The video to the left shows the servos I purchased working, with the power of the MAKE Controller it took me about five minutes to write the software you can see in the video. It really does make it terribily easy to control the servos through software.

In the video I've wired them up so that as I moved a slider control the servos react in real-time and move through the 180 degrees of movement.

I've also got my two stepper motors which are very big and heavy! Hopefully this means they have a lot of muscle to them so they'll have no problems moving around my 3D printer machine.

Steppers motors are very new to me, so I've been hitting Wikipedia to learn more about them. I know that the MAKE Controller supports them and I know they are used in printers, which is why I bought them. But now I need to fully understand them so that I can make use of them in this project.

2D printer thoughts
I was out shopping earlier today at Woolworths with my girlfriend, we incedently bought a digital radio for the kitchen which I'm quite pleased with! Whilst I was there I noticed in their stationary section they have a package containing about 30 different colour pens. I saw this and thought about a daisy-wheel style printer design - but with a different coloured pen on each petal of the daisy-wheel.

I think that a 2D printer that uses coloured pens would produce some unqiue looking creations :)

3rd September 2007: Locomotion

Servos from eBay

The MAKE Controller supports up to four servos. I originally bid on a collection of four servos, but I lost out, so instead I bought these three on a buy it now.

Stepper motors from eBay

Although the MAKE Controller only two stepper motors, which is a shame. Thankfully I found and won a pair of two motors, they are used, but look to be in good condition.

I got them from eBay
The next stage of my 3D printer project is putting together a rig with motors and servos to move the various parts of it around. So I hit eBay to get the stepper motors and servos for this project. Servos are pretty easy to get hold of because they're used in lots of model hobbies. I think they'll be really useful for the small mechanical movements needed in the 3D printer.

The stepper motors will position the printer head on the X and Y axis. You see they allow for powerful and precise movement, which is perfect for this type of application. They're a little harder to get than servos and more expensive. But then they're more complex and powerful devices.

Once these two packages arrive I'll be making a visit to my local DIY store to see what jumps out at me. For a project like this I don't like to plan ahead too far, instead I like to emerse myself in ideas and possibilites. At the moment I imagine I'll buy some wood and just screw it all together.

2D printer before 3D
To begin with I'll be making a 2D printer, rather than 3D. This will require 70% of the work that a 3D printer will need, but without the more complex remaining 30%. So initially I'll create more of a plotter device, that will move some type of printing medium above a piece of paper or other type of media.

It'll also be easier to write the software that will analyise the source image passed in to be turned into a movements for the 2D printer. I've recently been playing around with per pixel operations in C# - which will make it easier to write the software to drive the 2D printer.

Printing methods
I'll also be able to use this stepping stone stage to experiment with various printing methods. I'd really like to produce a device that can create coloured products. If I can create a colour 2D printer it will put me into a very good position to carry along that knowledge into the 3D arena.

21st August 2007: C# Programming

I write a little C# program to control the MAKE Controller

Fixing MakeControllerOsc.dll
As soon as I got the MC I really wanted to start writing my own programs and start creating stuff. But when I first started using the MakeControllerOsc.dll in my C# projects, it just wouldn't connect to the MC over USB.

Using .NET Reflector I picked through the DLL and found that when Open() was called it called a private method that checked in the Windows registry for COM ports then scanned through them looking for the MC signature. I guess that for some reason this wasn't working correctly.

So what I did then was first realise I had a copy of all the source code for the MakeControllerOsc.dll and that I didn't need to play about with Reflector :)
Then I created another copy of the Open() method, but this one expects a parameter sCOMPort which allows the COM port containing the MC to be specified in the code.

With this some addition I re-built the DLL and referenced it in my test C# project. With the new DLL in place I ran my test project and... it worked! :) I can now control the MC through my very own C# projects!

I know some other people have come across this same problem, so I'm putting up this slightly altered version of the file for other people to use.

Download modified MakeControllerOsc.zip (7KB)

17th August 2007: Babel fish

I rip apart an electric screwdriver to wire up its motor into the MAKE Controller

My Make controller arrives!
Considering my order from America was being shipped as FedEx International Economy I surprised to find it had been delivered yesterday! Thanks to my parents for accepting the delivery, as nobody would have been home at my house :)

The first obsicle I faced was getting Windows to see the device. I plugged it into my Windows Vista laptop, but it couldn't find any drivers for it. The Make controller didn't actually come with any software, just a piece of card telling me to goto a website. I guess that way they don't have to worry about the software becoming out of date, but it made things a little more confusing.

Once at the website it took me quite a while to work out what files I needed to download! I guess they expert you to be an uber-geek and know exactly what you're doing :) After a process of trial and error I managed to grab a ZIP file than contained the files needed to get the Make controller working under Windows - except when I tried it Windows Vista gave an error whilst installing.

After even more Googling I found that you need to edit an .inf file in order to install the Make controller under Vista. So then finally I was able to get Windows to recognise the device!.

Making it do something
I downloaded a program that lets you send commands to the Make controller via it's USB cable (which thankfully also powers it). Communication with the MC (Make controller) is performed using OSC which means most programming languages can interact with the device.

To test the MC I send the following command /appled/0/state 1 which tells it to turn the first LED on, which it did! :) I was able to make things happen in the real world from typing things into my computer! Very cool...

Next I typed /appled/0/state 0 which as you may have guessed, turned the LED back off. By changing the X value in the command (/appled/X/state 1) you can set which of the four LEDs is being controlled.

After that I fancied connecting up one of my own devices, so I ripped open a cheap cordless screwdriver I bought for £3 a week ago and wired up the motor. If you watch the YouTube video you'll see a brief step by step run through of what I did to connect up and drive the motor.

I connected it up to a digital output of the MC which then allowed me to set the speed and direction of the motor. To get the motor spinning at max speed I send /motor/0/speed 1023 which tells the MC to drive the motor attached to the first digital output at full speed. Sending /motor/0/speed 512 then tells it to slow to half the maximum speed.

By sending /motor/0/direction 0 its also possible to reverse the direction of the motor by reversing the polarity.

With these digital outputs the MC allows control over the voltage being pushed out. This means it could be used to control a variety of devices. From motors, to LEDs and other types of lights.

3rd August 2007: Pre-genesis

The Make controller

The Make controller, the basis of many electronic projects.

Building a builder
This project will present me with a unique set of challenges, from physics problems in the real world to writing the software to make all the magic come together. However for now I'm looking towards obtaining all the equipment I'll need to make this happen.

The Make controller
It's used in many electronic projects to provide a way for inputs from sensors to be read and then commands given to devices (like motors). I've ordered one of these devices, but it sounds like it won't get here for a while which will give me time to think about other areas of the project.
My plan here is to use the digital outputs to control two stepper motors to control the 3D printer move on the X and Y axis. It seems that I won't be able to control a 3rd stepper motor with the Make controller, but I'm planning to build a simpler motor control to move the printer head in the Z direction.

Initially I plan to gather stepper motors from floppy disk drives, as they'll be cheap to obtain. But if these don't have enough power (which it likely) then I'll have to purchase some new ones. A stepper motor provides movement just like a standard motor, but it can be given commands to move it very accurate amounts. They're used in many (2D) printers to move the print head across the piece of paper.

My friend Ian Ball sent me a link to an artist who is selling some 3D models designed by him and then created by a company who deals in fab. This really shows what I'm aiming for, a system that will allow a 3D model to be created in a piece of software like Blender, which can then be feed into my system so it can create a real-life 3D model of it. Who knows, perhaps I'll be able to go into business allowing people to e-mail me their 3D computer models which I'll print out and send back to them in the post :)

A coloured 3D model

This piece was created by Z corp and really shows the difference colour brings to a 3D model.

Addictive or subtractive
When a sculptor models from a block of ice or marble, they start with a large rectangular block and then slowly chip bits away until they are left with the sculpture they desire. Other sculptors instead start with smaller building blocks, like pieces of metal and then slowly join them together to create something new.

I'm wondering at the moment which approach would work best for me. Should I start with a large piece of polystyrene and remove parts or create something from scratch by using something like wax.

By using molten wax it may be possible to attach an RGB (Red, green, blue) ink injector to the wax nossle head. This would mean I could create colour models, which would be pretty cool! :)

White resin is a material I've seen used by other people, which like wax can be applied as a liquid and would set as a solid. Whatever material I use I'd like it to be cheap and safe.
A concern I have is how will the 3D printer cope with unstable designs? What will stop the 3D object falling above as it's being constructed? I suppose it could be attached to a solid base to hold it steady while it is being created. Although this wouldn't prevent weaker parts of the model from falling off.

Perhaps a solution would be to create a 3D wax model underwater. This would cool the wax whilst also providing support for the 3D structure as it was put together. Doing this would require that the container for the water doesn't get in the way of the 3D print head. It would require planning up front, but it could solve a few potential problems of the wax approach.