Skip to main content

A list of temperature sensors.

6 Questions View all

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

6 Answers

Most Helpful Answer

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 1

Comments:

Thank you for this tip. My amplifier is connected to 5v but nevertheless I had a problem with RADDS/Repetier showing "def" (no pt100) or "dec" (temp too far away) for extruder temp after some random print time. I tried your resistor / diode solution and now I can see temperatures rise up to 275°C for a second and then fall back to 240°C. I believe, that these temperature jumps before lead to behaviour mentioned above.

But one question remains: why do I still see these temperature jumps? Is my amplifier board broken? The cables seem to be ok (I touched them several times without any temperature change)

by

Just wanted to say, that I found one of the crimped contacts of the PT100 to be faulty ( by e3d). I crimped my own contacts, and now the temperature readings are stable.

by

Add a comment

[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

Please see the following contents of a thermistor header file I named thermistor_22.h (can be any unused thermistor number). This was done for the BTT V1.4 boards using a E3D PT100 amp with the INA826 chip but may apply to other similar controller boards. See details of hardware & software install in the file text.

I hope this helps.

/**

  • Marlin 3D Printer Firmware

*

  • Based on Sprinter and grbl.
  • Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm

*

  • This program is free software: you can redistribute it and/or modify
  • it under the terms of the GNU General Public License as published by
  • the Free Software Foundation, either version 3 of the License, or
  • (at your option) any later version.

*

  • This program is distributed in the hope that it will be useful,
  • but WITHOUT ANY WARRANTY; without even the implied warranty of
  • MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  • GNU General Public License for more details.

*

  • You should have received a copy of the GNU General Public License

*

*/

#pragma once

#define REVERSE_TEMP_SENSOR_RANGE

//

// Marlin temperature sensor type 22

//

// This was created to allow use of the E3D PT100 amplifier (using INA826) on the BigTreeTech

// and similar boards without requiring any hardware mods (cutting traces, changing resistors, etc.).

// The BigTreeTech boards have a 3.3V ADC reference and a 4.7K pullup resistor

// connected to the Thermistor inputs so we can't use the standard Marlin temp sensor types.

//

// *** HARDWARE CONFIGURATION:

//

// Since the BigTreeTech board is not 5V tolerant the E3D PT100 amplifier board needs to operate

// at 3.3V.

// NOTE: the PT100 amp board will operate fine at 3.3V but it won't report temperatures beyond

// approx 360C because the output of the INA826 goes into saturation.

// 3.3V can be found on some BTT connectors (WIFI connector on the SKR V1.4)

// Connect the signal output of the PT100 amp to the standard thermistor input on the BTT board.

//

// *** SOFTWARE INSTALL:

//

// This header file must be compiled into the Marlin 2.0.x firmware. The current release of Marlin at

// this time is 2.0.5.3 and the firmware is compiled using VSCode with the PlatformIO IDE installed.

//

// 1) Add this header file into the 'thermistor' directory (Marlin/src/module/thermistor).

//

// 2) In the same directory open the 'thermistors.h' file and add the following text:

// #if ANY_THERMISTOR_IS(22)

// #include "thermistor_22.h"

// #endif

//

// 3) In 'configuration.h' change the nozzle thermistor type:

// #define TEMP_SENSOR_0 22 // use new thermistor table 22

//

// 4) In 'configuration.h' insure max temp is not > 360C:

// #define HEATER_0_MAXTEMP 310

//

// *** CALCULATIONS:

//

// Array values below were derived using a standard PT100 thermocouple resistance vs temperature

// table available online.

//

// Constants:

// Vref = 3.30V

// Rb = 4400 (total series resistance of the two bridge resistors in the INA826 circuit)

// Rpu = 4700 (pullup resistor on the BTT thermistor input)

// Ramp = 100 (INA826 amp output buffer resistor)

// RTD = Resistance @ temperature from thermocouple table. Example 111 ohms at 25C.

//

// Calculate Vo : output of the INA826 amplifier in the E3D circuit.

// Vo = ((Vref / (RTD + Rb)) * RTD) * 10

// Next calculate Vadc : output voltage with a 4.7K pullup to 3.3V and a 100 ohm series output resistor.

// Vadc = (((Vref - Vo) / Rpu) * Ramp) + Vo

// Lastly calculate ADC digital value for each point in the array below (10 bit ADC, 0 - 1023).

// ADC = (Vadc / Vref) * 1024

//

// The first value in the array below is the raw ADC value. The second value is the temperature equivalent.

// Incremental values are calculated by Marlin using interpolation.

//

// John@Abbycus Consulting

//

const short temptable_22[][2] PROGMEM = {

{ OV( 0), 0 },

{ OV(245), 1 },

{ OV(253), 10 },

{ OV(261), 20 },

{ OV(270), 30 },

{ OV(278), 40 },

{ OV(287), 50 },

{ OV(295), 60 },

{ OV(303), 70 },

{ OV(311), 80 },

{ OV(319), 90 },

{ OV(328), 100 },

{ OV(336), 110 },

{ OV(344), 120 },

{ OV(352), 130 },

{ OV(360), 140 },

{ OV(368), 150 },

{ OV(376), 160 },

{ OV(384), 170 },

{ OV(391), 180 },

{ OV(399), 190 },

{ OV(407), 200 },

{ OV(415), 210 },

{ OV(422), 220 },

{ OV(430), 230 },

{ OV(438), 240 },

{ OV(445), 250 },

{ OV(453), 260 },

{ OV(460), 270 },

{ OV(468), 280 },

{ OV(475), 290 },

{ OV(483), 300 },

{ OV(490), 310 },

{ OV(497), 320 },

{ OV(505), 330 },

{ OV(512), 340 },

{ OV(519), 350 },

{ OV(526), 360 },

{ OV(533), 370 },

{ OV(541), 380 },

{ OV(548), 390 },

{ OV(554), 400 },

{ OV(623), 500 },

{ OV(689), 600 },

{ OV(751), 700 },

{ OV(810), 800 },

{ OV(850), 900 },

{ OV(910), 1000 },

{ OV(960), 1100 }

};

Was this answer helpful?

Score 1

Comments:

Wonderful, will try today thank you

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

Hi, The E3D PT100 board can be run at 3.3V. The other thing is that most 3D printer controller boards have a 4.7K pullup on the thermistor input. This creates an offset and skews the temperature reading. This is why people that just try to run the PT100 amplifier at 3.3V get strange readings.

All that is needed is a proper thermistor translation table to operate correctly. I had to do this for the Bigtreetech 1.4 board and I already had the E3D board from an older machine. I’m not sure how to pass along files on this forum but I have the header file “thermistor_22.h” and can share with anyone that is interested.

Update (07/09/2020)

Please see info on Github: https://github.com/johnny49r/BigTreeTech

Was this answer helpful?

Score 0

Comments:

Hi John, it would be amazing if you could send this information over to support@e3d-online.com so I can create more board-specific guides for the PT100. - If you mention my name 'Dan' the information will get passed onto me.

by

@johnny49r would you mind sharing please, receiving mine tomorrow for use with a SKR board with 4.77K pull-up. Thank you in advance.

by

@johnny49r Mind sharing it with me aswell? Got the skr 1.4 turbo yesterday and completely bummed that i cannot use it without removing the resistor. I really hope your table will work.

by

John for the love of all humanity (okay maybe just a handful of us), please post the details/table on how you got this working! It would be much appreciated. :)

by

@weioo Hi Brandon, please see info on Github - https://github.com/johnny49r/BigTreeTech

I hope this helps. I have two custom printers that use the BTT / PT100 hardware combination and the method works great. Limitation: Max temp without any hardware mods is about 360 C.

Please let me know if you need further info and I would like to hear if you are successful. John

by

Add a comment

Add your answer

Duncan Smith will be eternally grateful.
View Statistics:

Past 24 Hours: 1

Past 7 Days: 19

Past 30 Days: 202

All Time: 2,126