Introduction: UltiFaker²Go 3D Printer
I set out to make a 3D printer about 3 months ago. I had been eyeballing designs like the Prusa i3 or a delta style printer but I wanted something a little bit more sturdy, less "hack job" looking, and a printer challenging enough to make it interesting. I decided to go with a "clone" of the Ultimaker²Go mostly because it's small enough that the side panels could be machined in my CNC router.
I also didn't want to do a direct clone. The Ultimaker²Go sells for a whopping $1600 and I wanted to keep the price around $500-$600. I decided to heavily tweak the design and components in order to drop that cost. This build requires that you have some sort of CNC router capability unfortunately unless you want to use 6mm birch plywood as the paneling (totally doable) and drill and cut the panels by hand.
Step 1: Design
Using the drawings for the existing Ultimaker 2 Go 3D printer as a template I created the entire printer in SolidWorks (I've included all of the SolidWorks files as well as STEP files) with the tweaks I deemed necessary in order to reduce the cost. The biggest cost cut comes from using the Ramps 1.4 controller and RepRapDiscount SMART LCD (total of about $40) with the open source Marlin firmware instead of trying to acquire the UltiMaker control board with the OLED display ($200+). I also went with an on-board power supply ($18.00) as opposed to the overpriced ($80) DC power adapter that comes with the printer. Total cost is less than $600 depending on the components you choose to include/exclude.
Step 2: Cutting
Side Panels
I chose to use 1/4" white acrylic for the side panels instead of the Dibond composite aluminum that UltiMaker uses for their printers. In small quantities Dibond would be more than triple the acrylic cost and would come in 4x8 sheets. That would be difficult for me to manage cutting. If you don't have a CNC machine there are a couple of alternate options. The easiest would be to purchase the panels from companies like AliExpress. A more difficult, but doable, solution would be to print out my designs 1:1 scale and stick it o the acrylic. You could use a router/dremel/band saw/scroll saw to cut out the features.
In order to generate the CAM cutter programs from SolidWorks I used a free program called HSMXpress. I highly recommend it if you have SolidWorks or AutoCAD. It's been flawless for me. There are other software packages like MeshCam that work great too. In total I had 6 acrylic plates to cut. The acyrlic cuts really well with a 1/8" o-flute or flat flute router bit. Be careful not to use an end mill bit designed for steel as the tightly packed flutes will fill with material pretty quickly.
For reference I cut the acrylic with a Bosch Colt router at 16,000 RPM,
50 feet per minute feed rate, and a depth of .050" per pass. Ideally acrylic should be cut with a much lower RPM and deeper passes but like I said my router isn't super sturdy.
Aluminum Plates
The aluminum was another story. My router isn't as sturdy enough as it needs to be so there was a TON of vibration and I ended up breaking a bit. I nursed it through though and got the Z axis plates cut after some messing around with speeds and feeds. The aluminum was cut at similar speeds and feeds to the acrylic but I took passes at only .005" deep. Took a long time :(
Step 3: Assembling the Frame
Bearings
Before assembling the frame you'll need to install the 688-2Z flanged ball bearings into the front, back, left, and right panels. Be careful not to press the bearings in too hard if it ends up being snug. You can easily deform these small bearings leading to really loud operation later. If it takes more force than some light taps with a mallet I suggest using a Dremel at low speed to expand the hole. My router wasn't calibrated properly and my holes were about a millimeter too small so the Dremel was key. If the hole ends up being too big you can put a dab of superglue or epoxy on the bearings.
LEDs
Apply the LED strips (if you want to use them) to the front panel in 3 segments. You'll have to wire the + to + and - to - with small bits of hookup wire. I went with the cool white and it looks great in person.
LCD Panel
Next, you'll want to install the RepRapDiscount Smart Controller to the front panel using the 4.5MM X 10MM X M3 standoffs and 4 M3 X 20 screws and 4 M3 nuts. It's easier to do this now as when the bottom panel is on it can get in the way. You'll notice that because of the way I designed this unit I ended up blocking access to the SD card socket. I really wanted the LCD to be centered on the front panel and look somewhat similar to the real UltiMaker 2 Go so this was the best option. You'll see later how I added a secondary SD socket.
Assembling the Frame
Continue by inserting the top and bottom panels into the front panel and use the M3 X 16 button head cap screws and nuts to attach them. Don't over tighten as acrylic can crack pretty easily. The back panel is next, followed by the left and right. Go through and verify that everything is suitably tight and continue to the next step.
Step 4: Assembling the Z Axis
The Z axis is made up of 1 aluminum support plate, 2 linear bearings , 3 springs, 3 knurled knobs, 3 screws, an aluminum bed plate, and a glass bed. This goes together pretty smoothly. Don't tighten the linear bearing screws yet however. You'll want to position the Z axis onto the 12 MM shafts before tightening to avoid binding.
You might notice in the picture of the Z axis that the front left screw has a washer on it instead of sitting flush in the countersunk hole. I accidentally drilled the countersink too deep. I'm going to remake this plate in the near future to fix that problem.
Step 5: Installing Components and Z Axis
Stepper Motors
At this point you can put the 5MM ID 20 tooth pulley on the X and Y shaft as shown and wrap the 200MM GT2 belt around the pulley before moving it into position. Both the X and Y axis stepper motors can be installed with the 8MM X 16MM X M3 standoffs, M3 washers, and M3 X 25MM cap screws and left slightly loose for final adjustment later. Make sure the wires are facing down out of the bottom of each stepper to make things look cleaner later on. Run the cables through the access holes in the back corners of the bottom plate. Use 4 more M3 X 25MM cap screws and washers to attach the extruder motor to the extruder assembly. Make sure the white feeder tube is facing up. Run the wires down the access hole to the bottom of the printer.
AC Plug and Switch
Install the AC plug using a couple of M3 X 16MM screws and nuts. I chose to super glue the switch into place as the 1/4" thick panel was a little too much for the switch to grab on to with its tension fingers.
End Stops
It's easiest to wire up your end stops before screwing them into place as their position isn't ideal for fiddling later on. I used spade terminals to attach the wires to the end stops but you can solder if you'd like. Attached the X and Y end stops as shown and run the wires down through the same holes as the stepper. Attach the Z end stop on the under side of the bottom plate as shown.
Power Supply
In order to save space I went with a slim 8A power supply. If you'd prefer you can go with a DC power brick external to the unit and just change the electrical connectors. After getting the power supply installed you can wire in the AC switch and the power plug to the supply.
Arduino Mega/Ramps 1.4 Board
Place the Mega roughly centered between the LCD and the power supply and mark 2-3 of the bolt hole locations with a pen or marker. After drilling the holes out with a 1/8" bit attached the Mega board with M3 X 16MM screws and nuts. Then you can slide the Ramps 1.4 shield onto the Mega. At this point you can wire the RepRapDiscount Smart LCD Controller to the Ramps 1.4 by either using the Smart Connector supplied with the LCD or like I did with Female to Female Dupont connector cables. You'll have to use a multimeter the verify which pins on the LCD go to which pins on the Ramps board but it only took me like 3 minutes.
After placing the Ramps 1.4 board onto the Mega make sure to install all of the stepper driver jumpers that came with your board. This will make sure your drivers us 1/16 micro stepping which is ideal for 3D printing.
Secondary SD Card Reader (optional)
I chose to install this secondary SD card (secondary to the one on the LCD board) because 1) I had blocked access to the RepRapDiscount Smart LCD card reader based on where I wanted to mount it on the front panel, and 2) I wanted to keep the ability to print items independent of my computer being attached. I attached mine with some 4.5 MM X 8 MM X M3 standoffs and M3 X 16MM cap screws and nuts.
Z-Axis
Slide the 12MM diameter Z-axis support rods through the base from below and position the Z-axis into place as you raise them through to the top. Next you'll want to install the linear drive Z-axis stepper motor by manually turning the shaft into the nut installed in the support plate. When enough of the shaft is inserted into the nut you can screw the Z-axis stepper motor into place with M3 X 8MM screws. When the stepper motor is locked in place you should slowly start tightening the linear bearings and lead screw nut into place as you move the shaft up and down. If it binds at any point you can re-adjust the components. If you can't remove the binding then remove one of the 12 MM support shafts and use a file to open the hole slightly. When you get it big enough to eliminate the binding then use epoxy to hold the shaft in position.
X and Y Axis Shafts
Using my CAD files as reference slide the shafts through the bearings in the side panels and insert the timing belt pulleys, carriages, and belts as you do. Make sure you also slide on the belts from the X and Y stepper motors. When everything is installed use belt tension springs as necessary on any of the 4 belts.
Step 6: Hot End
I decided to go with an E3D V6 replica hot end from eBay that had a nice Ultimaker compatible mount. I eventually plan on using this setup to make a more custom V6 mount with a servo and switch so I can do auto bed leveling. Unfortunately, when I purchased this hot end I didn't realize that the orientation of the bearings was 90 degrees off from where I expected it to be. In order to use this hot end on an Ultimaker 2 Go you have to remove at least 1 of the fan shrouds.
The hot end installs pretty easily. You'll need to slide either the X or Y shaft into the appropriate bearing and press it into the respective carriage. Then install the other shaft. Finally, install the bodwen tube and run the wires along it towards the extruder.
Step 7: Wiring
Wiring
See the attached diagram showing my particular wiring setup for this printer. I made some modifications to the pin.h files in the Marlin software to accommodate this setup so if you follow my lead you definitely need to use my firmware.
Power Supply
If you haven't done so already, wire the Neutral and Ground pins to the plug connector. Wire the Line to one side of the switch and wire the other side to the plug connector. On the 12V output side wire in the LEDs to the respective positive and negative and do the same with the input wires to the Ramps 1.4 board
End Stops
Reference the picture showing the + and - locations for the end stop wires. On my particular setup I went with the normally open terminals on the end stops and the X-, Y-, and Z+ plug orientation (as shown).
RepRapDiscount LCD
In order to wire the LCD controller to the Ramps 1.4 board you'll have to do a little reverse engineering. Unfortunately I didn't record this as I did it so I'll have to explain. Hook up the "Smart Connector" that came with the RepRapDiscount board to the to the 2 ribbon cables. Using a multimeter and the reference schematic included above map out which pins on the Ramps 1.4 side go to which pins on the LCD controller side. After you have that recorded just go pin by pin with Female to Female Dupont ribbon cable wire and connect them accordingly.
Hot End
The hot end will include 2 wires for the heater cartridge, 2 wires for the PT100 thermocouple, 2 wires for the V6 cooler fan, and 2 wires for the side mounted/shrouded fan. Wire the heater cartridge into the D10 pins on the board (orientation is irrelevant) and wire the 2 positive and 2 negative fan wires to the D9 pins. Wire the PT100 thermocouple into the MAX6675 thermocouple digital amplifier board.
MAX6675 Amplifier
The PT100 thermocouple reports temperature differences much differently than the traditional hot end thermistors and requires signal conditioning and amplifying in order for the Ramps 1.4 to read it. What you'll need to do is wire the GND terminal to any GND on the Ramps 1.4 board and same for the VCC (5V). SCK should be wired to the SCK (AUX-3 pin 5) pin. SO should be wired to the MOSI (AUX-3 pin 3) pin. Finally, CS should be wired to pin 66 on AUX-2 of the Ramps 1.4 board.
Stepper Motors
The 4 stepper motors should be wired up to their appropriate drivers. Don't worry about which orientation the plugs are in right now. You can swap it manually later or in the firmware during configuration. Trim any wires as necessary and put them inside of a wire sheath if you'd like.
SD Socket
The SD socket will wire up similarly to the MAX6675 as both of them communicate through SPI. Set the power switch on socket to 5V first. Wire the G terminal to any GND on the Ramps board. Connect a wire to the DO terminal on the socket and splice it in with the MISO (AUX-3 pin 3) wire from the MAX6675. Do the same with the CLK wire from the socket to the SCK (AUX-3 pin 5) wire from the MAX 6675. Connect the DI terminal on the socket to the MOSI (AUX-3 pin 4) terminal on the Ramps board. Connect the CS terminal on the socket to the SS (AUX-3 pin 6) terminal on the Ramps 1.4 board. Finally, because the new SD socket does not have an SD_CARDDETECT pinout you'll want to run a wire from the SD_CARDDTECT (AUX-3 pin 2) terminal to any GND terminal on the ramps board. This will convince the controller that an SD card is always installed and make the display read as such.
Step 8: Firmware Configuration
I decided on using the latest version of Marlin (1.1 RC3) with a number of modifications to work with my layout. I've included my Marlin files but I'll discuss my configurations below for reference. I highly suggest you use the software I've included as I've made a number of modifications specifically for this build.
Arduino
Download the latest version of Arduino and open the Marlin sketch in the Marlin-RC/Marlin folder in the attached .rar file. Click on the "Sketch" tab and then "Include Library/Manage Libraries". Search for LiquidCrystal.h and install the latest version. You'll need this library installed for the LCD to operate.
Graphics
If you use the same display as me you can modify the very basic logo graphics by going to the ultralcd_implementation_hitachi_HD44780.h tab and modifying some of the lines from 435 through 504 with whatever you want to call your printer. If you need help with this feel free to contact me.
static void bootscreen() {<br> show_bootscreen = false; byte top_left[8] = { B00000, B00000, B00000, B00000, B00001, B00010, B00100, B00100 }; byte top_right[8] = { B00000, B00000, B00000, B11100, B11100, B01100, B00100, B00100 }; byte botom_left[8] = { B00100, B00010, B00001, B00000, B00000, B00000, B00000, B00000 }; byte botom_right[8] = { B00100, B01000, B10000, B00000, B00000, B00000, B00000, B00000 }; byte exponent_two[8] = { //this creates a superscript 2 that's included in the Ultifaker2Go logo below B00110, B00010, B00110, B00100, B00110, B00000, B00000, B00000 }; lcd.createChar(0, top_left); lcd.createChar(1, top_right); lcd.createChar(2, botom_left); lcd.createChar(3, botom_right); lcd.createChar(4, exponent_two); lcd.clear(); #define TEXT_SCREEN_LOGO_SHIFT ((LCD_WIDTH/2) - 7) #define TEXT_SCREEN_LOGO_SHIFT2 ((LCD_WIDTH/2)+3) #define TEXT_SCREEN_LOGO_SHIFT3 ((LCD_WIDTH/2)+4) lcd.setCursor(TEXT_SCREEN_LOGO_SHIFT, 0); lcd.print('\x00'); lcd_printPGM(PSTR( "------------" )); lcd.print('\x01'); lcd.setCursor(TEXT_SCREEN_LOGO_SHIFT, 1); lcd_printPGM(PSTR("|UltiFaker")); lcd.setCursor(TEXT_SCREEN_LOGO_SHIFT2, 1); lcd_print('\x04'); lcd.setCursor(TEXT_SCREEN_LOGO_SHIFT3, 1); lcd_printPGM(PSTR("Go|")); lcd.setCursor(TEXT_SCREEN_LOGO_SHIFT, 2); lcd.print('\x02'); lcd_printPGM(PSTR( "------------" )); lcd.print('\x03');
Configuration.h
The configuration.h tab within the Marlin sketch is really the only other location where you will need to make modifications if you want to change things like default steps/mm, speeds, bed leveling, end stops, direction, etc.
If you want to change the name of your printer you can modify line 78.
#define CUSTOM_MACHINE_NAME "UltiFaker2Go"
If you plan on following my build exactly then by all means use the identical Marlin-RC files I'm attaching to these instructions. If you haven't used Marlin before and want to make some modifications I would suggest following a guide like this one.
Attachments
Step 9: Startup
Power on your printer and verify the the LCD turns on, properly displays your logo, and continues to the status screen. If everything was wired correctly your printer should be working. Download the attached gcode file and pit it on an sd card. You can run this file and use it to calibrate your printer. It will home your machine and then raise it to the nozzle height at a series of predetermined points. You can adjust the knobs on the bed to set the appropriate gap. From this point on you can reference any 3d printer setup and use videos or documents to get you moving.
Happy printing!

Runner Up in the
Full Spectrum Laser Contest 2016
69 Comments
3 years ago on Step 9
So, I also took a very similar approach, but am a bit confused. Ultimaker publishes everything about all of their printers on GitHub, including the 3D models, assemblies, etc. You said you recreated them in SolidWorks. I basically just imported them into Inventor with HSM without recreating them. Yes, I made my mods and CNC'd my own panels too. What I found is that yeah, you can do it, but much cheaper and easier to buy pre-CNC'd UM2 panels from AliExpress and make add-on 3D printed components for the mods. I also made the same mistake with the aluminum E3D mount that was built for the Ultimaker Original, that was quite frustrating. Also, for those wondering about downsides in 6mm birch ply. I did this too. You always want to ensure you have 'flat' and not warped ply when you start, however because of the design and how it all comes together and it more or less self aligns itself with regards to being square and true. Very very brilliant design. Some mentioned that I needed to worry about humidity or damp environments with wood, but haven't had a problem. If you look at the Ultimaker Original, it is laser CNC's out of 6mm birch too.
4 years ago
Hey, how did you strap belts?
6 years ago
great' i am building a 3d printer from scratch , want a big build area i was about to buy parts for an ultimaker 2 extended clone i realised that ultimaker gantry has too many parts and is expensive so i decided to build a corexy printer
7 years ago
Hi PaulSS,
Great instructable, really inspiring, thanks for sharing. I am super keen to have a go at building your machine. Do you consider there to be any downsides to making the chassis from ply instead of acrylic. Also if you were to build it to have say a 200cm^3 print area would you increase the thickness of material for the chassis?
Could you add a few pictures of things you have printed with the Ultifaker?
Thanks!
7 years ago
Hi Paul, great instructable!
Could I ask you to also do an 'ible on your router? I love it and would like to build something like that once my garage is a bit cleaned out.
Reply 7 years ago
A lot of people have asked me to do an instructible on the router table but I never really documented the process when I built it. Perhaps someday when I rebuild it or upgrade it I'll write one up. Make sure to follow me.
7 years ago
Hi,
Many thing to have explaine this project.
7 years ago
Hi Paul,
Awesome job, Currently replicating your design in wood.
See early prototype of outer casing, The collage effect was from using scrap wood I do a lot of laser work kinda looks cool:-)
https://www.dropbox.com/s/egl839go9l70fhl/20160727...
Also Plan to add Hot plate
https://www.dropbox.com/s/7vqkz6p9w614hev/20160727...
I ordered these two items
32 UM2GEAR UM2 FILAMENT DRIVE GEAR ROBOTDIGG $ 2.50 1 $ 2.50
33 625ZZ FILAMENT DRIVE GEAR BEARING ROBOTDIGG $ 4.00 1 $ 4.00
The Drive Gear does not fit the internal arm the bearing ID is only 5mm and the post that is should be set on is 8mm.
Any help would be appreciated.
Thanks
Nick
Reply 7 years ago
Looking great!!! Please keep me posted on how well your hot plate works and how you made it. I'd love to add that to my printer.
Concerning the bearing I think I had the same problem. The bill of materials from UltiMaker specified the 625ZZ but you're right, it's a 5 mm ID. I ended up buying a 688ZZ bearing and that worked for me. I must have forgotten to change the BOM file. Sorry about that.
I purchased this one from Amazon.
https://www.amazon.com/gp/product/B002BBCM66/ref=oh_aui_search_detailpage?ie=UTF8&psc=1
Reply 7 years ago
Hi Paul,
Checked this out on amazon and order a new one, I noticed that it was not a VGroove is this what you used and have you had any performance issues with just a standard flat bearing. Do you know of
Hot Plate:
Which I could take credit for the hot plate:-(
http://www.ebay.com/itm/262375406045?_trksid=p2060...
I have not cut the aluminum but have prototyped on Foam board. Plan is to change the drill pattern on the Z Support and add the hot plate directly. The hot plate has 4 m3 screws that come 15 mm out of the bottom on the corners. This makes it real easy. I will the put the Borsolite plate on top. Obviously will not be using the Acrylic Plate in your plans.
Best Wishes
7 years ago
how can i find the kind of power supply you used here?
Reply 7 years ago
http://www.amazon.com/110v~220v-Transformer-Universal-Regulated-Switching/dp/B01227V7G4?ie=UTF8&psc=1&redirect=true&ref_=oh_aui_search_detailpage
Reply 7 years ago
thanks!
7 years ago
Being a newbie to £D printing, I presume that the 4 stepper motors are X, Y, Z and resin/fibre feed. Re: Heater and sense, is this controlled by the Ramps ?
I have acquired two wide format printers, one is an electrostatic one, the other, I believe, is a plotter rather than a printer. I envisage turning the plotter into the X-Y table mechanism (as opposed to X being paper feed, and Y being the pen position., with a "jog" movement on the Z axis. Does this seem reasonable, or am I missing something fundamental ?
Reply 7 years ago
Well for a plotter all you really need is 2 stepper motors at a bare minimum. The two obvious ones are X and Y. For the pen or pencil up and down motion you could either use a stepper motor with a screw drive or just use a simple short throw solenoid. If you want to see a cheap plotter build stay tuned for my next Instructable. I'm making a portable wood Tic-Tac-Toebot. It will be an X/Y/Z plotter stuffed into a collapsible carrying case that will be able to play a user in tic-tac-toe. It will use the X and Y travel to move the play field around and a solenoid to press the buttons.
Reply 7 years ago
I want to convert the things into a single 3D printer. I hope to use the same electronics that are in the plotter, for X & Y, then add a Z-axis control, and the pen-down solenoid drive to enable the stepper drive for the fibre feed. Is onoff sufficient for that, or do they need variable feed ?
Reply 7 years ago
The X and Y movement with your existing equipment might be simple enough. Obviously you'll need a Z axis stepper for up and down movement. Unfortunately you'll need another stepper for the material feed (extruder). You need pretty accurate control in order to achieve a good print.
Reply 7 years ago
Ditto for temperature I presume. Thanks for your input.
Reply 7 years ago
Yes, you are correct. However the temperature control for the hot end is pretty inexpensive and simple. It's just a 25 Watt heater running on 12 volts. A thermocouple reads the temperature and shuts the heater on and off to maintain a constant preset temp.
7 years ago
could a dual print head be incorporated in your design . Keep up the good work.