### Archive

Posts Tagged ‘ultimaker’

## Adding heating bed to Ultimaker

June 23rd, 2013

I am just wrapping up adding a heatbed to my ultimaker and I wanted to do a quick write up to help others.

I ordered the following:

I also used a thermistor that I had on hand (Vishay NTCLG100XX203JB – 20Kohm NTC).

The power supply mounted nicely underneath the ultimaker.  I cut out the center part of the polycarbonate sheet and drilled holes to mount the PCB heater to it.  I cut a sheet of kapton and taped it to the PCB using kapton tape.

The negative side of the power was connected to the ultimaker pcb ground (bottom circle).  The positive side was connected to the heating PCB.  The other terminal of the heating PCB was connected to the screw terminal marked with an arrow.  Diode D3 needs (top circle) to be removed for this configuration to work.  I just cut it with wire cutters.  All you will lose is the status LED with this mod, and I don’t ever see a reason to want to add it back in as you can’t even see the status LED.

A thermistor is a resistor which varies its resistance as a function of the temperature.  The typical specification is the resistance of the thermistor at 25deg C (mine was 20k).  To get the best sensitivity, you need to determine the resistance of the thermistor at the operating temperature (in my case, it is 70C for PLA).  By looking at the datasheet, we see that it is 3.5kOhms.

This means that you want to populate resistor R4 with something close to 3.5kOhms (I had a 3.3k resistor that I used).

By doing this, you will maximize the change in the output around 70deg – in other words, you will have the most sensitivity at that point.  For a voltage divider in the configuration used by the ultimaker, the output voltage (sensed by the analog-digital converter) is equal to $V_{ADC}=5(R_{t}/(R_{t}+R_{4})$.  If we plot the change in output voltage as a function of temperature, I get a plot like this.  Notice the peak is around 70C.

In order to configure the firmware, you need to change configuration.h to set TEMP_SENSOR_BED to some number (I used 10).  I then edited thermistortables.h to modify entry 10 to correspond to values relevant to me.

There is a script that computes this stuff for you based on a curve fit, but as I had the datasheet with the specific resistances, I just used that data.  I populated a spreadsheet table to have the temperature in on column, the resistance in another, and I computed the ADC value as where $V_{ADC}$ was computed above, and $\alpha$ is the oversampling number and seems to be fixed at 16.  I then generated a list the corresponded to the ADC value vs. the temperature.

I took the output and copied it over entry 10 in the thermistortables.h file.

I then compiled and uploaded the code.  I used my IR temperature probe to verify that the temperature readings were correct.  Win.