Teplomer LM92 #
LM92 je 12-bitový teplotný senzor pre teplotný rozsah -25 … +150°C s rozlíšením 0.0625°C. Komunikácia s teplomerom je po zbernici I2C. Teplomer má možnosť nastavenie kritických teplôt a výstup pre vyvolanie prerušenia pri prekročení stanovených teplôt.
Obr. 55 Blokové zapojenie digitálneho teplomera LM92.#
Vývody A1 a A0 sú určené pre nastavenie adresy teplomera na zbernici. Kódovanie adresy je 7-bitové podľa obrázku
Obr. 56 Adresácia teplomera LM92 na zbernici.#
Rozsah adries
01001000
01001001
01001010
01001011
Pripojenie teplomera LM92 k Nucleo-64
MICROPY_HW_I2C1_SCL -> pin_PB8 (STM)
MICROPY_HW_I2C1_SDA -> pin_PB9 (STM)
+5V
GND
Obr. 57 Pripojenie teplomera LM92#
Programovanie #
Funkcia pre načítanie dát z teplomera:
def read_LM92(i2c, addr):
raw = i2c.mem_read(2, addr, 0) # nacitanie 2 byte z registra 0
data = (raw[0] << 8) + raw[1] # konverzia 16 bit format
td = data >> 3 # 2'compl b15-b3 temperature
TEMP = (-(td & 0x1000) | (td & 0xFFF))* 0.0625
L = data & 0x01 # T_LOW -> H, TEMP < 10 deg
H = (data & 0x02) >> 1 # T_HIGH -> H TEMP > 64 deg
C = (data & 0x04) >> 2 # T_CRIT -> H TEMP > 80 deg
return TEMP, C, H, L
Príklad 1. Načítanie a zobrazenie teploty
# inicializacia rozhrania
from pyb import I2C
import time
i2c = I2C(1, I2C.CONTROLLER, baudrate=100000)
# Spustenie merania
def temp(n):
for i in range(n):
print(read_LM92(i2c, 75))
time.sleep(0.5)
temp(10)