TAZ6 Thermocouple with MAX6675 installation

Hello,

I’m trying to use materials that have a higher melting temperature to print my parts.
I notice that TAZ6 uses a thermistor that can measure a max temp of 300C, so I’m trying to change it to a thermocouple type K using a MAX6675.
I’m not sure if this is possible but I read these lines in the Marlin code that made me think that it may be possible:

//===========================================================================
//=============================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) (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)
//
// 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) (1k pullup)

#define TEMP_SENSOR_0 7
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 7



does anyone has tried to make this change?
How can I physically attached the MAX6675 if the RAMBo board only has a special entry for thermistors?

This is a link to check the RAMBo:
https://ohai.lulzbot.com/project/taz6-control-box-assembly/taz-6/

I will really appreciate any ideas or suggestions

Thanks

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 },
{ 227
OVERSAMPLENR , 1 },
{ 236OVERSAMPLENR , 10 },
{ 245
OVERSAMPLENR , 20 },
{ 253OVERSAMPLENR , 30 },
{ 262
OVERSAMPLENR , 40 },
{ 270OVERSAMPLENR , 50 },
{ 279
OVERSAMPLENR , 60 },
{ 287OVERSAMPLENR , 70 },
{ 295
OVERSAMPLENR , 80 },
{ 304OVERSAMPLENR , 90 },
{ 312
OVERSAMPLENR , 100 },
{ 320OVERSAMPLENR , 110 },
{ 329
OVERSAMPLENR , 120 },
{ 337OVERSAMPLENR , 130 },
{ 345
OVERSAMPLENR , 140 },
{ 353OVERSAMPLENR , 150 },
{ 361
OVERSAMPLENR , 160 },
{ 369OVERSAMPLENR , 170 },
{ 377
OVERSAMPLENR , 180 },
{ 385OVERSAMPLENR , 190 },
{ 393
OVERSAMPLENR , 200 },
{ 401OVERSAMPLENR , 210 },
{ 409
OVERSAMPLENR , 220 },
{ 417OVERSAMPLENR , 230 },
{ 424
OVERSAMPLENR , 240 },
{ 432OVERSAMPLENR , 250 },
{ 440
OVERSAMPLENR , 260 },
{ 447OVERSAMPLENR , 270 },
{ 455
OVERSAMPLENR , 280 },
{ 463OVERSAMPLENR , 290 },
{ 470
OVERSAMPLENR , 300 },
{ 478OVERSAMPLENR , 310 },
{ 485
OVERSAMPLENR , 320 },
{ 493OVERSAMPLENR , 330 },
{ 500
OVERSAMPLENR , 340 },
{ 507OVERSAMPLENR , 350 },
{ 515
OVERSAMPLENR , 360 },
{ 522OVERSAMPLENR , 370 },
{ 529
OVERSAMPLENR , 380 },
{ 537OVERSAMPLENR , 390 },
{ 544
OVERSAMPLENR , 400 },
{ 614OVERSAMPLENR , 500 },
{ 681
OVERSAMPLENR , 600 },
{ 744OVERSAMPLENR , 700 },
{ 805
OVERSAMPLENR , 800 },
{ 862OVERSAMPLENR , 900 },
{ 917
OVERSAMPLENR , 1000 },
{ 968*OVERSAMPLENR , 1100 }
};
#endif

Hope that helps and good luck should you go for it!

Cool! I was considering installing that very board, that will save me quite a bit of time. thank you very much for posting that!

You’re welcome :slight_smile: Glad you found it useful!
And I just noticed that in my first post I called Marlin as Merlin … :blush:
Anyways, please do remember that after installing the PT100, the temperatures reading will be more accurate and thus you should probably double and cross check the readings with a 3rd party temperature probe on the nozzle and the block. In my case, when thermistor was reading 215 it was actually closer to 210. That wasn’t the case with PT100: 215 was indeed 215!!! So, with the PT100 I had to recalibrate all my print settings.

Thanks for answering me!

In my code I don’t see any recommendation to use PT100

// 20 is PT100 with INA826 amp on Ultimaker v2.0 electronics

Where did you get your Marlin? I got mine from the webpage: https://www.lulzbot.com/content/downloads
It is the AO-101.
Do you think is the same? I mean can I change it to “20” assuming that the recommendation should be there?

Thanks for taking the time to help me

I have the TAZ5 not the 6, thus my firmware is the latest official I could find from lulzbot, the “Marlin_TAZ45_Uaru_1.0.0.1”.
Regardless, the modifications I suggested are universal. And don’t forget that text following the double slashes “//” is considered “comment”.
In your case, as long as you make sure that the “thermistortables.h” and “pins.h” files are modified the way I described, then, with the “configuration.h” file you can rest assure that defining your SENSOR_0 as 20 will work just fine.
And in fact, you can use any number, other than 20, you want in the thermistortables.h and configuration.h descriptions. Just as long as it doesn’t conflict with another one, already described in the files! I used 20 because that’s what I found already in place.

I’ll order the sensor this week and I will give an update with my results.

Thanks for taking the time to answer me. :slight_smile:

I just checked the PT100 temperature ranges, and it can only go up to 400 C.
I need to measure up to 600 C, so this is not going to work for me.

I’m really curious in to what kind of plastic filament you’re interested in extruding :open_mouth: !!
In any case, for such high temps the aluminum heat block won’t work either. Even the new Plated Copper heat block from E3D only talks about going above 500C but not how far above https://e3d-online.com/v6-plated-copper-heater-block

mikronano,

I wanted to ask you if you followed any tutorial to upload Marlin via Arduino. I’m trying to upload it and I’m getting a blank LCD. Any idea why this is happening?

That’s strange…
You could take a look in this: https://ohai.lulzbot.com/project/firmware-flashing/firmware-flashing.
Although, from what you’re saying, if it was a miscommunication or miscompile issue, then you should get an error message from Arduino and nothing would have been uploaded. It seems to me that something in your code passes the Arduino tests and checks but it doesn’t work with TAZ. Like some pins are conflicting on board.

Thanks for replying

I fixed the upload problem. I watch this video and got the idea: https://www.youtube.com/watch?v=0pt_b2ZizQM

I uncommented this line to get the sounds from the button in the Configuration.h tab:

#define SPEAKER

and also this line:

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

But know that I’m trying to make changes to the temp sensor 0 (-2, because it is a max6675) I get this error. I’m using a Taz 6.

MAX6675_SS (required for TEMP_SENSOR_0) not defined for this board.

I hope that someone that had the same problem could help me.

Thanks