Skip to main content

How does one use the PT100 Amp Board with a 3.3v controller, eg RADDs

The documentation indicates that the PT100 needs a 5v supply and provides a 5v output.

Is this usable with a 32-bit contoller? Can it be supplied with 3.3v and hooked up to a 3.3 v input?


Thanks!

Answer this question I have this problem too

Is this a good question?

Score 1
Add a comment

4 Answers

Most Helpful Answer

[Not an E3D representative]

EDIT:

Today I got serious and made a proper test rig, wrote a bunch of Arduino code and hooked up a proper digital thermometer.

Below are the results, for pretty accurate E3D PT100 in Marlin, running the amplifier board off the ICSP header 3.3V pin. I use the TH0 thermistor input, with the 4K7 pull-up resistor removed. (There really aren’t many options on the basic board and leaving the resistor there will mess up the temperatures big time.)

So how? … Duplicate `Marlin/src/module/thermistor/thermistor_20.h`, naming the new file `thermistor_21.h`. Then over-paste (replace) the following, from `#pragma` onwards.

Marlin/src/module/thermistor/thermistor_21.h
--------------------------------------------

#pragma once

// PT100 with E3D INA826 amp on 3.3V SKR 1.3 (Smoothieboard)
/// *** SOME TEMPS EXTRAPOLATED *** See table below.
// The PT100 in the Ultimaker v2.0 electronics has a high sample value for a high temperature.
// This does not match the normal thermistor behavior so we need to set the following defines
#if THERMISTOR_HEATER_0 == 21
  #define HEATER_0_RAW_HI_TEMP 16383
  #define HEATER_0_RAW_LO_TEMP 0
#endif
#if THERMISTOR_HEATER_1 == 21
  #define HEATER_1_RAW_HI_TEMP 16383
  #define HEATER_1_RAW_LO_TEMP 0
#endif
#if THERMISTOR_HEATER_2 == 21
  #define HEATER_2_RAW_HI_TEMP 16383
  #define HEATER_2_RAW_LO_TEMP 0
#endif
#if THERMISTOR_HEATER_3 == 21
  #define HEATER_3_RAW_HI_TEMP 16383
  #define HEATER_3_RAW_LO_TEMP 0
#endif
#if THERMISTOR_HEATER_4 == 21
  #define HEATER_4_RAW_HI_TEMP 16383
  #define HEATER_4_RAW_LO_TEMP 0
#endif
#if THERMISTOR_HEATER_5 == 21
  #define HEATER_5_RAW_HI_TEMP 16383
  #define HEATER_5_RAW_LO_TEMP 0
#endif
#if THERMISTORBED == 21
  #define HEATER_BED_RAW_HI_TEMP 16383
  #define HEATER_BED_RAW_LO_TEMP 0
#endif
#if THERMISTORCHAMBER == 21
  #define HEATER_CHAMBER_RAW_HI_TEMP 16383
  #define HEATER_CHAMBER_RAW_LO_TEMP 0
#endif
const short temptable_21[][2] PROGMEM = {
  { OV(  0),    0 },  // NA
  { OV(227),    1 },  // EXTRAPOLATED
  { OV(236),   10 },  // EXTRAPOLATED
  { OV(245),   20 },  // EXTRAPOLATED
  { OV(253),   30 },  // EXTRAPOLATED
  { OV(262),   40 },  // MEASURED
  { OV(270),   50 },  // MEASURED
  { OV(275),   60 },  // MEASURED
  { OV(285),   70 },  // MEASURED
  { OV(294),   80 },  // MEASURED
  { OV(302),   90 },  // MEASURED
  { OV(310),  100 },  // MEASURED
  { OV(318),  110 },  // MEASURED
  { OV(326),  120 },  // MEASURED
  { OV(335),  130 },  // MEASURED
  { OV(342),  140 },  // MEASURED
  { OV(351),  150 },  // MEASURED
  { OV(359),  160 },  // MEASURED
  { OV(367),  170 },  // MEASURED
  { OV(375),  180 },  // MEASURED
  { OV(383),  190 },  // MEASURED
  { OV(391),  200 },  // MEASURED
  { OV(399),  210 },  // MEASURED
  { OV(407),  220 },  // MEASURED
  { OV(415),  230 },  // MEASURED
  { OV(423),  240 },  // MEASURED
  { OV(432),  250 },  // MEASURED
  { OV(440),  260 },  // MEASURED
  { OV(447),  270 },  // MEASURED
  { OV(454),  280 },  // MEASURED
  { OV(462),  290 },  // MEASURED
  { OV(470),  300 },  // MEASURED
  { OV(478),  310 },  // MEASURED
  { OV(485),  320 },  // MEASURED
  { OV(492),  330 },  // MEASURED
  { OV(499),  340 },  // MEASURED
  { OV(507),  350 },  // MEASURED
  { OV(514),  360 },  // MEASURED
  { OV(520),  370 },  // MEASURED
  { OV(522),  380 },  // MEASURED
  { OV(524),  390 },  // MEASURED
  { OV(526),  400 },  // MEASURED
  { OV(528),  410 },  // MEASURED
  { OV(531),  420 },  // MEASURED
  { OV(533),  430 },  // MEASURED
  { OV(535),  440 },  // MEASURED
  { OV(537),  450 },  // MEASURED
  { OV(614),  500 },  // ??
  { OV(681),  600 },  // ??
  { OV(744),  700 },  // ??
  { OV(805),  800 },  // ??
  { OV(862),  900 },  // ??
  { OV(917), 1000 },  // ??
  { OV(968), 1100 }   // ??
};

Finally, change stuff such that you get …

#define TEMP_SENSOR_0 21

… in Configuration.h and you’re golden.

No promises. Catch me if you can! :p

Working great for me. :-)

Oh! Here’s the pesky resistor …

Block Image

And FWIW, here’s the test hardware …

Block Image

Was this answer helpful?

Score 1

Comments:

I did the same with my SKR PRO 1.1, my room temp values are about 20C off from what they should be.

by

Today I got serious about this and did real world measurements with a custom made rig. See my edited reply, above. High confidence in this one, now. ;-) Remember -- you MUST remove the 4K7 pull-up resistor.

by

remove the resistor and bridge the pads? or just remove all together?

by

I can answer my own question. remove and leave open.

by

Bryan have you had any issues with this config? It was working out nice for me for multiple prints and then I had one fail for thermal runaway. both hotends were reading 1 deg. turned off power for a bit. now reading normal again. durring print though the second hotend was reading one again. I have also switched sensors just to be sure the error wasn't there. I am wondering if it's not the board or something from the amplifier because of low voltage.

by

Add a comment

Hi Duncan,

The PT100 amplifier board requires a stable 5v connection to work correctly therefore it is not possible for use with a 3.3v power input.

Was this answer helpful?

Score 0
Add a comment

A stable 5v supply is available in my system, I have one to drive the bltouch. Is there a recommended solution to scale the output back to 3.3volts? Or some other solution? It looks like the amp itself will run at 3.3v.

If not, it looks like a gap in your product line given the popularity of 32 bit controllers now.

Thanks!

Was this answer helpful?

Score 0
Add a comment

The issue is most 3.3 volt 32-bit controller chips are only 5 volt signal tolerant on their digital pins.


Placing more than 3.3 volts on an analog pin will damage the chip.


You may be able to limit the PT100 amplifier output signal’s voltage to a max of 3.3 volts by using a moderate resistance in series resistor (60 to 100 ohms 1/4watt) on the 5 volt powered PT100 amplifier signal output to limit the output current with a small signal diode (e.g. a 1N914) connected to the resistor’s other pin in reverse biased fashion to the 3.3 volt supply of your 32-bit controller board. A 60 ohm resistor should limit any current from the PT100 signal output at 5V to the 3.3V supply via the diode to 20 mA protecting your 32 bit electronics.


Block Image

Was this answer helpful?

Score 0
Add a comment

Add your answer

Duncan Smith will be eternally grateful.
View Statistics:

Past 24 Hours: 2

Past 7 Days: 12

Past 30 Days: 81

All Time: 339