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.
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.
B. Výpočet odporu termistoru ()
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ě)
import math
# Konstanty pro NTC 10k termistorB_COEFFICIENT = 3950R_NOMINAL = 10000T_NOMINAL = 25 + 273.15 # 25 °C v KelvinechR_FIXED = 10000 # Odpor pevného rezistoru v děličiV_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.