Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Adresowanie DS18B20

Awatar użytkownika
Futrzaczek
-
-
Posty:782
Rejestracja:4 gru 2005, o 17:48
Lokalizacja:Piotrków Tryb
Kontaktowanie:
Adresowanie DS18B20

Postautor: Futrzaczek » 6 sty 2006, o 22:38

Witajcie!

Dziś mam dla Was taki problem: oto mam przed soba 2 czujki DS18B20. Są sprawne. Ale jak odczytane adresy tych czujek wykorzystać do odczytania z nich temperatury? Obecnie mam taki kod:

Kod: Zaznacz cały

Dim Bd(9) As Byte Dim T As Integer Declare Sub Read1820 Config 1wire = Portd.6 Do Read1820 Cls Lcd "temp. otocz.:" ; T Cursor Off Wait 1 Loop Sub Read1820 1wreset 1wwrite &HCC 1wwrite &H44 Wait 1 1wreset 1wwrite &HCC 1wwrite &HBE Bd(1) = 1wread(9) T = Makeint(bd(1) , Bd(2)) T = T * 10 T = T / 16 T = T / 10 End Sub End
I to mi poprawnie odczytuje dane z jednej czujki. Ale ja mam kaprys i chcę dwie albo nawet 19,7 czujnika. Z odczytaniem ich numerów ID jakos sobie poradzę, ale z resztą juz nie. Czytałem helpa i googlałem się oraz użyłem psiekrasnego przycisku "szukaj". Oczywiście w BASCOM-ie. Proszę się nie obrażać za mój humorek, ale ja taki juz jestem, więc proszę nie wyciągać ciężkiej altylerii. :) :) :)

BTW - Gdzie wywiało Acka?

szymel
-
-
Posty:212
Rejestracja:16 sty 2005, o 16:42
Lokalizacja:Włocławek

Re: Adresowanie DS18B20

Postautor: szymel » 7 sty 2006, o 00:07

...
Czytałem helpa i googlałem się oraz użyłem psiekrasnego przycisku "szukaj"...
:) :) :)
Z przykrością muszę stwierdzić , że help , gogle i psiekrasny szukaj , masz napewno zepsute ;)
Teraz poważnie:

Kod: Zaznacz cały

... Dim T As Integer Do ... 1wreset 1wwrite &HCC 'dotyczy wszyskich na magistrali 1wire 1wwrite &H44 'convert Wait 1 Call Read18B20 ... Loop Sub Read18B20 1wreset 1wwrite &H55 ' teraz wybiorę jeden układ 1wwrite Id_1(1) , 8 'oto jego ID 1wwrite &HBE 'będę czytał scratchpad T = 1wread(2) 'dawaj dwa bajty , bo więcej mi nie trza ;) ' T = T * 10 T = T / 16 'do wyliczenia części całkowitej temp. wystarczy tylko ta linia ' T = T / 10 ' a co to ???? End Sub End
Podając kolejne ID DS-ów , odczytasz ile i który "zmierzył" ;)

Piotrek


Piotrek

Awatar użytkownika
Futrzaczek
-
-
Posty:782
Rejestracja:4 gru 2005, o 17:48
Lokalizacja:Piotrków Tryb
Kontaktowanie:

Postautor: Futrzaczek » 7 sty 2006, o 10:20

Dobra, dzieki, ciut poprzerabiałem ten program aby odczytywał z 2 czujek i temperatura wynosi ZAWSZE 21. Czemu?

BTW - Gdzie jest ACek?

Kod: Zaznacz cały

Dim Adres1(8) As Eram Byte Dim Adres2(8) As Eram Byte Dim T1 As Integer Dim T2 As Integer Dim A As Byte Dim Adres(8) As Byte Config 1wire = Portd.6 Declare Sub Read18b20 1wreset Adres(1) = 1wsearchfirst() For A = 1 To 8 Adres1(a) = Adres(a) Next A Adres(1) = 1wsearchnext() For A = 1 To 8 Adres2(a) = Adres(a) Next A Do For A = 1 To 8 Adres(a) = Adres1(a) Next A Read18b20 T1 = 1wread(2) T1 = T1 / 16 For A = 1 To 8 Adres(a) = Adres2(a) Next A Read18b20 T2 = 1wread(2) T2 = T2 / 16 Lcd T1 ; " " ; T2 Wait 1 Cls Loop Sub Read18B20 1wreset 1wwrite &H55 ' teraz wybiorę jeden układ 1wwrite Adres(1) , 8 'oto jego ID 1wwrite &HBE 'będę czytał scratchpad End Sub End


[ Dodano: 07-01-2006, 09:24 ]
Dobra, już działa...

[ Dodano: 09-01-2006, 08:11 ]
I jeszcze jedno pilne pytanko: jak dobrać się do temperatury odczytywanej z DS18B20, aby uzyskać 0,1 stopnia? (np. 34,5C ; 45,1C...)
Pomóżcie, please!

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 90 gości