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

4x DS18b20 +LCD = Termometr

Duch__ 21 Wrz 2008 13:29 294262 493
  • #211 21 Wrz 2008 13:29
    jakub1981
    Poziom 11  

    Witam
    mam jedno pytanie ( narazie :D ) jakiej wartosci jest rezystor idacy od pinu Resetu w Atmedze ?. U mnie prace nad nowa wersja termometru ida do przodu, plytka juz gotowa brakujace podzespoly beda w poniedzialek, jesli nie bede mogl go odpalic to z pewnoscia sie odezwe.

    Pozdrowienia dla wszystkich

    4x DS18b20 +LCD = Termometr
    4x DS18b20 +LCD = Termometr

    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz pendrive 32GB.
  • Metal Work Pneumatic
  • #212 21 Wrz 2008 13:43
    Duch__
    Poziom 31  

    Ten rezystor ma wartość 10k. Fajnie Ci płytka wyszła. Zmieniasz oprogramowanie pod siebie czy kopiuj/wklej?

  • #213 21 Wrz 2008 14:08
    jakub1981
    Poziom 11  

    Prawde mowiac jestem poczatkujacy w mikrokontrolery i narazie oprogramowanie zaladuje kopiuj/wklej moze w przyszlosci ( mam nadzieje ) napisze cos sam :|

    Pozdrawiam Jakub

  • Metal Work Pneumatic
  • #216 24 Wrz 2008 16:17
    konrad92
    Poziom 15  

    Zrobiłem płytkę metodą termotransferu, a solder nakładłem metodą sitodruku. Wprowadziłem drobne zmiany na płytce. Wieczorem uruchomię termometr.

    4x DS18b20 +LCD = Termometr

    Mam pewien problem: mianowicie termometr startuje bez zarzutu, ale nie wykrywa czujników ds18b20. W czym może leżeć problem ??

  • #217 29 Wrz 2008 23:06
    Radkoo
    Poziom 11  

    To może i ja dorzucę coś od siebie. Kod w C podzielony na funkcje, których się tylko używa - do komunikacji 1-Wire. Mam nadzieję, że się to komuś przyda. W funkcjach tych są też odstępy czasowe dokładnie policzone - również obiegi wszystkich pętli.

    Wykorzystałem jedynie obsługę wyświetlacza ze stronki: http://radzio.dxp.pl/..

    Dołączony jest również Makefile, jakby ktoś pod linuxem chciał odpalić dallasa.

    Pozdrawiam Radek

  • #218 21 Paź 2008 11:04
    rafii
    Poziom 12  

    Witam. Zrobiłem ten termometr zamieszczony na 1 stronce jedyne co przerobiłem to wyświetlacz 2*16 zmieniłem co trzeba i wszystko działa jak należy. Jednakże chciałbym aby po przekroczeniu jakiejś temperatury np 30 stC na którymś z czujników, na porcie D0 np zapaliła się dioda (później zamiast diody byłby wentylator) chciałbym jeszcze zaznaczyć ze nie jestem programistą dopiero się uczę wiec proszę wziąć to pod uwagę. No dobra ale do rzeczy do głównego kodu dodałem swoje wstawki mając nadzieję że to Zadziała, ale niestety nie zadziałało dioda świeci się cały czas po pokazaniu się temperatury. Poniżej wstawiam Kod z zmianami których dokonałem zaznaczone kolorem czerwony.

    Pozdrawiam.

    Dodano po 1 [minuty]:

    'Termometr 4 punktowy


    $regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8
    $crystal = 8000000
    'Deklaracja portów od wyświetlacza LCD
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5

    Config Lcd = 16 * 2 'ustawiamy typ wyświetlacza (soft jest dostosowany do pracy z wyświetlaczem 2x20, przy pracy z innym wyświetlaczem trzeba będzie skorygować wyświetlanie znaków)

    '*************************************WAŻNE**********************************************
    'Pamiętać o podłączeniu rezystora podciągającego o wartości 4.7kohm między linią DQ a VCC
    Config 1wire = Portd.5 'deklaracja portu na którym będą podpięte DS18b20
    Config Portd.0 = Output



    Dim I1 As Integer , Ss As String * 6
    Dim I2 As Integer
    Dim I3 As Integer
    Dim I4 As Integer

    Dim Dsid1(8) As Byte
    Dim Dsid2(8) As Byte
    Dim Dsid3(8) As Byte
    Dim Dsid4(8) As Byte
    Dim B As Byte 'deklaracja zmiennej do odczytu kodów ID
    Dim W As Byte 'deklaracja zmiennej do odczytu ilośc czujników


    Deflcdchar 0 , 8 , 20 , 11 , 4 , 4 , 4 , 3 , 32 'znak stopnia Celsjusza

    Cursor Off 'Wyłącza kursor
    Cls 'Funkcja CLS czyści ekran
    Lcd "Termometr Rafko" ; 'ekran startowy (pojawia się tylko podczas włączania urządzenia)
    Lowerline
    Lcd " 2008 "
    Wait 5
    Cls
    W = 1wirecount()
    Lcd "Ilosc czujnikow:" 'Informuje ile czujników jest podpiętych do układu (pojawia się tylko podczas włączania urządzenia)
    Waitms 500
    Lcd W
    Wait 3
    Cls 'Znajdź pierwszy czujnik podpięty do portu




    Dsid1(1) = 1wsearchfirst() 'Znajdź kolejny czujnik podpięty do portu
    Dsid2(1) = 1wsearchnext() 'Znajdź kolejny czujnik podpięty do portu
    Dsid3(1) = 1wsearchnext() 'Znajdź kolejny czujnik podpięty do portu
    Dsid4(1) = 1wsearchnext()

    '*******************Odczyt numerów ID czujników temperatury*********************

    If Dsid1(8) = Crc8(dsid1(1) , 7) Then 'ta opcja pojawia się tylko przy włączaniu urządzenia
    Locate 1 , 1
    Lcd "CRC OK Czujnik 1 ID"
    Wait 1
    Locate 1 , 1
    For B = 1 To 8
    Lcd Hex(dsid1(b))
    Next
    End If
    Wait 2

    If Dsid2(8) = Crc8(dsid2(1) , 7) Then
    Locate 2 , 1
    Lcd "CRC OK Czujnik 2 ID"
    Wait 1
    Locate 2 , 1
    For B = 1 To 8
    Lcd Hex(dsid2(b))
    Next
    End If
    Wait 2

    If Dsid3(8) = Crc8(dsid3(1) , 7) Then
    Locate 1 , 1
    Lcd "CRC OK Czujnik 3 ID"
    Wait 1
    Locate 1 , 1
    For B = 1 To 8
    Lcd Hex(dsid3(b))
    Next
    End If
    Wait 2

    If Dsid4(8) = Crc8(dsid4(1) , 7) Then
    Locate 2 , 1
    Lcd "CRC OK Czujnik 4 ID"
    Wait 1
    Locate 2 , 1
    For B = 1 To 8
    Lcd Hex(dsid4(b))
    Next
    End If
    Wait 2
    Cls

    '*******************koniec odczytu ID czujników temperatury*********************

    Do
    1wreset
    1wwrite &H55
    1wverify Dsid1(1) 'wysyłamy adres pierwszego czujnika
    1wwrite &HBE
    I1 = 1wread(2)
    '---------------------------------
    1wreset
    1wwrite &H55
    1wverify Dsid2(1) 'wysylam adres drugiego czujnika
    1wwrite &HBE
    I2 = 1wread(2)
    '---------------------------------
    1wreset
    1wwrite &H55
    1wverify Dsid3(1) 'wysylam adres trzeciego czujnika
    1wwrite &HBE
    I3 = 1wread(2)
    '---------------------------------
    1wreset
    1wwrite &H55
    1wverify Dsid4(1) 'wysylam adres czwartego czujnika
    1wwrite &HBE
    I4 = 1wread(2)
    '--------konwersja temp dla wszystkich dsow
    1wreset
    1wwrite &HCC
    1wwrite &H44

    Wait 1

    '****Jeśli pracujesz z wyświetlaczem innym niż 2x20 to tutaj trzeba wprowadzić zmiany w LOCATE********

    I1 = I1 * 10
    I1 = I1 / 16
    'If I1 > 0 Then cls 'korekta przesuniecia znaku st C przy przejściu z temp ujemnej na dodatnią
    Ss = Str(i1)
    Ss = Format(ss , " 0.0")
    Locate 1 , 1 'Pozycja wyświetlania nazwy i temperatury (1.1 -> 1 linia 1 kolumna, 2.10 -> 2 linia 10 kolumna itd)
    Lcd "Zew" ; Ss ; Chr(0) ;
    If I1 > 30 Then
    Portd.0 = 1
    Elseif I1 < 30 Then
    Portd.0 = 0
    End If


    I2 = I2 * 10
    I2 = I2 / 16
    'If I2 > 0 Then Cls
    Ss = Str(i2)
    Ss = Format(ss , " 0.0")
    Locate 2 , 1
    Lcd "Lod" ; Ss ; Chr(0) ;

    I3 = I3 * 10
    I3 = I3 / 16
    'If I3 > 0 Then Cls
    Ss = Str(i3)
    Ss = Format(ss , " 0.0")
    Locate 1 , 9
    Lcd "Wew" ; Ss ; Chr(0) ;

    I4 = I4 * 10
    I4 = I4 / 16
    'If I4 > 0 Then Cls
    Ss = Str(i4)
    Ss = Format(ss , " 0.0")
    Locate 2 , 9
    Lcd "Pie" ; Ss ; Chr(0) ;

    Loop

  • #219 12 Lis 2008 12:13
    mazi35
    Poziom 17  

    jacekhe napisał:
    Mi się coś niedobrego porobiło z wyświetlaczem, mam taki jak na zdjęciu. i zamiast tego rzędy wyświetlać to świeci tylko od prawej 2 linie do połowy.


    Witam mam dokładnie taki sam objaw. Dodam, że wcześniej miałem kod w C all było ok. Wgrałem kod w Bascomie pod ten mój układ i ładnie wyświetlał temperaturę po czym za którymś razem pojawił się właśnie taki "knyf". Górna linia zapełniona prostokątami. Czy to te fusebity skoro wszystko by7ło ok? Czy może jakaś mechaniczna usterka?
    pozdrawiam

  • #220 09 Sty 2009 14:38
    yenaldushi
    Poziom 13  

    Witam i z góry przepraszam za odkopywanie tematu. Czy mógłby ktoś podać jak wyglądałby program dla dwóch czujników i wyświetlacza 2x20? Ew. podać jaki fragment kodu mam usunąć /zmodyfikować, bo szczerze mówiąc niezbyt znam się na pisaniu programów. ;P
    Pozdrawiam.

  • #221 27 Lut 2009 16:31
    FIN
    Poziom 11  

    Witam
    Jestem w trakcie budowy tego termometru na wyświetlacz 2x16 i 2 czujniki.
    Na razie ma zmontowane na pająku, wyświetlacz działa i wyświetla się:
    Termometr bu Duch__
    2007
    Itd.
    Przy testach czujników wyskakują mi same zera, nie wiem czy czujniki zele podpoiłem czy nie takie jak maja być :cry:

    Na czujnikach ma oznaczenia:
    DALLAS
    18B20
    0708C3
    +263AB

  • #222 27 Lut 2009 16:57
    Gonza
    Poziom 27  

    Czujniki masz dobre, mają być DS18B20. Ewidentnie źle podłączone, choć przy tak prostym schemacie nie można się pomylić :).

  • #224 27 Lut 2009 17:36
    Gonza
    Poziom 27  

    Czyli dobrze podłączone. Rezystor 4,7k na pewno podpięty do + zasilania ?

  • #226 28 Lut 2009 18:41
    norbiPL
    Poziom 9  

    A ja mam pytanie, jak podłączyć LCD? które wyjscia z płytki do których wejsc przylutować?

  • #227 28 Lut 2009 20:11
    FIN
    Poziom 11  

    To pytanie to do mnie?

    norbiPL napisał:
    A ja mam pytanie, jak podłączyć LCD? które wyjscia z płytki do których wejsc przylutować?


    Na linijce pinów płytki pin 1 to pin 1 na LCD.
    Płytka jeszcze nie przetestowana.

  • #228 28 Lut 2009 22:00
    Gonza
    Poziom 27  

    FIN - płytka ok, tylko pin 5 wyświetlacza podepnij do masy.

  • #229 28 Lut 2009 23:21
    Krawi2
    Poziom 10  

    FIN - na płytce przydałby się jeszcze kondensator filtrujący zasilanie

  • #230 01 Mar 2009 10:05
    FIN
    Poziom 11  

    Gonza napisał:
    płytka ok, tylko pin 5 wyświetlacza podepnij do masy.

    OK dziękuje za sprawdzenie.

    Krawi2 napisał:
    na płytce przydałby się jeszcze kondensator filtrujący zasilanie

    Taki 100nF wystarczy?

    Niebawem postaram się wystawić płytkę i wszystko poskładać i mam nadzieje ze będzie działać.
    Bo to moje pierwsze starcie z uC!

  • #231 01 Mar 2009 12:18
    Gonza
    Poziom 27  

    Widzę że masz tam miejsce na stabilizator, jeśli już się na niego uparłeś to po obu stronach daj kondensator 100nF, i na wyjściu jakieś 10uF.

  • #234 02 Mar 2009 20:47
    FIN
    Poziom 11  

    Uruchomiłem termometr na płytce i DZIAŁA :boss: Pierwszy układ z uC zaliczony.
    Wielki DZIĘKI za pomoc. :please:

    Mam jeszcze prośbę czy mógłby mi ktoś przerobić ten kod (6 strona) z tymi strzałkami na 2 czujniki i LCD2x16

    W pliku projekt mojej płytki na 2 czujniki do termo transferu w pdf i plik Eagle.

    Załączniki:
  • #235 09 Maj 2009 20:28
    tpieczka
    Poziom 10  

    A czy jest możliwe żeby np. do tego schematu doprobić piny którymi programowałoby się procesor bez każdorazowego wyjmowania z podstawki ?? Jest to możliwe ??

  • #236 26 Maj 2009 21:52
    lok56
    Poziom 12  

    Witam!
    wykonałem termometr 4xds18b20 na atmedze 8 ok. pół roku temu, wszystko działa . zastosowałem go do pomiaru rozkładu temperatury zasobnika CWU 200l ,wyświetlacz 2x20.temperatury ładnie mierzy w poszczególnych strefach,
    dla mnie jest to czytelne
    .było by bardziej czytelnie gdyby zastosowac wyswietlacz np 4x20 i w 3 lini np pokazywało stopień naładowania zasobnika np w% lub bargraf.
    w moim przypadku 100% naładowania jest kiedy cały zasobnik nagrzeje sie do temperatury 80 oC.
    czy ktoś może myslał nad taka dodatkowa eunkcją termometru :zeby zsumowac temperatury i wyciagnac srednią i określic procentowo wartośc temperatury do załozonej temperatury max. np 50 oC.

  • #237 27 Maj 2009 19:12
    peleton123
    Poziom 12  

    Oczywiście że się da, skoro to tylko działania matematyczne to, raptem dodanie kilku linijek kodu.

  • #238 14 Cze 2009 13:33
    Dariusz Goliński
    Poziom 22  

    Witajcie
    Popełniłem ten termometr z pierwszej strony.
    Podpasowałem program pod swój wyświetlacz.
    Zmieniłem co nieco ale mam teraz inny problem.
    Okazało się że docelowe sondy zrobiłem wcześniej na DS1820 i termometr nie działa poprawnie. Wymiana czujników będzie bardzo trudna ponieważ są zamontowane w zalutowanych i zaprasowanych miedzianych rurkach. W najgorszym wypadku wymienię ale wolał bym tego uniknąć.
    Moze mi ktoś pomoc zmienik kod programu ?

  • #240 14 Cze 2009 18:15
    Dariusz Goliński
    Poziom 22  

    Poczytałem o DS i różnicach i zmieniłem kawałek kodu.
    Z I1 = I1 / 16 na I1 = I1 / 2 i działa.
    Ale mam pytanko. Mieszkam w centralnej Polsce. Czy to normalne, że woda gotuje się u mnie w temp. 94 stopni ?

  Szukaj w 5mln produktów