 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
laco Član

Pridružen-a: Pon 06 Jun 2011 19:32 Prispevkov: 13 Aktiv.: 0.08 Kraj: Hrvatska
|
Objavljeno: Sob Jul 09, 2011 11:06 am Naslov sporočila: Bascom Avr i DS1820 + DS18B20 na 1wire mreži |
|
|
Da li na 1wire mreži može biti više DS1820 i DS18B20 i kako ih čitati iz Bascom Avr.
Pokušao sam ali mi nalazi samo prvu grupu npr.DS1820 a ostale DS18B20 ne vidi, ako iključim prvu grupu nalazi drugu grupu DS18B20.
Koristim slijedeće naredbe:
Koda: |
Dsid(65) as Byte
N_ds as Byte
I as byte
Terror as integer
Dsid(b) = 1wsearchfirst()
For I = 1 To N_ds
B = B + 8
Dsid(b) = 1wsearchnext()
Next
do
B = 1
For I =1 to N_ds
1wverify Dsid(b) 'Issues the "Match ROM "
If Err = 1 Then
Terror = Err
Elseif Err = 0 Then
1wwrite &HBE
Sc(1) = 1wread(9)
If Sc(9) = Crc8(sc(1) , 8) Then
Temp_int(i) = Decigrades(sc(9))
If I < N_ds Then ' if more 1-wire devices.
Waitms 200
End If
End If
End If
B = B + 8
Next
Err = 0
Loop |
_________________ Lijep pozdrav,
Ivica Lacmanovic |
|
Nazaj na vrh |
|
 |
tiger Član

Pridružen-a: Čet 05 Feb 2004 0:22 Prispevkov: 1161 Aktiv.: 4.90
|
Objavljeno: Sob Jul 09, 2011 11:39 am Naslov sporočila: |
|
|
Pozdravljeni
Vsak DS1820 ima svojo serijsko številko-naslov zapisan v ROMu: Najprej je potrebno prebrati naslove iz ROMa, s pomočjo teh naslovov pa potem iz programa kličeš željeni senzor. Tako na kratko.
LP |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.70 Kraj: Kranj - struževo
|
Objavljeno: Sob Jul 09, 2011 7:41 pm Naslov sporočila: |
|
|
Tiger, saj uporablja Search rutine, ki po vodiilu poiščejo senzorje. Tako dobiš vse naslove, le ne veš, kateriu senzor je kje (fizično v katerem prostoru).
laco,
v programu je nekaj napak.
Med iskanjem senzorjev imaš FOR zanko : For I = 1 To N_ds
Koliko je N_ds ?? Nikjer ni definirano, zato jo verjetno prevajalnik nastavi na vrednost 0.
Jaz bi naredil tako:
Najprej imaš
B = 0
Dsid(B) = 1wsearchfirst()
potem pa imaš WHILE zanko, ki išče senzorje in vsakega ko ga najde, povečuje N_ds.
S tem prešteješ senzorje in dobiš njihove naslove.
Citiram: |
Da li na 1wire mreži može biti više DS1820 i DS18B20 |
DA. _________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.70 Kraj: Kranj - struževo
|
Objavljeno: Ned Jul 10, 2011 8:55 am Naslov sporočila: |
|
|
laco je napisal/a: |
Zaboravio sam kopirati slijedeće
Dim N_ds as word
N_ds=wirecount()
Lijep pozdrav |
Ispravak Bascom Avr problem sa 4xDS1820 i 4xDS18B20 na 1wire
Koda: |
$regfile = "m644def.dat" ' slave
$crystal = 8000000
$lib "glcdKS108.lbx"
$baud = 2400
$include "Font6x8.font"
Config Graphlcd = 128 * 64sed , Dataport = Portb , Controlport = Portc , Ce = 0 , Ce2 = 1 , Cd = 2 , Rd = 3 , Reset = 5 , Enable = 4 , Mode = 6
Cls
Dsid(65) as Byte
N_ds as Word, I as Byte
Dim Terror as integer
Dim B as Byte, B1 as Byte, B2 as Byte
Cls
Setfont Font6x8
' Gather ROM ID for all 1-wire devices
N_ds = 1wirecount()
Dsid(b) = 1wsearchfirst()
For I = 1 To N_ds
B = B + 8
Dsid(b) = 1wsearchnext()
Next
B1 = 1
B2 = 8
For I = 1 To N_ds
If Dsid(b2) = Crc8(dsid(b1) , 7) Then
' Lcd "CRC OK sensor " ; I
'Lcdat i , 1 , "ROM ID " ; I
K = 1
For B = B1 To B2
Lcdat I , K , Bin(dsid(b))
K = K + 2
Next
Waitms 500
Else
Lcdat I , 1 , "CRC BAD sensor " ; I
End If
Wait 1
B1 = B1 + 8
B2 = B2 + 8
Next
Wait 10
do
1wreset ' reset the device
1wwrite &HCC ' skip rom (all sensors)
1wwrite &H44 ' convert temperature
Waitms 600
B = 1
For I =1 to N_ds
1wverify Dsid(b) 'Issues the "Match ROM "
If Err = 1 Then
Terror = Err
Elseif Err = 0 Then
1wwrite &HBE
Sc(1) = 1wread(9)
If Sc(9) = Crc8(sc(1) , 8) Then
Temp_int(i) = Decigrades(sc(9))
If I < N_ds Then ' if more 1-wire devices.
Waitms 200
End If
End If
End If
B = B + 8
Next
Err = 0
Loop |
_________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.70 Kraj: Kranj - struževo
|
Objavljeno: Ned Jul 10, 2011 9:00 am Naslov sporočila: |
|
|
Probaj, da ti na LCD sproti izpisuje vrednosti , kot naprimer N_DS, DSID,...
Jaz sumim, da N_ds = 1wirecount() ne deluje dobro...
Takega ukaza jaz še nisem videl. Preveri, če ti vrne pravilno število senzorjev. _________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.70 Kraj: Kranj - struževo
|
Objavljeno: Ned Jul 10, 2011 2:03 pm Naslov sporočila: |
|
|
laco je napisal/a: |
Uspio sam odvojiti problematične senzore i dibio sam slijedeče
1. Uspio sam upariti dva senzora
Koda: |
N_ds = 1 wirecount(),
N_ds = 2
|
Uredno dobivam temperature za pronađene senzore prema ranije priloženom programu.
Koda: |
senzor-1 adresa = 01010111
senzor-2 adresa = 00111100
senzor-3 ne vidi
senzo-4 ne vidi |
Uredno dobivam temperature za pronađen senzor prema ranije priloženom programu.
2. Odspojio sam prva dva senzora
Koda: |
N_ds = 1 wirecount(),
N_ds = 1
senzor-3 adresa = 11010001
senzor-4 ne vidi |
Uredno dobivam temperature za pronađen senzor prema ranije priloženom programu.
3. Odspajam senzor-3
Koda: |
N_ds = 1 wirecount(),
N_ds = 1
senzor-4 adresa = 00111011 |
Uredno dobivam temperature za pronađen senzor prema ranije priloženom programu.
Možete li mi pomoći kako upotrijebiti ove gore navedene adrese tako da program vidi sve ostale i kako čitati njihove temperature. |
_________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3361 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Ned Jul 10, 2011 2:48 pm Naslov sporočila: |
|
|
Še od mene eno vprašanje:
Koliko Dallasov vam je uspelo obesiti na en 1wire bus?
Jaz imam že pri 5-ih probleme. No, na mizi mi jih je lepo delalo 9, a ko sem instaliral na lokaciji, je škripnilo že pri petem.
Uporabljam ploski 4-žilni telefonski kabel, ker se lepo krimpa..
Pozdrav
VS |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3361 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Ned Jul 10, 2011 3:11 pm Naslov sporočila: |
|
|
No, na Bascom Help-u v poglavju Using 1wire protocol sem našel sledeče
Citiram: |
Cable lengths (this section is only for some limitation understanding)
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection. |
In vendar nagaja...! |
|
Nazaj na vrh |
|
 |
robika Član

Pridružen-a: Pon 05 Apr 2004 20:55 Prispevkov: 281 Aktiv.: 1.19 Kraj: ajdovščina
|
Objavljeno: Ned Jul 10, 2011 4:07 pm Naslov sporočila: |
|
|
vilko je napisal/a: |
Še od mene eno vprašanje:
Koliko Dallasov vam je uspelo obesiti na en 1wire bus?
Jaz imam že pri 5-ih probleme. No, na mizi mi jih je lepo delalo 9, a ko sem instaliral na lokaciji, je škripnilo že pri petem.
Uporabljam ploski 4-žilni telefonski kabel, ker se lepo krimpa..
Pozdrav
VS |
Trenutno imam 9 komadov DS1820 obešenih na več kot 70 metrih skupne dolžine UTP kabla. Topologija mreže je zvezda in več senzorjev na eni liniji. Težav ni nobenih. Vključeno je nonstop 24/7/365 ne glede na nevihte. |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.70 Kraj: Kranj - struževo
|
Objavljeno: Ned Jul 10, 2011 4:35 pm Naslov sporočila: |
|
|
Vprašanje je, če 1-wire bus šofira DS2480B ali mikrokontroler.
Druga pomembna stvar je, da mora biti med temperaturno pretvorbo vklopljen močnejši Pull-up, najbolje kar z enim mosfetom direkt na +5V linijo. Beri Application Note.
Tretja stvar pa je, da je potrebno pri dolgih linijah ustrezno upočasniti komunikacijo zaradi velikih kapacitivnosti.
S PIC-em sem imel težave pri 10 m kabla in parih senzorjih. Z DS2480B (in pravilno konfiguracijo) teh težav nimam, ker aktivno vklaplja integrirani mosfet za napajanje senzorjev. _________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.92 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Jul 10, 2011 8:50 pm Naslov sporočila: |
|
|
vilko je napisal/a: |
Še od mene eno vprašanje:
Koliko Dallasov vam je uspelo obesiti na en 1wire bus?
Jaz imam že pri 5-ih probleme. No, na mizi mi jih je lepo delalo 9, a ko sem instaliral na lokaciji, je škripnilo že pri petem.
Uporabljam ploski 4-žilni telefonski kabel, ker se lepo krimpa..
Pozdrav
VS |
Kaj se zgodi v tvojem primeru? Javlena napaka senzorja ali vodila?
Načeloma količina senzorjev na vodilu ne bi smela imeti kakega posebnega vpliva. Sama poraba senzorjev je v rangu A. Razen ob resetu se "oglašajo" vsi sicer le pozvan. Eventuelne "motnje" bi lahko nastajale ravno v reset rutini. Ob resetu se sigurno senzorji ne odzovejo popolnoma istočasno. Če je timing preverjana prisotnosti napisan zelo na tesno bi se tu morda lahko zgodilo kaj nepredvidenega. Sicer sem sam imel za test 10 senzorjev na vodilu kako leto. Najdaljši je bil oddaljen ene 15m. Zadeva je delala brez vsakih problemov. Uporabljen je bil terminalski kabel. Za kolega sem pred časom (2-3 leta nazaj) naredil kotlovsko regulacijo. Če se prav spomnim, je bilo gor 6. senzorjev. Do sedaj nisem bil obveščen o kakih težavah. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3361 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Ned Jul 10, 2011 10:15 pm Naslov sporočila: |
|
|
Silvo je napisal/a: |
vilko je napisal/a: |
Še od mene eno vprašanje:
Koliko Dallasov vam je uspelo obesiti na en 1wire bus?
Jaz imam že pri 5-ih probleme. No, na mizi mi jih je lepo delalo 9, a ko sem instaliral na lokaciji, je škripnilo že pri petem.
Uporabljam ploski 4-žilni telefonski kabel, ker se lepo krimpa..
Pozdrav
VS |
Kaj se zgodi v tvojem primeru? Javlena napaka senzorja ali vodila?
Načeloma količina senzorjev na vodilu ne bi smela imeti kakega posebnega vpliva. Sama poraba senzorjev je v rangu A. Razen ob resetu se "oglašajo" vsi sicer le pozvan. Eventuelne "motnje" bi lahko nastajale ravno v reset rutini. Ob resetu se sigurno senzorji ne odzovejo popolnoma istočasno. Če je timing preverjana prisotnosti napisan zelo na tesno bi se tu morda lahko zgodilo kaj nepredvidenega. Sicer sem sam imel za test 10 senzorjev na vodilu kako leto. Najdaljši je bil oddaljen ene 15m. Zadeva je delala brez vsakih problemov. Uporabljen je bil terminalski kabel. Za kolega sem pred časom (2-3 leta nazaj) naredil kotlovsko regulacijo. Če se prav spomnim, je bilo gor 6. senzorjev. Do sedaj nisem bil obveščen o kakih težavah. |
Po programiranem postopku program zahteva priklop termometra na bus. Najprej prvega, potem drugega in tako naprej. Z 1wirecount ukazom ugotavlja, koliko termometrov je že na busu. Ko ugotovi, da je dodan nov termometer, pobere njegov id in ga da v eeprom.
Problem je, da po tretjem termometru ne zazna, da sem na njegovo zahtevo priklopil četrtega in kar naprej zahteva, da ga priklopim.
Naj povem, da mi je na mizi zadeva delovala do 9 termometrov (toliko jih rabim), a na terenu imam probleme.
Jutri imam namen zmanjšati pullup iz 4k4 na 2k2 in bom videl, ali bom lahko priklopil kak termometer več.. |
|
Nazaj na vrh |
|
 |
protoncek Član

Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 42.78 Kraj: Mengeš
|
Objavljeno: Pon Jul 11, 2011 7:08 am Naslov sporočila: |
|
|
Vilko, imaš ločeno ali parazitno napajanje ? Včasih sem že bral da parazitno napajanje lahko povzroča probleme. Z obzirom da uporabljaš TF kabel, ki ima (vsaj) 4 žile je napajanje lahko ločeno.
Mogoče bi bilo dobro da uporabniki, ki so napisali izkušnje z večjim številom senzorjev še povedo kako imajo izvedeno napajanje. |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3361 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Pon Jul 11, 2011 7:38 am Naslov sporočila: |
|
|
protoncek je napisal/a: |
Vilko, imaš ločeno ali parazitno napajanje ? Včasih sem že bral da parazitno napajanje lahko povzroča probleme. Z obzirom da uporabljaš TF kabel, ki ima (vsaj) 4 žile je napajanje lahko ločeno.
Mogoče bi bilo dobro da uporabniki, ki so napisali izkušnje z večjim številom senzorjev še povedo kako imajo izvedeno napajanje. |
Ločeno. 4-žilni kabel. |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3361 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Pon Jul 11, 2011 7:39 am Naslov sporočila: |
|
|
aly je napisal/a: |
Tretja stvar pa je, da je potrebno pri dolgih linijah ustrezno upočasniti komunikacijo zaradi velikih kapacitivnosti.
|
V Bascomu nimamo možnosti vplivati na timing 1 wire bus-a |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 495 dni
Powered by phpBB © 2001, 2005 phpBB Group
|