Type K thermocouples or PT100 for Vertex K8400

Hi,

I am planning on upgrading temperature sensing for both hotends on K8400.


Type K thermocouples

I could use "External thermocouple board v1.0” (AD597 based) as it is easily available in EU.
reprap.org/wiki/ExtThermoCouple_1.0
reprapworld.com/products/extrud … oard_v1_0/

Has anybody else done such mod? What were the steps?

I’ve found that some users have done this for K8200. I do not know how K8200 mobo differs from K8400.


Or alternatively I could use PT100 with board that is compatible with the temperature table that already exists in marlin firmware - “Ultimainboard V2.x”, meaning that in firmware I would have to change just 5 to 20

#define TEMP_SENSOR_0 20 //5
#define TEMP_SENSOR_1 20 //5

But what about physical connection to K8400 mobo?

Thanks in advance!

So just got back to studio.

Looked at unused header on mobo.


Hardware

It seems that some analog pins are broken out there
PK0 (Analog pin 8 in Arduino world)
PK2 (Analog pin 10 in Arduino world)
PK3 (Analog pin 11 in Arduino world)
PK4 (Analog pin 12 in Arduino world)

Which corresponds to velleman.eu/images/tmp/K8400 … %20Doc.pdf page 7, it seems that the diagram block between “Z-stop” and “EXT1-THERM” corresponds to this header.

Thus connecting two PT100s should be as easy as connecting PT100 amplifiers to this header 5VDC and GND rails as well as any 2 of four PKx pins. HW wise these pins are unused.


Firmware

Changing in configuration.h

#define TEMP_SENSOR_0 5 #define TEMP_SENSOR_1 5

to

#define TEMP_SENSOR_0 20 #define TEMP_SENSOR_1 20

And in pins.h

#define TEMP_0_PIN 13 // ANALOG NUMBERING (PK5) #define TEMP_1_PIN 15 // ANALOG NUMBERING (PK7)

to

#define TEMP_0_PIN 11 // ANALOG NUMBERING (PK3) #define TEMP_1_PIN 12 // ANALOG NUMBERING (PK4)

should do it although SW wise it is not 100% clear, maybe there is some custom Velleman assignment somwhere in Marlin for these?

I have found that this header is used for some K8403 kit “RGB LED ADD-ON FOR K8400” velleman.eu/products/view/?id=430100 that enables LED control via G-code and it states that it does not use PKx pins. And analog pins 10 and 11 seems to be unused in pins.h for corresponding sections for MOTHERBOARD 77 (all references to these pin numbers numbers are for digital pins), so at first glance they kind of seem unused also SW wise, thus PT100s are plug and play. Maybe someone can comment on this?


Thanks!

I had this idea a long time ago and found it hard to implement.

There is a lookup table for these platinum temperature sensors in the firmware, so at a first glance this will work. But a closer look will reveal the following situation:

ADC input of the Arduino is hardwired with V_Ref_low to Ground and V_Ref_High to VCC. That means, that the full range of 5V will be accepted as input voltage.

The resolution of the ADC is 12 bit, so the full range is divided by 2^12 , which ends up in a resolution 1,2 mV per LSB.

The thermal sensor is connected to ground (V_Ref_Low) and sourced by a 5KOhm resistor linked to V_CC (V_Ref_High).

Now have a look on the situation for a PT100: 100 Ohms @ 0°C. For this condition we will have a current through the resistor of 5V/5100 Ohms, approx. 1 mA. In this condition the voltage drop across the PT 100 is roughly 100 mV.
The correct calculation for the voltage across the PT 100 is:

V_PT100 = V_CC/(R_Bias + R_Temp) * R_Temp

with VCC = 5V, R_Bias = 5000 Ohms and R_Temp the resistor value.

Using the standard values from the PT100 gives for T=200°C a Resistance of 175,84 Ohms and a voltage drop of 169,866 mV, For 210 Degree the resistance is 179.51, the voltage drop is 172,288 V. In the region of interest you have a voltage variation of 3,4 mV = 2.8 LSB for 10°C, a resolution of 3.7 °C per LSB. This is enhanced by internal oversampling of 16 readings within the firmware, but this improves only by a factor of four. So at least you have a resolution of nearly 1°C for the temperature measurement, which is very poor for a good thermal control.

For this reason I switched to a PT1000 with 1KOhms bias resistor to improve the situation, but I found the temperature reading still too noisy. Therefore I came back to the original temperature sensor type but with a different housing and hotend design.

For the Thermocouples the voltage variations over temperature are much smaller, and I am not sure if they can be handled by the motherboard configuration correctly.

So my conclusion is: You can use PT100 (or PT1000) with the K8400 as a direct replacement, but without preamplifier the temperature sensing will degrade and the temperature control too. Thermocouples will not work without dedicated preamplifier.
The NTC is still the best temperature sensor, but the thermal link to the hotend must be improved. In either case, this must be the target for the replacement temperature sensor.

Thanks for your input!

I am not going to use PT100 w/o amplifier. Although I mentioned that I will be using “TEMP_SENSOR_0 20” sorry for not being clear about that in OP.

I will be using amp design as in Ultimainboard V2.x wiki.e3d-online.com/wiki/E3D_PT … cteristics
See temp-voltage output table.
This corresponds to existing LUT in Marlin

// 20 is the PT100 circuit found in the Ultimainboard V2.x

In regions that interest me (actually throughout all temp range), range it is 4mV per °C. Well, lets just hope that amp does it’s work. :slight_smile:

I have to leave the “original” thermistor, as I am going to push some PC rolls through this old machine (meaning 300 °C via full metal, the original 15V heaters should be able to reach and keep up that temp, as they seem to be 33W). After looking at that Vertex mobo, PT100 with amp seems more doable than Type K.