The problem with thermistors is that they are horribly non-linear (half the resistance isn't twice the temperature) and they vary widely from one thermistor to the next and even in themselves over time. I've watched the output of mine compared to a thermocouple reading over the last few months. With a setpoint of 230º the actual temperature has varied from 200º to 260º!
There are two ways to deal with this. First is John Oly’s approach - just change the theta value in the firmware until the measured temperature approaches the actual. This will quickly and easily get you to an approximate hot end temperature around the setpoint where you're measuring but it doesn't allow for the nonlinearity and so even jumping from ABS to PLA you might find the temperature wandering off significantly. If that's good enough for you, then have a look here
Otherwise, we're going to do it a little more first principally from two measurements, one hot and one cold.
Start by downloading the Repetier firmware - note this link is for v0.91, there maybe newer versions out, grab the latest. Also grab the Arduino development environment. You'll be using the Arduino software to change and upload the firmware to your Rambo board.
You're going to need a multimeter and a thermocouple meter. Sorry, the reflective nature of the hot end means the infra red contactless type thermometers are useless. A combination meter/thermocouple can be had for thirty bucks from eBay and is worth having in your printer toolkit - you'll be wanting to check the accuracy of the thermistor occasionally as part of your routine tighten-up / recalibration routine.
How does it all work?
To get the temperature, the firmware reads the resistance of the thermistor via the cable and connector on the Rambo. It now needs to convert this resistance to a temperature. Each of the two extruders and the bed have a setting in configuration.h which tell the firmware what type of sensor to use. For example, the first extruder might be set with the following
Code: Select all
#define EXT0_TEMPSENSOR_TYPE 1
This tells the firmware that EXT0 (extruder 0 or the first extruder) should use sensor type 1 - the 100k thermistor from Epcos. You can see a description of the sensor type values above this line. We are particularly interested in the Generic tables and are going to use the first table (ie type 97) for the extruder and the second table (type 98) for the bed. If you had a second extruder you could use the third generic table type 99 for it or, if you were feeling lazy, you might re-use 97 and hope the thermistors were close enough to act the same. If.
Anyway. Now the firmware has its resistor and it knows what method to use to convert that resistance to a temperature. The generic method creates a curve based on some parameters we need to define in configuration.h and then calculates the thermistor temperature based on the resistance and that curve.
Enough chit chat. On to the "doing" bit.