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
Experimenting with Thermistors
  • Challenges & Projects
  • Design Challenges
  • Experimenting with Thermistors
  • More
  • Cancel
Experimenting with Thermistors
Challenge Blog Thermistor Thermometer - blog 2
  • Blog
  • Forum
  • Documents
  • Files
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: dougw
  • Date Created: 19 Sep 2022 4:59 AM Date Created
  • Views 1037 views
  • Likes 10 likes
  • Comments 3 comments
  • molex
  • doug wong
  • 24bit ADC
  • thermistor thermometer
  • Steinhart-Hart equation
  • Molex thermistors
  • experimenting with thermistors
Related
Recommended

Thermistor Thermometer - blog 2

dougw
dougw
19 Sep 2022

Intro

This has been an interesting challenge, but very rough. I got ill and have not been able to bounce back.. However the challenge requires 2 blogs, so I will attempt to publish what I have accomplished so far in this second blog. The 2 applications I had intended to build to demonstrate thermistor usage were a thermistor thermometer and a filament annealing oven. I did manage to get these together even though I did not get to do anywhere near the amount of testing I had planned.

image

Steinhart-Hart Coefficients

Here are the Steinhart-Hart coefficients calculated from the Molex datasheets for the parts in the kit:

Part# R @ 25C Beta Epoxy Bead Wire Steinhart-Hart a Steinhart-Hart b Steinhart-Hart c
2152723507 5K 3892K Black Red 0.0013297176 0.0002283299 1.282877672E-007
2152723307 3K 3892K Black Black 0.0014393219 0.0002304973 1.343585899E-007
2152723407 4.7K 3892K Blue Black 0.0013438721 0.0002284692 1.293070851E-007
2152723607 10K 3892K Black Black 0.0012756503 0.0002101366 1.820609429E-007
2152723707 12K 3892K Blue Red 0.0012411046 0.0002090866 0.000000179
2152723807 30K 3892K Blue Yellow 0.0009319708 0.0002246373 0.000000098
2138601637 10K 3500K ring Black 0.0008369564 0.0002638196 1.117434251E-007
2138602637 10K 3500K ring Black 0.0008369564 0.0002638196 1.117434251E-007
2138622637 10K 3500K ring Black 0.001002052 0.0002484052 8.289534666E-008

Thermistor Thermometer

The thermistor thermometer uses an Arduino Uno with 320x240 display connected to an SPI 24 bit A/D converter module. Hopefully this high resolution converter will provide good resolution when the thermistor resistance is not changing much. In conjunction with the Steinhart-Hart equation, this should allow the system to work well over a wide temperature range.

Here are the Arduino pin connections:

UNO pin ADS1220 pin Display pin
5V
Reset
3.3V
5V DVDD
GND DGND
GND
Vin
A0 LCD_RD
A1 LCD_WR
A2 LCD_CD
A3 LCD_CS
A4 CS
A5 DRDY
Rx
Tx
D2 D2
D3 D3
D4 D4
D5 D5
D6 D6
D7 D7
D8 D0
D9 D1
D10
D11 MOSI ASD
D12 MISO
D13 SCLK
GND
AREF
SDA
SCL

3D Printed Case

The first video shows the 3D printed case parts from all angles:

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

Thermistor Thermometer Demo

The next video shows the thermometer assembly and demonstrates it in operation.

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

The thermometer really seems to work well, although I have not tested it enough yet.

Filament Annealing Oven

The other application I wanted to build was a low temperature thermally controlled oven. This prototype is a proof of concept using materials I had in-house. If it works well, I will build an oven out of a giant cookie tin. 

This video shows the concept:

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

Once the concept is proven and the final build is complete the ring thermistor will end up bolted in an appropriate location.

Firmware

Here is the firmware for the thermometer, such as it is....

// Thermistor Thermometer
// Doug Wong 2022
// 

#include <Elegoo_GFX.h>    // Core graphics library
#include <Elegoo_TFTLCD.h> // Hardware-specific library

#include "Protocentral_ADS1220.h"

// The control pins for the LCD can be assigned to any digital or
// analog pins...but we'll use the analog pins as this allows us to
// double up the pins with the touch screen (see the TFT paint example).
#define LCD_CS A3   // Chip Select goes to Analog 3
#define LCD_CD A2   // Command/Data goes to Analog 2
#define LCD_WR A1   // LCD Write goes to Analog 1
#define LCD_RD A0   // LCD Read goes to Analog 0
//#define ADCS A4     // A/D CS pin goes to Analog 4
#define DRDY A5     // A/D DRDY pin goes to Analog 5

#define PGA          1                 // Programmable Gain = 1
#define VREF         2.048             // Internal reference of 2.048V
#define VFSR         VREF/PGA
#define FULL_SCALE   (((long int)1<<23)-1)

#define LCD_RESET A4 // just connect to Arduino's reset pin

//  Arduino Uno - LCD display :
//   D0 connects to digital pin 8  
//   D1 connects to digital pin 9  
//   D2 connects to digital pin 2
//   D3 connects to digital pin 3
//   D4 connects to digital pin 4
//   D5 connects to digital pin 5
//   D6 connects to digital pin 6
//   D7 connects to digital pin 7

// Assign human-readable names to some common 16-bit color values:
#define	BLACK   0x0000
#define	BLUE    0x001F
#define	RED     0xF800
#define	GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

Elegoo_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// Elegoo_TFTLCD tft;

Protocentral_ADS1220 myADC;

int32_t AD;           //raw A/D reading
float AV;             //A/D voltage reading
float TC;             //thermistor current
double TR;             //thermistor resistance
float TT = 20.0;      //thermistor temperature

float a = 0.001329717596;       //thermistor constant
float b = 0.0002283299097;      //thermistor constant
float c = 0.0000001282877672;   //thermistor constant
float lnr;
float bln;
float cln;
float lnt;

void setup(void) {

  tft.reset();
  
  uint16_t identifier;
  identifier=0x9328;      //could be 0x9341 0x9328 0x7575 0x8357 

  tft.begin(identifier);
  tft.fillRect(0, 0, 240, 320, BLACK);
  tft.setRotation(0);
  DisplayTitle();
  digitalWrite (LCD_CS, 0);            //disable display
  delay(2000);
  
    myADC.begin(LCD_RESET, DRDY);             //myADC.begin(CS_PIN, DRDY_PIN);
 
    myADC.set_data_rate(DR_20SPS);
    myADC.set_pga_gain(PGA_GAIN_1);
 
    myADC.set_conv_mode_single_shot();   //Set Single shot mode

}

void loop(void) {
    AD = myADC.Read_SingleShot_SingleEnded_WaitForData(MUX_SE_CH0);
    AV = AD * 0.0001220703125;            //voltage in millivolts
    TC = (4350 - AV) / 33;                //current in milliamps
    TR = AV / TC;                         //thermistor resistance
    TR = TR * 2398;                       //resistance correction
    lnr = log(TR);                        //ln(T)
    bln = b * lnr;
    lnt = lnr * lnr * lnr;                //ln(T)^3
    cln = c * lnt;
    TT = 1/ (a + bln + cln) - 273;       //Steinhart-Hart equation
    digitalWrite (LCD_CS, 1);            //enable display
    DisplayT();
    digitalWrite (LCD_CS, 0);            //disable display
    delay(500);
}

unsigned long DisplayT() {
  tft.fillRect(50, 100, 146, 102, BLACK);
  tft.setTextColor(YELLOW);
  tft.setTextSize(5);
  tft.setCursor(50, 100);
  tft.println(TT);
}

unsigned long DisplayTitle() {
  tft.fillRect(50, 100, 220, 300, BLACK);
  unsigned long start = micros();
  tft.setCursor(0, 10);
  tft.setTextColor(GREEN);
  tft.setTextSize(4);
  tft.println("THERMISTOR");
  tft.setTextColor(YELLOW);
  tft.setTextSize(3);
  tft.setCursor(20, 50);
  tft.println("Thermometer");
  tft.setTextColor(YELLOW);
  tft.setTextSize(5);
  tft.setCursor(50, 100);
  tft.println(TT);
}

Discussion

I can't say this project went the way I planned it or wanted it to go - getting ill really messed up the plan. I also had some issues with supply chain - the 24 bit A/D barely made it here in time to be used. That chip also seems to get unexpectedly warm, so I'm not sure if I'm loading it somehow, or it is just a bad knock-off chip. (It cost a small fraction of what I would expect a 24 bit A/D to cost). The Uno barely has enough pins to handle both the display and the A/D module. I had to hard-wire the display reset to the Uno reset line just to free up a pin.

I am impressed with the response time of these little epoxy bead thermistors, and the Molex datasheets provide excellent data to allow correction for their non-linear response. I am happy the thermistor thermometer came together and worked in time to publish before the deadline, but I am also disappointed I could not complete more testing. Fortunately some of the other contestants did a stellar job of testing.

I definitely learned a lot more about thermistors than I knew before this project. I would like to thank Molex and element14 for the opportunity to participate.

Relevant Links:

Thermistor Thermometer - blog 1
challenges-projects/design-challenges/experimenting-with-thermistors/"/a>
https://challenges-projects/design-challenges/experimenting-with-thermistors/w/documents/27632/experimenting-with-thermistors?ICID=expThermistors-DCH-topban
https://www.molex.com/molex/search/partSearch?query=215272&pQuery=

  • Sign in to reply
  • ntewinkel
    ntewinkel over 2 years ago

    Hope you feel better soon, dougw !

    Even with that setback you still achieved some amazing results! Great projects!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • genebren
    genebren over 2 years ago

    Doug, I hope that you are feeling better soon.  This can really take a lot of out of you, with a very slow recovery curve, so be patient and let yourself heal.  Well done!  I am thinking about a similar project for my filament storage.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • michaelkellett
    michaelkellett over 2 years ago

    Sorry to hear that you are not well. Hope you recover fully soon.

    Meanwhile, thanks for making such an effort to keep up with the blogging.

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
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