Skip to main content

Thermocouple emf reference functions for types B,C,D,E,G,J,K,N,R,S,T

Project description

Python module containing calibration data and lookup functions for standard thermocouples of types B, C, D, E, G, J, K, N, R, S, T.

Usage and examples

Below, the first computation shows that the type K termocouple emf reference function at 42 °C is 1.694 mV (compare to NIST table); the second calculation shows how passing in an array applies the function for each element, in the style of numpy:

>>> from thermocouples_reference import thermocouples
>>> typeK = thermocouples['K']
>>> typeK
Type K (chromel :: alumel) thermocouple reference (-270.0 to 1372.0 Celsius)
>>> typeK.emf_mVC(42)
1.6938477049901346
>>> typeK.emf_mVC([-3.14159, 42, 54])
array([-0.12369326,  1.6938477 ,  2.18822176])

The function is called emf_mVC just to remind you that its output is always millivolts and its input is always degrees Celsius. For SI-minded folks a function emf_VK is also provided, however note that its output is still zeroed at 273.15 K.

An inverse lookup function is provided that you can use to get a temperature out of a measured voltage, including cold junction compensation effects. If we put our type K thermocouple into a piece of spam and we read 1.0 mV, using our voltmeter at room temperature (23 °C), then the spam is at 47 °C. [1]

>>> typeK.inverse_CmV(1.0, Tref=23.0)
47.48175880786998
>>> typeK.emf_mVC(47.48175880786998) - typeK.emf_mVC(23) # confirm
1.0

You can also compute derivatives of the emf function (these are functional derivatives, not finite differences). The Seebeck coefficients of chromel and alumel differ by 42.00 μV/K, at 687 °C:

>>> typeK.emf_mVC(687,derivative=1)
0.041998175982382979

Data sources

Graphs of functions (if you don’t see anything, see low temperature types here and high temperature types here):

https://upload.wikimedia.org/wikipedia/commons/f/f8/Low_temperature_thermocouples_reference_functions.svg https://upload.wikimedia.org/wikipedia/commons/c/c3/High_temperature_thermocouples_reference_functions.svg

Readers may be familiar with thermocouple lookup tables (example table). Such tables are computed from standard reference functions, generally piecewise polynomials. [2] This module contains the source polynomials directly, and so in principle it is more accurate than any lookup table.

  • Types B,E,J,K,N,R,S,T use coefficients from NIST, and are calibrations to the ITS-90 scale. The ITS-90 scale is believed to track the true thermodynamic temperature very closely. [3]

  • Types C,D,G use coefficients found from a publication of OMEGA Engineering Inc., and are calibrations to IPTS-68 or ITS-90 scale, not sure which (the difference is negligible since these thermocouples have larger manufacturing variations).

The NIST tables also include approximate inverse polynomials for temperature lookup based on a given compensated emf value. Those inverse polynomials are not included in this module.

Requirements

  • numpy

  • scipy (optional, only needed for inverse lookup)

  • python2 or python3 languages

Installation

Recommended installation is via pip. First, install pip. Then:

pip install thermocouples_reference --user

(Remove the --user option if you are superuser and want to install system-wide.)

Disclaimer

This module is provided for educational purposes. For any real-world process, I strongly recommend that you check the output of this module against a known good standard.

I make no warranties as to the accuracy of this module, and shall not be liable for any damage that may result from errors or omissions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

thermocouples_reference-0.16.tar.gz (10.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page