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

Arduino - Zacznik czasowy czujnik temperatury

chemiorro 26 Mar 2016 21:17 1857 24
  • #1 26 Mar 2016 21:17
    chemiorro
    Poziom 6  

    Koledzy!

    Zaczynam przygodę z Arduino. Planuję złożyć układ mierzący temperaturę wody w zakresie od 0 do 35 °C. Rozdzielczość dobrze gdyby była na poziomie 0,1 °C choć wiem, że bardziej realna jest 0,25 °C.

    Znalazłem parę wpisów w internecie z instrukcją wykonania tego układu i zakładam, że uda mi się to zrobić - Adruino UNO + DS18B20 lub LM35.

    Piszę jednak ponieważ bardzo mi zależy aby uzyskanym pomiarom nadać "znacznik czasowy" gdyż uzyskane dane dotyczące temperatury muszę w kolejnym kroku skompilować z pomiarami prowadzonymi na innym urządzeniu a wspólnym "mianownikiem" przyporządkowującym sobie odpowiednie wartości musi być właśnie data czyli: rok:miesiąc:dzień:godzina:minuta:sekunda.

    Czy jest zatem możliwe aby oprócz wartości temperatury dodać czas wykonanego pomiaru?

    Pozdrawiam!

    0 24
  • Pomocny post
    #2 26 Mar 2016 23:26
    cr08
    Poziom 10  

    Pewnie że możesz.
    Użyj w tym celu jakiegoś RTC nap PCF8583 - miły w obsłudze.

    0
  • #3 29 Mar 2016 15:14
    chemiorro
    Poziom 6  

    Czy na jednej płytce Arduino, np. Uno jest możliwość zrobienia układu mierzącego temperaturę wraz z czasem pomiaru, przesłanie danych na kartę SD i komputer oraz dołączenie do tego LCD? Dodatkowo czy rozdzielczość temperatury 0,1 °C jest możliwa do uzyskania?

    0
  • #4 29 Mar 2016 21:21
    Karaczan
    Poziom 39  

    Wykonanie tego na jednej płytce jest możliwe jednak trzeba będzie zwracać szczególną uwagę na sposób podłączenia.
    Karta SD rozmawia po SPI, czyli na ogół piny 10,11,12,13, a to wyklucza podłączenie popularnego LCD na HD44780 w sposób bezpośredni, bo mimo możliwości zmiany "pinologii" biblioteki dla LCD powoduje często problemy. Więc trzeba by zastosować moduł LCD na I2C.
    PCF8583 też rozmawia po I2C, ale magistrala I2C pozwala na pracę kilku urządzeń, lecz nie równocześnie.

    Co do rozdzielczości temperatury 0.1st jest to wykonalne jednak nie na popularnych czujnikach bo ich błąd pomiarowy to ok 0.5st.

    1
  • #5 29 Mar 2016 21:36
    tmf
    Moderator Mikrokontrolery Projektowanie

    Karaczan napisał:

    Co do rozdzielczości temperatury 0.1st jest to wykonalne jednak nie na popularnych czujnikach bo ich błąd pomiarowy to ok 0.5st.


    Rozdzielczość a dokładność to dwie różne sprawy. Kolega pożąda rozdzielczości 0,1 stopnia, co jest możliwe do osiągnięcia i na LM35 i na DS18B20. Dokładności lepszej niż 0,5 stopnia tymi czujnikami nie osiągnie, chyba, że ma dostęp do jakiejś możliwości ich kalibracji w czasie działania.
    Oczywiście wszystko da się spiąć na Arduino. Pytanie, czy układ może być duży i jak będzie zasilany. Oraz jakie masz doświadczenie?
    Zakładając, że chcesz się czegoś nauczyć, kup sobie dowolną ATMega, chociaż poleciłbym ci XMEGA dzięki czemu całość będzie działała na 3,3V , czego wymaga karta SD.
    Ja bym sobie to uprościł, dodając zamiast karty SD, pamięć FLASH - za grosze można kupić np. 8 MB (starczy aż nadto). Jako RTC można wykorzystać dowolny timer w ATMega lub XMEGA (chociaż jeśli z jakiegoś powodu zależy ci na podtrzymaniu to użyłbym XMEGA z rodziny A3BU, lub zewnętrzny RTC, lub po kombinacjach każdy MCU). Całość można zmieścić na płycte stanowiącej nie więcej niż 10% powierzchni Arduino, w dodatku można to zasilić z dwóch pastylek LR i będzie działać autonomicznie miesiącami. Dodatkowo z AVR - XMEGA (lub ATMega z serii U2), która ma USB - po wszystkim podłączasz to do kompa i dane ślicznie lecą przez USB.
    Gotowe rozwiązanie takiego dataloggera znajdziesz w darmowych przykładach do książek z linków z mojej stopki. Tam masz taki datalogger w oparciu o pamięć FLASH lub kartę SD z transferem do PC przez USB.

    0
  • #6 30 Mar 2016 00:35
    Karaczan
    Poziom 39  

    @tmf wiem co to rozdzielczość a co dokładność, ale nie jestem przekonany czy Autor wie.
    A po zadawanych pytaniach raczej chce zacząć przygodę z uC, startując od w sumie dość zaawansowanego projektu myśląc że poskłada to jak klocki Lego.
    Owszem jest to jak Lego, ale Technics a nie Duplo ;)

    Myślę więc że rady z XMegą, własną płytką i Flashem chyba mogą być trochę kosmiczne.

    0
  • #7 30 Mar 2016 08:13
    chemiorro
    Poziom 6  

    Dzięki za sugestie. W takim razie upraszczam projekt do czujnika temperatury, modułu czasu rzeczywistego a zapis danych będę prowadził na komputerze. Czy faktycznie jednak rozdzielczość będzie na poziomie 0,1 ale dokładność tylko 0,5 °C?

    0
  • #8 30 Mar 2016 08:37
    tmf
    Moderator Mikrokontrolery Projektowanie

    @Karaczan Cieszę się, że wiesz, więc dlaczego autorowi mieszasz te pojęcia?
    @chemiorro Nic nie upraszczaj bo sprawa jest banalna. Zapis do FLASH jest prostszy niż do SD, a oba nie są zbyt skomplikowane, biorąc pod uwagę, że do obu rzeczy masz gotowe biblioteki. Tak jak ci pisałem zaglądnij do przykładów, masz tam gotowca.
    Dokładność pomiaru temperatury wynika ze specyfikacji użytego układu. 0,5 stopnia to i tak tylko w pewnym zakresie, w szerokim zakresie to będzie nawet 1,5 stopnia. Można dokładniej, ale to wymaga kalibracji i troszkę bardziej zawiłych układów - zwykle znaczy to, że cena idzie kosmicznie w górę. Na początek LM35 lub DS18B20 będą ok.

    0
  • #9 30 Mar 2016 09:26
    chemiorro
    Poziom 6  

    Dokładność 0,5 °C dyskwalifikuje taki układ. Zatem jakiego czujnika użyć aby móc zauważyć zmiany temperatury o 0,1 °C? Zapisywanie danych to sprawa drugorzędna z mojego punktu widzenia.

    0
  • Pomocny post
    #10 30 Mar 2016 09:40
    tmf
    Moderator Mikrokontrolery Projektowanie

    chemiorro napisał:
    Dokładność 0,5 °C dyskwalifikuje taki układ. Zatem jakiego czujnika użyć aby móc zauważyć zmiany temperatury o 0,1 °C? Zapisywanie danych to sprawa drugorzędna z mojego punktu widzenia.


    Mylisz pojęcia. Dokładność 0,5 stopnia oznacza, że odczytana wartość temperatury może się różnić max o 0,5 stopnia (tam chyba nawet jest +/-0,5 stopnia) od rzeczywistej. Jeśli chodzi ci o rozróżnianie temperatur, to interesuje cię rozdzielczość. A rozdzielczość na poziomie 0,1 stopnia zapewnia każdy z tych czujników. Ale dla jasności - sprecyzuj co chcesz mierzyć i po co, bo może brniesz w niepotrzebną komplikację. Z drugiej strony jeśli rzeczywiście potrzebujesz tak wyśróbowanych parametrów to trzeba iść w zupełnie inną klasę czujników i tu ceny będą się zaczynały od kilkuset złotych za sam czujnik. Nie mówiąc już o dostępie do stanowiska, gdzie taki czujnik można okresowo skalibrować.

    0
  • #11 30 Mar 2016 10:02
    chemiorro
    Poziom 6  

    Celem są pomiary temperatury wody (co później będę korelować ze stężeniami dwutlenku węgla nad nią). Temperatura wody jest dla mnie istotna ponieważ wpływa na stałą dysocjacji CO2 w wodzie w sposób znaczący, stąd niezbędna jest możliwie dobra rozdzielczość i dokładność aby móc uzyskane dane rozsądnie wykorzystać. Jeśli chodzi o kalibrację to na pewno będę to robić ale bez układu nie jest możliwe oczywiście.
    Poziomy CO2 chcę korelować z pomiarami temperatury wg. znacznika czasowego stąd niezbędny w układzie jest moduł czasu rzeczywistego.
    Sama korelacja będzie prowadzona po zakończeniu pomiarów.
    W skrócie: potrzebuję dokładnych pomiarów temperatury wody w zakresie 0 - 35 °C, które następnie będzie się dało skorelować z pomiarami CO2 prowadzonymi
    na innym urządzeniu. Niezbędne do tego jest uzyskanie danych zapisanych w formacie .txt lub .csv.

    0
  • #12 31 Mar 2016 11:37
    chemiorro
    Poziom 6  

    Czy taki układ jest możliwy do wykonania z wykorzystaniem Arduino?

    0
  • #13 31 Mar 2016 11:40
    dondu
    Moderator Mikrokontrolery Projektowanie

    Nie powinno być problemów.

    0
  • #14 31 Mar 2016 11:42
    chemiorro
    Poziom 6  

    A jakiego czujnika użyć aby uzyskać dane z dokładnością i rozdzielczością 0,1 °C?

    0
  • #15 31 Mar 2016 11:51
    dondu
    Moderator Mikrokontrolery Projektowanie

    Czujnik to jedno, a kalibracja to drugie. Każde takie urządzenie musisz co jakiś czas skalibrować ze wzorcem, który także musi być kalibrowany :)

    Masz dostęp do takowego? Jeśli nie, to nie ma sensu szukać czujnika.

    0
  • #16 31 Mar 2016 15:01
    chemiorro
    Poziom 6  

    Mam dostęp do dobrych czujników temperatury i mógłbym jest interkalibrować.

    0
  • #17 31 Mar 2016 17:59
    tmf
    Moderator Mikrokontrolery Projektowanie

    To te same czujniki wykorzystaj z Arduino. Z popularnych czujników za parę złotych żaden nie da ci dokładności <0,1 stopnia. Ew. jeśli możesz je każdorazowo kalibrować to jest to jakieś rozwiązanie. Czyli dajesz DS18B20 i go kalibrujesz precyzyjnym termometrem, po czym go używasz. Krótkookresowo stabilność DSa czy LMa powinna być wystarczająca.

    0
  • #18 06 Kwi 2016 08:27
    chemiorro
    Poziom 6  

    A jaki czujnik da mi dokładność 0,1 stopnia? Powiedzmy, że cena nie gra większej roli.

    0
  • #19 08 Kwi 2016 12:18
    chemiorro
    Poziom 6  

    A może jest gdzieś takie coś do kupienia?

    0
  • #20 09 Kwi 2016 20:40
    odalladoalla
    Poziom 17  

    chemiorro napisał:
    A może jest gdzieś takie coś do kupienia?

    np. to tu
    ...
    z czujnikiem klasy 1/10 B DIN (Pt100)
    masz szansę na błąd pomiaru około 0,05 st.
    Przy zakupie musisz zdeklarować odpowiedni typ czujnika.
    Czujnik zakupisz w Polsce w sklepach handlujących aparaturą kontrolno pomiarową-np. w googla wrzuć Termo Precyzja lub tym podobne
    Edytowano
    Osoba zainteresowana już skorzystała a niepotrzebne "wejścia generują bezsensowny ruch".
    Proszę moderatora o zedytowanie "cytowania " tak by nie obciążać niepotrzebnymi wejściami konta użytkownika ebaya.

    0
  • #21 09 Kwi 2016 20:50
    tmf
    Moderator Mikrokontrolery Projektowanie

    odalladoalla napisał:
    chemiorro napisał:
    A może jest gdzieś takie coś do kupienia?

    np. to tu
    http://www.ebay.com/itm/171701993176?_trksid=...ar=470667136639&ssPageName=STRK%3AMEBIDX%3AIT
    z czujnikiem klasy 1/10 B DIN (Pt100)
    masz szansę na błąd pomiaru około 0,05 st.


    W nocie scalaka piszą o 0,05% całego zakresu lub 0,5 stopnia. Więc i tak dużo więcej niż zakłada autor...

    0
  • Pomocny post
    #22 09 Kwi 2016 21:07
    odalladoalla
    Poziom 17  

    tmf napisał:
    odalladoalla napisał:
    chemiorro napisał:
    A może jest gdzieś takie coś do kupienia?

    np. to tu...
    z czujnikiem klasy 1/10 B DIN (Pt100)
    masz szansę na błąd pomiaru około 0,05 st.


    W nocie scalaka piszą o 0,05% całego zakresu lub 0,5 stopnia. Więc i tak dużo więcej niż zakłada autor...

    Zgadza się, w całym zakresie linearyzacji "dobroć odwzorowania charakterystyki" wynosi o,o5% lub 0,5 stopnia. Od -200 do +850. W wąskim zakresie "dobroć lub doskonałość" równa jest teoretycznej rozdzielczości czyli o,03 stopnia. Sprawdzone praktycznie za pomocą wzorcowanej dekadówki klasy 0,05% i normy PN-EN 60751.
    Dlatego, pisałem o czujniku "klasy 1/10 DIN" by za dużo nie wnosić błędu wskazania od czujnika.
    Ponieważ autor pierwszego postu wspomniał iż potrzebuje dokładnego zapisu (data, znacznik czasu pomiaru) przyda się też program
    https://sites.google.com
    tworzy plik o rozszerzeniu log,( txt) który łatwo przerobić w wersję "eksportowalną" do exela do dalszej obróbki danych.
    201506131..07.txt Download (1.76 kB)
    201601101..44.txt Download (694 bajtów)
    201602022..01.txt Download (216 bajtów)
    Zresztą, dla tak wąskiego zakresu pomiaru a dużej dokładności wystarczy termistor.
    Zedytowałem ze względu na niepotrzebne obciążenie konta ebayowego tym linkiem, który tu był.

    0
  • #24 10 Kwi 2016 16:35
    chemiorro
    Poziom 6  

    Czyli jest znacznik czasowy i po prawej odczyt temperatury oddzielone przecinkiem i spacją? Super, wielkie dzięki!

    0
  • #25 09 Cze 2016 12:29
    chemiorro
    Poziom 6  

    Z braku czasu i doświadczenia poszedłem trochę na łatwiznę i zakupiłem rejestrator temperatury TERMIO-1. To nie reklama a raczej podpowiedź dla innych użytkowników.

    0