www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Bascom Avr i DS1820 + DS18B20 na 1wire mreži
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
laco
Član
Član



Pridružen-a: Pon 06 Jun 2011 19:32
Prispevkov: 13
Aktiv.: 0.08
Kraj: Hrvatska

PrispevekObjavljeno: Sob Jul 09, 2011 11:06 am    Naslov sporočila:  Bascom Avr i DS1820 + DS18B20 na 1wire mreži Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
tiger
Član
Član



Pridružen-a: Čet 05 Feb 2004 0:22
Prispevkov: 1161
Aktiv.: 4.90

PrispevekObjavljeno: Sob Jul 09, 2011 11:39 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.70
Kraj: Kranj - struževo

PrispevekObjavljeno: Sob Jul 09, 2011 7:41 pm    Naslov sporočila:   Odgovori s citatom

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 Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.70
Kraj: Kranj - struževo

PrispevekObjavljeno: Ned Jul 10, 2011 8:55 am    Naslov sporočila:   Odgovori s citatom

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 Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.70
Kraj: Kranj - struževo

PrispevekObjavljeno: Ned Jul 10, 2011 9:00 am    Naslov sporočila:   Odgovori s citatom

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 Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.70
Kraj: Kranj - struževo

PrispevekObjavljeno: Ned Jul 10, 2011 2:03 pm    Naslov sporočila:   Odgovori s citatom

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 Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3361
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Ned Jul 10, 2011 2:48 pm    Naslov sporočila:   Odgovori s citatom

Š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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3361
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Ned Jul 10, 2011 3:11 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
robika
Član
Član



Pridružen-a: Pon 05 Apr 2004 20:55
Prispevkov: 281
Aktiv.: 1.19
Kraj: ajdovščina

PrispevekObjavljeno: Ned Jul 10, 2011 4:07 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.70
Kraj: Kranj - struževo

PrispevekObjavljeno: Ned Jul 10, 2011 4:35 pm    Naslov sporočila:   Odgovori s citatom

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 Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.92
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Ned Jul 10, 2011 8:50 pm    Naslov sporočila:   Odgovori s citatom

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 mi 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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3361
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Ned Jul 10, 2011 10:15 pm    Naslov sporočila:   Odgovori s citatom

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 mi 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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 42.78
Kraj: Mengeš

PrispevekObjavljeno: Pon Jul 11, 2011 7:08 am    Naslov sporočila:   Odgovori s citatom

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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3361
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Pon Jul 11, 2011 7:38 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3361
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Pon Jul 11, 2011 7:39 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
Pojdi na:  
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