Digilent Pmod i STM32 (cz. 9) – PmodNAV, PmodPMON1 i PmodTMP2

PmodTMP2

Ostatnim omawianym modułem w tej części cyklu jest PmodTMP2 z układem Analog Devices ADT7420. Jest to cyfrowy czujnik temperatury o rozdzielczości pomiaru 16 bitów i dokładności:

  • ±0,20°C w zakresie od −10°C do +85°C przy zasilaniu 3,0V
  • ±0,25°C w zakresie od −20°C to +105°C przy zasilaniu od 2,7V do 3,3V.

Fotografia 6. Wygląd modułu PmodTMP2

Moduł ADT7420 umożliwia zdefiniowanie trzech alarmów dla zdefiniowanych progów temperatury:

  • niski,
  • wysoki,
  • krytyczny.

Po przekroczeniu progów niskiego i wysokiego, na linii INT pojawia się sygnał. Natomiast przekroczenie poziomu krytycznego wyzwala przerwanie na linii CT. Obu sygnałów można użyć do obsługi przerwania po stronie mikrokontrolera. Moduł PmodTMP2 udostępnia oba sygnały na złączach J2 (CT) i J3 (INT). Wszystkie zdefiniowane alarmy mogą także używać wartości histerezy wpływającej na wyłączenie alarmu. Sposób generacji przerwania we wszystkich trzech przypadkach przedstawiono na rysunku 7.

Rysunek 7. Generacja przerwań od poszczególnych progów temperatury (źródło: dokumentacja układu ADT7420)

Połączenie z zestawem KAmeleon

Moduł PmodTMP2 został wyposażony w 8-pinowe złącze Pmod I2C (J1), które w przykładzie zostało podłączono do złącza I2C KAmod Expander zestawu KAmeleon. Dodatkowo sygnał INT podłączono do pinu PF15 (D10) na złączu ARDUINO. Sposób połączenia przedstawiono w tabeli 3 i na fotografii 8.

Tabela 3. Sygnały PmodTMP2 oraz odpowiadające im piny złącz ARDUINO, I2C Expander oraz wyprowadzenia mikrokontrolera; w tabeli pominięto linie zasilania występujące na złączu Pmod

Sygnał Numer pinu PmodTMP2 Pin złącza ARDUINO CONNECTOR Pin złącza I2C Expander Pin mikrokontrolera
SCL 1 (J2) 2 PF1
SDA 2 (J2) 3 PF0
INT 3 (J1) D14 PF15

Fotografia 8. Moduł PmodTMP2 połączony z zestawem KAmeleon

Kod przykładu

Kod do komunikacji z modułem PmodTMP2 znajduje się w plikach PmodTMP2.c i PmodTMP2.h. Funkcja służąca do konfiguracji interfejsu I2C i układu ADT7420 – PmodTMP2_Config, znajduje się na listingu 7. W pierwszej kolejności pin PF15 ustawiany jest jako wejście z przerwaniem wyzwalanym zboczem opadającym. Następnie konfigurowany jest interfejs I2C2, dla którego piny (PF0 i PF1) są ustawiane w funkcji HAL_I2C_MspInit wywoływanej wewnątrz HAL_I2C_Init. Na koniec konfigurowane są progi temperatury: niski i wysoki. Wartości progów temperatury przed wpisaniem do rejestrów muszą być przesunięcie o 7 bitów w lewo, co jest jednoznaczne z ich pomnożeniem przez 128. Histereza jest wpisywana bezpośrednio do rejestru i może przyjąć wartości od 0°C do 15°C. Podczas zapisu i odczytu rejestrów układ ADT7420 inkrementuje adres, dlatego jest możliwy zapis i odczyt wielu rejestrów podczas pojedynczej transakcji I2C.

Kod programu z plikami projektowymi środowiska Atollic można pobrać w sekcji „Do pobrania”

Listing 7. Konfiguracja pinów i interfejsu I2C2 dla modułu PmodTMP2

Odczyt i konwersja danych

Drugą z funkcji potrzebnych do obsługi modułu PmodTMP2 jest PmodTMP2_GetTemperature odpowiedzialna za odczyt i konwersję zmierzonej temperatury. Podobnie jak w przypadku progów, zmierzona wartość temperatury zapisana jest w kodzie uzupełnień do dwójki. Wartość zwracana z funkcji ma dokładność 0,1°C, dlatego przed dzieleniem przez 128 wynik należy pomnożyć przez 10. Kod funkcji przedstawiono na listingu 8.

Listing 8. Odczyt i konwersja temperatury

Przykładowa aplikacja, której kod znajduje się w pliku main.c, konfiguruje moduł PmodTMP2 i ustawia początkowy stan diody LED 0 informującej o przekroczeniu jednego z ustawionych progów temperatury. Następnie w pętli głównej programu co 1 s odczytywana jest wartość temperatury przesyłana następnie za pośrednictwem portu szeregowego do komputera. W pliku main.c znajduje się także funkcja obsługi przerwania od linii INT zmieniając stan diody LED 0 na płytce KAmeleon.

Moduły PmodNAV, PmodPMON1 i PmodTMP2 a także zestaw KAmeleon oraz wiele innych płytek ewaluacyjnych i modułów rozszerzających można znaleźć w ofercie Kamami.pl

Do pobrania

O autorze