Firmware V1 documentation · V1.0-rc54-2d701ce

Koheron products currently ship with firmware V0.x by default. Firmware V1 is under active development and is not publicly available yet.

Contact us if you would like early access or want to evaluate V1 firmware on your device.

ntccal

Normal V1.0-rc54-2d701ce CTL20 CTL200 CTL300A CTL300E CTL300P DRV700 HTC200 TEC200

Set or read the three Steinhart-Hart NTC calibration coefficients.

Usage

>> ntccal
1.12530872e-3 2.34711888e-4 8.56635072e-8
>> ntccal 1.12530872e-3 2.34711888e-4 8e-8
1.12530872e-3 2.34711904e-4 7.99999936e-8
>>

Notes

The coefficients are used to compute the thermistor temperature with:

T = 1 / (c0 + c1 ln(R) + c2 ln(R)^3) - 273.15

where R is the thermistor resistance in Ω and T is the temperature in °C.

A write is accepted only when exactly three floating-point arguments are provided and all three values parse successfully. If any value is invalid, the firmware sets CMD_INVALID_ARG and keeps the previous coefficients.

Changing ntccal does not change the stored tset value. It recomputes the equivalent resistance setpoint reported by rtset using the new calibration coefficients. It also updates the temperature reported by tact from the current measured thermistor resistance.

After changing ntccal, verify tact at known temperatures before relying on tset or temperature protection.

Beta-model helper

The following script prints an ntccal command from a simple NTC Beta model:

#!/usr/bin/env python3

import math

# NTC datasheet values
R25 = 10_000.0        # Resistance at 25 °C, in ohms
BETA = 3950.0         # Beta coefficient, in kelvin
T25 = 25.0 + 273.15   # Reference temperature, in kelvin

# Firmware uses the Steinhart-Hart form:
# 1/T = c0 + c1*ln(R) + c2*ln(R)^3
#
# The Beta model is:
# 1/T = 1/T25 + ln(R/R25)/BETA
#
# Since ln(R/R25) = ln(R) - ln(R25), this becomes:
# 1/T = (1/T25 - ln(R25)/BETA) + (1/BETA)*ln(R)
c0 = 1.0 / T25 - math.log(R25) / BETA
c1 = 1.0 / BETA
c2 = 0.0  # Beta model has no cubic ln(R)^3 term

# Print a terminal command ready to execute
print(f"ntccal {c0:.8e} {c1:.8e} {c2:.8e}")