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

[Attiny2313][bascom]odczyt z większą dokładnością DS1821

Smilox 16 Paź 2010 20:02 1673 7
REKLAMA
  • #1 8627722
    Smilox
    Poziom 18  
    Witam

    Zrobiłem właśnie prosty regulator temperatury na DS1821 i Attiny2313 (w bascomie). Z pdfa od czujnika dowiedziałem się że można odczytać wartość z większą dokładnością niż do 1 stopnia. Z jaką dokładnością można się dobrać do tego co jest po przecinku i jak i w jakiej formie można to z DSa wyciągnąć? Chciałbym wyświetlać temperaturę do chociaż 0,5stopnia, lub lepiej (gdyby się dało) do 0,1stopnia.

    Z góry dzięki za pomoc
  • REKLAMA
  • #2 8628009
    tmf
    VIP Zasłużony dla elektroda
    Na stronie 6 noty tego czujnika masz opisane jak to zrobić. Swoją droga w ten sposób zwiększasz tylko rozdzielczość, ale dokładność pozostanie taka sama.
  • REKLAMA
  • #3 8628296
    Smilox
    Poziom 18  
    nie do końca rozumiem to co tam pisze. Mam najpierw normalnie odczytać wartość, a potem co?

    Cytat:
    The user can calculate temperature values with higher than 8-bit resolution using the data remaining in the counter and slope accumulator when the temperature conversion is complete. To do this the user must first read the temperature from the 8-bit temperature register. This value is called TEMP_READ in the high-resolution equation (see Eq. 1). The 9-bit counter value must then be obtained by issuing the Read Counter [A0h] command. This value is the count remaining in the counter at the end of the gate period and is called COUNT_REMAIN in Eq. 1. Next the Load Counter [41h] command must be issued, which oads the 9-bit slope accumulator value into the counter register. The slope accumulator value (called COUNT_PER_C in Eq. 1) can then be read from the counter by again issuing the Read Counter [A0h] command. The slope accumulator value is called “COUNT_PER_C” because it represents the number of
    counts needed for an accurate measurement at a given temperature (i.e., the counts per degree C). The high-resolution temperature can then be calculated using Eq. 1:



    jak odczytać to COUNT_REMAIN i COUNT_PER_C??

    Rozumiem że aby mieć COUNT_PER_C musze najpierw załadować [41h] potem [A0h] i odczytać (ile bitów mi to zwróci?)

    a jak odczytać to COUNT_REMAIN?
  • REKLAMA
  • #4 8628527
    tmf
    VIP Zasłużony dla elektroda
    Wysyłając polecenie Read Counter (0xA0), tak jak piszą powyżej. Swoją drogą to zamiast kombinować, nie prościej byłoby zastosować czujnik z odpowiednią rozdizelczościa? DS18B20?
  • REKLAMA
  • #5 8632942
    Smilox
    Poziom 18  
    korzystam z tego czujnika, bo takie akurat mam :) Już doszedłem do tego dlaczego nie wychodzi mi to liczenie, ale nie mam pojęcia co jest tego przyczyną. Mam następujący fragment kodu

    1wreset
    1wwrite &HA0
    C = 1wread(8)
    
    1wreset
    1wwrite &H41
    
    LCD C ; " "
    1wreset
    1wwrite &HA0
    B = 1wread(8)
    
    LCD B ; " " ; C
    


    komendy wyświetlacza dopisałem teraz by wyjaśnić problem. Wynikiem tego fragmentu jest wyświetlenie powiedzmy czegoś takiego:

    109 23 0

    Dwie pierwsze liczby to odczytane dane z czujnika, trzecia powinna być taka jak pierwsza a jest zawsze zero. Wynika z tego, że zmienna C została wyzerowana w momencie odczytu zmiennej B. Dlaczego? i jak temu zapobiec?
  • #6 8677336
    J_Bravo
    Poziom 27  
    Zawsze możesz także zrobić 100 pomiarów, dodać je do siebie i pomnożyć przez 100. Matematycznie zwiększysz rozdzielczość czujnika.
  • #7 8678855
    piotr5000
    Poziom 21  
    chyba podzielić przez 100 ?
  • #8 8680188
    J_Bravo
    Poziom 27  
    fakt. Mój błąd
REKLAMA