Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Przetworniki temperatury: DS18B20 vs LM35

11 Jul 2013 22:49 6690 22
e-mierniki
  • #1
    User removed account
    User removed account  
  • e-mierniki
  • e-mierniki
  • #3
    PiotrPitucha
    Level 33  
    Witam
    Łatwiej transmitować sygnał cyfrowy na odległość, ewentualne błędy wykrywane mogą być przez CRC, przy czujniku analogowym obróbka zaszumionego sygnału jest kłopotliwa a kalibracja utrudniona.
    Piotr
  • #4
    tmf
    Moderator of Microcontroller designs
    kaamil1984 wrote:
    Panowie,

    Od dłuższego czasu zastanawiam się nad fenomenem popularnosci DS18B20 w układach z mikrokontrolerami wszelkiej maści.

    Przecież na rynku jest dostępny przetwornik o takiej samej dokładności, znacznie prostszy w implementacji. Mam tu na myśli przetwornik LM35, który jest w większości sklepów tańszy od DS18B20.

    Do jego obsługi wystarczy jeden wolny kanał ADC i dosłownie kilka linijek w C.

    Czy znacie jakieś argumenty przemawiające za DS18B20 poza wymienionymi poniżej?
    - DS18B20 można użyć z mikrokontrolerem bez przetwornika ADC (lub kiedy wszystkie kanały ADC są już zajęte)
    - na jednej szynie 1wire można podłączyć kilka przetworników DS18B20


    Możliwość podłączenia na jednej szynie kilku termometrów, akurat świetnie uzasadnia stosowanie wersji cyfrowej. Z drugiej strony pamiętaj, że LM35 jest świetny, ale... wymaga niezłego źródła referencyjnego dla ADC. Porównaj to ze stabilnością i dokładnością wewnętrznej referencji w np. ATMega. W praktyce jeśli chcesz uzyskać dużą dokładność potrzebujesz zewnętrznej referencji i układ się komplikuje i drożeje. Do tego oczywiście dochodzi problem z zakłóceniami przy dłuższych połączeniach. W praktyce trzeba uśredniać ileśtam sampli. Stabilną referencję i uśrednianie sprzętowe mają z AVRów dopiero XMEGA. W efekcie, gdybym miał układ z jednym termometrem, blisko procka, to pewnie użyłbym LM/DS, gdybym miał kilka, na dłuższym kablu użyłbym DSa. W praktyce dla amatora ważne jest też to co akurat ma w szufladzie.
  • #5
    User removed account
    User removed account  
  • #6
    tronics
    Level 38  
    Quote:
    Z drugiej strony pamiętaj, że LM35 jest świetny, ale... wymaga niezłego źródła referencyjnego dla ADC

    Bez przesady. Sam LM35 ma błąd rzędu 5mV czyli mniej więcej rozdzielczość ADC Atmegi zasilanej z AVcc=5V z LM7805 o jakby nie było 2% rozbieżności napięć wyjściowych. Jasne, można się postarać bardziej i mieć nawet bardziej stabilne zasilanie tylko po co? Producent zapewnia rozdzielczość rzędu 1/4-3/4*C w zależności od zakresu więc nie ma co kombinować. DS też ma błędy, 0.5-2*C więc niewiele z tej wyższej rozdzielczości wychodzi (iirc 0.125*C). Dla mnie sprawa jest jasna - trzeba dużo czujników, ewentualnie w większej odległości, a pinów mało - to cyfrowe DSy, są wolne piny ADC, odległośnie nie za duże, zakłóceń brak - LM jest ok. Różnice cenowe nie są jakieś strasznie duże, a w DS jest parę ciekawych rzeczy, których nie ma LM (min, max, alarm choćby) więc zasadniczo wolałbym DSy do nowych urządzeń, z drugiej strony prosty termometr z 7seg na LM to pestka i parę zł, na DS18B20 już drożej.
  • #7
    BlueDraco
    MCUs specialist
    Do błędu analogowego czujnika dokłada się błąd przesyłania napięcia przez przewód i błąd przetwornika A/C mikrokontrolera - jak się to wszystko skumuluje, to dokładność jest sporo mniejsza niż przy czujniku cyfrowym. Wypadałoby nadmienić, że oprócz ulubionych na elektrodzie DS18x20 istnieje cała masa cyfrowych czujników temperatury z interfejsami I2C i SPI, łatwiejszych w odczycie niż DS18, ale wymagających większej liczby przewodów/ścieżek.
  • #8
    tmf
    Moderator of Microcontroller designs
    tronics: mylisz rozdzielczość pomiaru z dokładnością. Ponieważ mierzysz napięcie, potrzebujesz dokładne, a nie tylko stabilne źródło referencyjne. Taka np. ATMega8 ma wewnętrzne źródło referencyjne w zakresie 2,3-2,9V, czyli masz błąd pomiaru w zakresie +/-13%, pomijając błędy przetwarzania samego ADC. W efekcie np. dla 30 stopni masz różnicę wskazań +/-4 stopnie. Stąd potrzebne jest dokładne źródło referencyjne.
  • #9
    GanzConrad
    Level 25  
    kaamil1984 wrote:
    przy odległosci 20m prawda

    nie, wystarczy zmniejszenie rezystora podciągającego do np. 2.2k. Ja mam 3 czujniki - długośc kabla ponad 30m (kilka sztukowanych) i rezystor 1k.
    tronics wrote:
    na DS18B20 już drożej.

    mógłbyś sprecyzować ile? DS18b20 to 3PLN, więc każda różnica nie ma znaczenia. Prędzej fakt, czy musisz ruszyć tyłek i zmarnować czas, odpalić samochód lub jechać do sklepu autobusem lub płacić za przesyłkę ;-)
    Do zalet wspomnianych przez kolegów dorzucę:
    - numer seryjny - na jednej linii podpinasz dowolną ilość czujników (jeden kabel w ścianie) i na podstawie 64bit numeru przypisujesz poszczególne czujniki do różnych pomieszczeń, czy urządzeń.
    - Wartości alarmu temperatury (Tmin-Tmax) są przechowywane w EEPROM, więc odporne na spadki napięcia - w ostateczności możesz to wykorzystać jako dysk twardy o pojemności 2 bajtów ;-).
    - zmienna rozdzielczość pomiaru i czas konwersji.
  • #10
    PiotrPitucha
    Level 33  
    Witam
    Argument ekonomiczny odpada, bo choć w sklepie za rogiem płaciłem za DS18B20 8zł, to w wielu miejscach jest on tańszy niż LM35.
    Trzeba zwrócić uwagę na zakres temperatur, najtańsze LM35 ma zakres 0°-100°, i to są rzeczywiście pojedyncze złotówki, wersje -55°-150° kosztują już kilkadziesiąt złotych.
    Pewnie trzeba się też zgodzić z tym że pomiary mogą płynąć w czasie w obu czujnikach, bo to nie jest klasa przetworników przemysłowych.
    Reasumując oba przetworniki to bardzo udane zabawki do zastosowań mniej wymagających, mają tą zaletę że zwalniają nas praktycznie od dodatkowego hardware jaki musielibyśmy dodać do PT100 i termopary, osobiście używam LM35 i DS18B20.
    GanzConrad z tym zmniejszaniem rezystancji bym uważał, jeśli mierzysz temperaturę cieczy to można pominąć wpływ podgrzewania czujnika przez prąd magistrali, w powietrzu będzie to powodem poważnych błędów, wg materiałów firmowych prąd pobierany w czasie przetwarzania w DS18B20 może dochodzić do 4mA a to już znaczna energia zamieniana w ciepło.
  • #11
    GanzConrad
    Level 25  
    PiotrPitucha, na 2.2k 1-wire nie chciało wstać, więc 1k był koniecznością. Co do przekłamań: w domowych warunkach (piec, temp zewnątrz itp) nie ma to większego znaczenia, bo sama tolerancja daje już różnice pomiarów pomiędzy DSami i innymi termometrami. Poza tym, jak wspomniałem podciągnięcie jest spowodowane najprawdopodobniej różnymi przewodami, ich sztukowaniem i bliskością innych używanych kabli.
  • #12
    PiotrPitucha
    Level 33  
    Witam
    Rozumiem konieczność takiego podciągnięcia, ale chodzi o świadomość tego co mierzymy, nie możemy zakładać że tak zasilony czujnik będzie trzymał deklarowany przez producenta uchyb, w stojącym powietrzu może wskazywać nawet kilka stopni więcej, jeśli powietrze będzie opływało czujnik to błąd pomiaru się zmniejszy, najbliższy prawdy będzie w cieczy która jest w stanie odebrać ciepło powstałe przy podgrzaniu czujnika

    Piotr
  • #14
    PiotrPitucha
    Level 33  
    Witam
    Wpływ zjawiska można zmniejszyć zwiększając pojemność cieplną czujnika (kawałek blaszki czy gotowy radiator) i prowadząc sporadycznie czytanie czujnika, cytowany z dokumentacji prąd tyczy jedynie procesu przetwarzania, w innych przypadkach jest pomijalny na szczęście :)
    Domyślam się że kłopoty ze wstaniem DS18B20 miałeś przy zasilaniu z magistrali danych, magistrala 3,3V czy 5V ?
    Piotr
  • #15
    tronics
    Level 38  
    @tmf - upraszczając sprawę "do bólu", jak pisałem LM7805 ma +-2% Vout względem 5.0000V więc ustawienie Vref na AVcc i już masz znacznie stabilniejsze źródło napięcia referencyjnego. Można też coś pokroju LMx85 chociaż i to charakteryzuje się podobnymi rozbieżnościami. Jest w miarę dokładne? Jest. A czy ja coś wspominałem o wewn. vref? Nie. To skąd się to w dyskusji wzięło? Dalej - rozdzielczość. Myślisz, że gdzieś to pomyliłem?
    No to patrzmy. Piszę o LM z mega w której źródło referencyjne to pin AVcc na który podamy sobie sygnał z 7805 (2%). Jest stabilne i w miarę dokładne? Jest. To przy 10 bitach mamy 1024 dyskretne wartości rozpoznawane przez układ. Czyli co mniej więcej 5mV, co jest pomiędzy np. 5 a 10mV jest bez znaczenia. Zatem rozdzielczość jest rzędu 5mV = 0.5*C. Jeden opamp z ku=4 i mamy fajnie, jedno źródełko 1.24V LMx85 i też jest już fajnie. Max rozdzielczość DX18b20 to 0.125*C i to da się osiągnąć z LM. Jednocześnie dokładność pomiaru LM jest rzędu 0.25-0.75*C zależnie od zakresu, a DS 0.5-2*C. Dokładnie to samo napisałem wyżej. To powiedz proszę gdzie niby pomieszałem rozdzielczość pomiaru z dokładnością?

    @PiotrPitucha
    Quote:
    Argument ekonomiczny odpada, bo choć w sklepie za rogiem płaciłem za DS18B20 8zł, to w wielu miejscach jest on tańszy niż LM35

    Zależy dla kogo. Ja mam LMy za darmo praktycznie. Co prawda część z wylutu, ale jednak. Tak samo termometry rezystancyjne SMD o ch-ce PT100. DSy ostatnio kupowałem 3.50zł/szt, ale to rok temu, LM wypadały ciut taniej. W hurtowej sprzedaży relacje są nieco inne. W przypadku przemysłówki analogowość LM jest właśnie zaletą.
    Quote:
    Trzeba zwrócić uwagę na zakres temperatur, najtańsze LM35 ma zakres 0°-100°

    Nie jest to prawda. Kilka elementów więcej, a dokładniej jedna-dwie diody, rezystor i 1 wyprowadzenie ADC więcej i masz pełen zakres.
    Quote:
    mają tą zaletę że zwalniają nas praktycznie od dodatkowego hardware jaki musielibyśmy dodać do PT100

    A co za problem zrobić źródło prądowe do PT100 i mierzyć napięcie (typowe 3 przewodowe podłączenie RTD). Znacznie bardziej problematyczne od RTD są niestety termopary, z drugiej strony co innego da ci zakres temp. rzędu kilkuset stopni? :)
  • #17
    tmf
    Moderator of Microcontroller designs
    7805 mają Vo+/-5%, a nie 2%, chyba, że masz jakąś specjalną wersję. Dwa, dokładność napięcia leci na łeb przy wzroście obciążenia. Trzy, procek i inne układy cyfrowe pobierają prąd impulsowo. To nie jest stabilne napięcie referencyjne. To jedna z gorszych możliwości. Cztery - zakładasz, że ADC jest idealny, a nie jest. Ma błędy wzmocnienia i liniowości, jak to wszystko dodasz, to nijak nie wychodzi dokładność 0,5 stopnia. Pięć, w pełnym zakresie LM35 ma dokładność +/-1,5 stopnia, w wąskim +/-1 stopień. Jest to w nocie, wykres accuracy vs. temperature.
    Ergo, każdy z tych układów ma swoje wady i zalety. Dlatego każdy stosuje co lubi.
  • #18
    User removed account
    User removed account  
  • #19
    tmf
    Moderator of Microcontroller designs
    kaamil1984 wrote:
    tmf wrote:
    Taka np. ATMega8 ma wewnętrzne źródło referencyjne w zakresie 2,3-2,9V, czyli masz błąd pomiaru w zakresie +/-13%


    W takim razie chyba lepiej jest używać Vcc jako referencjału... ja prawie zawsze tak robię z ATmegami.


    Lepiej to dać zewnętrzne źródło referencyjne, albo wybrać AVRa z lepszą dokłądnością referencji :)
    Vcc nie zawsze się da - np. zasilasz z baterii i napięcie się zmienia, albo masz układ pobierający prąd impulsowo (większość cyfrowych, silniki, interfejsy). Odpowiedź napięciowa stabilizatora nie jest nieskończona. Masz nagłe obniżenie napięcia przy skoku prądu i referencja dla ADC ci pływa. Kondensatory nie poprawiają sytuacji aż tak bardzo, bo indukcyjności, ESR itd. Vcc jest naprawdę zaszumionym źródłem. Oczywiście dużo leży w gestii projektanta.
  • #20
    User removed account
    User removed account  
  • #21
    tmf
    Moderator of Microcontroller designs
    Tak, np. XMEGA maja referencję 0.99-1,01V. Nie jest to dokładność zewnętrznego źródła, ale całkiem niezła. Co do AVcc, pamiętaj, że z niego zasilany jest nie tylko ADC, lecz także część cyfrowa powiązana z portem ADC. Dodatkowy stabilizator, kondensatory, nie lepiej dać stabilną zewnętrzną referencję? W SOT23 nie zjamuje wiele i kosztuje niewiele.
  • #22
    PiotrPitucha
    Level 33  
    Witam
    tronics ja wiem jak mierzyć temperatury poniżej zera, jak byk jest to rozrysowane w manualu, mówię o zakresie temperatur podawanym dla konkretnego modelu przez producenta, zobacz dla przykładu jaki rozrzut cen występuje u jednego dostawcy (np. TME) najtańsze są te o zakresie 0-100, nie wnikam co się dzieje, charakterystyka jeździ poza założone parametry czy też mogą wcześniej oddać ducha, fakt że są i takie LM35 kosztujące 10 razy więcej.
    Co do PT100 to też nie jest prosta sprawa, po pierwsze charakterystyka nie jest liniowa, po drugie by uniknąć podgrzewania stosuje się małe prądy rzędu 800µA co skutkuje minimalnymi zmianami napięcia, trzeba to wzmacniać i linearyzować, stabilność termiczna wzmacniaczy nie jest bezwzględna.
    Cenowo to kosmos, ostatnio płaciłem za układy konwersji temperatury na prąd około 30zł, do tego kilka rezystorów na zamówienie coś ponad 5zł sztuka (0,01% 100ppm) Jak na przemysłówkę przystało można potem transmitować nieekranowanymi kablami przez kilka pięter.
    Piotr
  • #23
    User removed account
    User removed account