Introduction: Ultimaker Original Heat Bed Upgrade
This is a project I experimented with recently and I am writing this instructable so as to hopefully help anyone thinking of doing this themselves over a few pitfalls I experienced. That being said, while my field of study is electronic engineering, I am only an undergraduate so if I have made any obvious mistakes or miscalculations please let me know. In recent months I have been using 3d printers more and more. The ultimaker original was always my go to printer however once I started using other printers that included heated beds I realised that the standard ultimaker I had been using was being severely limited by not having one. I did consider the option of using the heat bed upgrade kit that ultimaker sells but it is quite expensive, for my budget anyway. However I also discovered that there seems to be a lack of information online on how to do this upgrade yourself. I ended up needing to compile quite a few snippets of information from various forums and blogs before I fully understood the task I was undertaking. That being said the official manual (available here: https://ultimaker.com/en/resources/249-assembly-manual) was a good starting point.
Having a heat bed is useful for a number of reasons. Firstly, and in my opinion most importantly, it helps in preventing warped prints. Warping occurs when there is uneven cooling of the printed part, which is of particular concern when we talk about the first layer. When the printer puts down a layer of plastic the plastic is obviously initially very hot. It immediately starts cooling and thus also contracts a small amount. This in itself is often enough to make the plastic become loose on the print bed, which I found to be a major source of failed prints. However, warping occurs when the printer then prints the next layer on top of this. This next layer will bond to the lower layer when it is hot, then it will cool and contract like the layer before it. This cooling will apply really quite large forces on the lower layers, pulling them upwards. These forces are proportional to the size of the print layer in question, for big prints there will be more contracting and thus a larger force exerted to cause the warping. What a heat bed does is to keep the plastic above its glass transition temperature. For PLA this is around 60 degrees Celsius, but will vary slightly from sample to sample. For ABS it is closer to 100 degrees. So long as it remains above this temperature it will remain soft and thus when it contracts the forces won’t be large enough to pull the print off the bed
A heat bed also allows you to experiment with other materials. For instance it is near impossible to print using ABS without a heat bed. This is because ABS warps much more severely than the likes of PLA. It may be possible for smaller prints to get away without a heat bed, but really it’s a must have if that is a material you plan on using frequently.
Also, using a heat bed allows you to print on glass which is a much better surface than standard painter’s tape that is used. Glass will give a much better finish and there’s no need to worry about ruining the underside surface because you can’t get it off the built plate without taking a load of tape with it, which happened to me far more than it should have. The problem with printing on cold glass is that it has a high thermal conductance, and will thus cool any hot plastic down very quickly making warping almost inevitable.
A word of caution that I feel I should mention is that this project does involve doing some mains wiring and several high current dc lines too. If you don’t have much experience with this it’s probably best to avoid taking on this project or at the very minimum ask someone for help who knows about doing this. I cannot be responsible if you wire something wrong and fry your printer or worse yet, yourself in the process.
Step 1: Parts List
All in these parts cost around 65 euro, which is a huge saving over the price of the official ultimaker heat bed kit, which costs close to 250 euro.
Heat bed – It should go without saying that you’re going to need this. Ebay is a great source for these, I got a generic heat bed form china for around €30. The heat bed doesn’t need to be anything fancy just so long as it is the correct size for an ultimaker printer
Glass plate – I found it was easiest to pick this up locally, most glass cutters should be able to provide this at a very low cost. From my experience 3mm glass is a good thickness, but I don’t think it should matter all that much
Power supply – this is an important one to get right. The power brick supplied with the standard ultimaker can’t supply enough current and trying to use this alone would probably end up burning it out. Like the heat bed ebay is a great source for these, though it is critical that you do get one that can supply enough power. Heat beds normally come as either 24 volt or 12 volt and you should make sure your power supply is going to be compatible with whatever heat bed you have got. It is also important to make sure you get one that will supply enough current. Heat beds are usually very low resistance, and as such will put a lot of current. It should be listed in the heat bed specification but if its not it can be calculated once you have either the resistance or power along with the voltage using either ohms or joules law respectively. You’re going to want to get a power supply that will be able to supply a substantial amount more than you calculate for the heat bed. A power supple able to put out upwards 125% that of what you anticipate the heat bed will use is fine as a rough estimate. I decided to get a 15 amp 24 volt power supply, so as to somewhat future proof it, case I wanted to install a second print heat or heat chamber or some other power intensive upgrade at some stage in the future, I wouldn’t need to get another supply.
Resistors – you will need a few of these, one 4.7k resistor to put onto the ultimaker control board, and two for the control circuit that is required which is described later. The exact values of these two don’t particularly matter as I will explain, but either way all of these can be got for next to nothing.
Transistor – The control circuit also requires a power mosfet to be used. In my case I used IRF3205PBF N Channel mosfet, though there are many that will do the job just fine. Thomas Sanladerer does a very good breakdown of the type of mosfets you’re looking for in this video: https://www.youtube.com/watch?v=ND8uJWlOgIQ
Other bits and pieces – your will also need some wire, copper strip board or protoboard. Optionally you may also need some screw terminal blocks.
There aren’t too many tools that are required for this. You will definitely need a soldering iron along with some solder, a wire strippers and having a pliers and screwdriver is always useful. I find it is helpful for verification to also have a multimeter to hand.
Step 2: Changing the Ultimaker Electronics
Once you have all the parts together it’s time to start into the conversion. The most straight forward first step is to add that resistor to the ultimaker. I have included some pictures of where is needs to go. It needs to be soldered at the location marked R4, just next to the marker for pin 9.
Essentially what is being done in this step is setting up a potential divider between the 5v pin of the Arduino and ground, with the centre going to the digital I/O pin 9. I have included a quick diagram from LTspice to illustrate this. As the resistance of the thermistor changed so too does the voltage at pin 9 and this is then read as the temperature value. Note that in my case the thermistor was 100k ohms, it doesn’t particularly matter what your particular one is, as it will be defined in the code later.
Note that you also need to plug in the heat bed sensor wires to the control board. There is a port marked temp3 on the ultimaker pcb, which is where you want to connect this to. In my case the heat bed came with the correct socket attached to the wires, but if yours doesn’t, you can get them fairly easily, or else maybe you could solder the wires directly to the control board, though my personal preference would be to have these connections removable.
Step 3: Control Circuit
The next thing we need to do is to make ourselves a power control circuit. For some reason the ultimaker, while it comes with a screw terminal marked for a heat bed, that outputs the correct voltage for a heat bed, it isn’t actually designed to support a heat bed. If you connect the heat bed directly into this terminal, best case scenario is that you will trigger one of the polyfuses on the board and it will turn off. However there is a risk that you’ll fry the board since it isn’t designed to take that much current. So we need a work around. There seems to be a lot of documentation on needing to do this but not so many actually circuits that I could find when I was building this so I designed the small circuit myself to do the job, and again I included an LTspice diagram. I chose to build it on copper strip board, mainly because I had it to hand, but I also designed a pcb version that can be made up if you have the relevant equipment. Ill also include these files but won’t go through how to make it up, as there’s plenty documentation on making pcbs online as it is. Just note however that while it is an incredibly simple circuit I never tested it under load, so I don’t know for instance if the tracks will be able to curry the high currents, without burning up.
Here we are using the mosfet as a switch that is controlled by the output screw terminal of the ultimaker. I believe that I could have simply connected the positive terminal directly to the gate of the mosfet, as in my case it should have been able to handle the 19 volt output the ultimaker supplied, but instead I decided to reduce it using a voltage divider to be on the safe side. To do this I used a 14k and 5k resistor series combination. This brought the voltage for the gate down to around 5v which I felt was a more comfortable level, and would be enough to make sure the mosfet was fully turned on when it was meant to be.
Then the positive voltage coming from the power supply is connected to the drain of the mosfet. The source is connected to one of the leads going to the heat bed. In my case the heat bed was not polarised, though this might not be true for you. If it is polarised then make sure you connect the positive lead to this terminal. The remaining leads, the negative of the heat bed and the ground of the power supply are connected together. It is also important to connect the ground from the potential divider to the ground of the power supply. These connections are illustrated in the circuit diagram.
I found it was necessary to add a heat sink to the mosfet. While according to the datasheet this particular mosfet only has 0.008 ohm across the drain and source when it is on, that sill results in a significant power dissipation and it does get warm as a result but nothing overwhelmingly hot. It was also useful in my case to tin (apply solder to) the ends of some of the cables, such as the ones going to the heat bed, since they were stranded core wire and this allowed for a better contact with the screw terminals. I also chose to jump several wires going to and from the mosfet. I calculated that when the heat bed was on they could be carrying up to 5 or 6 amps and I was uneasy using a single standard jumper wire to carry all that. I ended up using three wires going to both the drain and source, which should hopefully divide the current up enough to prevent failure.
Step 4: Mains Wiring
Now we need to change the plug wiring. The issue here is that the ultimaker still requires its 19 volt dc input, which is what the original power brick is providing, however we also now have a power supply that operates at a different voltage. It might be possible to power the ultimaker off 12 volts if this is the power supply you got but it is not possible to power it off 24 volts, since some of the on board components aren’t rated for this. While my initial intention for this was to use two plugs, one for the power brick and one for the new power supply for the heat bed, I came to the conclusion this was overly messy and there was in fact an easier and cleaner solution. What I did was to first get the power cable that came with the ultimaker, specifically the cord that goes from the wall socket into the power brick, and cut it into two lengths. Not equal lengths mind, I made the cut around a foot from the power brick end of the cord.
Next was to strip back about an inch or so of the ends and tin them with the soldering iron. Once this was done, I was able to connect the two lengths in parallel with the power supply. This was possible in my case because the screw terminals on my particular power supply were fairly big. The wiring diagram is included in the pictures. It is important to note that I am doing this using a UK plug. I’m fairly confident this would be the same for continental Europe and America but I can’t be sure, so if you’re in doubt double and triple check this because mains wiring can be extremely dangerous if it’s done wrong. Just to clarify, in the picture the two ends are actually from two difference cables, but that doesn't matter, so long as the grounds, live and neutral of both cables are connected it the correct way. I also realize the power supply is severely dented and makes it kind of difficult to see properly.
Step 5: Firmware Update
The last step was to change the firmware. The stock firmware is marlin, so it’s easy enough to make the change to running it with a heat bed. I have included my own version of marlin that I currently use, though this will most likely not be exactly what you want. Chances are that you will have different code running for other areas, such as if you have a bed level sensor or no lcd screen etc, so it’s probably best to use it as an example only, but I’ll leave that up to you. Note that to open marlin you will require a computer with Arduino installed, which can be freely downloaded here: https://www.arduino.cc/en/Main/Software
You can also get the marlin code here: https://github.com/Ultimaker/Ultimaker2Marlin
Once the code is open in Arduino, go to the configuration.h file. This is where we will make all of the changes to the code. Well I say all the changes, there is actually only one change that needs to be made, which is in the thermal settings section of configuration.h. The line:
Needs to be set to whatever setup you have. In my case it corresponded to number 5 in the list of options, which is a 4.7k resistor, which I soldered on to the ultimaker control board previously, and a 100k thermistor. I believe that any of the other ones labelled with the same configuration should also work though. An easy way to test the setup is simply to upload the software and turn on the printer. If the value displayed for the heat bed is way off what you would expect then more than likely you have an issue with the code. You can cross check your code with mine by using any document difference checker online, which will quickly highlight any differences between the files.
So the last thing is to upload the code to the ultimaker and you’re done. Your printer now has a heat bed!
Step 6: Final Notes
While you may now have a working heat bed, it is not ideal.
For one, the terminals of the power supply are probably exposed along with the control circuit. This is particularly dangerous for the mains contacts of the power supply. I chose as my first prints to make covers for all these, not only to protect them from any knocks that might happen, but also to minimise the chance of a short circuit by covering the contacts and making them hard to accidentally touch.
I also found that the heat bed seemed to cool down very quickly, which was due to it being exposed on both sides to ambient air temperature. Not only does this put more strain on the power supply (and waist electricity), but it could lead to less than perfect prints due to the bed temperature fluctuating. Mind you the prints will be much better than if there was no heat bed in the first place. To solve this I simply got some cardboard and attached it to the underside of the heat bed. Cardboard works as a great insulator and so works well here to prevent a lot of heat radiating out of the underside of the heat bed.
I think it probably goes without saying the glass plate is used on top of the metal surface of the heat bed. I found it was easiest to attach this using standard butterfly clips. They need to be relatively large buy it should be possible to pick them up from most newsagents or stationary shops. Also, while there is plenty of documentation on this, you may need some glue or other substance to help in getting the plastic to stick to the glass bed. I found using Prittstick was the most convenient for me but I’ve heard that other things like hairspray work very well too. I will leave this up to you to research further and decide what will be the best option for you.