Termistory to swojego rodzaju rezystory, których opór jest silnie zależny od temperatury (znacznie bardziej niż jesteśmy do tego przyzwyczajeni w przypadku standardowych oporników). Wykorzystanie tej cechy, która dla rezystorów jest zjawiskiem negatywnym w tym przypadku znalazło idealne zastosowanie do pomiarów temperatury ze stosunkowo dużą dokładnością.
Charakterystyka termistora
W sklepach elektronicznych możemy kupić czujniki temperatury takie jak LM35 czy DS18B20 – jednak w porównaniu do termistorów są droższe i mają większe obudowy. Oczywiście posiadają ogromną zaletę – mianowicie ich odpowiedź jest liniową funkcją temperatury. W przypadku termistorów nie jest tak przyjemnie. Zmiana rezystancji wraz ze zmianą temperatury rośnie (dla termistorów PTC) lub maleje (NTC), zgodnie ze wzorem:
– rezystancja w temperaturze
– rezystancja w temperaturze odniesienia
– rezystancja podawana zazwyczaj jako katalogowa (w moim przypadku jest to 10 kΩ)
– stała materiałowa termistora – można ją wyznaczyć lub znaleźć w nocie katalogowej (u mnie 3950 K)
– temperatura odniesienia (standardowo 298 K) UWAGA! Wszystkie temperatury podajemy w Kelwinach!
Jak mierzyć rezystancję?
Pomiar rezystancji może być przeprowadzony wieloma metodami. Najczęściej używa się mostka Wheatstone’a >LINK< lub tzw. metody technicznej >LINK< – pomiar spadku napięcia przy znanym prądzie przepływającym przez opornik. Ja jednak zdecydowałem się na zastosowanie metody zbliżonej do metody technicznej, bazującej na dzielniku napięciowym >LINK<.
Pomiar rezystancji termistora z wykorzystaniem przetwornika ADC
Zastępując jeden z oporników w dzielniku termistorem otrzymamy układ przedstawiony na Rysunku 1. Dodatkowo wyjście dzielnika podłączymy do przetwornika analogowo-cyfrowego (ADC) mikrokontrolera ATmega8.
Teraz pozostaje nam jeszcze jakoś powiązać zmianę temperatury z odczytem wartości z przetwornika (zakładając, że będziemy korzystać z 8-bitowego przetwornika w ATmedze, przy napięciu odniesienia ).
Z dzielnika otrzymujemy zależność (1) na napięcie wyjściowe:
Wartość przetwornika możemy w przybliżeniu opisać zależnością (2):
Natomiast rezystancę termistora w funkcji temperatury (w Kelwinach) opisuje wzór (3):
Łącząc równania (1) i (2) otrzymujemy zależność (4) na rezystancję termistora w funkcji wartości z przetwornika:
Korzystając z równań (3) i (4) możemy wyznaczyć zależność (5) temperatury od wartości z przetwornika:
Jeżeli chcemy uzyskać temperaturę w stopniach Celsjusza musimy zamienić Kelwiny na stopnie Celsjusza. Otrzymamy wówczas zależność (6):
Taką funkcję możemy już zaimplementować do mikrokontrolera. Oczywiście musimy pamiętać, że operacje logarytmowania (zmiennoprzecinkowe) potrzebują sporej ilości wolnej pamięci ATmegi. Przykładowy program pokażę w następnym poście.
Enjoy!
Dla dociekliwych
Zastosowanie dzielnika napięciowego niesie za sobą pewne wady. Temperatura jest zależna również od wartości rezystora () użytego w dzielniku. Aby uprościć nieco wyrażenie (5) lub (6) możemy zastosować rezystor o oporze równym , czyli wartości rezystancji termistora w temperaturze odniesienia. Wówczas stosunek tych wartości , a logarytm . Uprościł się nam jeden człon. Taki zabieg jest wystarczający, gdy chcemy „odciążyć” nieco nasz mikrokontroler (nie musi wykonywać jednej operacji) i nie zależy nam na dużej dokładności pomiarów.
Zmieniając wartość rezystancji możemy wpływać wartość błędu odczytywanej temperatur. Poniżej zamieszczam plik Excela, który pozwoli dobrać optymalną wartość i tolerancję rezystora w zależności od wymaganego zakresu mierzonych temperatur. Wystarczy uzupełnić pola zaznaczone żółtym kolorem (Rys. 2.) i odpowiednie dane można odczytać z wykresów.
Termistor <- plik Excel 2010