Dwukanałowy czujnik temperatury z interfejsem I²C

Dwukanałowy czujnik temperatury z interfejsem I²C

Pomiar temperatury jest jednym z najczęściej wykonywanych pomiarów przez aparaturę elektroniczną. Temperatura elementów półprzewodnikowych, ma krytyczny wpływ na ich niezawodność, stąd w ofertach producentów znajdziemy sporo elementów służących do monitorowania temperatury otoczenia jak i samych struktur w układach SoC, FPGA lub DSP. Zaprezentowany moduł monitoruje dwie temperatury, jedna mierzona jest przez przetwornik wbudowany w sam układ, druga mierzona jest przy pomocy przetwornika zewnętrznego.

Podstawowe parametry:
  • dokładność przetwarzania: ±3°C i poprawia się wraz z ograniczeniem zakresu pomiaru,
  • dwa czujniki: pierwszy wbudowany w układ, jako drugi, zewnętrzny czujnik może posłużyć dioda lub tranzystor NPN/PNP,
  • przetworzone wartości temperatury dostępne są w postaci liczb 11-bitowych ze znakiem, poprzez interfejs I²C,
  • sygnalizowanie osiągnięcia temperatury krytycznej lub progów alarmowych na odpowiednich wyjściach,
  • układ wymaga zasilania 3,0...3,6 V, prąd poniżej 1 mA.

Moduł bazuje na układzie SA56004, którego budowę wewnętrzną pokazano na rysunku 1. W swojej strukturze integruje on sensor temperatury, interfejs czujnika zewnętrznego, układ przetwornika ADC, komparatory progowe stanów alarmowych oraz układ komunikacji I²C. Dokładność przetwarzania wynosi w najgorszym przypadku ±3°C i poprawia się wraz z ograniczeniem zakresu pomiaru. Jako czujnik zewnętrzny może posłużyć złącze diodowe wbudowane w strukturę półprzewodnikową lub dyskretny tranzystor NPN/PNP.

Rysunek 1. Schemat wewnętrzny SA567004 (za notą NXP)

Przetworzone wartości temperatury dostępne są w postaci liczb 11-bitowych ze znakiem, poprzez rejestry i interfejs I²C. Wbudowane komparatory pozwalają na sygnalizowanie osiągnięcia temperatury krytycznej poprzez zmianę stanu wyjścia !T_CRIT lub progów alarmowych Low/High na wyjściu !ALERT. Wartości progów ustalane są programowo w odpowiednich rejestrach konfiguracyjnych i pozwalają na sprzętowe sterowanie elementami chłodzącymi.

Budowa i działanie

Aplikacja SA56004 jest bardzo prosta, schemat modułu zaprezentowano na rysunku 2. Oprócz układu U1, moduł zawiera złącze czujnika temperatury zewnętrznej DTH, złącze magistrali I²C oraz złącze wyjść alarmowych IO, oba w standardzie Grove. Jako czujnik zewnętrzny zastosowano tranzystor w obudowie TO92 typu 2N3904 (NPN) lub 2N3906 (PNP) połączony w diodę poprzez zwarcie wyprowadzeń B-C. Podłączenie tranzystora do złącza DTH wykonane jest skręconą parą w ekranie dla podniesienia odporności na zakłócenia.

Rysunek 2. Schemat dwukanałowego czujnika temperatury

Złącze I²C doprowadza zasilanie i magistralę komunikacyjną, rezystory R1, R2 zapewniają jej polaryzację. Układ wymaga zasilania 3,0...3,6 V, pobierany prąd zależy od ustawionej częstotliwości przetwarzania i nie przekracza 1 mA.

Montaż i uruchomienie

Moduł zmontowany jest na miniaturowej dwustronnej płytce drukowanej, której schemat został pokazany na rysunku 3.

Rysunek 3. Schemat płytki PCB

Sposób montażu jest klasyczny i nie wymaga szczegółowego opisu. Dla szybkiego sprawdzenia działania moduł można podłączyć do magistrali I²C komputerka Raspberry Pi i wtedy, przy pomocy biblioteki i2ctools można sprawdzić gotowość modułu za pomocą polecenia:

i2cdetect -y 1

Efekt powinien być taki, jak pokazano na rysunku 4.

Rysunek 4. Sprawdzenie gotowości układu przy pomocy i2ctools

Adres układu może być zmieniony poprzez zastosowanie innej wersji układu (SA56004xx), w modelu był SA56004ED o adresie bazowym 0x4C. Pozostałe wykonania umożliwiają wybór adresacji w zakresie 0x48...0x4F, która pozwala zastosować do ośmiu czujników na jednej magistrali I²C.

Komunikacja i konfiguracja

Dostęp do rejestrów SA56004 odbywa się zgodnie z opisem zawartym w tabeli 1.

Pierwszym rejestrem, który należy odczytać dla sprawdzenia poprawności działania, jest rejestr RMID, który zawiera identyfikatora układu. Odczyt wykonujemy poleceniem:

i2cget - y 1 0x4C 0XFE

W odpowiedzi powinna zostać zwrócona wartość 0xA1.

Po restarcie układu, rejestry ładowane są wstępną konfiguracją. Rejestry temperatury lokalnej ustawione są na 0°C (LTHB=LTLB=00h), podobnie jak rejestry temperatury zdalnej (RTHB=RTLB=00h), rejestr statusu SR=00h, rejestr konfiguracji CON=00h, skasowane są flagi przerwań i wyłączone drivery pinów alarmowych !T_CRIT, !ALERT, progi temperatur T_CRIT lokalna i zdalna ustawione są na LCS=RCS=85°C, górne punkty temperatury ustawione są na LHS=RHSHB=70°C, dolne progi LLS=RLSHB=0°C, szybkość konwersji CR=08h, czyli 16 konwersji/s.

Wartości temperatur odczytujemy poprzez rejestry LTHB/ATLB dla czujnika wbudowanego w SA56004 oraz RTHB/RTLB dla czujnika zewnętrznego. Temperatura reprezentowana jest w postaci liczby 11-bitowej ze znakiem, znaczenie poszczególnych bitów rejestrów pokazano w tabeli 2.

W celu odczytu temperatur należy wykonać następujące polecenia dla temperatury czujnika wbudowanego:

i2cget -y 1 0x4c 0x00
i2cget -y 1 0x4c 0x22

i czujnika zdalnego:

i2cget -y 1 0x4c 0x01
i2cget -y 1 0x4c 0x11

Przykładowe odczyty zwróciły odpowiednio: 0x12/0xA0 i 0x13/0x00, co po przeliczeniu daje temperatury 18,625°C i 19°C. Czujnik zewnętrzny może zostać skalibrowany poprzez dodanie stałej wartości przesunięcia temperatury zapisanej w rejestrach RTOHB/RTOLB ze znaczeniem bitów jak w rejestrach temperatur w tabeli 2.

W rejestrze konfiguracji CON określamy tryb pracy układu oraz aktywność alarmów temperatury, znaczenie bitów pokazano w tabeli 3.

W przypadku rejestru CON należy zwrócić uwagę na różne adresy zapisu i odczytu. W rejestrze statusu SR, możemy sprawdzić stan konwersji oraz flagi alarmów i usterki zgodnie z tabelą 4.

Odczytując rejestr SR przy odłączonym czujniku zdalnym:

i2cget -y 1 0x4c 0x02

otrzymujemy sygnalizację rozwarcia czujnika zewnętrznego - ustawieniem bitu 2 OPEN=1 wraz z jednoczesnym wyzwoleniem alarmów RCRIT=1, RHIGH=1. Ustawianie częstotliwości konwersji odbywa się poprzez zapis rejestru CR zgodnie z tabelą 5.

Omówione zostały tylko informacje niezbędne do sprawdzenia działania układu. Bardziej szczegółowy opis rejestrów umożliwiających użycie wszystkich możliwości SA56004 zawarty jest w karcie katalogowej.

Adam Tatuś, EP

Wykaz elementów:
Rezystory:
  • R1, R2: 4,7 kΩ (SMD0603)
Kondensatory:
  • C1: 0,1 μF 10 V (SMD0603)
  • C2: 2,2 nF 10 V (SMD0603)
Półprzewodniki:
  • Q1: 2N3904 (TO-92B)
  • U1: SA56004AD (SO8)
Pozostałe:
  • DTH: złącze SIP3 męskie
Artykuł ukazał się w
Elektronika Praktyczna
luty 2023
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik marzec 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna marzec 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów