[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.