Skip to main content

Steinhart -- Hart and Beta thermistor temperature model in Python and C. Implementation and utilities

Project description

Thermistor utilities

A python based library implementing models to convert thermistor values from temperature to resistance and vice versa.

Steinhart--Hart model

Implementation precision

SH resistance to temperature chart SH temperature to resistance chart

How to use

# import the Steinhart--Hart and or the Beta converter
from thermistor_utils import SH_converter

Create a converter from A, B, and C coefficients:

A, B, C = (0.0008402250578523375, 0.00025963477647737156, 1.5674403473853433e-07, )
conv = SH_converter(A, B, C)

If they're not available the converter could compute the values from three evenly spaced readings of temperature and resistance.

Create the converter from temp/res readings:

readings = (
    (0, 27445),
    (25, 10000),
    (50, 4160),
)
conv = SH_converter.from_points(readings)

Printing the coefficients in a form suitable for subsequent use in python and C:

print(repr(conv))

# SH_converter(0.0008402250578523375, 0.00025963477647737156, 1.5674403473853433e-07, 0, 50)

print(conv.to_cstr())

# {0.0008402250578523375, 0.00025963477647737156, 1.5674403473853433e-07, 0, 50}

# compact but less precise representation
# (inverse of coefficients and no temperature range)
print(conv.to_cstr(compact=True, with_temps=False))

# {1./1190, 1./3852, 1./6379828}

Use the reference implementation in C (example-1.c):

#include <stdio.h>
#include <thermistor_utils.h>

int main(void)
{
    struct sh_s coefficients = {
        0.0008402250578523375,
        0.00025963477647737156,
        1.5674403473853433e-07
    };

    // 25C to Ohm and 10k Ohm to Celsius
    double  R_at_25   = sh_resistance(coefficients, 25),
            T_at_10000 = sh_temperature(coefficients, 10000);

    printf("25 Celsius -> %.0f Ohms\n", R_at_25);
    printf("10k Ohms   -> %.0f Celsius\n", T_at_10000);
}

To compile and run from the examples directory:

$ mkdir -p ../bin
$ gcc -o ../bin/example-1 \
    -I../src/include \
    ../src/sh_converter.c \
    -lm \
    example-1.c

$ ../bin/example-1
25 Celsius -> 10000 Ohms
10k Ohms   -> 25 Celsius

Beta model

Implementation precision

Beta resistance to temperature chart Beta temperature to resistance chart

How to use

# import the Steinhart--Hart and or the Beta converter
from thermistor_utils import Beta_converter

Create a converter from beta values:

beta, R0, T0 = (3380, 10000, 25)
conv = Beta_converter(beta, R0, T0)

Printing the beta values in a form suitable for subsequent use in python and C:

print(repr(conv))

# Beta_converter(3380, 10000, 25)

print(conv.to_cstr())

# {3380, 10000, 25}

Use the reference implementation in C (example-2.c):

#include <stdio.h>
#include <thermistor_utils.h>

int main(void)
{
    struct beta_s bpar = {3380, 10000, 25};

    // 25C to Ohm and 10k Ohm to Celsius
    double  R_at_25   = beta_resistance(bpar, 25),
            T_at_10000 = beta_temperature(bpar, 10000);

    printf("25 Celsius -> %.0f Ohms\n", R_at_25);
    printf("10k Ohms   -> %.0f Celsius\n", T_at_10000);
}

To compile and run from the examples directory:

$ mkdir -p ../bin
$ gcc -o ../bin/example-2 \
      -I../src/include \
      ../src/beta_converter.c \
      -lm \
      example-2.c

$ ../bin/example-2
25 Celsius -> 10000 Ohms
10k Ohms   -> 25 Celsius

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

thermistor_utils-0.0.4.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

thermistor_utils-0.0.4-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file thermistor_utils-0.0.4.tar.gz.

File metadata

  • Download URL: thermistor_utils-0.0.4.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.8.0

File hashes

Hashes for thermistor_utils-0.0.4.tar.gz
Algorithm Hash digest
SHA256 a648689bb6e55129cb14403aae985068246e1365d74b154db33f2a86a38a415c
MD5 e90089bcaed97aeba019ab399c9206f4
BLAKE2b-256 b466f90da1f82fe207fe9cf677bb24cfd8b133345c940266dbcae7e1dbafa6fd

See more details on using hashes here.

File details

Details for the file thermistor_utils-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: thermistor_utils-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.8.0

File hashes

Hashes for thermistor_utils-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 00923bc0e9d9728e3c2db5f10c29801baa9fa4842750f41ab5451365b2fc2c7c
MD5 2548a51da240da047047e4a31e2f3b9c
BLAKE2b-256 4ccebb89b5e80b1c1dd1e861bdfc105791a48abb63234f555bd78a2cef288d0c

See more details on using hashes here.

Supported by

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