My approach in this is a bit different. I’m using the E3D PT100 sensor with its amplifier board. The whole thing had me messing with both software and hardware but it was totally worth it for its accuracy, stability and range.
The PT100 amplifier board, following E3D’s guideline, needs to connect to an analog input pin. So, first I had to locate an analog pin on the RAMBo and then tell Merlin which pin and table to use.
On my TAZ5’s RAMBo, the analog input pins (X40) are surrounded by the Atmega2560 chip, the Thermistor sockets and the EXT-2 pins. Pins 1 and 2 are powering the amplifier board and Pin 8 is analog input A5.
For my last hardware intervention all I had to do was to unplug the thermistor jack from the RAMBo slot and run it to the amplifier board’s input.
As for the software alternations, I had to modify Configuration.h, pins.h and made sure the thermistortables.h included the table I needed.
My “Configuration.h” looks as:
//===========================================================================
//=============================Thermal Settings ============================
//===========================================================================
//
//–NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
//
//// Temperature sensor settings:
// -2 is thermocouple with MAX6675 (only for sensor 0)
// -1 is thermocouple with AD595
// 0 is not used
// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
// 3 is mendel-parts thermistor (4.7k pullup)
// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
// 10 is 100k RS thermistor 198-961 (4.7k pullup)
// 20 is PT100 with INA826 amp on Ultimaker v2.0 electronics
// 60 is 100k Maker’s Tool Works Kapton Bed Thermister
//
// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
// (but gives greater accuracy and more stable PID)
// 51 is 100k thermistor - EPCOS (1k pullup)
// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
#define TEMP_SENSOR_0 20 > //#define TEMP_SENSOR_0 5 //stock value
//~ #define TEMP_SENSOR_1 5
//~ #define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 7
If higher temps are needed, you’ll probably want to change the following as well:
// When temperature exceeds max temp, your heater will be switched off.
// This feature exists to protect your hotend from overheating accidentally, but NOT from thermistor short/failure!
// You should use MINTEMP for thermistor short/failure protection.
#define HEATER_0_MAXTEMP 305
#define HEATER_1_MAXTEMP 305
#define HEATER_2_MAXTEMP 305
#define BED_MAXTEMP 150
In my “pins.h” file, where my RAMBo pins are defined, I had to make the following changes:
#if MOTHERBOARD == 301
#define KNOWN_BOARD
/*****************************************************************
- Rambo Pin Assignments
******************************************************************/
…
…
#define HEATER_0_PIN 9
#define TEMP_0_PIN 5
//#define TEMP_0_PIN 0 //stock value
…
…
For my “thermistortables.h” file, I had to made sure that a table for SENSOR 20 was present. If, in your case, doesn’t exist, then you could add the following:
#if (THERMISTORHEATER_0 == 20) || (THERMISTORHEATER_1 == 20) || (THERMISTORHEATER_2 == 20) || (THERMISTORBED == 20) // PT100 with INA826 amp on Ultimaker v2.0 electronics
/* The PT100 in the Ultimaker v2.0 electronics has a high sample value for a high temperature.
This does not match the normal thermistor behaviour so we need to set the following defines */
#if (THERMISTORHEATER_0 == 20)
define HEATER_0_RAW_HI_TEMP 16383
define HEATER_0_RAW_LO_TEMP 0
#endif
#if (THERMISTORHEATER_1 == 20)
define HEATER_1_RAW_HI_TEMP 16383
define HEATER_1_RAW_LO_TEMP 0
#endif
#if (THERMISTORHEATER_2 == 20)
define HEATER_2_RAW_HI_TEMP 16383
define HEATER_2_RAW_LO_TEMP 0
#endif
#if (THERMISTORBED == 20)
define HEATER_BED_RAW_HI_TEMP 16383
define HEATER_BED_RAW_LO_TEMP 0
#endif
const short temptable_20[2] PROGMEM = {
{ 0OVERSAMPLENR , 0 },
{ 227OVERSAMPLENR , 1 },
{ 236OVERSAMPLENR , 10 },
{ 245OVERSAMPLENR , 20 },
{ 253OVERSAMPLENR , 30 },
{ 262OVERSAMPLENR , 40 },
{ 270OVERSAMPLENR , 50 },
{ 279OVERSAMPLENR , 60 },
{ 287OVERSAMPLENR , 70 },
{ 295OVERSAMPLENR , 80 },
{ 304OVERSAMPLENR , 90 },
{ 312OVERSAMPLENR , 100 },
{ 320OVERSAMPLENR , 110 },
{ 329OVERSAMPLENR , 120 },
{ 337OVERSAMPLENR , 130 },
{ 345OVERSAMPLENR , 140 },
{ 353OVERSAMPLENR , 150 },
{ 361OVERSAMPLENR , 160 },
{ 369OVERSAMPLENR , 170 },
{ 377OVERSAMPLENR , 180 },
{ 385OVERSAMPLENR , 190 },
{ 393OVERSAMPLENR , 200 },
{ 401OVERSAMPLENR , 210 },
{ 409OVERSAMPLENR , 220 },
{ 417OVERSAMPLENR , 230 },
{ 424OVERSAMPLENR , 240 },
{ 432OVERSAMPLENR , 250 },
{ 440OVERSAMPLENR , 260 },
{ 447OVERSAMPLENR , 270 },
{ 455OVERSAMPLENR , 280 },
{ 463OVERSAMPLENR , 290 },
{ 470OVERSAMPLENR , 300 },
{ 478OVERSAMPLENR , 310 },
{ 485OVERSAMPLENR , 320 },
{ 493OVERSAMPLENR , 330 },
{ 500OVERSAMPLENR , 340 },
{ 507OVERSAMPLENR , 350 },
{ 515OVERSAMPLENR , 360 },
{ 522OVERSAMPLENR , 370 },
{ 529OVERSAMPLENR , 380 },
{ 537OVERSAMPLENR , 390 },
{ 544OVERSAMPLENR , 400 },
{ 614OVERSAMPLENR , 500 },
{ 681OVERSAMPLENR , 600 },
{ 744OVERSAMPLENR , 700 },
{ 805OVERSAMPLENR , 800 },
{ 862OVERSAMPLENR , 900 },
{ 917OVERSAMPLENR , 1000 },
{ 968*OVERSAMPLENR , 1100 }
};
#endif
Hope that helps and good luck should you go for it!