Cyfrowe czujniki temperatury oferują najprostszy sposób na pomiar i wprowadzenie bardzo dokładnego odczytu temperatury do mikrokontrolera lub innego urządzenia logicznego. W ostatnim artykule z tej serii o czujnikach temperatury przyjrzeliśmy się czujnikom analogowym. Chociaż mogą się wydawać łatwiejsze w implementacji poprzez wykonanie prostego odczytu ADC, aby uzyskać najdokładniejszy pomiar, konieczna będzie kalibracja ADC każdego urządzenia podczas produkcji, co nie zawsze jest wykonalne. W tym artykule zagłębiamy się w kilka różnych opcji cyfrowych czujników temperatury. Cyfrowe czujniki temperatury będą zwykle droższe niż proste analogowe czujniki temperatury. Jednak łatwość i wygoda produkcji przy użyciu tych urządzeń często sprawiają, że dodatkowe koszty są uzasadnione, gdy wymagane są wysokie poziomy precyzji pomiaru.
Cyfrowe czujniki temperatury to piąty typ czujnika, na który patrzymy w tej serii. Kończymy tę serię ostatnim artykułem, w którym wszystkie przetestowane przez nas czujniki zostaną postawione przeciwko sobie w bezpośrednim pojedynku w szerokim zakresie warunków środowiskowych, abyśmy mogli porównać ich funkcjonalność, dokładność i zachowanie. Serię rozpoczęliśmy od artykułu wprowadzającego, w którym zbudowaliśmy zestaw szablonów dla standardowych kart czujników temperatury. Zarówno wersje analogowe, jak i cyfrowe mogą być układane na sobie za pomocą złączy mezzanine lub odczytywane niezależnie z ich złączy krawędziowych. Później w serii będziemy budować płyty główne dla wszystkich tych czujników, co pozwoli nam odczytywać dane z pojedynczego czujnika, aby zweryfikować jego funkcjonalność, lub odczytywać cały stos płyt, abyśmy mogli rejestrować dane ze wszystkich razem.
W tej serii przyjrzymy się szerokiej gamie czujników temperatury, omawiając ich zalety i wady, a także niektóre typowe topologie ich implementacji. Seria będzie obejmować następujące typy czujników:
Podobnie jak w przypadku moich projektów, szczegóły projektu, schematy oraz pliki płytek można znaleźć na GitHubie razem z innymi implementacjami czujników temperatury. Projekt jest udostępniony na otwartej licencji MIT, która pozwala na używanie projektów lub ich części do celów osobistych lub komercyjnych, jak tylko chcesz.
Załóżmy, że interesuje Cię tylko odczyt danych z czujnika temperatury za pomocą mikrokontrolera lub innego urządzenia logicznego. W takim przypadku, cyfrowy czujnik temperatury jest elektrycznie najprostszą opcją do wdrożenia. Cyfrowe czujniki temperatury mogą oferować doskonałe poziomy dokładności, ponieważ całe czujniki, kompensacja i konwersja są realizowane na chipie. Nie ma potrzeby kalibrowania ADC mikrokontrolera (lub zewnętrznego ADC). Nie musisz się również martwić o zakłócenia elektromagnetyczne od pobliskich ścieżek lub innych urządzeń zamontowanych do połączeń między analogowym czujnikiem temperatury a mikrokontrolerem, które mogłyby niezamierzenie wpłynąć na odczyt temperatury.
W tym projekcie zaimplementujemy cztery różne opcje cyfrowych czujników temperatury o różnych rozdzielczościach i zakresach pomiarowych.
Nazwa |
MAX31826MUA+T |
STS-30-DIS |
EMC1833T |
SI7051-A20-IMR |
Typ |
Cyfrowy |
Cyfrowy |
Cyfrowy |
Cyfrowy |
Minimalna temp. czujnika (°C) |
-55°C |
0°C |
-40°C |
-40°C |
Maksymalna temp. czujnika (°C) |
+125°C |
+60°C |
+125°C |
+125°C |
Zakres pomiarowy |
Lokalny |
Lokalny |
Zdalny |
Lokalny |
Rozdzielczość (bity) |
12 |
16 |
|
14 |
Dokładność (°C) |
±0,5°C (+10°C do +85°C) ±2°C (-55°C do 125°C) |
±0,2°C |
±1°C (-20°C do +105°C) |
±0,1°C |
Temperatura pracy (°C) |
-55°C do +125°C |
-40°C do +125°C |
-40°C do +125°C |
-40°C do +125°C |
Funkcje |
1 Wire Bus, Zasilanie pasożytnicze |
I²C |
I²C, SMBus |
I²C |
Minimalne napięcie zasilania |
3 V |
2.15 V |
1.62 V |
1.9 V |
Maksymalne napięcie zasilania (V) |
3.7 V |
5.5 V |
3.6 V |
3.6 V |
Zużycie prądu (uA) |
4 mA (przy odczycie niskiego poziomu logiki) |
45 uA w stanie bezczynności |
700 uA podczas konwersji, |
195 nA |
Producent |
Maxim Integrated |
Sensirion AG |
Microchip |
Silicon Labs |
Obudowa |
8-MSOP |
8-VFDFN |
8-VDFN |
6-DFN |
Dołączyłem EMC1833T, ponieważ dla mnie jest to fascynujący czujnik. Jest to urządzenie do zdalnego pomiaru temperatury, co oznacza, że nie używa czujnika umieszczonego wewnątrz komponentu. Zamiast tego, mierzy temperaturę, przekształcając wyjście zewnętrznego czujnika, którym w tym przypadku jest tranzystor, na sygnał cyfrowy. Nie jestem pewien, czy zasadniczo pasuje on do kategorii „cyfrowych czujników temperatury”, ponieważ nie do końca wpasowuje się w pozostałe czujniki, na które patrzymy. Jednak tranzystory nie są zazwyczaj znane z tego, że są używane jako czujniki temperatury, więc nie miałem pojęcia, gdzie go umieścić. To, co mnie fascynuje w tym czujniku, to że może on mierzyć temperaturę za pomocą prawie każdego tranzystora. Jeśli projektujesz ASIC, możesz łatwo dołączyć dodatkowy tranzystor do krzemowego die dla tego celu. Możesz następnie użyć tego tranzystora, który może być odczytany przez czujnik, tak jak EMC1833T, do zewnętrznego pomiaru temperatury die, nie potrzebując dodawać żadnej dodatkowej złożoności do twojego krzemu. Innym sposobem patrzenia na to jest możliwość monitorowania temperatury twojego die bez ponoszenia żadnego ryzyka inżynieryjnego związanego z projektowaniem i budową specjalistycznego cyfrowego czujnika temperatury w krzemie.
Pierwszym czujnikiem, który będziemy implementować, jest MAX31826 produkowany przez Maxim Integrated. Ten czujnik działa na magistrali 1-Wire, a nie na bardziej typowej magistrali I2C lub SPI. Jednym z potencjalnych problemów jest to, że magistrala 1-Wire prawdopodobnie nie będzie oferowana jako protokół komunikacyjny przez mikrokontroler, na którym opiera się Twój projekt. Jednakże, jest to prosty protokół do realizacji bit po bicie i ma znaczącą przewagę nad bardziej popularnymi wyborami, ponieważ do działania czujnika potrzebuje tylko dwóch przewodów. Włączając zasilanie, I2C wymaga czterech przewodów, a SPI potrzebuje pięciu przewodów. W przeciwieństwie, 1-Wire wymaga tylko masy i linii danych do większości zastosowań, ponieważ może zasilać się z linii danych, używając techniki zasilania pasożytniczego. Zintegrowany w czujniku jest kondensator, który może podtrzymać zasilanie dla układu scalonego podczas okresów, gdy linia danych jest w stanie niskim, co eliminuje potrzebę dedykowanego źródła zasilania w większości normalnych warunków pracy. Może to być bardzo wygodne rozwiązanie dla płyt, które mają bardzo ograniczoną dostępną przestrzeń.
Kolejną interesującą funkcją czujnika oraz jego magistrali 1-Wire jest możliwość ustawienia 4-bajtowego adresu dla urządzenia za pomocą ręcznie wybieranych pinów zamontowanych na obudowie urządzenia. Pozwala to na instalację do 16 czujników temperatury na pojedynczej magistrali danych 1-Wire, nadając każdemu urządzeniu unikalny adres. Może to być wygodna opcja, jeśli masz ograniczoną liczbę pinów mikrokontrolera i jednocześnie wymagasz możliwości pomiaru za pomocą dużej liczby czujników temperatury.
W porównaniu do czujników, które przyglądaliśmy się w poprzednich artykułach tej serii, MAX31826 nie tylko charakteryzuje się wysoką dokładnością, ale również dostarcza dane o wysokiej rozdzielczości. Czujnik oferuje dokładność +/- 0,5°C w zakresie od -10°C do +85°C, z dokładnością +/- 2°C w pełnym zakresie temperatur od -55°C do +125°C. Wszystkie odczyty z czujnika są dostarczane jako wartości 12-bitowe, co jest wyższą rozdzielczością niż większość mikrokontrolerów oferuje.
Jako czujnik temperatury, MAX31826 ma wiele do zaoferowania, ale jest również wyposażony w dodatkową funkcję w postaci wbudowanej pamięci EEPROM o pojemności 1 kB. Wygląda na to, że znaleźli trochę wolnego miejsca na chipie. Jeśli Twój mikrokontroler nie posiada zintegrowanej pamięci EEPROM i potrzebujesz przechować pewne dane konfiguracyjne dla swojej aplikacji, ten czujnik temperatury Cię nie zawiedzie. Jeśli potrzebujesz dodatkowej, nieulotnej pamięci, ten czujnik temperatury pozwoli Ci zmniejszyć liczbę komponentów i zaoszczędzić miejsce na płytce.
W dokumencie technicznym zaleca się bezpośrednie zasilanie urządzenia zamiast korzystania z zasilania pasożytniczego przez magistralę, gdy temperatura może przekroczyć 100°C. Chociaż większość typowych aplikacji nie będzie musiała osiągać tych poziomów temperatury, testy, którym będziemy poddawać czujnik, przekroczą 100°C. Dlatego, w ramach tego ćwiczenia, będziemy stosować się do zalecenia bezpośredniego zasilania urządzenia zamiast badać fascynującą opcję zasilania pasożytniczego.
Kształt płytki i ogólny układ pochodzą z szablonu projektu, który stworzyliśmy we wprowadzeniu do tej serii. Ponieważ nie używamy żadnego z typowych magistral komunikacyjnych, usunąłem związane z nimi sieci i ich komponenty z płytki. Jednakże, pozostawiłem połączenia na złączu stosowym, aby upewnić się, że nie spowoduje to żadnych problemów dla innych nakładanych czujników. Z magistralą 1-Wire, potrzebujemy użyć tylko pinu wyboru układu, aby komunikować się z powrotem do mikrokontrolera hosta.
W poprzednim projekcie użyłem STS-30-DIS produkowanego przez Sensirion ze względu na jego niesamowitą precyzję i skalibrowane wskazania, które są śledzone do NIST. Było to potrzebne, ponieważ instrumentacja była rozwijana dla firmy z branży gastronomicznej, wymaganej do zbierania danych dla celów raportowania rządowego. Z małym rozmiarem, szerokim zakresem napięć, niesamowitą dokładnością i zlinearyzowanym 16-bitowym wyjściem cyfrowym, jest wiele do polubienia w tym urządzeniu, jeśli potrzebujesz tylko pozytywnego czujnika temperatury. Jeśli potrzebujesz czuć temperatury poniżej zera, wariant STS-30A-DIS jest kwalifikowany do użytku w motoryzacji i ma zakres pomiarowy od -40°C do 125°C. Jednakże, to zwiększone zakres pomiarowe wiąże się z niewielkim kosztem ogólnej dokładności.
W poprzednim artykule o analogowych czujnikach temperatury mówiłem o tym, jak świetnie sprawdzają się one w aplikacjach takich jak monitorowanie procesów, włączanie i wyłączanie wentylatora czy inne systemy zarządzania temperaturą, które mogą działać bez ingerencji mikrokontrolera. STS-30 oferuje pin ALERT, który może być używany do realizacji podobnej funkcji. Jest przeznaczony do połączenia z pinem przerwania mikrokontrolera; jednak posiada również pełną notę aplikacyjną poświęconą temu tematowi i może być używany do automatycznego przełączania obciążeń. Możliwość interfejsu z funkcją przerwania mikrokontrolera może być kluczowa. Pozwala to czujnikowi natychmiast powiadomić mikrokontroler sygnałem o wysokim priorytecie, że należy natychmiast podjąć jakieś działanie, zamiast polegać na rzadkim odpytywaniu czujnika przez mikrokontroler i reagowaniu na odczytane dane. Jeśli wyjście ALERT jest połączone z tranzystorem, umożliwiając mu sterowanie obciążeniem, czujnik mógłby być używany zarówno do celów monitorowania/rejestrowania, jak i do autonomicznej funkcji zarządzania temperaturą. W porównaniu z rozwiązaniami analogowymi, ta konfiguracja może sprawić, że cyfrowy STS-30 będzie tańszą opcją. Nie będzie wymagany osobny komparator, a próg dla pinu ALERT może być konfigurowany przez użytkownika za pomocą mikrokontrolera/HMI bez konieczności fabrycznego ustawienia.
Urządzenia serii STS-30 wykorzystują magistralę I2C do komunikacji. Schemat, który implementujemy w tym artykule, nie zawiera żadnych rezystorów podciągających, które są ogólnie wymagane, aby magistrala komunikacyjna funkcjonowała poprawnie. Te rezystory podciągające zostaną zamiast tego zamontowane na płytach głównych. Ponieważ potrzebujemy tylko jednego zestawu rezystorów podciągających na magistralę, dodanie rezystorów do każdego czujnika spowodowałoby dodanie wielu rezystorów podciągających do magistrali i mogłoby to skutkować jej nieprawidłowym działaniem. Poza tym, wszystkie rezystory połączone równolegle zmniejszyłyby ich całkowity opór.
Pin ADDR pozwala nam wybrać między dwoma różnymi adresami urządzenia, umożliwiając podłączenie dwóch komponentów STS-30 do tej samej magistrali I2C. Chociaż może to nie być tak imponujące, jak możliwości urządzenia MAX31826 na magistrali 1-Wire, jest to nadal wygodne, ponieważ pozwala nam używać więcej niż jednego urządzenia. Podciągam pin ADDR do stanu logiki niskiej (GND), co ustawia domyślny adres na 0x4A, z logiką podciągniętą do stanu wysokiego, ustawia to na alternatywny adres 0x4B.
Podoba mi się obudowa na STS-30, ponieważ jest kompaktowa, ale nie na tyle skomplikowana, że można zmontować płytkę ręcznie, jeśli używasz szablonu. Pakiet czujnika wraz z kondensatorem odsprzęgającym 0603 mają razem wielkość zbliżoną do MAX31826, na który patrzyliśmy wcześniej. Z mniejszym kondensatorem zmieściłby się bardzo dobrze na płytce o wysokiej gęstości. Duża płytka uziemiająca pod układem scalonym zapewnia doskonałą ścieżkę do przenoszenia ciepła z płaszczyzny uziemiającej do złącza czujnika temperatury wewnątrz układu scalonego. To czyni go doskonałym wyborem do umieszczenia obok dowolnego urządzenia, takiego jak duży MOSFET czy regulator, które wykorzystuje płaszczyznę uziemiającą do odprowadzania nadmiaru ciepła do płytki. Umieszczenie układu scalonego w bliskiej odległości od źródła ciepła zapewni dokładniejsze wyniki pomiaru temperatury.
Jak wcześniej wspomniałem, urządzenie EMC1883 produkowane przez Microchip fascynuje mnie nie tylko ze względu na szereg fantastycznych funkcji, ale także dlatego, że potrafi odczytać temperaturę wyczuwaną przez złącze tranzystora. STS-30, na który patrzyliśmy powyżej, miał pin przerwania alertu uruchamiany przez wartość absolutną; jednak EMC1883 może być skonfigurowany również do generowania alertu na podstawie tempa zmiany odczuwanej temperatury. Ten alert dotyczący tempa zmian może pozwolić na automatyczne włączanie inteligentnych rozwiązań zarządzania temperaturą w oczekiwaniu na ich potrzebę, a nie po fakcie. Ma to potencjał do poprawy niezawodności urządzenia jako całości poprzez staranne zarządzanie jego temperaturą operacyjną. Podobnie jak w przypadku STS-30, jest w pełni konfigurowalny programowo, co oferuje znaczne zalety w porównaniu z dowolną opcją ustawioną fabrycznie, którą prawdopodobnie musiałbyś zaimplementować, gdybyś używał w pełni analogowego termostatu, aby osiągnąć te same wyniki.
Specyficzny model serii EMC8xx, który testujemy, będzie wspierał wykrywanie tylko pojedynczego złącza. Jednak inne modele w serii mogą zapewniać wykrywanie do pięciu złącz.
Podobnie jak STS-30, jest to czujnik oparty na I2C, który umożliwia instalację wielu czujników na pojedynczej magistrali I2C. Jedną z różnic jest to, że implementacja pinu ADDR w EMC1833T różni się od binarnej natury urządzenia STS-30. To urządzenie umożliwia ustawienie do sześciu oddzielnych adresów poprzez użycie różnych wartości rezystorów podciągających. Pin ADDR pełni również funkcję jednego z pinów przerwania, działając jako pin ostrzegawczy o temperaturze (wraz z pinem ostrzegawczym ALERT/Warning 2). Podobnie jak w przypadku poprzedniej instalacji urządzenia, nie będę implementował rezystorów podciągających na liniach I2C na płytce czujnika temperatury. Jednakże, muszą one być zamontowane gdzieś w obwodzie, aby umożliwić poprawne działanie magistrali komunikacyjnej czujnika.
Karta katalogowa zaleca użycie bipolarnego tranzystora złączowego 2N3904 jako elementu zdalnego pomiaru, ponieważ nie mam dostępnego tranzystora CPU do pomiarów. Używam wariantu montażu powierzchniowego 2N3904 do pomiaru temperatury na tej płytce. MMBT3904 jest dostępny praktycznie od każdej firmy produkującej krzem zajmującej się tranzystorami BJT - w tym przypadku wybrałem część od ON Semiconductor, ponieważ była najlepiej zaopatrzona. Były dostępne miliony sztuk, kiedy ostatnio sprawdzałem na Octopart.
Tak jak to zrobiłem w poprzednich artykułach z tej serii, umieściłem element czujnika temperatury, nasz tranzystor, w przerwie termicznej. Elementy nieczujące umieściłem za przerwą termiczną. Zapobiega to, aby EMC1833T mogło negatywnie wpłynąć na odczyt temperatury poprzez ciepło, które może sam wygenerować.
W końcu mamy urządzenie Silicon Labs Si7051-A20. To właśnie wyniki z tego urządzenia najbardziej nie mogę się doczekać w całej tej serii. MAX31826 jest dość precyzyjnym czujnikiem; jednak Si7051-A20 oferuje imponującą precyzję +/- 0,1°C przy niezwykle niskim zużyciu energii, zaledwie 195 nA podczas próbkowania. Zużycie energii jest co najmniej o rząd wielkości mniejsze niż we wszystkich innych cyfrowych czujnikach temperatury i znacznie mniejsze niż w analogowych czujnikach temperatury, na które patrzyliśmy w poprzednim artykule.
Gdzie wiele czujników ma bardzo wysoką deklarowaną dokładność, liczby te zazwyczaj dotyczą tylko ograniczonej części całkowitego zakresu pomiarowego. W przeciwieństwie do tego, Si7051-A12 oferuje zgłaszaną dokładność na całym zakresie pomiarowym od -40°C do +125°C. Co więcej, błąd 0.1°C jest scenariuszem najgorszego przypadku dokładności, a nie średnią czy minimalną. Przy wybranej rozdzielczości 14-bitowej, Si7051-A20 zapewnia powtarzalny odczyt 0.01°C - uwielbiam dokładne i powtarzalne czujniki!
Podobnie jak w przypadku dwóch ostatnich czujników, Si7051-A20 jest czujnikiem kompatybilnym z I2C. Jednakże, nie oferuje on pinu adresowego, co oznacza, że można podłączyć do magistrali I2C tylko jedną jednostkę, chyba że dodasz przełącznik I2C lub przełączysz zasilanie między różnymi jednostkami podłączonymi do tej samej magistrali. Wymagałoby to dodatkowych pinów IO i zwiększyło złożoność obwodu, co czyni Si7051-A20 mniej idealnym do wykrywania wielu lokalizacji na twojej płytce obwodu. Urządzenie również nie posiada żadnych pinów alertu/przerwania, przeznaczone jest wyłącznie do użytku jako cyfrowy czujnik temperatury. Ogólnie rzecz biorąc, jeśli chcesz zautomatyzować zarządzanie temperaturą na twojej płytce obwodu, mniej dokładny i tańszy czujnik będzie więcej niż wystarczający dla takiej aplikacji.
Jedną z funkcji, która bardzo mi się podobała w STS-20, kiedy ostatnio z niego korzystałem, była certyfikacja kalibracji NIST stosowana do każdego urządzenia, ponieważ mój klient wymagał tej funkcji. Chociaż w karcie katalogowej Si7051-A20 nie ma o tym wzmianki, dostępny jest certyfikat kalibracji. Udało mi się również znaleźć inny, bardziej szczegółowy certyfikat kalibracji; jednak nie znajduje się on na stronie internetowej Silicon Labs i dlatego może dotyczyć tylko konkretnych jednostek zakupionych przez tę firmę. Jeśli tak, to ustanawia to precedens dla Silicon Labs w kwestii wydawania specyficznych certyfikatów dla swoich klientów.
Podobnie jak w przypadku innych implementacji I2C, o których mówiliśmy w tym artykule, linie I2C tej karty nie mają zamontowanych rezystorów podciągających na liniach danych/zegara. Będziesz musiał dołączyć rezystor podciągający do każdej linii gdzieś w swoim obwodzie, aby umożliwić Si7051-A20 pomyślną komunikację.
Obudowa DFN z 6 pinami jest również najłatwiejsza do ręcznego prototypowania spośród wszystkich bezwyprowadzeniowych opcji, które omówiliśmy w tym artykule. Korzystając ze szablonu lub narzędzia do nakładania pasty, takiego jak Voltera V-One, umieszczenie tego czujnika ręcznie i przeprowadzenie procesu przepływu lutowniczego przy użyciu podstawowych narzędzi byłoby niezwykle łatwe, co czyni go idealnym do prototypowania w domowym lub biurowym laboratorium.
Przyjrzeliśmy się czterem różnym cyfrowym czujnikom temperatury w tym artykule. Jednak dostępne są setki innych opcji cyfrowych czujników temperatury, które mogą spełnić konkretne wymagania Twojego projektu, są dobrze zaopatrzone i dostępne. Chociaż analogowe czujniki temperatury doskonale sprawdzają się w autonomicznym monitorowaniu procesów lub w połączeniu z przetwornikiem analogowo-cyfrowym, cyfrowe czujniki temperatury oferują znaczną wygodę przy integracji z produktem wyposażonym w mikrokontroler. Jak widzieliśmy w tym artykule, istnieją cyfrowe czujniki temperatury, które mogą generować przerwania i alarmy przy konfigurowalnych progach, co pozwala na ciekawe zastosowania wykraczające poza fabrycznie ustawiony termostat oparty na komparatorze, jakiego prawdopodobnie użyłbyś z analogowym czujnikiem temperatury. Precyzja i dokładność nowoczesnych cyfrowych czujników temperatury mogą być wyjątkowo wysokie; jednak wiele opcji zużywa znacznie więcej prądu niż ich analogowe odpowiedniki, co może powodować pewne przesunięcie temperatury z powodu samonagrzewania.
Najpopularniejsze i najlepiej zaopatrzone cyfrowe czujniki temperatury zazwyczaj używają magistrali I2C do komunikacji; jednak opcje magistrali SPI i 1-Wire również są łatwo dostępne, aby sprostać dostępności alternatywnych magistral komunikacyjnych dla twojego projektu.
Jak wspomniałem na początku artykułu, szczegóły każdej z tych płyt czujnikowych oraz wszystkich innych implementacji czujników temperatury można znaleźć na GitHubie. Wszystkie te projekty są udostępnione na otwartej licencji MIT, która pozwala na praktycznie dowolne korzystanie z projektu do użytku osobistego lub komercyjnego.
Chcesz dowiedzieć się więcej o tym, jak Altium może pomóc Ci w następnym projekcie PCB? Porozmawiaj z ekspertem z Altium.