Elektroda.pl
Elektroda.pl
X
Sklep HeluKabel
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

AVR ATmega - precyzyjny pomiar temperatury - proszę o recenzję

cek 29 Gru 2011 04:52 10957 17
  • #1 29 Gru 2011 04:52
    cek
    Poziom 8  

    Witam,
    W temacie piszę "precyzyjny pomiar temperatury", ponieważ uważam, że pomiar temperatury z rzeczywistą dokładnością 0,1stC takim pomiarem już jest.
    Założenia do projektu były proste:
    1) pomiar temperatury z dokładnością 0,1stC
    2) pomiar temperatury ma odbywać się w wodzie (pod wodą)
    3) poza wodą ma znajdować się układ wyświetlający pomierzoną temperaturę
    4) odległość pomiędzy układem wyświetlającym temperaturę a elementem mierzącym wynosić będzie kilkadziesiąt metrów, a więc tak długi ma być przewód lączący.
    Te proste założenia przysporzyły mi wieeeelu problemów.
    Podłączenie elementu pomiarowego pt100 przewodem o długości np. 50m czy więcej, wydało mi się złym rozwiązaniem, więc pozostawało umieścić układ pomiarowy razem z pt100, a przewodem dostarczać zasilanie, oraz przesyłać wyniki pomiarów.
    Przewód ma był dwuparową skrętką telefoniczną, jedna para dla napięcia stałego nie stabilizowanego, druga dla transmisji RS485.
    Cały układ ma znajdować się w rurce miedzianej, szczelnie zamkniętej, a element pt100 przylegać będzie bezpośrednio do jej ścianki od wewnątrz.

    AVR ATmega - precyzyjny pomiar temperatury - proszę o recenzję

    A teraz parę słów wyjaśnienia do zaprojektowanego przeze mnie układu.
    Jedna gałąź mostka pomiarowego ( z rezystorem 100 Ohm ) wyznacza minimalną mierzoną temperaturę, która wynosi 0 stC, druga gałąź mostka wraz z elementem pt100 wyznaczać będzie temperaturę otoczenia.
    INA125 jest precyzyjnym i stabilnym źródłem napięciowym, oraz wzmacniaczem. Jego napięcie referencyjne 5V jest jednocześnie:
    - napięciem referencyjnym dla mostka pomiarowego
    - napięciem zasilania dla ATmega
    - napięciem referencyjnym przetwornika ADC w ATmega
    - napięciem zasilania MAX485
    Zaznaczam, że w trakcie pomiaru, zmniejszany jest clk procesora do miezbędnego minimum, oraz wyłączane są wszystkie wewnętrzne moduły w procesorze, oprócz przetwornika ADC.
    Rezystor R11 ustala wzmocnienie napięcia różnicowego z mostka pomiarowego tak, by temperatura ~ 38 stC dała na wyjściu 5V, czyli 0 stC = wartości 0 na ADC, a 38 stC = wartości 1023 na ADC.
    Atmel obiecuje dokładność przetwornika ADC = 1,5 LSB, a więc 384 części, dla rozdzielczości 0,1 stC dostajemy więc zakres mierzonej temperatury = 38,4 stC.
    Skalibrowanie temperatury jakoś sobie wyobrażam, zachowanie elementów pasywnych w zmieniającej się temperaturze również - cały układ pomiarowy będzie pracował w temperaturze w przedziale 0 - 38 stC. Źródło napięcia referencyjnego w INA125 ma dryft 25ppm/C. Nie bardzo już wiem jak zachowa się wzmacniacz w INA125 w zmieniającej się temperaturze, a kompletnie nie wiem czego spodziewać się po przetworniku ADC w funkcji temperatury, nie znajduję żadnych danych na ten temat u Atmela.
    I tu moja prośba o spostrzeżenia, doświadczenia, pomysły lub słowa konstruktywnej krytyki co do mojej konstrukcji, może jakaś analiza pracy układu w zakresie temperatur od 0 do 38 stC.
    Z góry dziękuję wszystkim, którzy zechcą mi pomóc .
    Pozdrawiam.

    0 17
  • Sklep HeluKabel
  • #2 29 Gru 2011 07:17
    avatar
    Poziom 35  

    Jezeli pomiar ma sie odbywac w waskim zakresie 0 - 100'C i ma byc dokladny tak jak napisales to czy nie prostrzym i bardziej efektywnym rozwiazaniem byla by kostka dallasa ? Dla cyfrowego czujnika nie trzeba zadbac az tak o jakos przewodow (spadki napiec na zlaczach itd). Nie trzeba tez kaliborwac ukladu.....

    0
  • Sklep HeluKabel
  • #3 29 Gru 2011 10:23
    andrzej55
    Poziom 35  

    Czujnik Pt100 nawet klasy A nie zapewni Ci dokładności na poziomie 0,1'C. Dochodzi do tego jeszcze linearyzacja jego charakterystyki. Niekorzystnie wygląda też zamykanie pozostałej elektroniki wraz z czujnikiem (podgrzewanie czujnika- może niewielkie ale zawsze jakieś tam). Skoro kalibracja będzie i tak niezbędna to nie lepiej użyć LM35? Przy 38' na jego wyjściu będziesz miał 0,38V które dosyć łatwo dowolnie możesz wzmocnić np. OP07. Na tak długim przewodzie Lm-a jeszcze nie stosowałem ale po zablokowaniu dobrej jakości pojemnościami nie powinno się raczej nic dziać. Nie podoba mi się rozdzielczość przetwornika A/D - w moim odczuciu co najmniej 2x za mała.
    Życzę powodzenia!

    0
  • #4 29 Gru 2011 11:11
    cek
    Poziom 8  

    Rozdzielczość przetwornika AD w ATmega wynosi 10bit. Ponieważ Atmel podaje, że błędy nie powinny przekroczyć 1,5 - 2,0 LSB , więc pozostaje nam rozdzielczość 8 bit - 8,5 bit.
    8 bit * 0,1 stC = 25,6 stC , 8,5 bit * 0,1 stC = 38,4 stC , te ostatnie oczywiście jest wynikiem uśrednienia.
    Ponieważ układ ma być zatopiony w jeziorze i mierzyć ma temperaturę wody, zakres od 0 stC do 25-38 stC jest w zupełności wystarczający.
    Mój największy niepokój budzi fakt, że cały ten układ pomiarowy będzie miał tę samą temperaturę co otaczająca go woda.

    Jeśli chodzi o jakieś gotowe układy do pomiaru temperatury np. LM35, to nie spotkałem się z takim, który miałby precyzję pomiaru 0,1 stC.

    0
  • #5 29 Gru 2011 11:49
    andrzej55
    Poziom 35  

    Nie spotkałem jeszcze czujnika temp. który zapewnił by taką dokładność co nie stanowi o tym, że cały układ pomiarowy nie może z taką dokładnością mierzyć. Cała tajemnica polega na skalibrowaniu całego toru pomiarowego w odniesieniu do wzorca o kilkakrotnie lepszej dokładności. Wzorcem w amatorskich warunkach jest oczywiście temp. topniejącego lodu oraz (wrzątek po poprawce od ciśnienia atm.)
    Nie bardzo mogę sobie wyobrazić jak chcesz określić błąd popełniany Twoim ustrojem jeśli rozdzielczość jest taka sama jak zakres pomiarowy. Żeby dało się zaobserwować jakiekolwiek błędy rozdzielczość musi być co najmniej 2krotnie większa bo albo wskazanie okaże się chwilowo bezbłędne(do przeskoczenia o kolejne oczko) ale już za jakiś czas cały pomiar nie będzie spełniać założenia(+-0,1'C). Więc może obniżysz wymagania do+-0,2'C i będzie jako tako i bliżej prawdy. Przesadzając wygląda to jak próba zważenia zegarka wagą samochodową.

    0
  • #6 29 Gru 2011 12:19
    cek
    Poziom 8  

    Rozdzielczość przetwornika ADC w ATmega wynosi 10 bit, ale Atmel twierdzi, że 1,5 do 2 LSB są obarczone błędem pomiaru.
    Dla zakresu mierzonych temperatur = 25,6 stC przetwornik dokonuje pomiaru z rozdzielczością 10 bit tzn. 0,025 stC, uśredniając takie pomiary a następnie odrzucając 2 LSB dostajemy rzeczywisty wynik z rozdzielczością 0,1 stC (zakres 25,6 stC / 256 = 0,1 stC).

    Jeśli chodzi o kalibrację to wyobrażam sobie dwa sposoby
    1) woda, kostki lodu i wyznaczenie 0 stC, a następnie przy pomocy termometru lekarskiego np. 36,6 stC (wyznaczenie dwóch skrajnych punktów wystarczy)
    2) podłączenie na czas kalibracji w miejsce pt100 rezystora 100,00 Ohm dla wyznaczenia 0 stC, a następnie 111,00 Ohm dla wyznaczenia ok. 28,5 stC. Rezystancja musiała by być wyznaczona z dokładnością min. 0,01 Ohm.

    Ale to są problemy na potem, teraz ważniejsze jest,
    Jak zachowywać się będzie wzmacniacz i przetwornik w funkcji temperatury w przedziale 0 - 25 stC. ?
    Czy da się sumaryczny dryft temperaturowy całego układu skorygować poprawkami wyliczanymi przez ATmega?

    0
  • #7 29 Gru 2011 13:38
    andrzej55
    Poziom 35  

    Sam czujnik Pt100 na odcinku 0-40'C posiada nieliniowość bliską 0,1'C -jakoś nie wyobrażam sobie programowego linearyzowania tego błędu jeśli twój przetwornik ma podstawową rozdzielczość 0,1'C (czy jakąś tam kombinowaną 0,02'C).
    Przy 12bitowym przetwarzaniu miał byś do dyspozycji w zakresie 0-40'C 4096 stanów i takie rozwiązanie jest na styk w stanie uciągnąć założoną dokładność inne będą tylko udawać. Dryf temperaturowy wzmacniacza na pewno da się obliczyć z noty. Rezystory metalizowane z niskim współczynnikiem ppm/'C. Woda do kalibracji destylowana. Prąd pomiarowy na czujniku <0,5mA.
    Jakoś dalej nie nie wiem po co uparłeś się na ten Pt100 jak Lm35 może pracować na długim 3żyłowym przewodzie jest liniowy i tak trzeba wszystko podkalibrować.

    0
  • #8 29 Gru 2011 14:42
    cek
    Poziom 8  

    Nie upieram się, ale LM35 ma dokładność do 0,5 stC, a ja mam mierzyć z dokładnością 0,1 stC, więc na starcie LM35 odpada jako nie spełniający założeń wstępnych. Poza tym LM35 ma wyjście napięciowe, więc i tak konieczny był by przetwornik ADC.

    Jeśli chodzi o termistory platynowe pt100, to mają one "wrodzoną" nieliniowość, ale dokładnie zbadaną i opisaną. Jej korekta jest znana :

    Równania określające zależność między temperatur ą a rezystancją są następujące:
    - w zakresie od –200 stC do 0 stC
    Rt = R0[1 + At + Bt^2 + C (t-100 stC)t^3]
    - w zakresie od 0 stC do +850 stC
    Rt = R0(1 + At + Bt^2)
    Dla platyny o jakości zwykle stosowanej w przemysłowych czujnikach rezystancyjnych wartości stałych w tych równaniach są następujące:
    A = 3,9083 x 10^-3 stC ^-1
    B = -5,775 x 10^-7 stC^-2
    C = -4,183 x 10^-12 stC^-4

    Poprawkę tę dla zakresu od 0 stC do +800 stC uwzględniam w programie wyliczając temperaturę.
    Czy są powszechnie dostępne i tanie precyzyjniejsze i bardziej wiarygodne termistory niż termistory platynowe?
    Mogę zastosować zamiast pt100 termistor pt1000, ale przecież pt100 wystarczy do tej precyzji. (chyba że się mylę)

    Jeszcze raz :
    przetwornik ma rozdzielczość 10 bit, czyli 0,025 stC
    po odrzuceniu błędów na przetworniku (2LSB) dostaję wiarygodną rozdzielczość 0,1 stC.
    Fizyczna rozdzielczość przetwornika ADC to 10 bit to jedno a wiarygodna to drugie.

    0
  • #9 29 Gru 2011 15:54
    andrzej55
    Poziom 35  

    Lm35 ma wyjście napięciowe analogowe więc jak zastosujesz odpowiedni przetwornik A/C to możesz uzyskać rozdzielczość nawet 0,001'C(czego nie da się na Dallasach). Jego maksymalny błąd nawet jeśli wynosiłby kilka stopni a jest powtarzalny można poprzez regulację offsetu i nachylenia(wzmocnienia) w analogowym wzmacniaczu dowolnie skorygować lub programowo. Potrzebne jest tylko wzorcowe źródło temperatury. Poza tym na jego wyjściu masz duże liniowe łatwe do wzmocnienia napięcie 0-400mV -w pt100 ΔU=ok. 7,7mV!
    Wracając do przetwornika a/c do dyspozycji masz ok. 0-1000 stanów i chcesz nimi dokładnie zmierzyć 0-400 stanów i jeszcze pozostałe wykorzystać do korekcji, kalibracji. To na prawdę b. mało i przypomina mierzenie milimetrów linijką w której podstawowa podziałka to 1mm. Dla tego do mierzenia mm używamy suwmiarki o rozdzielczości co najmniej 0,1mm czyli w Twoim przypadku o rząd wielkości to a/c 12bit(4000). Czyli wykorzystując przetwornik tej ATmegi możesz z czystym sumieniem wykonać termometr z dokładnością 1'C.

    0
  • #10 03 Sty 2012 10:47
    Wieslaw Bicz
    Poziom 18  

    Pomiar temperatury z dokładnością (absolutną) 0,1 stopnia jest wyzwaniem. Szczególnie w momencie, gdy złącze odniesienia jest w dużej odległości od styku gorącego.

    Proponowałbym rozważyć inną technikę, znaną też od lat, ale obecnie rzadko spotykaną: pomiar transmisji dźwięku w materiale. Sprowadza się on do pomiaru czasu, który jest najdokładniejszym pomiarem w fizyce. W przypadku wybrania na czujnik materiału o stabilnych parametrach wystarczy jednorazowa kalibracja i dbałość o stabilność wymiarów czujnika. Wtedy można powtarzać konstrukcję.

    Dokładność takiego urządzenia może być znacznie lepsza niż 0,001 stopnia a dzisiaj nie jest sprawą bardzo trudną zrobić pasującą do tego elektronikę. Już ok. 60 lat temu nie było problemem zmierzenie temperatury przy pomocy tego typu tzw. "termometrów kwarcowych" z jeszcze większą dokładnością. A elektronika nie oferowała wtedy tak dużych możliwości.

    0
  • #11 06 Mar 2012 14:18
    yarpen2
    Poziom 22  

    "Lm35 ma wyjście napięciowe analogowe więc jak zastosujesz odpowiedni przetwornik A/C to możesz uzyskać rozdzielczość nawet 0,001'C(czego nie da się na Dallasach)."

    Może się czepiam ale rozdzielczość nie jest chyba w stopniach tylko bitach.
    Jak się zastosuje przetwornik o odpowiedniej rozdzielczości to można osiągnąć odpowiednią rozróżnialność.

    dokładność, rozdzielczość i rozróżnialność to nie to samo... jak się ich używa zamiennie to może niezła papka wyjść[/code]

    0
  • #12 07 Mar 2012 18:49
    andrzej55
    Poziom 35  

    :arrow: yarpen2
    Tak czepiasz się. Rozdzielczość może być w 'C, bitach, milimetrach itd. Nie wolno jej wiązać(mylić) z dokładnością. Co z tego, że termometr posiada trzy miejsca po przecinku jak kiepsko go skalibrujemy i w rzeczywistości będzie oszukiwał np. o kilka stopni? Z drugiej strony -jeśli zastosujemy małą rozdzielczość to może nam się nie udać uzyskać zakładanej dokładności.

    0
  • #13 11 Mar 2012 21:35
    yarpen2
    Poziom 22  

    Nie gniewaj się andrzej55, nie mam wątpliwości że wiesz o czym piszesz.

    0
  • #14 05 Kwi 2012 23:05
    mikro_elektro
    Poziom 10  

    mam pytanie bo mam opracowane nadajniki/odbiorniki RFM70 na 2.4Ghz czy one bedą działac pod wodą , bo narazie działają na powietrzu w odległosci 80 m bez przeszkód.

    Moga spokojnie zastąpić kabel i zasilanie puscić akumulatorem .

    nie mam pojecia czy 2.4 Ghz bedzie działało pod wodą zajmuje sie tylko pisaniem programów na procki.

    0
  • #15 05 Kwi 2012 23:34
    Wieslaw Bicz
    Poziom 18  

    Nie będą. Transmisja radiowa w wodzie działa jedynie na bardzo krótkich dystansach lub na bardzo niskich częstotliwościach.

    0
  • #16 06 Kwi 2012 08:49
    jarek_lnx
    Poziom 43  

    Cytat:
    2.4Ghz czy one bedą działac pod wodą

    Kuchenki mikrofalowe działają dzięki temu, że woda bardzo skutecznie absorbuje energię pola EM o tej częstotliwości.

    A może przesyłać dane akustycznie lub optycznie?

    0
  • #17 03 Paź 2012 06:12
    qazpylades
    Poziom 12  

    Nikt nie poruszył kolejnego problemu który normalnie się obowiązkowo przy termoparach koryguje a tutaj nie ma tego elementu w schemacie.
    Kontakty termopary z podłączeniem też tworzą termopary dlatego do linearyzacji termopary używa się równocześnie termistora określającego warunki pracy kontaktów elektrycznych termopary.
    Układ nie uzyska żeby nie wiem co założonej dokładności gdyż bez korekcji będzie nieliniowy.

    0
  • #18 16 Gru 2012 14:11
    Sebastian.R
    Poziom 20  

    Jak czytam że odczyt ma być z dna jeziora to się zastanawiam czy autor nurkuje? No i czy ma jakieś pojęcie jak jest z wizurą w naszych wodach? Co innego krystalicznie czysta woda a co innego woda z bioflorą.
    Ja to bym proponował hermetyczną obudowę (im mniejsza tym lepsza) z dławikiem skręcanym z gumową uszczelką , przez który wystawałby tylko "nos" PT100. Do tego wzmacniacz operacyjny dla wzmocnienia odczytu (nawet jeden tranzystor w sumie by uporadził). Wszystko co się znajduje w tej obudowie musiałoby być zalane jakimś olejem syntetycznym i do tego uszczelnione by nie było przecieku i skażenia środowiska. Wszystko puszczone gumowym kabelkiem 3 żyłowym lub jakąś skrętką UTP (tyle że nie wiem czy jest takowa w szczelnej izolacji - gumowej , bo plastik to strzeli szybko). Wyświetlacz na powierzchni wtedy można dać.
    Żeby zobaczyć temperaturę wody na 2 metrach w jeziorze u nas to już trzeba z meterek zanurkować. W jeziorze dochodzi jeszcze do kwitnienia glonów więc wtedy nie ma mowy by cokolwiek zobaczyć.

    0