DS 1820 hőmérő élesztés
- ampervadasz
- Bitmanipulátor
- Hozzászólások: 119
- Csatlakozott: 2008. január 19. szombat, 7:00
A kód(részlet)
A lényege:
- Minden szenzornál ellenőrizzük, hogy a kinyert ID szám megegyezik-e a leprogramozott ID-vel. Ha nem, akkor az ERR értéke 1-es értékez vesz fel.
- Ezt egy változó átállításával figyeltetetem No1, No2, No3
- Kijelzésnél a következőt lehet tenni. IF, cagy CASE utasítással figyeled a változók állását No1=0, vagy No1=1.
vagy...
A többit rád bízom 
Kód: Egész kijelölése
'1-es szenzor ID-je
Id1(1) = &H28
Id1(2) = &HD0
Id1(3) = &HB0
Id1(4) = &HBF
Id1(5) = &H02
Id1(6) = &H00
Id1(7) = &H00
Id1(8) = &HD1
'2-es szenzor ID-je
Id2(1) = &H28
Id2(2) = &H6B
Id2(3) = &HC6
Id2(4) = &H67
Id2(5) = &H00
Id2(6) = &H00
Id2(7) = &H00
Id2(8) = &H8D
'3-es szenzor ID-je
Id3(1) = &H28
Id3(2) = &H08
Id3(3) = &HCE
Id3(4) = &HB7
Id3(5) = &H01
Id3(6) = &H00
Id3(7) = &H00
Id3(8) = &H83
...
...
...
Sub Lekerdezes
1wreset
Waitms 10
1wreset
1wwrite &H55
1wwrite Id1(1) , 8
1wverify Id1(1)
If Err = 1 Then
No1 = 1
Temp(1) = -55
Elseif Err = 0 Then
No1 = 0
End If
1wreset
1wwrite &H55
1wwrite Id2(1) , 8
1wverify Id2(1)
If Err = 1 Then
No2 = 1
Temp(2) = -55
Elseif Err = 0 Then
No2 = 0
End If
1wreset
1wwrite &H55
1wwrite Id3(1) , 8
1wverify Id3(1)
If Err = 1 Then
No3 = 1
Temp(3) = -55
Elseif Err = 0 Then
No3 = 0
End If
1wreset
1wwrite &HCC
1wwrite &H44
'Waitms 750
1wverify Id1(1)
If Err = 1 Then
No1 = 1
Temp(1) = -55
Elseif Err = 0 Then
1wwrite &HBE
Sc(1) = 1wread(9)
Temp(1) = Decigrades(sc(9))
Temp(1) = Temp(1) / 100
End If
1wverify Id2(1)
If Err = 1 Then
No2 = 1
Temp(2) = -55
Elseif Err = 0 Then
1wwrite &HBE
Sc(1) = 1wread(9)
Temp(2) = Decigrades(sc(9))
Temp(2) = Temp(2) / 100
End If
1wverify Id3(1)
If Err = 1 Then
No3 = 1
Temp(3) = -55
Elseif Err = 0 Then
1wwrite &HBE
Sc(1) = 1wread(9)
Temp(3) = Decigrades(sc(9))
Temp(3) = Temp(3) / 100
End If
End Sub Lekerdezes
'------------------ 1-WIRE HŐMÉRSÉKLETI ADATOK KONVERTÁLÁSA! -------------------
Function Decigrades(byval Sc(9) As Byte) 'SRACH pad adatokból a hőmérséklet kiszámítása '
Decigrades = 0
If Sc(2).0 = 0 Then 'Ha a hőmérséklet pozitív
Decigrades = Makeint(sc(1) , Sc(2))
Decigrades = Decigrades / 4 '*0,0625fok
Decigrades = Decigrades * 25
End If
If Sc(2).0 = 1 Then 'Ha a hőmérséklet negatív
Sc(1) = Sc(1) Xor &HFF
Sc(2) = Sc(2) Xor &HFF
Decigrades = Makeint(sc(1) , Sc(2))
Decigrades = Decigrades / 4
Decigrades = Decigrades * 25 '*0,0625fok
Decigrades = Decigrades + 25 'korrekcio lsd adatlap!
Decigrades = 0 - Decigrades
End If
End Function
- Minden szenzornál ellenőrizzük, hogy a kinyert ID szám megegyezik-e a leprogramozott ID-vel. Ha nem, akkor az ERR értéke 1-es értékez vesz fel.
- Ezt egy változó átállításával figyeltetetem No1, No2, No3
- Kijelzésnél a következőt lehet tenni. IF, cagy CASE utasítással figyeled a változók állását No1=0, vagy No1=1.
Kód: Egész kijelölése
If No1=0 Then
Lcd temp(1)
Else
Lcd "--"
End if
Kód: Egész kijelölése
Select case No1
Case 0:
Lcd Temp(1)
Case 1:
Lcd "--"
End select
Köszi! Bíztam benned
De most őszintén, megírtam egy rutint az ic adatlapján szereplő adatok szerint. Aminek szerintem működnie kellene. DE nem működik, majd megosztottam veletek mert én már nem értem hol a hiba. Ez miért sült galamb? Nem azt kértem hogy írjátok át hogy működjön. Csak kérdés volt hogy hol lehet hiba... Sült galamb... amúgy sem szeretem a sült húst.
De most őszintén, megírtam egy rutint az ic adatlapján szereplő adatok szerint. Aminek szerintem működnie kellene. DE nem működik, majd megosztottam veletek mert én már nem értem hol a hiba. Ez miért sült galamb? Nem azt kértem hogy írjátok át hogy működjön. Csak kérdés volt hogy hol lehet hiba... Sült galamb... amúgy sem szeretem a sült húst.
- ampervadasz
- Bitmanipulátor
- Hozzászólások: 119
- Csatlakozott: 2008. január 19. szombat, 7:00
Nekem egy olyan kérdésem lenne hogy szereztem egy olyan termosztát kapcsolást amiben egy attiny2313 és egy DS18B20 van, beleírtam mert nekem nem volt olyan kijelzőm, viszont még át kéne alakítanom mert nekem DS1820-am van, viszont nem értem hogy a programban mit kéne átírni.
http://jumperone.com/2012/02/attiny2313 ... /#more-311[/url][/code]
http://jumperone.com/2012/02/attiny2313 ... /#more-311[/url][/code]
Re: DS 1820 hőmérő élesztés
Sziasztok!
Lehet egyszerre két 1wire busz egy AVR-en? (Portd.2, ill portd.4) Portd.2-re fel van fűzve 3 db ds18b20, ha valamelyik kiesik (meghal), akkor átáll a program a portd.4-es buszra..(Szintén 3db ds18b20) Egyszerre nem működne a kettő. Próbálkoztam Bascommal, de nekem nem sikerül. Mi a véleményetek? HW kész
Lehet egyszerre két 1wire busz egy AVR-en? (Portd.2, ill portd.4) Portd.2-re fel van fűzve 3 db ds18b20, ha valamelyik kiesik (meghal), akkor átáll a program a portd.4-es buszra..(Szintén 3db ds18b20) Egyszerre nem működne a kettő. Próbálkoztam Bascommal, de nekem nem sikerül. Mi a véleményetek? HW kész
Geht nicht, Gibt's nicht!