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:
- funkcja przenoszenia przekształcając temperaturę otoczenia na rezystancję
- napięcie wytwarzane przez dzielnik napięcia
- Konwersja AD
- aproksymacja krzywej liniowej:
Źródła błędów, które widzę, to:
- Błędy wartości NTC: 1% dla wartości i : łącznie około 2% B 25 - 85
- 1% dla wartości rezystora linearisaton i powiedzmy 0,5% dla źródła napięcia wzbudzenia
- 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%.
- 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ść.
źródło
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:
Nie wygląda obiecująco i rzeczywiście między 0 ° C a 100 ° C krzywa wygląda następująco:
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ę
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:
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
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.
źródło
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.
źródło
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.
źródło
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ć.
źródło
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.
źródło
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.
źródło