element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Sensors
  • Technologies
  • More
Sensors
Sensor Forum Any ideas for low-cost Thermocouple Interfacing methods?
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Sensors to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 25 replies
  • Subscribers 340 subscribers
  • Views 6491 views
  • Users 0 members are here
  • thermocouple
  • thermistor
Related

Any ideas for low-cost Thermocouple Interfacing methods?

shabaz
shabaz over 3 years ago

Note: See here for a project that resulted from this discussion: BLE EasyTempProbe 

Hi,

Since thermocouple measurement ICs are getting expensive/hard to find, I wished to use a single channel ADC, for thermocouple measurements (actually, I want to use a dual channel ADC for two thermocouples, but it's likely the same problem just doubled!).

The trouble is, the cold end of the thermocouple needs measuring too, and I was thinking of using a thermistor for that because that's easier to obtain (and cheaper) than an IC sensor. In summary, I wished to multiplex a thermistor and a thermocouple.

I've come up with the diagram below so far and wish to use it in an environment where the cold junction might be in the range of -40 to +50 deg C, and the thermocouple might be in the range of -40 to +400 deg C (maybe a Type J thermocouple). I think it will have an error of a few deg C. The ADC is 16-bit, and I likely won't be using the whole range of it. The ADC has a PGA of up to 8X, so it will be set to 8X when measuring the thermocouple.

The main benefit of the proposal below is that it is cheap since it just needs a couple of transistors and a few resistors. I could think of more complex circuits for a more accurate measurement, but it would be nice to see if this is good enough, or if it could be tweaked to be good enough unless anyone has other suggestions.

If it works, this would be a cheap way (under $5, ADC included) to have two thermocouples each with their own compensation, with the drawbacks that accuracy might be a few degrees at best, and no isolation either, unfortunately. 

Any ideas would be gratefully appreciated, since I'm sure I may be missing some great techniques, missing the wood for the trees, etc! Has anyone come across any low-cost methods to do such a thing? Any mistakes I'm making?

image

  • Sign in to reply
  • Cancel

Top Replies

  • michaelkellett
    michaelkellett over 3 years ago +6
    Thinking out loud: Both transistors off, no path on input to 0V so ADC pins 2 and 3 pulled to 3.3V, probably outsiede ADC common mode range. Both transistors on, both sides of thermocouple pulled to…
  • shabaz
    shabaz over 3 years ago +3
    Hi fmilburn (Replying here to remove the comment indent, since I wanted to share some diagrams) I've had a shot at doing it, and was close to giving up since I was seeing huge errors!, but it was…
  • shabaz
    shabaz over 3 years ago +3
    I had a short bit of time to try to prototype this, it is not tested yet. The jumper positions on the left select different resistors, to simulate the thermistor, to be at a temperature of -30, 0, 25 or…
Parents
  • shabaz
    shabaz over 3 years ago

    Results are reasonable so far. I am using the following four resistances to simulate a thermistor with parameters R25=1k Beta=3650:

    Jumper Position Resistors Used Measured with Multimeter (kOhm) Simulated Temperature (deg C)
    1 390R // 68k 0.3844 50.26
    2 1k 1.001 24.98
    3 5.6k // 6.8k 3.068 -0.01
    4 27k // 39k 15.939 -29.99

    The supply voltage was measured with a multimeter to be 3.309V, and the thermocouple filter resistor was 47 ohm, measured with a multimeter to be 46.85 ohm.

    For the test, I selected one jumper at a time for the thermistor simulation, and then applied -5.00 mV and +20.00 mV to the thermocouple connection, to simulate about -154 deg C to 485 deg C for a Type K thermocouple.

    The code just uses the Beta value to determine the thermistor temperature, but the code could be modified for a better model. I'm only concerned with testing the circuit and ADC currently, not modelling the thermistor, because I have not selected a particular thermistor yet, I am merely simulating it, and the simulation uses the Beta value of 3650 for now.

    The code currently only displays the thermocouple connection voltage, and not the temperature, because I have not implemented a lookup table yet.

    The code prints output like this on the serial console:

    0: thermistor = 50.33 degC, thermocouple = -4.99 mV

    0: thermistor = 50.39 degC, thermocouple = -4.99 mV

    0: thermistor = 50.38 degC, thermocouple = -4.99 mV

    I'm averaging 8 samples. Results are:

    Jumper Position Result with -5.00 mV applied Result with +20.00 mV applied
    1 (50.26 deg C)

    Thermistor error: 0.13 deg C

    Thermocouple error: 0.01 mV (0.04 deg C)

    Thermistor error: -0.21 deg C

    Thermocouple error: -0.04 mV (-0.09 deg C)

    2 (24.98 deg C)

    Thermistor error: 0.10 deg C

    Thermocouple error: 0.01 mV (0.04 deg C)

    Thermistor error: -0.02 deg C

    Thermocouple error: -0.05 deg C (-0.12 deg C)

    3 (-0.01 deg C)

    Thermistor error: 0.11 deg C

    Thermocouple error: 0.03 mV (0.13 deg C)

    Thermistor error: 0.06 deg C

    Thermocouple error: -0.05 mV (-0.12 deg C)

    4 (-29.99 deg C)

    Thermistor error: 0.21 deg C

    Thermocouple error: 0.11 mV (0.48 deg C)

    Thermistor error: 0.19 deg C

    Thermocouple error: -0.16 mV (-0.38 deg C)

    This seems usable considering the circuit is so cheap/basic. It relies on knowing the 10k resistance and the supply voltage reasonably accurately, but that is a solved problem, since 1% 10k resistors are cheap (and they could always be more precisely selected with a multimeter if desired, or the precise value can be entered in the code, which is what I did; the code has these constants:

    // components and voltages
    #define VPLUS 3.309
    #define RTOP 10045.00
    // thermocouple filter resistor value
    #define RFILT 46.85


    I'll create a PCB for this, and tidy up the code a bit and put it on GitHub.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • shabaz
    shabaz over 3 years ago

    Results are reasonable so far. I am using the following four resistances to simulate a thermistor with parameters R25=1k Beta=3650:

    Jumper Position Resistors Used Measured with Multimeter (kOhm) Simulated Temperature (deg C)
    1 390R // 68k 0.3844 50.26
    2 1k 1.001 24.98
    3 5.6k // 6.8k 3.068 -0.01
    4 27k // 39k 15.939 -29.99

    The supply voltage was measured with a multimeter to be 3.309V, and the thermocouple filter resistor was 47 ohm, measured with a multimeter to be 46.85 ohm.

    For the test, I selected one jumper at a time for the thermistor simulation, and then applied -5.00 mV and +20.00 mV to the thermocouple connection, to simulate about -154 deg C to 485 deg C for a Type K thermocouple.

    The code just uses the Beta value to determine the thermistor temperature, but the code could be modified for a better model. I'm only concerned with testing the circuit and ADC currently, not modelling the thermistor, because I have not selected a particular thermistor yet, I am merely simulating it, and the simulation uses the Beta value of 3650 for now.

    The code currently only displays the thermocouple connection voltage, and not the temperature, because I have not implemented a lookup table yet.

    The code prints output like this on the serial console:

    0: thermistor = 50.33 degC, thermocouple = -4.99 mV

    0: thermistor = 50.39 degC, thermocouple = -4.99 mV

    0: thermistor = 50.38 degC, thermocouple = -4.99 mV

    I'm averaging 8 samples. Results are:

    Jumper Position Result with -5.00 mV applied Result with +20.00 mV applied
    1 (50.26 deg C)

    Thermistor error: 0.13 deg C

    Thermocouple error: 0.01 mV (0.04 deg C)

    Thermistor error: -0.21 deg C

    Thermocouple error: -0.04 mV (-0.09 deg C)

    2 (24.98 deg C)

    Thermistor error: 0.10 deg C

    Thermocouple error: 0.01 mV (0.04 deg C)

    Thermistor error: -0.02 deg C

    Thermocouple error: -0.05 deg C (-0.12 deg C)

    3 (-0.01 deg C)

    Thermistor error: 0.11 deg C

    Thermocouple error: 0.03 mV (0.13 deg C)

    Thermistor error: 0.06 deg C

    Thermocouple error: -0.05 mV (-0.12 deg C)

    4 (-29.99 deg C)

    Thermistor error: 0.21 deg C

    Thermocouple error: 0.11 mV (0.48 deg C)

    Thermistor error: 0.19 deg C

    Thermocouple error: -0.16 mV (-0.38 deg C)

    This seems usable considering the circuit is so cheap/basic. It relies on knowing the 10k resistance and the supply voltage reasonably accurately, but that is a solved problem, since 1% 10k resistors are cheap (and they could always be more precisely selected with a multimeter if desired, or the precise value can be entered in the code, which is what I did; the code has these constants:

    // components and voltages
    #define VPLUS 3.309
    #define RTOP 10045.00
    // thermocouple filter resistor value
    #define RFILT 46.85


    I'll create a PCB for this, and tidy up the code a bit and put it on GitHub.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube