K8400 How-to test the board thermal sensor?

Hello,

I’m a new K8400’s user. I bough’t a used printer 3 weeks ago for 1 week the printer went quite well trying to tune it and appropriate it because i didn’t build it.

After various kinds of materials problems, To resolve “MINTEMP” error I change several parts:
-1 Thermal sensor (old ones look like good),
-Heater
-Extruder Board (burned my fault i’made a shortcut).
-New nozzle

Now, on LCD screen I can read Temperature from Ext1 Ext2 and the bed. The wire which goes from the board looks like good enought.
To locate the problem,I’ve tried several firmware, severals arduino IDE, I’ve changed Mintemp on firmware to locate the problem. it’s look like the Ext1 is broken mabe the bed one too.

I’ve try to use the Ext2 to print, the printer is XYZ travelling and trying to print but it should be in “Prevent from cold extrusion” mod because the extruder motor isn’t feeding

It’ why I d’like to confirm it by checking the thermal sensor on the motherboard. How can I do that?

Like between the LCD information and the mother board information, the temperature look like different.
How can I read on a screen (computer?) what the motherboard is reading?

Thanks for suggestion

To precise, i’m using MarlinHOH and arduino 1.8.5 on win10,
If can be helpfull, i’ve got 1 second lcd screen, 1arduino uno and an voltmetre

Dear Maxime
do I understand it right?: you have a reading for the ext1, ext 2 and bed and an MINTEMP error?

Which temperature is showing the 0°C value?

Do you have a heated bed installed and a thermal sensor connected? If not, you have to disable this option in the “configuration.h” file. The default setting for my firmware is two nozzles and no heat bed. So if you see the heated bed temperature reading without changing the configuration file something during your compilation went wrong.

Please describe your hardware a little bit more in detail: how much extruders/nozzles do you have. Heated bed? Which kind of thermal sensors?

You have to set the correct options in the configuration file.

Please check the connectors on the arduino board. The first nozzle (for two nozzles the right one from frontside view) shall be linked to the connectors for heater1 / extruder1.

P.S.: when I re-read your description it sounds to me that even the orignal Velleman firmware didn’t work. In this case you should re-assemble your printhead, at least check if all connections are in line with the assembly instructions from Vellemann. The thermistors shall have a resistance of about 100KOhms at room temperature. For any firmware it is essential that the hardware is assembled correctly according to the Vellemann instructions! Since you didn’t build up this printer by yourself, you should take care of this and do everything to ensure a proper hardware!

Thank you for taking care of my problems, to be heplfull i’ll try to explain a little more

do I understand it right?: you have a reading for the ext1, ext 2 and bed and an MINTEMP error?

My english is poor i’m sorry…French may be better.

  • Yes. That’s it, and that’s why i’m supposing that the board have a problem

  • I’m new with arduino and code (solving it with the starter kit and the firmware :))

  • I’m checking the printer in a cold room (6°C)

SOFTWARE

  • When working, the printer was with Marlin 1.0 and the velleman’s 1.0 2 heads firmware ; It was working with extruder on ext1 (on the right side) and a shunt was on ext2 (left), not to have “MINTEMP”)
  • I’ve tried velleman’s 1.1 and 1.4 both with single and dual head
    Actually

HARDWARE
For the moment, i don’t have the hardware under my eyes, but from memory I can say that there are:
-2 heads, 1 is mounted (1 time on the left and 1 time on the right actually on the ext2)
-1 heated bed (should be a reprap MK3 kit with a 24v battery and a small board)
-
-The new extruderboard should be the same as original
-The new thermal sensor should be “100k”; the same as original
-The new heat resistor should be 15w ; the same as original

Checking EXT method
to check if thermal sensor were ok; heating with the hands, the LCD show changes up to 15°C so I consider it’s Ok
to check if wire were ok by interverting connexion at the motherboard, both Ext1 and Ext2 show results so I consider it’s Ok
Finally:
to check which Extruder is down by this way in the firmare configuration.h page,:
- To prevent from burning I’ve set “MAXTEMP” to Ext0 235, Ext1 235, Ext2 0 (which is this one?), bed 50
- To trick temperature in a 6°C room, I’ve set “TEMP_HYSTERESIS” to 2 ( to prevent from a natural “MINTEMP”)
- To prevent form error, i disabled all TEMP_SENSOR (EXt0, EXT1, EXT2 , bed with -3 value).
Then i light on, one by one with “MINTEMP” (EXT0 3; EXT1 3; EXT2 0 ; Bed 0)
The tricky result is that When the Ext1 is ON there is a “MINTEMP” with LCD showing a T°,
When The Ext2 is ON the heater is heating and the printer try to print (but not feeding certainely because of “Cold extrusion” in configuration.h i don’t think it’s a matter)

Please check the connectors on the arduino board. The first nozzle (for two nozzles the right one from frontside view) shall be linked to the connectors for heater1 / extruder1

Pins looks like good and in same order heater/sensor/fan/motor like manual show: //images.velleman.eu/manuals/vertex/building/13/027.jpg

Do you have a heated bed installed and a thermal sensor connected? If not, you have to disable this option in the “configuration.h” file. The default setting for my firmware is two nozzles and no heat bed. So if you see the heated bed temperature reading without changing the configuration file something during your compilation went wrong.

The Heated bed isn’t heating (certainely because of unchecks in configuration.h I’m still not sure, For next tests I’ll desable it)

Because that are memory results, i will try again tomorrow and confirm you what’s happening and I keep reading the arduino starter book ^^

For the moment, I’m not thinking about desassemble it and rebuild it, i’m still thinking…but maybe it will be tomorrow :slight_smile:

If you have other ideas how to test materials, please explain it

Thank you

Power supply is 24VDC 15A 360W

Here a test I’ve done today, with a room a 7°C so I didn’t change (TEMP_HYSTERESIS 5)

TEST A- installing Original FirmwareHOH 0.7a
bed disconnected
“Store in memory”
“Restore Failsafe”
#define MOTHERBOARD 77
#define EXTRUDERS 2
#define HEAT_BED -1
//#define POWER_SUPPLY 1
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 0
#define TEMP_RESIDENCY_TIME 2
#define TEMP_HYSTERESIS 5
#define TEMP_WINDOW 1
#define HEATER_0_MINTEMP 5
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define BED_MINTEMP 5
#define HEATER_0_MAXTEMP 285
#define HEATER_1_MAXTEMP 285
#define HEATER_2_MAXTEMP 275
#define BED_MAXTEMP 150
#define EXTRUDE_MINTEMP 160
#define PLA_PREHEAT_HOTEND_TEMP 210
#define PLA_PREHEAT_HPB_TEMP 0
#define PLA_PREHEAT_FAN_SPEED 60
=> result:
LCD screen T°7/0 T°7/0
X0 Y0 0.00
Fr100% SD—% O–:–
Err: “MINTEMP”"
Heating thermal sensor with one hand
=> result:
LCD screen T°7/0 T°14/0
X0 Y0 0.00
Fr100% SD—% O–:–
Err: “MINTEMP”
Heating thermal sensor with other hand
=> result:
LCD screen T°14/0 T°7/0
X0 Y0 0.00
Fr100% SD—% O–:–
Err: “MINTEMP”

TEST B- Heater disable
bed disconnected
“Store in memory”
“Restore Failsafe”
#define MOTHERBOARD 77
#define EXTRUDERS 2
#define HEAT_BED -1
//#define POWER_SUPPLY 1
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 0
#define TEMP_RESIDENCY_TIME 2
#define TEMP_HYSTERESIS 5
#define TEMP_WINDOW 1
#define HEATER_0_MINTEMP -3
#define HEATER_1_MINTEMP -3
#define HEATER_2_MINTEMP 5
#define BED_MINTEMP 5
#define HEATER_0_MAXTEMP 285
#define HEATER_1_MAXTEMP 285
#define HEATER_2_MAXTEMP 275
#define BED_MAXTEMP 150
#define EXTRUDE_MINTEMP 160
#define PLA_PREHEAT_HOTEND_TEMP 210
#define PLA_PREHEAT_HPB_TEMP 0
#define PLA_PREHEAT_FAN_SPEED 60
=> result:
LCD screen T°7/0 T°7/0
X0 Y0 0.00
Fr100% SD—% O–:–
K8400 is ready

TEST C- Heater 1 enable Heater 2 desable
bed disconnected
“Store in memory”
“Restore Failsafe”
#define MOTHERBOARD 77
#define EXTRUDERS 2
#define HEAT_BED -1
//#define POWER_SUPPLY 1
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 0
#define TEMP_RESIDENCY_TIME 2
#define TEMP_HYSTERESIS 5
#define TEMP_WINDOW 1
#define HEATER_0_MINTEMP 5
#define HEATER_1_MINTEMP -3
#define HEATER_2_MINTEMP 5
#define BED_MINTEMP 5
#define HEATER_0_MAXTEMP 285
#define HEATER_1_MAXTEMP 285
#define HEATER_2_MAXTEMP 275
#define BED_MAXTEMP 150
#define EXTRUDE_MINTEMP 160
#define PLA_PREHEAT_HOTEND_TEMP 210
#define PLA_PREHEAT_HPB_TEMP 0
#define PLA_PREHEAT_FAN_SPEED 60
=> result:
LCD screen T°7/0 T°7/0
X0 Y0 0.00
Fr100% SD—% O–:–
→ Err:MINTEMP

TEST D- Heater 1 disable Heater 2 enable
bed disconnected
“Store in memory”
“Restore Failsafe”
#define MOTHERBOARD 77
#define EXTRUDERS 2
#define HEAT_BED -1
//#define POWER_SUPPLY 1
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 0
#define TEMP_RESIDENCY_TIME 2
#define TEMP_HYSTERESIS 5
#define TEMP_WINDOW 1
#define HEATER_0_MINTEMP -3
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define BED_MINTEMP 5
#define HEATER_0_MAXTEMP 285
#define HEATER_1_MAXTEMP 285
#define HEATER_2_MAXTEMP 275
#define BED_MAXTEMP 150
#define EXTRUDE_MINTEMP 160
#define PLA_PREHEAT_HOTEND_TEMP 210
#define PLA_PREHEAT_HPB_TEMP 0
#define PLA_PREHEAT_FAN_SPEED 60
=> result:
LCD screen T°7/0 T°7/0
X0 Y0 0.00
Fr100% SD—% O–:–
→ K8400 ready

///////////////////////////////
Switching wire from ext1 sensor1 to ext2 sensor2
TEST E- Heater 1 disable Heater 2 enable
bed disconnected
“Store in memory”
“Restore Failsafe”
#define MOTHERBOARD 77
#define EXTRUDERS 2
#define HEAT_BED -1
//#define POWER_SUPPLY 1
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 0
#define TEMP_RESIDENCY_TIME 2
#define TEMP_HYSTERESIS 5
#define TEMP_WINDOW 1
#define HEATER_0_MINTEMP -3
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define BED_MINTEMP 5
#define HEATER_0_MAXTEMP 285
#define HEATER_1_MAXTEMP 285
#define HEATER_2_MAXTEMP 275
#define BED_MAXTEMP 150
#define EXTRUDE_MINTEMP 160
#define PLA_PREHEAT_HOTEND_TEMP 210
#define PLA_PREHEAT_HPB_TEMP 0
#define PLA_PREHEAT_FAN_SPEED 60
=> result:
LCD screen T°7/0 T°7/0
X0 Y0 0.00
Fr100% SD—% O–:–
→ K8400 ready

Switching wire from ext1 sensor1 to ext2 sensor2
TEST E- Heater 1 enable Heater 2 disable
bed disconnected
“Store in memory”
“Restore Failsafe”
#define MOTHERBOARD 77
#define EXTRUDERS 2
#define HEAT_BED -1
//#define POWER_SUPPLY 1
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 0
#define TEMP_RESIDENCY_TIME 2
#define TEMP_HYSTERESIS 5
#define TEMP_WINDOW 1
#define HEATER_0_MINTEMP 5
#define HEATER_1_MINTEMP -3
#define HEATER_2_MINTEMP 5
#define BED_MINTEMP 5
#define HEATER_0_MAXTEMP 285
#define HEATER_1_MAXTEMP 285
#define HEATER_2_MAXTEMP 275
#define BED_MAXTEMP 150
#define EXTRUDE_MINTEMP 160
#define PLA_PREHEAT_HOTEND_TEMP 210
#define PLA_PREHEAT_HPB_TEMP 0
#define PLA_PREHEAT_FAN_SPEED 60
=> result:
LCD screen T°7/0 T°7/0
X0 Y0 0.00
Fr100% SD—% O–:–
→ Err “MINTEMP”

That’s why I’m thinking about a motherboard problem.
May i check it in another way?

Switching wire from ext1 sensor1 to ext2 sensor2

I’m confused you should read i swith heater1 and sensor1 wire on test E and F

From Repetier:
If I try a standard print:
-Ext1 is heating before starting the print, XYZ are moving, But the “prevent from cold extrusion” keep the print unfeeded so KO
-EXT2 didn’t test yet

Stranges things:
-On the EXT1 I can trick the “prevent from cold extrusion” by heating the hotend with the repetier button the hotend before “start printing” and the printer keep heating and feeding
-On the EXT1 2 can trick the “prevent from cold extrusion” by heating the hotend with the repetier button and the printer keep heating but NOT feeding on the EXT1

From the LCD panel

  • I can heat Ext1 but it doesn’t stop at the limit (to be confirmed)
  • I can heat Ext2 but it doesn’t stop at the limit (to be confirmed)

So Now I have to lurn more about préheating

That’s feel better :slight_smile:

Dear Maxime,

you did a good job and already found the problem: you are working in a too cold room.

So as a first workaround you should set the mintemp-Values to -3 °C (Test B):
-> #define HEATER_0_MINTEMP -3
-> #define HEATER_1_MINTEMP -3

Within the firmware some temperature limits are calculated as “raw” values (internal binary settings for direct comparison of the ADC readings). These values are continuously compared with the given readings and an error message is launched when they are violated.
I didn’ modify this routine from the original Vellemann firmware, so I can understand if the problem is there too.
I will check how this error can be prevented in the future, but in between the -3° settings is save.

So from that point of view there is no real problem. Both temperature sensors are giving the same temperature reading which is near the real temperature of the room. So the type of sensor is correct too.

What I consider as unsave is the MAXTEMP setting of 285°C. You should be very confident on the thermal coupling between the hotend brass block and the isolated temperature sensor. Depending on the assembly condition a temperature difference up to 20°C can be found for the highest temperatures, temperatures, where the temperature reading is too low. By this configuration you are running into a high risk of melting the PEEK isolator.
For my assembly I know that there is an error in the temperature reading of max 2°C for my modified heater block. Since I cannot assume that for all other assemblies, I will reduce the default values back to 275° for the next firmware revision.

In between I’m a little bit confused about your statements of enabling and disabling the heater. It is not shown in the parameter set from the different tests.

Some other comments:
The parameters TEMP_RESIDENCY_TIME, TEMP_HYSTERESIS and TEMP_WINDOW are actually not used in my Firmware version. Maybe I will re-activate them later on.
The EXT2 parameters in the configuration file are some residues from the original Marlin firmware and are not used.
I’m not familiar with the the REPETIER software, so I cannot follow your activities using this tool. However, since you can control the printer via USB interface, you will get a feedback from the printer, which can be seen in the log section of the software. These messages are giving some additional hints about the error reasons.
For using the two heads you may notice that it is not sufficient to heat a hotend to an operating condition, you have to define the active extruder too. Since the right extruder is by default the active one, you can heat it up and can extrude the filament. If you heat up the second (or left) extruder, you can provide some extrusion commands, but without prior definition of the left extruder as the active one (gcode: “T1”) there would be no extrusion. This will generate a message from the firmware and should be visible in the log in repetier too.

A short note to the temperature control:
All temperatures are controlled by a PID software controller, where you can access and modify the P, I and D parameters. This is valid for the two hotends and the heated bed.
All heater outputs are PWM signals with a frequency of about 2KHz switching frequency. Especially for the heated bed you should check if your hardware is compatible with this too.
Since the PID parameters are very individual for each assembly, the default parameter can result in a temperature overshooting. This can be minimized with proper parameter settings. Therefore the firmware has an auto-tuning routine, which is actually working only for the hotends (see my description). After successful PID tuning the temperature control will be much improved.

I hope this will improve your understanding of the observed effects.

Dear Maxime,

I made a review of the mintemp-error conditions. The result is disillusioning.

For the generation of the internal raw error-limits an iteration is done to find the proper values:
starting with the maximum raw reading (HEATER_0_RAW_LO_TEMP: 16383) the raw value is reduced by the oversampling count number as long as the calculated temperature is lower than the lower limit (HEATER_0_MINTEMP, normally 5°C). This is like we reduce the ADC reading by 1 LSB.
Furthermore the datasheet from ATMEL gives an error reading for the ADC of typical 2 LSB.

Now have a look at the thermistor tables. The lowest temperature entry is for 0°C. Temperature readings below 0°C will be returned as 0°C from the conversion routine. So for the HEATER_0_MINTEMP -3°C the initialization routine will install the raw limit for 0°C.

In the thermistor table a binary value of 1008 is representing 0°C, for 5°C the setting is 1004 (Thermistor type 1). This means, one LSB is equivalent to 1.25°C. What are the consequences?

  1. The iteration routine for the mintemp limit value has an uncertainty of 1LSB = 1,25°C. That means, the real limit is between set-point and set-point + 1.25°C.

2)For each ADC reading the error of the readout can be up to 2 LSB = 2.5°C. By the oversampling of 16 times these errors are smoothed by a factor of 4, which means, that for the oversamples reading the error is about 0.6°C. Unfortunately, the error detection is looking at the raw ADC values with the possible errors. As a consequence the raw value reading of a room temperature of 6°C can be occasionally become 3.5°C for single readings. This will trigger the MinTemp-Error.

I believe that the default value for the mintemp-limit was settled for normal room temperatures, where these errors will have no impact. In your case with the cold room you should reduce the mintemp-limit to 3LSB or 3.75°C below your room temperature. In other words: your room temperature should be at least 3.75°C above the mintemp limit to allow a proper operation of the printer!

The heater raw value is used as sanity check for the temperature senor too. For a broken sensor the raw value will near the maximum ADC reading, which is unfortunately used as start condition for the raw value iteration. With a setting of the mintemp-limit <0°C this initial value is maintained and the sanity check disabled.
I would suggest to set the HEATER_x_MINTEMP value to 1°C. In this case you will have a proper operation of the printer and a control for the thermistor connections.

As a consequence of this analysis I will not modify the internal routine but set the HEATER_0_RAW_LO_TEMP value to 16192 (equivalent to -5°V reading). This shortens the iteration for the finding of the internal limits. An even if temperature limits below 0°C are given, this start value allows a proper detection of a broken temperature sensor.