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
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
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.
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 |
Filename, size thermistor_utils-0.0.4.tar.gz (5.3 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for thermistor_utils-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00923bc0e9d9728e3c2db5f10c29801baa9fa4842750f41ab5451365b2fc2c7c |
|
MD5 | 2548a51da240da047047e4a31e2f3b9c |
|
BLAKE2-256 | 4ccebb89b5e80b1c1dd1e861bdfc105791a48abb63234f555bd78a2cef288d0c |