when'd i last commit this pos?
This commit is contained in:
Executable
+71
@@ -0,0 +1,71 @@
|
||||
#!/opt/srasenv/bin/python3
|
||||
"""
|
||||
Test temperature scaling calculations.
|
||||
"""
|
||||
|
||||
import math
|
||||
|
||||
# Constants
|
||||
ADC_TO_VOLTS = 0.000244140625
|
||||
STEINHART_A = 0.0011279
|
||||
STEINHART_B = 0.00023429
|
||||
STEINHART_C = 8.7298e-8
|
||||
|
||||
def test_main_temp_calculation(raw_adc):
|
||||
"""Test main temperature calculation with different circuit assumptions."""
|
||||
|
||||
print(f"\n{'='*60}")
|
||||
print(f"Testing Main Temperature with RAW ADC = {raw_adc}")
|
||||
print(f"{'='*60}")
|
||||
|
||||
v_thermistor = raw_adc * ADC_TO_VOLTS
|
||||
print(f"V_thermistor = {v_thermistor:.6f} V")
|
||||
|
||||
# Try different circuit configurations
|
||||
configs = [
|
||||
(10000, 5.0, "10kΩ series, 5V ref"),
|
||||
(10000, 3.3, "10kΩ series, 3.3V ref"),
|
||||
(100000, 5.0, "100kΩ series, 5V ref"),
|
||||
(10000, 2.5, "10kΩ series, 2.5V ref"),
|
||||
]
|
||||
|
||||
for r_series, vref, desc in configs:
|
||||
print(f"\n{desc}:")
|
||||
print(f" R_series = {r_series} Ω, Vref = {vref} V")
|
||||
|
||||
if v_thermistor >= vref:
|
||||
print(f" ERROR: V_thermistor >= Vref")
|
||||
continue
|
||||
|
||||
r_thermistor = r_series * v_thermistor / (vref - v_thermistor)
|
||||
print(f" R_thermistor = {r_thermistor:.2f} Ω")
|
||||
|
||||
if r_thermistor <= 0:
|
||||
print(f" ERROR: Invalid resistance")
|
||||
continue
|
||||
|
||||
# Steinhart-Hart
|
||||
ln_r = math.log(r_thermistor)
|
||||
inv_t = STEINHART_A + STEINHART_B * ln_r + STEINHART_C * (ln_r ** 3)
|
||||
temp_k = 1.0 / inv_t
|
||||
temp_c = temp_k - 273.15
|
||||
|
||||
print(f" ln(R) = {ln_r:.6f}")
|
||||
print(f" Temperature = {temp_c:.2f} °C")
|
||||
|
||||
def test_current_scaling(raw_adc):
|
||||
"""Test current scaling."""
|
||||
print(f"\n{'='*60}")
|
||||
print(f"Testing Current Scaling with RAW ADC = {raw_adc}")
|
||||
print(f"{'='*60}")
|
||||
|
||||
current = raw_adc * 12.0 * ADC_TO_VOLTS
|
||||
print(f"Current = {current:.6f} A")
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Test with the reported raw values
|
||||
test_main_temp_calculation(2)
|
||||
test_main_temp_calculation(3)
|
||||
test_current_scaling(0)
|
||||
test_current_scaling(100)
|
||||
test_current_scaling(4095)
|
||||
Reference in New Issue
Block a user