- 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.
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.
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.
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:
Efekt powinien być taki, jak pokazano na rysunku 4.
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:
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 0x22
i czujnika zdalnego:
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:
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
- R1, R2: 4,7 kΩ (SMD0603)
- C1: 0,1 μF 10 V (SMD0603)
- C2: 2,2 nF 10 V (SMD0603)
- Q1: 2N3904 (TO-92B)
- U1: SA56004AD (SO8)
- DTH: złącze SIP3 męskie