FAQ | Points | Add... | Recent posts | Search | Register | Log in


4x DS18b20 +LCD = Termometr


Post new topic  Reply to topic      Main Page -> Forum Index -> DIY Structures -> 4x DS18b20 +LCD = Termometr
Author
Message
Robstar
Poziom 14
Poziom 14


Joined: 14 Oct 2003
Posts: 158

Post#31 03 Sep 2007 10:02   

Re: 4x DS18b20 +LCD = Termometr


Ta informacja świadczy że masz za duży plik większy niż 2kB czy aby napewno masz ustawiony kwarc na 1MHz a nie np. 4
Back to top
   
mirekk36
Poziom 25
Poziom 25


Joined: 17 Jun 2006
Posts: 8154
Location: Szczecin

Post#32 03 Sep 2007 10:20   

Re: 4x DS18b20 +LCD = Termometr


tak kwarc mam dobrze ustawiony a jeśli chodzi o plik - to skopiowałem dokładnie te linijki które podałeś powyżej w swoim poście - kompiluje się to tylko że pokazuje jakby się nie chciało zmieścić do procka - a u ciebie rozumiem się zmieściło?

więc próbuję dociec czy może coś mam inaczej ustawione w Bascomie - może jakąś opcję bootloadera trzeba wyłączyć czy co?

pozdr
Back to top
   
Robstar
Poziom 14
Poziom 14


Joined: 14 Oct 2003
Posts: 158

Post#33 03 Sep 2007 12:06   

Re: 4x DS18b20 +LCD = Termometr


U mnie ustawienia są standardowe LCD 16x2 kwarc 1000000 ale i tak w programie ustawiony i zajmuje 98%.

Skróć np. nazwy w Lcd "" może to coś pomoże.

Ale faktycznie jest to dziwne jezeli tobie sie nie ładuje.
Back to top
   
Duch__
Poziom 22
Poziom 22


Joined: 12 Dec 2004
Posts: 1911
Location: Opole

Post#34 Post from the author of the topic 03 Sep 2007 14:35   

Re: 4x DS18b20 +LCD = Termometr


Ja skompilowałem tak na próbę i zajmuje 100% pamięci. Wywaliłem znak stopnia i zastąpiłem go oznaczeniem "st", bo przed tą operacją zajmował 102%.

Code:
$regfile = "2313DEF.dat"
$crystal = 1000000
Config 1wire = Portd.5
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte

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

Cursor Off

Cls

 Dsid1(1) = 1wsearchfirst()
 Dsid2(1) = 1wsearchnext()

Do

   1wreset
   1wwrite &H55
   1wverify Dsid1(1)
   1wwrite &HBE
   I1 = 1wread(2)
   '---------------------------------
   1wreset
   1wwrite &H55
   1wverify Dsid2(1)
   1wwrite &HBE
   I2 = 1wread(2)
'---------------------------------
   1wreset
   1wwrite &HCC
   1wwrite &H44

 Wait 1

 I1 = I1 * 10
   I1 = I1 / 16
   'If I1 > 0 Then Cls
   Ss = Str(i1)
   Ss = Format(ss , " 0.0")
   Locate 1 , 1
   Lcd "Temp.wew " ; Ss ; Chr(0) ; "stC"

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


Proszę poprawić deklarację portów od wyświetlacza (ja go tutaj dodałem) bo go nie daliście wcześniej!!!! Nie wiem czy moje ustawienia są kompatybilne z ATtiny2313 bo skopiowałem je od Atmegi8
Back to top
   
mirekk36
Poziom 25
Poziom 25


Joined: 17 Jun 2006
Posts: 8154
Location: Szczecin

Post#35 03 Sep 2007 14:50   

Re: 4x DS18b20 +LCD = Termometr


o no właśnie mi też zajmował 102% ;) ok spróbuję to dzisiaj wieczorkiem
Back to top
   
Robstar
Poziom 14
Poziom 14


Joined: 14 Oct 2003
Posts: 158

Post#36 03 Sep 2007 14:57   

Re: 4x DS18b20 +LCD = Termometr


Tylko teraz nie zmieści się w 16 o jeden za duzo na wyświetlaczu ale można dać tylko C :)

Sprawdziłem i u mnie ładuje się bez problemu.
W ustawieniach Bascoma Options mam:

chip - Attiny2313.dat
communication - frequency-1000000
LCD - LCD type - 16*2

98%.
Back to top
   
Andy74
Poziom 18
Poziom 18


Joined: 07 Jan 2003
Posts: 470
Location: U3pjemVyY293

Post#37 03 Sep 2007 21:44   

Re: 4x DS18b20 +LCD = Termometr


Podejrzewam że kolega Robstar używa starszej wersji Bascoma niż my (też sprawdziłem - 102% na v1.11.8.1 full). Już raz Bascoma na tym przyłapałem i to właśnie przy kompilacji programu z obsługą 1Wire. Po aktualizacji z v1.11.7.4 do v1.11.8.1 plik wynikowy z dokładnie tego samego programu (pod AT90S2313) zwiększył się o jakieś 70 bajtów... Nie dociekałem dlaczego tak się dzieje, ale ustawienia miałem dokładnie takie same.

A to moja propozycja optymalizacji kodu:
Code:
$regfile = "ATtiny2313.dat"
$crystal = 1000000
Config 1wire = Portd.5

Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte

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

Deflcdchar 0 , 14 , 17 , 17 , 14 , 32 , 32 , 32 , 32
Cursor Off

Cls

 Dsid1(1) = 1wsearchfirst()
 Dsid2(1) = 1wsearchnext()

Do

   1wreset
   1wwrite &H55
   1wverify Dsid1(1)
   1wwrite &HBE
   I1 = 1wread(2)
   '---------------------------------
   1wreset
   1wwrite &H55
   1wverify Dsid2(1)
   1wwrite &HBE
   I2 = 1wread(2)
'---------------------------------
   1wreset
   1wwrite &HCC
   1wwrite &H44

 Wait 1

 I1 = I1 * 10
   I1 = I1 / 16
   'If I1 > 0 Then Cls
   Ss = Str(i1)
   Gosub Format                                   'Ss = Format(ss , " 0.0")
   Home                                           'Locate 1 , 1
   Lcd "Temp.wew: " ; Ss ; Chr(0) ; "C"

   I2 = I2 * 10
   I2 = I2 / 16
   'If I2 > 0 Then Cls
   Ss = Str(i2)
   Gosub Format                                   'Ss = Format(ss , " 0.0")
   Lowerline                                      'Locate 2 , 1
   Lcd "Temp.zew: " ; Ss ; Chr(0) ; "C"
Loop

End

Format:
Ss = Format(ss , " 0.0")
Return

Ta sama fonkcjonalność, a jeszcze całe dwa bajty zostają wolne :)

Pozdrawiam
Andy
Back to top
   
mirekk36
Poziom 25
Poziom 25


Joined: 17 Jun 2006
Posts: 8154
Location: Szczecin

Post#38 03 Sep 2007 22:43   

Re: 4x DS18b20 +LCD = Termometr


Andy74 -> no teraz twoja wersja mi się skompilowała ;) czyli nie chodzi jednak o jakiś bootloader z tego komunikatu o jakim pisałem tylko o jak widać wersję Bascoma i o sprawną własną hmm że tak powiem optymalizację kodu - to ciekawe

( w tym przypadku jak widzę optymalizacja polegała na "wyrżnięciu" procedury format do której był oddawany skok gosub ) ;)
Back to top
   
Robstar
Poziom 14
Poziom 14


Joined: 14 Oct 2003
Posts: 158

Post#39 03 Sep 2007 23:10   

Re: 4x DS18b20 +LCD = Termometr


Wersja 1.11.8.3 to raczej nowsza :) i na to wychodzi że lepsza :)
Ale ciekawa informacja na przyszłość :).
Back to top
   
Google

Google Adsense


Post# 03 Sep 2007 23:10   





Back to top
   
Andy74
Poziom 18
Poziom 18


Joined: 07 Jan 2003
Posts: 470
Location: U3pjemVyY293

Post#40 03 Sep 2007 23:11   

Re: 4x DS18b20 +LCD = Termometr


Tak, ten komunikat o błędzie który dostałeś miał świadczyć (jak sądzę ;)) o przekroczeniu pojemności pamięci programu.
Quote:
( w tym przypadku jak widzę optymalizacja polegała na "wyrżnięciu" procedury format do której był oddawany skok gosub )

...i dodatkowo zmieniłem 'Locate' na mniej ROM-o-żerne 'Home' i 'Lowerline' skoro i tak wyświetlamy od pierwszego znaku na LCD. To tak na szybkiego. Ten programik dało by się jeszcze z pewnością odchudzić, trzeba by tylko przysiąść i troszkę pogłówkować :)

PZDR

PS. Cieszę się, że dałeś się w końcu przekonać do Bascoma. Gdy trzeba coś na szybkiego zrobić na uC - nie ma w/g mnie lepszej opcji na dzień dzisiejszy. A czas kosztuje...

Zrobił się mały OT chyba... Mam nadzieję, że autor tematu na nas nie nakrzyczy 4x DS18b20 +LCD = Termometr

edit:
Quote:
Wersja 1.11.8.3 to raczej nowsza i na to wychodzi że lepsza

No to w każdym razie inna niż moja. Trzeba by pomyśleć o update w takim razie.
Back to top
   
mirekk36
Poziom 25
Poziom 25


Joined: 17 Jun 2006
Posts: 8154
Location: Szczecin

Post#41 03 Sep 2007 23:32   

Re: 4x DS18b20 +LCD = Termometr


Andy74 wrote:

PS. Cieszę się, że dałeś się w końcu przekonać do Bascoma. Gdy trzeba coś na szybkiego zrobić na uC - nie ma w/g mnie lepszej opcji na dzień dzisiejszy. A czas kosztuje...


.... taaak zgadzam się teraz z kolegą w całej rozciągłości i popieram - dlatego już jestem szczęśliwym posiadaczem pełnej wersji Bascoma.

a nie jest to chyba OT bo tak naprawdę to właśnie teraz dla prób majstruję tego typu projekciki w Bascomie, m.inn pomiary temperatury i bardzo interesuje mnie to własnie zagadnienie autora całego tematu, pomijając to że fajnie to zrobił i przedstawił - ale zdaje się wcześniej już pisałem w jakimś poście o tym.

Natomiast cała dyskusja która tu się toczy pozwala mi zasysać również wiedzę n/t programowania w Bascomie - więc chyba i autor nie ma nic przeciwko temu

pozdrawiam
Back to top
   
Duch__
Poziom 22
Poziom 22


Joined: 12 Dec 2004
Posts: 1911
Location: Opole

Post#42 Post from the author of the topic 04 Sep 2007 05:38   

Re: 4x DS18b20 +LCD = Termometr


Andy74 wrote:

A to moja propozycja optymalizacji kodu:
Code:
$regfile = "ATtiny2313.dat"
$crystal = 1000000
Config 1wire = Portd.5

Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte

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

Deflcdchar 0 , 14 , 17 , 17 , 14 , 32 , 32 , 32 , 32
Cursor Off

Cls

 Dsid1(1) = 1wsearchfirst()
 Dsid2(1) = 1wsearchnext()

Do

   1wreset
   1wwrite &H55
   1wverify Dsid1(1)
   1wwrite &HBE
   I1 = 1wread(2)
   '---------------------------------
   1wreset
   1wwrite &H55
   1wverify Dsid2(1)
   1wwrite &HBE
   I2 = 1wread(2)
'---------------------------------
   1wreset
   1wwrite &HCC
   1wwrite &H44

 Wait 1

 I1 = I1 * 10
   I1 = I1 / 16
   'If I1 > 0 Then Cls
   Ss = Str(i1)
   Gosub Format                                   'Ss = Format(ss , " 0.0")
   Home                                           'Locate 1 , 1
   Lcd "Temp.wew: " ; Ss ; Chr(0) ; "C"

   I2 = I2 * 10
   I2 = I2 / 16
   'If I2 > 0 Then Cls
   Ss = Str(i2)
   Gosub Format                                   'Ss = Format(ss , " 0.0")
   Lowerline                                      'Locate 2 , 1
   Lcd "Temp.zew: " ; Ss ; Chr(0) ; "C"
Loop

End

Format:
Ss = Format(ss , " 0.0")
Return

Ta sama fonkcjonalność, a jeszcze całe dwa bajty zostają wolne :)

Pozdrawiam
Andy


Andy!!! Nie ma deklaracji do jakich portów podpięty jest LCD!!! Pare postów wcześniej pisałem o tym!!!:!:

mirekk36 wrote:

...cała dyskusja która tu się toczy pozwala mi zasysać również wiedzę n/t programowania w Bascomie - więc chyba i autor nie ma nic przeciwko temu
pozdrawiam


Nie mam :)


Co do optymalizacji kodu to uważam że szło by podpiąć pod Attiny więcej niż 2 czujniki gdyby na stałe wpisało się do programu numery ID czujników, zmniejszyło by to rozmiar kodu i pozwoliło na troszkę więcej. No ale coś za coś.
Back to top
   
Robstar
Poziom 14
Poziom 14


Joined: 14 Oct 2003
Posts: 158

Post#43 04 Sep 2007 07:06   

Re: 4x DS18b20 +LCD = Termometr


Co do wyświetlacza to umyślnie w listingu go nie umieściłem Czy ma to jakieś znaczenie ? - ustawione w Bascomie (oprócz jasności :) )

Czy wiecie dlaczego nie chce chodzić na kwarcu 4Mhz.
Back to top
   
mirekk36
Poziom 25
Poziom 25


Joined: 17 Jun 2006
Posts: 8154
Location: Szczecin

Post#44 04 Sep 2007 07:35   

Re: 4x DS18b20 +LCD = Termometr


Robstar wrote:

Czy wiecie dlaczego nie chce chodzić na kwarcu 4Mhz.


a ustawił kolega prawidłowo FuseBity w samym procku odpowiedzialne za taktowanie na kwarc zewnętrzny albo oscylator wewn o wartości 4MHz prawidłowo?
Back to top
   
Łysacz
Poziom 13
Poziom 13


Joined: 17 Mar 2005
Posts: 128
Location: KIELCE

Post#45 04 Sep 2007 12:28   

Re: 4x DS18b20 +LCD = Termometr


Witam. Właśnie popelniłem termometr na attiny2313. Do softu andy'ego74 dopisałem tylko obsługe wyświetlacza i wszystko ok. Program zajmuje 98%.
P.S. wlasnie porównuje sobie odczyty 2 czujników w tym samym miejscu. Różnica wacha sie miedzy 0,2 a 0,3 stopnia :D
Back to top
   
Andy74
Poziom 18
Poziom 18


Joined: 07 Jan 2003
Posts: 470
Location: U3pjemVyY293

Post#46 04 Sep 2007 12:35   

Re: 4x DS18b20 +LCD = Termometr


Quote:
Andy!!! Nie ma deklaracji do jakich portów podpięty jest LCD!!! Pare postów wcześniej pisałem o tym!!!

No tak, nie ma i nie zwróciłem na to uwagi, ale to nie powód by na mnie od razu wrzeszczeć :puppydogeyes:

;)

Przecież konfiguracja LCD w kodzie programu nie jest obowiązkowa. Można to równie dobrze zrobić w opcjach kompilatora. No ale przyznaję Ci rację. Przed chwilą sprawdziłem i rzeczywiście gdy dodałem config LCD - kod wynikowy zmniejszył się, ale nie ma to związku z przypisaniem PIN-ów, ani z tym czy robimy to w treści programu, czy w opcjach, tylko z wybranym typem wyświetlacza. Ja miałem w opcjach ustawiony 16*1a i akurat tylko dla niego kod wynikowy wychodzi większy. Ponieważ w swoich programach zawsze konfiguruję LCD w kodzie, i nigdy nie korzystałem z typu 16*1a - nawet nie wiedziałem, że taka zależność istnieje.
To nie zmienia faktu, że po mojej modyfikacji - wprowadzonej bez głębszego zastanowienia - plik wynikowy będzie lżejszy o kolejne 34 bajty. Dla małych atmelków to ma znaczenie - przyznasz chyba.
Ważne, że sprawa się wyjaśniła - człowiek uczy się przez całe życie...

I proszę na mnie więcej nie krzyczeć, bo użyję jeszcze większej liczby wykrzykników i dopiero będzie :)

PZDR
Andy

Aha. Mój program, o którym wspomniałem, że po kompilacji w nowszej wersji Bascoma dawał większy plik wynikowy nie korzystał w ogóle z LCD, więc podtrzymuję to co tam napisałem.
Back to top
   
Wersik
Poziom 10
Poziom 10


Joined: 15 Sep 2004
Posts: 53

Post#47 04 Sep 2007 16:21   

Re: 4x DS18b20 +LCD = Termometr


VC wrote:
Wersik wrote:
Jak projekt radzi sobie z temperaturami ujemnymi?
Zajrzyj do noty katalogowej.


Nie pytam sie jaki zakres pomiaru ma DS, tylko jak układ sobie radzi z wyświetlaniem ujemnych temperatur.
Back to top
   
janik_89
Poziom 18
Poziom 18


Joined: 31 Oct 2005
Posts: 598
Location: Okolice Lublina

Post#48 05 Sep 2007 20:55   

Re: 4x DS18b20 +LCD = Termometr


Jestem początkujący w tej dziedzinie i mam małe pytanie... czy można to jakoś przerobić(zmienić program) zeby odczytywał temp. tylko z dwóch czójników??
Back to top
   
Duch__
Poziom 22
Poziom 22


Joined: 12 Dec 2004
Posts: 1911
Location: Opole

Post#49 Post from the author of the topic 06 Sep 2007 05:40   

Re: 4x DS18b20 +LCD = Termometr


Można...

Code:
$regfile = "m8def.DAT"                                      'deklaracja procesora, w tym wypadku Atmega8
$crystal = 1000000                                          'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza)
'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 = 20 * 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

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

Dim Dsid1(8) As Byte
Dim Dsid2(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 by Duch  " ;                                'ekran startowy (pojawia się tylko podczas włączania urządzenia)
Lowerline
Lcd "        2007        "
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

'*******************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
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)
'--------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) ;

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



Loop

Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 06 Sep 2007 05:40   





Back to top
   
gothye
Poziom 22
Poziom 22


Joined: 12 Dec 2003
Posts: 2390

Post#50 07 Sep 2007 22:35   

Re: 4x DS18b20 +LCD = Termometr


dlaczego twój program niedziała z czujnikiem DS1820 ?

cały czas mam temperature 2C :(
Back to top
   
mariuz
Poziom 22
Poziom 22


Joined: 15 Aug 2004
Posts: 1652
Location: Konstancin-Jeziorna

Post#51 08 Sep 2007 11:27   

Re: 4x DS18b20 +LCD = Termometr


DS18b20 i DS1820 to zupełnie inne czujniki. DS1820 ma mniejszą rozdzielczość pomiarową oraz wymaga innego algorytmu przeliczającego.
Poszukaj na elektrodzie, było wiele projektów na ds1820
Back to top
   
Robstar
Poziom 14
Poziom 14


Joined: 14 Oct 2003
Posts: 158

Post#52 09 Sep 2007 12:39   

Re: 4x DS18b20 +LCD = Termometr


Nie wiem jak u was ale wydaje mi się że Formatowanie trzeba zmienić ponieważ przy pomiarze poniżej 10 C wszystko znika i ja zrobiłem tak że z tego:

Ss = Format(ss , " 0.0")

zrobiłem tak

Ss = Format(ss , "00. ") i chyba teraz jest OK ale trzeba by dokładnie sprawdzić przy minusie.

Jeśli się myle to proszę o poprawkę :)
Back to top
   
Łysacz
Poziom 13
Poziom 13


Joined: 17 Mar 2005
Posts: 128
Location: KIELCE

Post#53 12 Sep 2007 20:53   

Re: 4x DS18b20 +LCD = Termometr


Ja mam
Ss = Format(ss , " 0.0") i temperature mi ostatnio normalnie wyświetlało 9,9 st C i 9,6 st C. Nie wiem jak sie zachowuje z ujemnymi temp bo jeszcze nie sprawdzałem.
Back to top
   
akanaf
Poziom 12
Poziom 12


Joined: 04 Dec 2005
Posts: 109
Location: Chybie

Post#54 19 Sep 2007 20:38   

Re: 4x DS18b20 +LCD = Termometr


Co to jest KTR na schemacie, i czego mam podłączyć? Bo w moim wyświetlaczu nie ma takiego pinu o tej nazwie.
Back to top
   
Duch__
Poziom 22
Poziom 22


Joined: 12 Dec 2004
Posts: 1911
Location: Opole

Post#55 Post from the author of the topic 19 Sep 2007 21:01   

Re: 4x DS18b20 +LCD = Termometr


akanaf wrote:
Co to jest KTR na schemacie, i czego mam podłączyć? Bo w moim wyświetlaczu nie ma takiego pinu o tej nazwie.


Oznacza to kontrast. Jest to pin 3 w wyświetlaczu.
Back to top
   
SebaOK
Poziom 10
Poziom 10


Joined: 02 Apr 2003
Posts: 46
Location: Strzelin, Wrocław

Post#56 24 Sep 2007 21:26   

Re: 4x DS18b20 +LCD = Termometr


I uważajcie na pin 5 wyświetlacza ( R/W). Trzeba podać stan niski, aby wyświetlacz pracował w trybie write. Nie ma tego na schemacie, a ja straciłem trochę czasu, zanim doszedłem, dlaczego niby wszystko ok, a nic nie wyświetla
Back to top
   
AccessDenied
Poziom 3
Poziom 3


Joined: 02 Sep 2004
Posts: 7

Post#57 25 Sep 2007 14:14   

Re: 4x DS18b20 +LCD = Termometr


Witam, to i ja dodam sowje trzy grosze odnośnie formatowania wyświetlania temperatury ujemnej. Metoda sprawdzona w zakresie -40 do +99, brak przesunięć cyferek, wersja dla wyświetlacza 2x16 i 4 ds18b20 (2 wewnętrzne i 2 zewnętrzne)
Code:

$regfile = "m8def.DAT"                                      'deklaracja procesora, w tym wypadku Atmega8
$crystal = 1000000                                          'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza)
'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

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
Deflcdchar 1 , 4 , 21 , 14 , 27 , 14 , 21 , 4 , 32          'znak zewnętrzna
Deflcdchar 2 , 16 , 0 , 23 , 21 , 21 , 21 , 21 , 32         'znak wewnętrzna

Cursor Off                                                  'Wyłącza kursor
Cls                                                         'Funkcja CLS czyści ekran
Lcd "   Termometr    " ;                                    'ekran startowy (pojawia się tylko podczas włączania urządzenia)
Lowerline
Lcd "      2007      "
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 Termo1 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 Termo2 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 Termo3 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 Termo4 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                                           '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 Chr(1) ; Ss ; Chr(0) ;
   Else
   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 Chr(1) ; Ss ; Chr(0) ;
   End If

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

   I3 = I3 * 10
   I3 = I3 / 16
   If I3 > 0 Then
   Ss = Str(i3)
   Ss = Format(ss , "  0.0")
   Locate 2 , 1
   Lcd Chr(1) ; Ss ; Chr(0) ;
   Else
   Ss = Str(i3)
   Ss = Format(ss , " 0.0")
   Locate 2 , 1
   Lcd Chr(1) ; Ss ; Chr(0) ;
   End If

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

   Loop

Pozdrawiam Robert
Back to top
   
zozur
Poziom 2
Poziom 2


Joined: 13 Feb 2007
Posts: 2
Location: Poznań

Post#58 28 Sep 2007 19:16   

Re: 4x DS18b20 +LCD = Termometr


Witam
Czy projekt będzie działał również z czujnikami ds18s20?
Pozdrawiam
Back to top
   
akanaf
Poziom 12
Poziom 12


Joined: 04 Dec 2005
Posts: 109
Location: Chybie

Post#59 30 Sep 2007 15:47   

Re: 4x DS18b20 +LCD = Termometr


Jak się podaje Niski stan?
Back to top
   
Duch__
Poziom 22
Poziom 22


Joined: 12 Dec 2004
Posts: 1911
Location: Opole

Post#60 Post from the author of the topic 30 Sep 2007 20:47   

Re: 4x DS18b20 +LCD = Termometr


akanaf wrote:
Jak się podaje Niski stan?
Pin R/W z wyświetlacza podepnij do masy.
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 30 Sep 2007 20:47   





Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> DIY Structures -> 4x DS18b20 +LCD = Termometr
Statement for Wykop Statement for Facebook Statement for Delicious Statement for Digg Statement for Google Statement for Twitter Statement for Blip
Page 2 of 14 Go to page Previous  1, 2, 3, ... 12, 13, 14  Next
Jump to page:
Similar topics
Termometr na 89C2051 + DS18B20 by Miguel573 (34)
Termometr na DS18B20 + SHT11 + GSM (19)
Termometr na: DS18B20. Propozycje i schematy. (1)
Termometr Pokojowy 0-99,9 C deg. na DS18B20 (17)
NE044 TERMOMETR DWUPUNKTOWY DS18B20 (5)
Termometr na ATmega32 2x DS18B20 (33)
Jednopunktowy termometr na DS18B20 (45)
Zegar DCF 77,5kHz na LCD 128*64 znaków z termometr DS18B20 (8)
4x DS18b20 +LCD = Termometr (1)
Termometr 4 punktowy na LPC1343 + 4x ds18b20 + src (28)

Page generation time: 0.094 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed