logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[m8][bascom] getrc i czujnik temp

Ficu 11 Lip 2011 14:24 2639 13
REKLAMA
  • #1 9705432
    Ficu
    Poziom 31  
    Witam,
    podłączyłem czujnik temp odpornościowy do atmegi i komendą getrc odczytuje wartość w danej temperaturze. To co udało mi się sprawdzić:
    temp - wartość
    20°C - 1000
    30°C - 900
    40°C - 800
    50°C - 700
    60°C - 600
    70°C - 500
    80°C - 400
    itd.
    Wartości mamy 3 cyfrowe więc np 875 będzie oznaczała temp 43,5°C.
    Teraz pytanie jak najprościej to zdekodować w bascomie? Dokładność po przecinku można pominąć.
  • REKLAMA
  • REKLAMA
  • Pomocny post
    #3 9705557
    gaskoin
    Poziom 38  
    Jak widzisz zależność jest liniowa, pokrywa się przy 60 stopniach.

    Stąd można wymyślić wzór taki:

    temp = 60 + (600 - wartosc)/10


    np

    wartosc = 1000 -> temp = 60+(600-1000)/10 = 20
    wartosc = 400 -> temp = 60 + (600 - 400)/10 = 80
    

    Nie znam bascoma ale wystarczy to tam przepisać.
  • #4 9705840
    Ficu
    Poziom 31  
    snnaap napisał:
    Jaka jest najmniejsza i największa temperatura jaką mierzy ten czujnik oraz jaka jest najmniejsza i największa temperatura jaką chcesz zmierzyć?
    Pokarz schemat jak masz wpięty ten czujnik.


    Jaki schemat? Toż to 2 kabelki, jeden do uc drugi do GND przez 100nf. Zakres jaki chcę uzyskać to 10°C-120°C.

    temp = 60 + (600 - wartosc)/10


    To działa ale tylko wtedy gry temperatura jest większa od 60 stopni.

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Ok, działa, ustawiłem zmienną jako integer by przyjmowała wartości ujemne i mam pomiar, jeszcze się pobawię zwiększeniem dokładności i na tym skończę.
  • Pomocny post
    #5 9705897
    piotrva
    VIP Zasłużony dla elektroda
    A takie pytanie, dlaczego nie wykorzystasz do pomiaru rezystancji tego termistora (bo to chyba taki czujnik) ADC w procesorze?
  • #6 9705937
    Ficu
    Poziom 31  
    piotrva napisał:
    A takie pytanie, dlaczego nie wykorzystasz do pomiaru rezystancji tego termistora (bo to chyba taki czujnik) ADC w procesorze?

    Bo już kiedyś z getrc korzystałem i działa więc po co zmieniać?
  • REKLAMA
  • Pomocny post
    #7 9705981
    piotrva
    VIP Zasłużony dla elektroda
    :D Choćby z jednego powodu, moim zdaniem pomiar rezystancji za pomocą ADC jest dokładniejszy od pomiaru dokonywanego w układzie RC. Rozumiałbym poza tym wykorzystanie RC w małych kostkach bez ADC (np. tiny2313), ale w mega8 masz 10-bit konwerter, a jak poznasz dosłownie 4 funkcje w BASCOM to przetwornik ADC masz w małym palcu.
  • #8 9706004
    Ficu
    Poziom 31  
    Dokładność jednego stopnia mi starczy ;) To ma mierzyć temperaturę cylindra AC więc będzie ok ;P

    Dodano po 1 [godziny] 33 [minuty]:

    Kurde, przyszło do zamontowania czujnika, dałem 2 metrowy kabel i nie działa. Getrc nic nie odczytuje.
  • REKLAMA
  • Pomocny post
    #9 9706550
    piotrva
    VIP Zasłużony dla elektroda
    xd
    No bo kabel zachowuje się jak kondensator: 2 przewodniki oddzielone izolatorem ;-)
    Więc pomiar z użyciem układu RC nic nie da, bo masz jakby z termistorem połączony równolegle kondensator, co zmienia parametry układu.
    Proponuję więc pomiar z użyciem ADC, powinien dać jakiś wynik, ale dokładność też pozostawiać będzie wiele do życzenia i poza tym kalibracji musisz dokonać na takim właśnie kabelku, a nie na innym połączeniu, bo inaczej będziesz miał przekłamania związane z rezystancją kabelka.
  • #10 9706885
    Ficu
    Poziom 31  
    Podłączyłem wyjście ADC przez 1k do 5V i termometr dałem pomiędzy ADC a GND i niestety zależność jak wcześniej nie pasuje, kiedy jest 20°C pokazuje 28°C a kiedy 80°C to pokazuje 54°C. Teraz powinienem znów znaleźć odpowiednie wartości dla temperatur?
  • Pomocny post
    #11 9706920
    piotrva
    VIP Zasłużony dla elektroda
    Tak, zależność teraz jest zupełnie inna oczywiście, jak znajdę na komputerze to mogę Ci podesłać w excelu wyniki pomiarów dla termistora NTC 1k dla temperatur od ok. 80 do 30 stopni co 1 stopień Celsjusza.
  • #12 9706957
    Ficu
    Poziom 31  
    Czyli dokładność również spadnie. Mój czujnik ma ok 10k przy 20 stopniach z tego co sprawdzałem. Nic, pobawię się na tym ADC i zobaczę co z tego wyjdzie.

    Dodano po 19 [minuty]:

    Teraz mam taką zależność że każde 10°C to wartość 50:
    temp - wartość
    80°C - 355
    70°C - 305
    60°C - 255
    itd.
    Ułożę jakieś działania do tego i chyba tak to zostanie. Dałem czujnik między VCC a ADC a rezystor między ADC a GND.
  • #13 9707335
    piotrva
    VIP Zasłużony dla elektroda
    Prostej zależności liniowej nie znajdziesz, mówię od razu ;-)
    Poczytaj to: http://pl.wikipedia.org/wiki/Termistor
    W załączniku moje pomiary, niestety w pewnym momencie (chciałem przyspieszyć schładzanie) dodałem zbyt dużo zimnej wody (odkręciła mi się biureta) i trzeba parę pomiarów po oznaczonym miejscu traktować z pewną dozą błędu. Pozostałymi fragmentami wyliczeń jakie są w arkuszu nie przejmuj się, bo są niedokończone - brak czasu od momentu wykonania pomiarów.
    Załączniki:
  • #14 9707558
    Ficu
    Poziom 31  
    Ok, dzięki. Wymyśliłem że skoryguje pomiary instrukcją if..then. Dużej dokładności nie potrzebuję więc będzie ok.
REKLAMA