Tanie wykrywanie temperatury za pomocą MCU


13

Szukam taniego rozwiązania do pomiaru temperatury za pomocą MCU. Moje wymagania to:

  • 2 kanały
  • zakres temperatur: 30-35 ° C
  • rozdzielczość temp: 1-2 K.
  • dopuszczalna odległość kabla (MCU -> czujnik) 10 cm - 2 m
  • temperatura względna między dwoma kanałami jest wystarczająca, nie jest wymagana temperatura bezwzględna

Punktem wyjścia są dwie termopary ze wzmacniaczami termoparowymi, ale wydaje mi się, że to przesada w mojej aplikacji. Termopary pracują za 10 $ w Radiospares, wzmacniacze za 5 $, co kosztowałoby 30 $ tylko dla oszacowania temperatury.

Jaki jest dobry kierunek, aby szukać tańszego rozwiązania. NTC?


Edytuj 18 lipca 2012 r

Po tym, jak stevenvh rozszerzył swoją odpowiedź, aby pokazać wysoki stopień liniowości, jaki można uzyskać dzięki NTC, zainwestowałem trochę czasu, aby ponownie rozważyć, czy NTC nie są lepszym rozwiązaniem.

Nie jestem jednak pewien, czy jestem w stanie śledzić stevenvh w jego rozumowaniu dotyczącym błędu, który można uzyskać za pomocą NTC na taniej w porównaniu do układów półprzewodnikowych.

Aby uzyskać temperaturę za pomocą NTC, w grę wchodzą następujące funkcje:

  1. funkcja przenoszenia przekształcając temperaturę otoczenia na rezystancjęHTaRNTC(R25,B25/85)
  2. napięcie wytwarzane przez dzielnik napięciaHRNTCV(Vexcitation,RNTC,Rlin)
  3. Konwersja ADHVbits(V,Vref,σconversion)
  4. aproksymacja krzywej liniowej:HbitsTest(bits,σapprox)

Źródła błędów, które widzę, to:

  1. Błędy wartości NTC: 1% dla wartości i : łącznie około 2% B 25 - 85R25B2585
  2. 1% dla wartości rezystora linearisaton i powiedzmy 0,5% dla źródła napięcia wzbudzenia
  3. W przypadku PIC16F1825 wewnętrzne napięcie odniesienia zastosowane w ADC ma niepewność 6%. Ponadto sam ADC ma błędy integralne, różnicowe, przesunięcia i wzmocnienia o wartości rzędu 1,5 lsb. Przy 10 bitach te ostatnie razem stanowią najwyżej 0,5%.
  4. Jak wykazał stevenvh w swojej odpowiedzi, w przybliżeniu liniowym występuje błąd wynoszący zaledwie 0,0015% w zakresie zainteresowania.

Błąd w szacowaniu temperatury będzie zatem wyraźnie zdominowany przez błąd odniesienia napięcia ADV i błędy wartości rezystora. Wyraźnie przekroczy 6%. Błąd wynikający z aproksymacji liniowej jest całkowicie pomijalny, jak wskazał stevenvh.

Niepewność wynosząca 6% przy 300 kelwinach odpowiada błędowi temperatury wynoszącemu 18 K. Chipy temperaturowe mają błąd około 1 K. Przy 300K odpowiada to niepewności wynoszącej 0,3%.

Wydaje mi się, że nie ma mowy o pokonaniu tego za pomocą NTC bez niezwykle starannej kalibracji i weryfikacji wydajności. Niepewność w rezystorach linearyzacyjnych, napięcie wzbudzenia lub przetwornik ADC rozpatrywane oddzielnie zwiększają niepewność rozwiązania NTC powyżej tego. Czy mam poważny błąd w rozumowaniu?

W tej chwili jestem przekonany, że NTCs mogą być precyzyjnym rozwiązaniem do pomiaru temperatury, ale tanio wydaje mi się, że ich wydajność będzie strzałem w ciemność.

Odpowiedzi:


12

1-2 stopnie to łatwa rozdzielczość (nawet jeśli masz na myśli dokładność, która nie jest taka sama!). Rozważałbym LM75 i różne klony, lub DS1820 / 18S20 / 18B20 / 1822. Microchip ma wiele czujników temperatury , w tym klony LM75 za <1 $. Wersje wyjściowe napięcia są tanie, ale wolałbym wersję cyfrową.


Wszystkie odpowiedzi, które otrzymałem na to pytanie, były bardzo pomocne. Zaakceptowałem to ze względu na łatwość użycia klonów LM75. Nie martwienie się o linearyzację itp. Jest w moim przypadku wielkim plusem.
ARF

Ciekawe: dlaczego wolisz czujnik cyfrowy?
m.Alin

5
Bez obaw o referencje, linearyzację, konfigurację przetwornika A / C, a sprzęt jest prosty. Minusem jest to, że musisz poradzić sobie z protokołem.
Wouter van Ooijen

15

Powiedziałbym NTC, tak. Ten jest najtańszy, jaki udało mi się znaleźć w Digikey. Około pół dolara, to znacznie taniej niż układy scalone z czujnikiem temperatury, które mają mniej więcej taką samą precyzję. Zaletą NTC jest to, że potrzebuje on tylko rezystora szeregowego i wejścia ADC na mikrokontrolerze, które większość ma obecnie.

Niska cena ma również wadę: NTC nie są liniowe. Musisz albo użyć jego funkcji przesyłania (która ma w sobie charakter wykładniczy, który może Ci się nie podobać, albo użyj tabeli odnośników, która dla danego zakresu może być najlepszym rozwiązaniem).

edytuj dd. 2012-07-13
Bah, pokonany przez nieszczęsnego LM75. Nie pozwolę temu przejść. :-)

Użyję * 103 * MT * z tej serii NTC . Najpierw funkcja przesyłania:

R=10kΩe13.4096+4481.80T150522T2+1877103T3

T

Nie wygląda obiecująco i rzeczywiście między 0 ° C a 100 ° C krzywa wygląda następująco:

wprowadź opis zdjęcia tutaj

wszystko inne niż liniowe, jak powiedziałem. Możemy spróbować to zlinearyzować, ale pamiętajmy, że zrobimy z nim dzielnik rezystora, i one też nie są liniowe, więc każda linearyzacja zostanie teraz zniszczona przez rezystor szeregowy. Zacznijmy więc od rezystora i zobaczmy, co się stanie. Mam zasilanie 3,3 V i wybieram rezystor 5,6 kΩ do Vcc, a następnie wyjście staje się

wprowadź opis zdjęcia tutaj

Tak ogólnie to nieźle! Fioletowa krzywa jest styczną w naszym zakresie zainteresowań: od 30 ° C do 35 ° C. Mógłbym wykreślić na nim wykres powiększony, ale daje nam to dwie zbieżne linie, więc spójrzmy na błąd:

wprowadź opis zdjęcia tutaj

Nie wygląda też ładnie, ale musisz spojrzeć na skalę pionową, która daje względny błąd przybliżenia liniowego w porównaniu z naszą charakterystyką NTC między 30 ° C a 35 ° C. Błąd jest mniejszy niż 15 ppm lub 0,0015% .

Mathematica twierdzi, że równanie dla naszego prawie idealnego przybliżenia liniowego jest

VOUT=0.0308 T 1V/°C+2.886 V

Spowoduje to odczyty ADC odpowiednio 609 i 561. dla 10-bitowego ADC. Jest to zakres 48 dla różnicy 5 ° C lub rozdzielczości około 0,1 ° C. Tylko NTC i rezystor.

Kto potrzebuje LM75 !?



edytuj dd. 13.08.2012

Fakt: rozwiązanie NTC wymaga kalibracji.

Obiecałem Arikowi powrót do obliczania błędów, ale jest to o wiele bardziej skomplikowane, niż myślałem, i nie można go ukończyć z powodu niepełnych danych. Na przykład mam bardzo dokładne liczby dla współczynników w funkcji przenoszenia NTC (7 cyfr znaczących jest już zaokrąglonych!), Ale brak informacji o ich dokładności. Kilka komentarzy.

Arik dodaje błędy, takie jak 1% tolerancji rezystancji + 1% w przypadku błędu = 2%. Cóż, to nie jest takie proste i jest to część komplikacji, o której wspomniałem. Tolerancja 1% dla powoduje na przykład błąd 0,1% w wyniku.βββ

Błędy nie zawsze są wyrażane tak samo. Arkusz danych Maxim LM75, na przykład, nie wymienia błędów minimalnych i maksymalnych, ale wartości trzech sigma i sześciu sigma. Z drugiej strony arkusz danych Vishay NTC mówi o 1% błędu 1 . Czy to jest sześć sigma? Seven-Sigma? Wtedy może się okazać, że jest bardziej dokładny niż LM75, który jest dokładny z dokładnością do 2 ° C, nawet 3 ° C w zakresie temperatur. Nie ma się czego wstydzić; niewiele czujników poradzi sobie znacznie lepiej bez kalibracji. Pytanie: jak porównać wartości tolerancji? I jeszcze jedna: jak połączyć kilka funkcji krzywej dzwonowej, aby uzyskać całkowity błąd?±

Odniesienie ADC PIC ma dość złą tolerancję 6%. Arik mówi: Niepewność 6% przy 300 kelwinach odpowiada błędowi temperatury 18 K , co oczywiście jest niedorzeczne i całkowicie absurdalne. Zrobiłem szybkie sprawdzenie: obliczyłem moc dzielnika napięcia dla temperatury 20 ° C. Dodano do tego 6% i wróciłem do wartości rezystancji NTC i temperatury, która byłaby. Błąd nie wynosi 18 ° C, ale 1 ° C lub mniej niż 0,5%, w odniesieniu do 0 K.

Mimo to błąd 6% jest całkowicie nieistotny ! Jeśli użyjesz napięcia odniesienia ADC do dzielnika rezystora, napięcie to nawet nie pojawi się w obliczeniach. Nie przejmowałbym się, gdyby błąd wynosił 50%. Użyj innego odniesienia, jeśli złe wewnętrzne odniesienie nie jest dostępne poza kontrolerem. Podobnie jak w przypadku zasilania 3,3 V, lub po prostu jakiegokolwiek innego napięcia DC masz r dookoła.

Kalibracja nie jest tym, czego oczekujesz od jednorazowego projektu, ale w przypadku masowej produkcji nie ma się o co martwić, a zwłaszcza w elektronice użytkowej, gdzie liczy się każdy cent, bardziej prawdopodobne jest znalezienie NTC niż drogiego LM75.


3
Fajną rzeczą w pytaniu ekspertów jest to, że otrzymujesz każdą odpowiedź (analogową a cyfrową), teraz Arik potrzebuje eksperta, aby wybrać między ekspertami :)
Wouter van Ooijen

Około pół dolara? Czy to nie ten sam przedmiot, o którym wspominasz? To jest 0,15 USD / 100 sztuk. A MCP9701A kosztuje około 0,25 USD / 100 sztuk. Wow, myślałem, że cyfrowe są tak drogie, jak 2 lub 3 USD każdy!
abdullah kahraman,

2
@abdullah - wszystko jest względne. Wielki inżynier prawdopodobnie wskazałby na rezystancję szeregową 1% tolerancję i jej współczynnik temperaturowy 100 ppm / ° C. W każdym razie, jeśli wystąpią błędy odczytu, nie będzie to spowodowane przybliżeniem! :-)
stevenvh

1
@stevenvh Twoja rozszerzona odpowiedź dała mi powód do zmiany mojej oryginalnej oceny. Nie jestem jednak pewien, czy całkowicie rozumiem, w jaki sposób można uzyskać bardzo precyzyjny pomiar za pomocą NTC na taniej. Byłbym wdzięczny, gdybyś spojrzał na moje zredagowane pytanie i powiedział mi, czy mam wady w rozumowaniu. Wielkie dzięki za Twoją pomoc!
ARF

1
@Arik - zaktualizowałem moją odpowiedź. Szczególnie czułem, że rzekomy błąd 18 K wymaga odpowiedzi :-)
stevenvh,

6

To brzmi jak praca dla termistorów, a dokładniej dwóch termistorów. Ponieważ musisz tylko rozróżnić trzy różne stany temperatury i szukasz tylko temperatury względnej, możesz połączyć dwa termistory razem, aby uzyskać pojedynczy sygnał analogowy. Można to następnie zmierzyć za pomocą A / D wbudowanego w mikro. Większość micros ma A / Ds, więc to nic nie kosztuje. Prawdopodobnie dodałbym kilka rezystorów i kondensatorów jako filtry dolnoprzepustowe, aby zredukować szumy.

Jeden termistor przechodzi od masy do sygnału analogowego, a drugi od mocy do sygnału analogowego. Być może trzeba wykonać kalibrację, ale przy wąskim zakresie temperatur i niskiej rozdzielczości nie trzeba się fantazjować. Prawdopodobnie wystarczy zaoszczędzić napięcie zerowej różnicy i odjąć to od przyszłego odczytu.


Dziękujemy za podpowiedź dotyczącą zastosowania dwóch termistorów w konfiguracji dzielnika napięcia do pomiaru napięcia względnego. Nie pomyślałbym o tym.
ARF

@Arik - dwa termistory połączone szeregowo działają tylko wtedy, gdy ich rezystancja zmienia się liniowo wraz z temperaturą, więc należy to sprawdzić. (Zrobiłem w mojej odpowiedzi.)
stevenvh

@stevenvh: Tak, masz rację, ale zwróć uwagę na bardzo wąski zakres temperatur i niską rozdzielczość. Dwa termistory raz skalibrowane do obudowy o równej temperaturze w pobliżu środka zakresu powinny wystarczyć. Jedno nigdy nie będzie wyłączone od drugiego o więcej niż 5 st. C.
Olin Lathrop,

@Olin - Wszystko prawda. Chyba powinienem był dodać „na wypadek, gdybyś chciał mierzyć w znacznie szerszym zakresie temperatur”.
stevenvh

5

Jeśli nie znasz metody delta-napięcie ze skokowym prądem diodowym i jesteś zainteresowany pomiarem temperatury, powinieneś to przeczytać - może to zmienić Twoje pomysły na pomiar temperatury.


Jestem trochę spóźniony na przyjęcie.
Ponieważ odpowiedź zostanie wykorzystana do tej pory, w dużej mierze po prostu nakreślę alternatywną metodę, która ma znaczne zalety, ale która wydaje się zaskakująco mało stosowana w formie dyskretnej.

Ta metoda jest powszechnie stosowana w pomiarach temperatury układów scalonych, ale nadal wydaje się mniej znana niż można by się tego spodziewać.

Jeśli dioda krzemowa (powiedzmy) jest zasilana naprzemiennie dwoma znanymi prądami, zmiana napięcia delta wraz ze zmianą prądu jest związana z temperaturą bezwzględną.

Ta metoda jest stosowana (przynajmniej) w czujnikach TI LM82, LM83, LM84, LM87 i LTC3880, LTC3883 i LTC2974.

Należy zauważyć, że ta metoda różni się od zwykłej metody pomiaru bezwzględnego spadku napięcia przewodzenia diody przy danym prądzie w celu ustalenia temperatury. Ta metoda jest znacznie dokładniejsza i nie wymaga kalibracji specyficznej dla czujnika.

Można osiągnąć dokładność około 0,1 stopnia C (lub K).
Rozdzielczość zależy od metody pomiaru.

W wyniku tego urządzenie nie wymaga kalibracji.
Wynik zależy tylko od podstawowego rodzaju diody (np. Krzem, german),
np. Jeśli używasz diody sygnałowej 1N4148 o wartości poniżej 1 centa, możesz ją zmienić na inną 1N4148 i uzyskać te same dokładności bez ponownej kalibracji.

Dokładność ustawienia dwóch zastosowanych prądów oczywiście wpływa na dokładność wyniku, ale ponieważ można je wybrać w celu dopasowania do dostępnych zasobów, wyniki mogą być bardzo dobre.

Ta metoda jest stosowana w niektórych, ale nie we wszystkich systemach pomiaru temperatury procesora na matrycy. Zazwyczaj przekonasz się, że tam, gdzie ten system jest używany, opisy techniczne są bardzo szczegółowe i nieco zaciemnione - tj. Wydaje się, że chcą zachować to w tajemnicy, mimo że metoda prawdopodobnie pochodzi z pracy Widlara w połowie lat sześćdziesiątych.

Ta metoda rywalizuje z dokładnością możliwą do osiągnięcia przy rozsądnej staranności przy użyciu termistorów NTC lub rezystorów platynowych PT100 itp., Z bardzo konkurencyjnym stopniem złożoności i trudności.


Ta znakomita nota aplikacyjna 199 urządzeń analogowych Pomiar temperatury na chipach komputerowych z szybkością i dokładnością twierdzi, że technika ta jest nowa. Nie jestem wcale pewien, czy mają rację - ale z pewnością jest to przydatne i mniej znane, niż można by się spodziewać.

Z powyższej pracy (nieco przepisanej) dla prądów I i NI oraz spadku napięcia diody Cv1 przy prądzie 1 i Vd2 przy prądzie 2:

Vd1 - Vd2 = DVd = (kT / q) ln (I / NI) = (kT / q) ln (1 / N)

Ponieważ wszystkie znane N, k i q są stałymi,
T = (stała) (DVd)

_

Znakomita notatka aplikacji TI Wielokrotne zdalne wykrywanie temperatury diody

Wikipedia - Silikonowy czujnik temperatury pasma

[Dokładne wykrywanie temperatury LT AN137 za pomocą zewnętrznego złącza PN] http://cds.linear.com/docs/Application%20Note/an137f.pdf
Używany np. W LTC3880, LTC3883 i LTC2974.


3

Bardzo prosty pomiar temperatury (Celsjusza) z termistorem (10K) B25 / 100 = 4300 Zainspirowałem się powyższym komentarzem przeczytanym w tym artykule.

Kupiłem termistory od DigiKey 10K 5% po 1 $ za sztukę. Chciałem uzyskać uczciwy pomiar temperatury bez pływającej i złożonej matematyki. Podłączanie do Arduino w następujący sposób: Vref do 3.3v; analog-0 A0 przez rezystor 10K i napięcie 3,3 V. ; Termistor A0 do masy. Otrzymuję temperaturę w stopniach Celsjusza w następujący sposób: Kod częściowy: analogReference (ZEWNĘTRZNY);
ADC = analogRead (0);
Th = 10000 / (1023 / ADC) -1; // 10000 jest rezystorem ustalającym stosowanym w dzielniku.
T = (775 - Th) / 10;

Dokładność wynosi: +1 w 25 ° C, +0 w 20 ° C, -1 w 0 ° C, +2 w -20 ° C. Zmieniasz stałą 775, aby zbliżyć się do pożądanego zakresu pożądania. Na przykład użyj 765 zamiast 775, aby uzyskać błąd 0 około 25 ° C. Ponieważ jest to matematyka liczb całkowitych, dodałem 5 do 770 przed podzieleniem przez 10, aby zaokrąglić.

Pokazuje zależność między termistorem, ADC, temperaturą i obliczonym wynikiem


1

Używam LM35DZ . Zakres temperatur wynosił od 0 Celsjusza do 100 Celsjusza, moc liniowa i niska impedancja ; Używam go z bezpośrednim połączeniem z moim wejściem PIC ADC, do tej pory działa bardzo dobrze.

Jedna jednostka kosztuje około 3 USD.


3
I będzie potrzebował dwóch z nich. Nie wygląda mi to na tanie rozwiązanie. Nie w porównaniu do moich wielkich NTC! :-)
stevenvh

Używam również układów LM35 (i lubię je), ale myślę, że są nieco przesadzone z tym pytaniem.
Johan

0

Bardzo prosty pomiar temperatury (Celsjusza) z termistorem ... po 1 USD za sztukę.

Co powiesz na układ STM32F0? Jego moduł ADC zawiera wewnętrzny czujnik temperatury ORAZ skalibrowane wartości w dwóch punktach temperatury ORAZ skalibrowane wartości dla wewnętrznego generatora Vref.

Po połączeniu tego wszystkiego można go używać jako bardzo dokładnego czujnika temperatury - 12-bitowego ADC, a sigma wynosi nieco ponad 1 lsb - w szerokim zakresie napięć.

Można go również zaprogramować jako dedykowany czujnik tempeartury: przeważnie we śnie i po przebudzeniu, aby odczytać temperaturę i przesłać dane, a następnie wrócić do snu.

wszystko to za mniej dolara w małych ilościach.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.