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

Kalibracja DS18B20 - jak poprawić odczyty w temperaturach ujemnych?

lolek50 28 Sie 2006 20:47 1917 4
  • #1 2963328
    lolek50
    Poziom 10  
    Posty: 51
    Ocena: 4
    Witam wszystkich!
    Bawię się czujnikiem temperatury DS18B20 i po odczytaniu wartości temperatury stwierdziłem, że jest ona 3 st. wyższa niż na normalnym termometrze cyfrowym, który mam w pokoju. Jak już gdzieś na forum przeczytałem - zdarzają się poprostu takie egzemplaże i tyle. Spróbowałem jednak mimo odczytania określonej wartości z czujnika na wyswietlaczu podać wartość taką jaka jest w rzeczywistości - odejmując od wyniku 3 st.
    Problem tylko w tym, że tak zapisany program (poniżej fragment programu) działa tylko w temp. dodatnich.
    Po przekroczeniu 0 w kierunku temp. ujemnych wypisuje jakieś dziwne wartości.

    Czy ktoś wie jak to zmodyfikować aby było OK.

    PS. Czy ma ktoś może jakiś schemat jaki powinien być podłączony termistor np.
    NTC 10K do uP - aby odczytywać temp. w zakresie od - 30 do +120C

    ..............
    ..............
    ..............

    Do
    1wreset
    1wwrite &HCC
    1wwrite &H44
    Waitms 750
    'Waitms 250
    1wreset
    1wwrite &HCC
    1wwrite &HBE

    B1 = 1wread()
    B2 = 1wread()

    1wr

    If B2 >= 248 Then
    B1 = R - B1
    B2 = R - B2
    Znak = "-"
    Else
    Znak = "+"
    End If
    T1 = B1 / 16
    T2 = B2 * 16
    T1 = T1 + T2

    Tmp = Fusing(t1 , "###.&")

    A = T1 * 10

    B = A - 30 '- tu odejmuję 3 stopnie (30)

    C = B \ 100 ' dziesiątki

    D = C * 100


    E = B - D

    F = E \ 10 ' jedności

    G = F * 10

    H = E - G ' po przecinku

    Cls
    Locate 1 , 3
    Lcd Znak ; C ; F ; "." ; H ; Chr(0) ; "C " '- 3 stopnie niżej
    Cursor Off

    Lowerline
    Locate 2 , 3
    Lcd Znak ; Tmp ; Chr(0) ; "C " '- wyniki z czujnika
    Cursor Off

    Loop
    End
  • #2 2963507
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    lolek50 napisał:
    Witam wszystkich!
    Bawię się czujnikiem temperatury DS18B20 i po odczytaniu wartości temperatury stwierdziłem, że jest ona 3 st. ...

    A co Ty za "algebrę" spłodziłeś ;) , a na dokładkę jeszcze Fusing :?:.
    Chcesz strzelać z armaty do wróbla :?:
    Takie "cuś" , robi sie niezwykle prosto:
    
    '***********    DS18B20 12 bit ***********************
    Dim Tds As Integer,Sds As String *6
    ..............
    
    Do
    1wreset
    1wwrite &HCC
    1wwrite &H44
    Waitms 750
    'Waitms 250
    1wreset
    1wwrite &HCC
    1wwrite &HBE
    
    
    Tds=1wread(2)
    '*** Jeśli nadal zawyża , to odejmujemy te nieszczęsne 3 C
    Tds = Tds - 48       '  (3 * 16) 
    '***Liczymy,konewrtujemy i wyświetlamy na LCD
    Tds = Tds * 10
    Tds = Tds / 16
    Sds = Str(Tds)
    Sds = Format(sds , " 0.0")
    Lcd Sds ; Chr(0);
    '**** to wszystko
    
    
    Loop
    End
    


    Piotrek
  • #3 2963667
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Ten kod do termometru jest z elektrody. Tez go uzywam. I dlaczego Fusing niby zle ??
  • #4 2963850
    Granat :)
    Poziom 34  
    Posty: 3043
    Pomógł: 202
    Ocena: 667
    a skąd pewność, że Twój termometr cyfrowy poprawnie mierzy temperaturę? :lol:

    zaobserwowałem, że dallasy zacznają dobrze pokazywać temperaturę po kilku dniach (czasami godzinach)
    może trzymasz czujnik za blisko jakiegoś źródła ciepła (stabilizator napięcia), on jest dość czuły :P
  • #5 2966913
    lolek50
    Poziom 10  
    Posty: 51
    Ocena: 4
    [quote="zumek"]A co Ty za "algebrę" spłodziłeś ;) , a na dokładkę jeszcze Fusing :?:.
    Chcesz strzelać z armaty do wróbla :?:
    Takie "cuś" , robi sie niezwykle prosto:
    quote]

    Tak jak już pisałem niekiedy początki bywają trudne - dzieki za pomoc
    Pozdrawiam
    Lolek
REKLAMA