Teplomer LM92

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.

_images/lm92_block.png

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

_images/lm92_addr.png

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
_images/stm32_i2c1.png

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)