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.

Files for thermistor-utils, version 0.0.4
Filename, size File type Python version Upload date Hashes
Filename, size thermistor_utils-0.0.4-py3-none-any.whl (8.4 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size thermistor_utils-0.0.4.tar.gz (5.3 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page