LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
IoT

[APLIKACJA] Texas Instruments TMP006: bezprzewodowy termometr

 

Tab. 2. Czujnik temperatury TMP006, rejestry danych modułu

Adres

Nazwa

Opis

0x00

Vobject

napięcie na czujniku promieniowania podczerwonego

0x01

Tambient

temperatura otoczenia

0x02

Configuration

konfiguracja układu

0xfe

Manufactured ID

identyfikator producenta  (0x5549)

0xff

Device ID

identyfikator układu         (0x0067)

 

 

Temperatura obiektu obliczana jest na podstawie temperatury otoczenia (rejestr Tambient) oraz napięcia na czujniku promieniowania podczerwonego (rejestr Vobject). Żeby uzyskać wartość temperatury w stopniach Celsjusz obiektu należy wykonać szereg skomplikowanych obliczeń matematycznych. Wzory stosownych przekształceń matematycznych zamieszczono w instrukcji użytkownika czujnika TMP006 zamieszczonej u dołu strony.

 

Przykład

Kod źródłowy programu prezentującego działanie czujnika temperatury TMP006, został napisany w języku C. W programie czujnik TMP006 wykonuje pomiar temperatury otoczenia oraz bezprzewodowy pomiar temperatury obiektu. Wynik pomiaru wysyłany jest do komputera PC via UART, oraz prezentowany jest na ekranie wyświetlacza LCD.

 

Baza sprzętowa

Za bazę sprzętową do realizacji przykładu wybrano zestaw startowy LaunchPad: TM4C123G, z zamontowaną płytą rozszerzeń BoosterPack: BOOSTXL-SENSHUB. Rysunek 5 ilustruje sposób montażu obu modułów.

Zestaw startowy LaunchPad:

TM4C123G to płytka z mikrokontrolerem Tiva C Series (rdzeń ARM Cortex -M4). Moduł rozszerzeń BoosterPack: BOOSTXL-SENSHUB to zestaw wyposażony w szereg czujników środowiskowych. O obu modułach pisaliśmy w artykule.

 

Rys. 5. Baza sprzętowa do realizacji przykładu

 

Do modułu LaunchPad należy podłączyć wyświetlacz graficzny LCD ze sterownikiem PCD8455 (wyświetlacz monochromatyczny o rozdzielczości 48×84 pikseli). Wykaz  połączeń prezentuje tabela 3.

 

Tab. 3. Podłączenie LCD do modułu LaunchPad

LCD – PCD8455

LaunchPad – TM4C123G

SCLK

PA2

MOSI

PA5

D/C

PA7

RST

PB5

SCE

PA6

GND

GND

VCC

3.3V

 

W prezentowanym przykładzie zastosowano wyświetlacz od telefonu Nokia 5110 (moduł programowo zgodny z wyświetlaczem od telefonu Nokia 3310). Zamontowany został moduł startowy modLCD1 sprzedawany w sklepie Kamami.

 

Oprogramowanie

Aplikacja do  obsługi czujnika temperatury TMP006 została napisana w języku C przy użyciu środowiska IAR Embeded Workbench for ARM 7.10 (wersja darmowa z limitem na wielkość kodu wynikowego programu). W programie zostały użyte udostępnione przez TI  procedury do obsługi czujnika temperatury TMP006.  Skrócony opis procedur prezentuje tabela 4.

 

Tab. 4. Skrócony opis procedur do obsługi czujnika TMP006

Procedura

Opis

TMP006Init

inicjalizacja czujnika TMP006

TMP006Read

odczyt danych z rejestru

TMP006Write

zapis danych do rejestru

TMP006ReadModifyWrite

odczyt modyfikacja, a następnie zapis danych do rejestru

TMP006DataRead

inicjalizacja odczytu danych

TMP006DataTemperatureGetRaw

odczyt binarnych wartości z rejestrów temperatury

 

TMP006DataTemperatureGetFloat

odczyt binarnych wartości z rejestrów temperatury

konwersja wartości temperatury (otoczenia i obiektu)  na wartość prezentowaną w stopniach Celsjusz

 

Kod źródłowy programu pokazano na listingu 1. W pierwszych liniach programu konfigurowane są:  system zegarowy mikrokontrolera, linie wejścia-wyjścia, moduł transmisji szeregowej UART. Następnie konfigurowany jest interfejs I2C, oraz czujnik temperatury TMP006 (tryb ciągłej konwersji, jeden pomiar na sekundę, obsługa linii #DRDY).

Gdy wynik pomiaru jest gotowy do odczytu to na linii #DRDY ustawiany jest stan niski. W module LaunchPad linia #DRDY dołączona jest do wejścia PE0. Linia PE0 obsługiwana jest w trybie przerwań. W momencie zmiany stanu na linii z wysokiego na niski (wynik pomiaru gotowy do odczytu) wywoływana jest procedura obsługi przerwania. W procedurze inicjowany jest odczyt danych z czujnika TMP006.

W kolejnych liniach programu inicjowana jest obsługa trybów uśpienia mikrokontrolera, włączana jest obsługa przerwań, oraz konfigurowany jest wyświetlacza LCD. Na ekranie wyświetlacza prezentowany jest ekran startowy aplikacji pomiarowej.

 

List. 1. Przykład obsługi TMP006. Plik main.c

void main(void)
{
    float tAmbient, tObject;
   
    ConfigureClock();
    ConfigureIo();
    ConfigureUart();

    
    ConfigureI2C();
    ConfigureTMP006();
    
    SystemSleepInit();
    SystemInterruptsEnable();
    
    LcdConfigure();
    EkranStartowy();  
    

    while(1)
    {
        ErrorsCheck();

        TMP006DataTemperatureGetFloat(&g_sTMP006Inst, &tAmbient, &tObject);
        
        SystemUartPrint(tAmbient, tObject);
        SystemLcdPrint (tAmbient, tObject);       
    }
}

 

W pętli głównej programu sprawdzane są błędy działania programu, a mikrokontroler w trybie uśpienia czeka na gotowość danych pomiarowych z czujnika TMP006. Gdy czujnik zmierzy temperaturę to odczytywany jest wynik pomiaru (temperatura w stopniach Celsjusz). Następnie wynik pomiaru (temperatura otoczenia i temperatura obiektu) wysyłane są  przy pomocy interfejsu UART, oraz prezentowane są na wyświetlaczu LCD.