neděle 1. března 2026

Výpočet teploty z termistoru (nejčastěji typu NTC 10k) pomocí ADS1115

Odpověď Gemini

Výpočet teploty z termistoru (nejčastěji typu NTC 10k) pomocí ADS1115 vyžaduje několik kroků. Protože termistor mění svůj odpor v závislosti na teplotě, musíme nejprve změřit napětí, z něj vypočítat odpor a ten pak převést na stupně Celsia.

K tomu se standardně používá Steinhart-Hartova rovnice nebo její zjednodušená varianta Beta parametr.

1. Zapojení (Napěťový dělič)
2. Krok za krokem v Pythonu
A. Získání napětí z ADS1115

Protože ADS1115 měří napětí, musíte termistor zapojit do děliče s pevným rezistorem (např. 10 kΩ).

  • VCC (3,3 V) -> Termistor -> Bod A (připojen k pinu A0 na ADS1115)

  • Bod A -> Rezistor (10 kΩ) -> GND

Nejprve přečteme hodnotu z převodníku a převedeme ji na volty.


(Kde LSB step závisí na nastaveném zesílení/gainu, u ADS1115 je při výchozím nastavení 2/3 gainu jeden krok cca 0,1875 mV).

B. Výpočet odporu termistoru (
)

Z rovnice pro napěťový dělič (
:

C. Převod odporu na teplotu (Beta rovnice)

Pro běžné použití stačí B-parametr (najdete ho v datasheetu termistoru, obvykle kolem 3950).

  • T
    : Referenční teplota v Kelvinech (25 °C = 298,15 K)

  • R
    : Odpor termistoru při
    (obvykle 10 000 Ω)

  • : Beta koeficient (např. 3950)

  • Výsledek je v Kelvinech, pro Celsius odečtěte 273,15.


3. Ukázka kódu (zjednodušeně)

Python
import math

# Konstanty pro NTC 10k termistor
B_COEFFICIENT = 3950
R_NOMINAL = 10000
T_NOMINAL = 25 + 273.15 # 25 °C v Kelvinech
R_FIXED = 10000 # Odpor pevného rezistoru v děliči
V_IN = 3.3 # Napájecí napětí

def calculate_temp(v_out):
# 1. Výpočet odporu termistoru
if v_out <= 0: return 0
r_thermistor = R_FIXED * (V_IN / v_out - 1)
# 2. Steinhart-Hart (Beta varianta)
steinhart = math.log(r_thermistor / R_NOMINAL) / B_COEFFICIENT
steinhart += 1.0 / T_NOMINAL
temp_kelvin = 1.0 / steinhart
return temp_kelvin - 273.15 # Převod na Celsius

# Příklad: ADS1115 naměří 1.65V (polovina V_IN při stejném odporu)
print(f"Teplota: {calculate_temp(1.65):.2f} °C")

Proč ADS1115?

Díky 16-bitovému rozlišení bude váš výpočet extrémně přesný. Dokážete detekovat i tisíciny stupně, což by s běžným 10-bitovým převodníkem (jako má Arduino) nebylo možné.

Je potřebná knihovna adafruit-circuitpython-ads1x15 pro čtení dat z převodníku.

Žádné komentáře:

Okomentovat

Poznámka: Komentáře mohou přidávat pouze členové tohoto blogu.