| Author |
Message
|
akanaf Poziom 12

Joined: 04 Dec 2005 Posts: 109 Location: Chybie
|
#61
02 Oct 2007 17:19 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Ok podpiąłem ale to nadal nic mi nie dało. Nadal "świecą" się tylko 2 linie 1 i 3. Czym to może być spowodowane że układ nie działa?
|
|
| Back to top |
|
 |
astony Poziom 13

Joined: 02 Mar 2006 Posts: 141 Location: jaworzno
|
#62
04 Oct 2007 22:53 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Wyświetlacz 4 wierszowy inaczej sie steruje :D . Musisz podać komende "lowerline". Niestety nie zajmuję się Bascomem, tylko asm.
|
|
| Back to top |
|
 |
akanaf Poziom 12

Joined: 04 Dec 2005 Posts: 109 Location: Chybie
|
#63
05 Oct 2007 16:13 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Mi się wydaje że powinny być jeszcze takie komendy "thirdline" i "fourtline"
|
|
| Back to top |
|
 |
mirekk36 Poziom 25

Joined: 17 Jun 2006 Posts: 8154 Location: Szczecin
|
#64
05 Oct 2007 16:23 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
akanaf -> przy wyświetlczach LCD 4 wierszowych trzeba wydawać jeszcze jakieś polecenie, które przełącza wyświetlanie tak jak byś miał 2 wyświetlacze 2 wierszowe. W związku z tym, tym poleceniem o którym mówię przełączasz sobie raz na górną a raz na dolną połówkię i normalnie za pomocą lowerline wyświetlacz coś w drugiej linijce. Niestety nie pamiętam tego dokładnie ale w którymś z postów niedawno opisywał to komuś kolega Zumek - więc złap go i dopytaj może na PW - to na pewno ci pomoże
pozdrówka
|
|
| Back to top |
|
 |
gothye Poziom 22

Joined: 12 Dec 2003 Posts: 2390
|
#65
07 Oct 2007 10:41 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
mniej wiecej wygląda tak obsługa lcd 4 wierszowego :
| Code: |
en = en1 'pierwsza czesć lcd
lcd "pierwsza linia"
lowerline
lcd "druga linia"
en = en2 'druga cześc lcd
lcd "trzecia linia"
lowerline
lcd "czwarta linia |
|
|
| Back to top |
|
 |
Kvasir Poziom 10

Joined: 15 Apr 2003 Posts: 52 Location: Kedzierzyn-Kozle
|
#66
01 Nov 2007 11:21 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Witam, cholera musze odkopac ten temat bo mnie juz szlag trafia.... Mam taki przerobiony kod, pod atmege8 dla jednego czujnika:
| Code: |
'Na PINC.5 ds18b20
$regfile = "m8def.dat"
$crystal = 8000000
'Deklaracja portów od wyświetlacza LCD
Config Lcdpin = Pin , Db4 = Pb.2 , Db5 = Pb.3 , Db6 = Pb.4 , Db7 = Pb.5 , E = Pb.1 , Rs = Pb.0
Config Lcdbus = 4
Config Lcd = 16 * 2
Dim I1 As Integer , Ss As String * 6
Dim Dsid1(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
Config 1wire = Portc.4 'deklaracja portu na którym będą podpięte DS18b20
Cursor Off 'Wyłącza kursor
Cls 'Funkcja CLS czyści ekran
Lcd "Blablabla" ; 'ekran startowy (pojawia się tylko podczas włączania urządzenia)
Lowerline
Lcd " 2007 "
Wait 5
Cls
W = 1wirecount()
Lcd "Czujniki::" '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
'CRC
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"
Wait 1
Locate 2 , 1
Lcd "ID:"
For B = 1 To 8
Hex(dsid1(b))
Next
End If
Wait 2
Cls
'---------------
Do
1wreset
1wwrite &H55
1wwrite &HCC
1wverify Dsid1(1) 'wysyłamy adres pierwszego czujnika
1wwrite &HBE
I1 = 1wread(2)
[color=#FF0000] 1wreset
1wwrite &HCC
1wwrite &H44[/color]
'---------------------------------
Wait 1
'-------
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 "Tmp" ; Ss ; Chr(0) ;
'-------
Loop
'Koniec programu
|
Ladnie sie kompiluje, uruchamia, wyrzuca info ze znalazl 1 czujnik, crc poprawne, numerek w hexie wyrzuca i..... wyswietla temperature 85.0C .... Nie mam pojecia czemu... mozliwe ze czujnik padl i tak mu sie miesza ? Az tak cieplo w pokoju nie mam.......
DOBRA, EDIT: dobra wszystko jasne, przegapilem fragment zaznaczony obecnie w kodzie na czerwono...... elektroda zawsze pomoze :) nawet jak nikt nie odpowie :D :D :D
|
|
| Back to top |
|
 |
UlfgaR Poziom 19

Joined: 17 Aug 2006 Posts: 759 Location: Siemonia
|
#67
14 Nov 2007 19:20 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Kolego Kvasir czy ten kod powyżej jest poprawiony?
Czy możesz wrzucić schemat wg. którego robiłeś?
|
|
| Back to top |
|
 |
gr86 Poziom 14

Joined: 11 Mar 2006 Posts: 180 Location: Krosno
|
#68
15 Nov 2007 18:27 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
dołączam prośbe do kolegi UlfgaR o udostępnienie danych i wzórpłytki
Pozdro gr86
|
|
| Back to top |
|
 |
Google

|
#
15 Nov 2007 18:27 |
|
|
|
|
|
| Back to top |
|
 |
asembler Poziom 22

Joined: 16 Sep 2007 Posts: 2131
|
#69
16 Nov 2007 14:40 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
jak tam ktoś napisał kazdy musi miec swój termometr:-)
| Description: |
|
| Filesize: |
22.84 KB |

|
|
|
| Back to top |
|
 |
jacol0 Poziom 5

Joined: 28 Jun 2006 Posts: 11 Location: Poznan
|
#70
17 Nov 2007 15:50 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Witam super termometr bardzo prosty i tani :D
Mam pytanie jak przerobić ten wsad tak żeby działał na wyświetlaczu 4x20
Wiem ze to proste ale nie mogę sobie z tym poradzić :cry:
Z góry dziękuje za pomoc.
|
|
| Back to top |
|
 |
asembler Poziom 22

Joined: 16 Sep 2007 Posts: 2131
|
#71
18 Nov 2007 21:50 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Zeby przerobić na LCD 4x20 musisz dołaczyc jeszcze jeden przewód do procesora i napisac procedure wyswietlnia. Reszta bedzie tak sama
|
|
| Back to top |
|
 |
Dariusz Goliński Poziom 18

Joined: 21 May 2003 Posts: 551 Location: Brzeziny
|
|
| Back to top |
|
 |
UlfgaR Poziom 19

Joined: 17 Aug 2006 Posts: 759 Location: Siemonia
|
#73
19 Nov 2007 22:46 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Mam identyczny wyświetlacz[14pinow], tylko nie wiem jak go podłączyć do układu, może ktoś pomoc?
|
|
| Back to top |
|
 |
asembler Poziom 22

Joined: 16 Sep 2007 Posts: 2131
|
#74
20 Nov 2007 16:03 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Mogę ci pomóc z tym ze nie wiem do jakiego układu
|
|
| Back to top |
|
 |
ic3men Poziom 2

Joined: 23 Aug 2005 Posts: 3 Location: zza kshaka
|
#75
26 Nov 2007 12:22 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Witam
Mam dwa problemy:
1. Temperatura spadając poniżej 100 stopni pozostawia po sobie znak stopnia
2. Program działa poprawnie powyżej 10 stopni. Jeśli temperatura spadnie poniżej 10 to po sprawdzeniu crc program restartuje się.
Ma ktoś jakąś rade na te bolączki ?
Pozdrawiam
|
|
| Back to top |
|
 |
Macias86 Poziom 21

Joined: 06 Dec 2003 Posts: 1153 Location: Gdynia
|
#76
26 Nov 2007 19:15 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
- 100 * C w pokoju ?? lodówki nie domknąłeś? ;D
|
|
| Back to top |
|
 |
mariuz Poziom 22

Joined: 15 Aug 2004 Posts: 1652 Location: Konstancin-Jeziorna
|
#77
26 Nov 2007 21:03 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Macias to nie jest "beczka śmiechu"
Jakbyś się zastanowił, to byś wiedział, że te czujniki mają zakres od -65 do +125 stopni...
Ten znak stopnia idzie zlikwidować ;)
Musisz tylko nadpisać w to miejsce spację ;) Na stałe dorzuć odstęp tuż za znakiem stopnia i powinno być cacy :D
Nieeleganckie rozwiązanie, ale zwykle działa...
|
|
| Back to top |
|
 |
Macias86 Poziom 21

Joined: 06 Dec 2003 Posts: 1153 Location: Gdynia
|
#78
26 Nov 2007 21:53 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
spoko Achmed ;)
1. Temperatura spadając poniżej 100 stopni pozostawia po sobie znak stopnia
czyli jak spadnie poniżej 0 do tych -100. to jest ok? i nie jest ok gdy spadnie poniżej -100?
|
|
| Back to top |
|
 |
Janelektro Poziom 12

Joined: 24 Nov 2005 Posts: 85 Location: Bilsko-Biała
|
#79
27 Nov 2007 13:25 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Świetny termometr szkoda tylko że jest mało czujników temperatury. Dodatkowo mogłobyć połaczone z komputerem w celu tworzenia statystyk i wykresów dobowych.
pozdro
|
|
| Back to top |
|
 |
mariuz Poziom 22

Joined: 15 Aug 2004 Posts: 1652 Location: Konstancin-Jeziorna
|
#80
27 Nov 2007 17:18 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
termometr mierzy tylko do-65 stopni. I to jest już wina czujnika a nie programu...
|
|
| Back to top |
|
 |
Google

|
#
27 Nov 2007 17:18 |
|
|
|
|
|
| Back to top |
|
 |
trzcionkowski Poziom 2

Joined: 02 Feb 2007 Posts: 2
|
#81
27 Nov 2007 23:44 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
| myrcin wrote: |
A masz jakiś log z pomiarów? Np. możliwość pokazywania pomiarów z przed 1,2,3,4 godzin?
To było by coś... alebo przez UART do komutera i na dysk twardy jako txt! |
To ... na Ciepełko jest takie rozwiązanie. Terminal służy do pokazywania temperatury i sygnalizowania naciśnięcia przycisku dzwonka u drzwi. Oprogramowanie dla Windows zbiera wyniki i publikuje w postaci wykresu z pomiarami w kolejnych dni. Inny program dla Windows umożliwia wymianę danych pomiarowych z czujników przyłączonych bezpośrednio do RS'a tj bez terminala.
Dodano po 8 [minuty]:
| 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...
|
Tyle, że generalnie BASCOM nie nadaje się do niczego sensownego.
|
|
| Back to top |
|
 |
pączek Poziom 2

Joined: 28 Nov 2006 Posts: 2 Location: wrocław
|
#82
07 Jan 2008 14:38 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
mam mały problem chce dokładnie zrozumieć jak działa odczytywanie Id z czujników i jeśli ktoś może opisać dokładnie to byłbym bardzo wdzięczny .
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
Z góry dziękuje za wytłumaczenie tego
|
|
| Back to top |
|
 |
holcer Poziom 20

Joined: 23 Sep 2005 Posts: 900 Location: Kraków
|
#83
23 Jan 2008 01:33 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Witam i na wstępie gratuluję prostych i za razem bardzo przydatnych urządzeń ;). Sam potrzebuję czegoś takiego (termometru z LCD) do monitorowania chłodzenia wodnego komputera. Niestety w ogóle nie umiem programować ( :? ) więc poproszę jakiegoś znajomego, albo dogadam się na PW z kimś z "elki", aby mi zaprogramował dostarczony kontroler ;).
Mam 2 pytania:
Po 1: Czy można zastosować jakieś inne czujniki (nie potrzebny mi aż taki zakres temperatur). Jakie czujniki o zakresie na przykład od 0 - 100 stopni są w miarę tanie i powszechnie dostępne?
Po 2. Czy byłoby dużym problemem zaprzęgnąć do wyświetlania popularny LCD z nokii 3310? Do podłączenia go pod LPT wystarczy z tego co pamiętam parę rezystorów, diodki i 2 kondensatory. Oczywiście wiadomo, że komputer "odwala" główną robotę. Jednak może jest to wykonalne?
Pozdrawiam
Holcer
|
|
| Back to top |
|
 |
LoLu Poziom 3

Joined: 21 Apr 2004 Posts: 7 Location: Poznań
|
#84
23 Jan 2008 02:21 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
[quote="pączek"]mam mały problem chce dokładnie zrozumieć jak działa odczytywanie Id z czujników i jeśli ktoś może opisać dokładnie to byłbym bardzo wdzięczny .
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
8 znak tablicy id to suma kontrolna, a crc8 oblicza tą sume kontrolną(od1 do 7)
reszty nie trzeba tłumaczyć chyba...
|
|
| Back to top |
|
 |
asembler Poziom 22

Joined: 16 Sep 2007 Posts: 2131
|
#85
24 Jan 2008 02:57 12x DS18b20 +LCD = Termometr |
|
|
|
Wznowie temat.
A może by tak iść na całość?
|
|
| Back to top |
|
 |
holcer Poziom 20

Joined: 23 Sep 2005 Posts: 900 Location: Kraków
|
#86
24 Jan 2008 06:46 Re: 12x DS18b20 +LCD = Termometr |
|
|
|
| asembler wrote: |
Wznowie temat.
A może by tak iść na całość?
 |
To chyba wrzuciłeś jako taką ciekawostkę? Po pierwsze policz sobie ilu czujników potrzebujesz - 11, więc na same czujniki wydasz 99zł. Do tego taki wielki wyświetlacz i jakiś uC do jego obsł. - tym sobie chyba nie poradzisz.
Pozdrawiam
Holcer
|
|
| Back to top |
|
 |
asembler Poziom 22

Joined: 16 Sep 2007 Posts: 2131
|
#87
27 Jan 2008 14:32 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Zobacz na zdjęcie jest jeszcze trochę problemów ale mysle ze do rozwiązania. Jakie znaczenie 4 czy 11 czy 20? Tylko kwestia kasy chyba.
No a wyświetlacz to mogę ci sprzedać za 30zł w promocji Bierzesz?
Obsługa za pomocą Atmegi8 za 6 zł
|
|
| Back to top |
|
 |
jacekhe Poziom 16

Joined: 06 May 2007 Posts: 334 Location: Janów Lubelski / Rzeszów
|
#88
02 Feb 2008 22:24 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Lipka po użyciu softa Duch__ i małej modyfikacji termometr nie wstaje:(
|
|
| Back to top |
|
 |
Google

|
#
02 Feb 2008 22:24 |
|
|
|
|
|
| Back to top |
|
 |
Duch__ Poziom 22

Joined: 12 Dec 2004 Posts: 1911 Location: Opole
|
#89
03 Feb 2008 09:01 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Co znaczy nie wstaje? Co zmieniałeś??
|
|
| Back to top |
|
 |
jacekhe Poziom 16

Joined: 06 May 2007 Posts: 334 Location: Janów Lubelski / Rzeszów
|
#90
03 Feb 2008 13:19 Re: 4x DS18b20 +LCD = Termometr |
|
|
|
Wyświetla jakieś głupoty zamiast temperaturki , oto kod.
| Code: |
$regfile = "m8def.DAT"
$crystal = 1000000
'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
'*************************************WAŻNE**********************************************
Config 1wire = Portd.5
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
Dim W As Byte
Deflcdchar 0 , 8 , 20 , 11 , 4 , 4 , 4 , 3 , 32
Cursor Off
Cls
Lcd "Lada Samara 1.3s" ;
Lowerline
Lcd " 2008 "
Wait 5
Cls
W = 1wirecount()
Lcd "Ilosc czujnikow:"
Waitms 500
Lcd W
Wait 3
Cls
Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()
Dsid3(1) = 1wsearchnext()
Dsid4(1) = 1wsearchnext()
'*******************Odczyt numerów ID czujników temperatury*********************
If Dsid1(8) = Crc8(dsid1(1) , 7) Then
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)
1wwrite &HBE
I1 = 1wread(2)
'---------------------------------
1wreset
1wwrite &H55
1wverify Dsid2(1)
1wwrite &HBE
I2 = 1wread(2)
'---------------------------------
1wreset
1wwrite &H55
1wverify Dsid3(1)
1wwrite &HBE
I3 = 1wread(2)
'---------------------------------
1wreset
1wwrite &H55
1wverify Dsid4(1)
1wwrite &HBE
I4 = 1wread(2)
'--------konwersja temp dla wszystkich dsow
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 "Wew" ; 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 "Zew" ; Ss ; Chr(0) ;
I3 = I3 * 10
I3 = I3 / 16
If I3 > 0 Then Cls
Ss = Str(i3)
Ss = Format(ss , " 0.0")
Locate 1 , 11
Lcd "Chlo" ; Ss ; Chr(0) ;
I4 = I4 * 10
I4 = I4 / 16
If I4 > 0 Then Cls
Ss = Str(i4)
Ss = Format(ss , " 0.0")
Locate 2 , 11
Lcd "Gaz" ; Ss ; Chr(0) ;
Loop |
|
|
| Back to top |
|
 |