CCCPaste

Steinhart for temp probe

# Convert resistance (0–50kΩ) to temperature in °C
def res_to_celsius(resistance):
    # Ensure valid input range
    if resistance <= 0:
        resistance = 1e-6  # Avoid log(0)
    elif resistance > POT_RESISTANCE:
        resistance = POT_RESISTANCE

    # Beta equation: T = 1 / (1/T0 + (1/B) * ln(R/R0)) - 273.15
    steinhart = math.log(resistance / THERMISTOR_NOMINAL)
    steinhart /= B_COEFFICIENT_OUTPUT
    steinhart += 1.0 / (TEMPERATURE_NOMINAL + 273.15)
    steinhart = 1.0 / steinhart
    celsius = steinhart - 273.15

    # Clamp to physical range (-7.22°C to 100°C)
    return Tclamp(celsius, Tminn, Tmaxn)