## Wednesday, 15 May 2013

As part of a larger piece of work to make it easier for users of RepRapPro Marlin to use a Panelolu2 I have implemented RepRapPro's use of maths to convert the raw ADC values from the thermistor inputs into temperature readings.

The maths in question is the B parameter equation which uses the Beta value specified for NTC thermistor to approximate the curve.

I added the following code to temperature.cpp:-

float analog2tempi(int raw, const float& beta, const float& rs, const float& r_inf)
{
return = ABS_ZERO + beta/log( (raw*rs/(AD_RANGE - raw))/r_inf );
}

along with some #ifdef ALGEBRA_TEMP to compile the computational functions and information only if required.

//use RepRapPro Algebraic Temperature calculation rather than
//the tables - still experimental in this version of Marlin.
#define ALGEBRA_TEMP

and define the series resistor and Thermistors specific to your setup:

// Uncomment ONE of the next two lines - the one for the series resistors on your controller (most common is 4700)
#define SERIAL_R 4700
//#define SERIAL_R 10000

// EPCOS B57560G104F (the standard 100K one)
#define E_BETA 4036.0
#define E_NTC 100000.0
#define BED_BETA 4036.0
#define BED_NTC 100000.0

The data sheet for your thermistor will give the Beta value, the E_NTC or B_NTC is the value of the thermistor at 25C which for a "100K" thermistor is 100 000.

Warning: This is only tested with a variable resistor and an EPCOS B57560G104, and the equation used is an approximation - it is not as accurate as a well defined table.

To do: Investigate using a better equation, such as the equation that Nophead describes here which is in the new createTemperatureLookupMarlin.py script in Marlin.

#### 1 comment:

1. Hi Tony, I've download the T3P3 version to replace the marlin on my prusa i3 with melzi v2.0. At first i put in my old config and everything looks great. Then i try to use the algebraic temp function. The temperature reading and extruder works fine, but the heat bed cannot heat up when i turn it on via Repetier-Host or try to print things, it only work when i run M303 the PID test, in both case it shows no power output to the bed in Repetier-host. Did i set anything wrong?