8 kom ds1820

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

8 kom ds1820

Post by ShOkRe »

evo malo nebranog grožđa za mene, pa nek mi neko objasni ko zna......

imam 8 ds1820 temperaturca na jednom onewire linku
16*4 lcd i 18f452, stvar čita 8 temperatura neki hladnjača i kad negdje kiksa javlja čim moze
telefonom, mejlom itd... ok komunikacija je stara priča, kao i lcd, elektronika i sl sve 5 ali kako
nikad nisam radio sa ovim onewire senzorčićima malo me zafrkava nekoliko sitnica pa ko zna....

1 dali mogu poslati globalno komandu za konverziju (bez match-rom-a) a čitati pojedinačno po match-romu
za sad radim sve pojedinačno a mogo bi uštedit 7 owout komandi

2 čitao sam da u pbp komandi owin ili owout poslje parametara ima i option label, ako je slanje/primanje neuspjelo da pošalje na label.. meni to ne radi, čim dodam label dodje mi neki error :
"Symbol not previusly defined (OWRDONE)
argument out of range ('389 not betveen -128 and 127)"

3 ako ovo pod 2 ne postoji, kako da najjednostavnije/točnije provjerim dal su svaki pojedinačno match-rom senzori na linku ? probao sam sa pokupljenim word-om temperature ako je sve %1111111111111111 ali kad je 0'c onda isto prijavi grešku što je bed......

4. dal je tko negdje iskopao kako napraviti onewire dewice discowery (pretraživanje multidrop linka) ima u pdf-u od ds1820 algoritam kako ih nači sve u par mili sekundi (jer da ideš 64bit brutforsat trajalo bi 15 dana) ali mene to totalno zbunjuje, t.j. nisam skuzio kako onoliko priče prevesti u funkcionalni kod...



evo komadić koda gdje čitam temperature i pakiram u array(jeve)
temp_disp aray je prilagođeniji prikazu na disp, da ne moram pretumbavati jer imam nekoliko prikaza
ima i nešto bit array-ja minus, ako je neg, nul5 ako ima ono .5 stupnjeva i sl....

Code: Select all

GetTemp:
FOR B = 0 TO BR_SENS
FOR A = 0 TO 7 ' load ROM pattern
  READ eeROMS+(B*8)+A,ID[A]
NEXT A 
OWOUT OW1,1,[MatchROM,STR ID\8,ConvertTemp]
NEXT B

PAUSE 500

LCDOUT $FE,1

FOR B = 0 TO BR_SENS
    FOR A = 0 TO 7 ' load ROM pattern
        READ eeROMS+(B*8)+A,ID[A]
    NEXT A
    OWOUT OW1,1,[MatchROM,STR ID\8,ReadScratch]
    OWIN OW1,2,[tInLow,tInHigh]',NIJE_TU

OWPRESENT[B] = DA
GOTO TU_JE
NIJE_TU:
OWPRESENT[B] = NE
TU_JE:

    TMINUS[B] = MINUS
    t05[B] = NUL5
    W = tempIn
'    tempIn = tempIn/2    ' DJELIL0 BI SE NA POLA ZA STUPANJ ALI OVAKO IMAMO SVE <<1
'FORMAT:        BIT 7 = +-, BIT 6-1 STUPNJEVI, BIT 0 = .5/.0 ZBOG BROJANJA I KOMPARACIJE
   ' tRESTO[b] = W|%00000001                            ' tRESTO IF .5 
    IF !TMINUS[B] THEN NoNeg1
    tempIn = tempIn | $FF00                     ' extend sign bits for negs 
    NoNeg1:
    TEMPERATURA[B] = tempIn.lowbyte  ' save Celsius value
    TEMP_DISP[B]=TEMPERATURA[B]&%11111110      ' IzDVOJI 6 TEMP.BITOVA U "D"
    TEMP_DISP[B]=TEMP_DISP[B]>>1
    IF TMINUS[B] THEN TEMP_DISP[B]=TEMP_DISP[B]|128  'PRIPREMI ZA SDEC PRIKAZ NA DISP.
    
'IF tRESTO[b] THEN TEMPERATURA[B] = TEMPERATURA[B] | %01000000          'PAKIRANJE


tIND[B]=$0 

GOSUB KOMP_TEMP

         ' SETIRATI INDIKATOR PO FLAGU !

IF LCD_PRIKAZ = 2 THEN 
  IF B = 1 THEN LCDOUT $FE,$01,$FE,$02, BIN16 W
ENDIF    
'PRIKAZ NA LCD...............  SVIH 8 TEMPERATURA
IF LCD_PRIKAZ = 1 THEN
    SELECT CASE B
      CASE 0,1
        C = $2 
      CASE 2,3
        C = $C0
      CASE 4,5
        C = $90
      CASE 6,7
        C = $D0
    END select
   LCDOUT $FE,C      
    SELECT CASE B
      CASE 1,3,5,7
        FOR A = 1 TO 8
          LCDOUT $FE,$14  
        NEXT A         
    END SELECT

      
'    IF W = 65535 OR W = 0 THEN 
'        lcdout "T-ERR ",5
'    ELSE
      IF !tMINUS[B] THEN lcdout "+"
      lcdout SDEC2 TEMP_DISP[B],".",#(t05[B]*5),DegSym,tIND[B]
'    ENDIF
 ENDIF
'--------------  LCD END

NEXT B
Ivan
Pocetnik na forumu
Pocetnik na forumu
Posts: 35
Joined: 11-02-2005, 19:19

Re: 8 kom ds1820

Post by Ivan »

Ovo je za 18B20 ali mozda pomogne. Imam i jedan elektorov projekt ali je u pisan u C-u .. :(
Attachments
876A_20MHZ_V265.zip
(111.77 KiB) Downloaded 203 times
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Re: 8 kom ds1820

Post by ShOkRe »

wery good :-)
evo bas gledam malo code.... ovo oko pretraživanja device-a se čini spetljano ali ne tolko da se nebi moglo malo prepraviti za ovaj moj ds... mozda koji bitić.... inaće to je poprilično dobra pomoč, hvala ti :idea:
Ivan
Pocetnik na forumu
Pocetnik na forumu
Posts: 35
Joined: 11-02-2005, 19:19

Re: 8 kom ds1820

Post by Ivan »

Da li znas koja su ogranicenja 1-wire bus-a (duzina i sl?)
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Re: 8 kom ds1820

Post by ShOkRe »

UF I JA TO MORAM PROVALIT...
sad sm stvio komd alarmnog kabla od 3 metra i to radi, na maxim siteu, piše da uz malo kemije moze do 300m meni to nije potrebno, ali bih volio da radi na 20m koristio bih mikrofonski koaxijalac (dvozilni) da izbjegnem smetnje, jer mi se neda još ubacivati i crc-check a i bolje je oklopljeno i zbog pic-a.....
inaće mi treba pokriti neke rashladne škrinje u dvije prostorije, nadam se d će na terenu radit, jer obično kad dodješ uvjek još neki dodatni maleri....

evo onaj dio oko provjere dali je pojedini na linku mi radi, a onaj ful network scan mozda i ne stavim nego samo jedan dodatni socket za skeniranje roma i ubacivanje u sistem, to mi je lakše i u kodu i da se lakše snač koji si senzor memotitao na koji uredjaj...
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Re: 8 kom ds1820

Post by ShOkRe »

onda, kakva su iskustva drugih u toj duzini kabla na 1wire ?
User avatar
Smjesko
Stariji član
Stariji član
Posts: 4012
Joined: 26-12-2005, 17:12

Re: 8 kom ds1820

Post by Smjesko »

Upitah Gugla o tehničkim specifikacijama za 1-wire protokol i on mi reče ovo:
http://www.jguru.com/faq/view.jsp?EID=244510" onclick="window.open(this.href);return false;

http://en.wikipedia.org/wiki/1-Wire" onclick="window.open(this.href);return false; (s ovog linka citat dijela teksta: " ...Up to 300 meter long buses consisting of simple twistedpair telephone cable has been tested by the manufacturer. It will however require adjustment of pull-up resistances from say 5kΩ to 1 kΩ.")
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Re: 8 kom ds1820

Post by ShOkRe »

heh da, i ja sam to čitao, ali kad na busu imaš nekoliko i koristiš 3 wire spoj sa +5V nekako to više ne drzi vodu, probao sam sa 10 m kabla i več nastaju Pi...rije, onda sa 20m drugog kabla radi ali samo ujutro, popodne kad su stanari doma i ima više smetnja svako drugo mjerenje error.... pa nisam više siguran kako to riješit... ima ona fora da sa 2 io pina radiš signal jedan sluša a drugi preko jakog mosfeta daje dodatni pullup, ali to nije opcija komande owire u pbp-u nego bi trebalo bit-bangati a što je opet dodatna komplikacija, samo da bih testirao, zato sam mislio da tko ima nešto više iskustva ili trikova, osim googla....
Ivan
Pocetnik na forumu
Pocetnik na forumu
Posts: 35
Joined: 11-02-2005, 19:19

Re: 8 kom ds1820

Post by Ivan »

Jedno od "elegantnih" rjesenja za to bi bilo izrada malih slave-ova sa npr 12f628 od kojih svaki ima svoj 18B20 koji preko npr 75716 komuniciraju sa masterom preko 485 mreze. Nije preskupo niti prekomplicirano
User avatar
Smjesko
Stariji član
Stariji član
Posts: 4012
Joined: 26-12-2005, 17:12

Re: 8 kom ds1820

Post by Smjesko »

Možda bi trebalo probati s oklopljenim kabelom, a ako ni to ne radi, onda poslati proizvođača u p. m. :!:
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Re: 8 kom ds1820

Post by ShOkRe »

da ovo sa 485, je ok, ali ima i maxim riješenje 1wire to rs232 onda iza njega neki rs 422 transciever, i na kraju sve to se moze složiti bez i jedne linije koda u link od n termostata, al nekako gledam da izbjegnem suvišne komplikacije... sve sam mislio da ima neka fora tipa spusti frekvenciju ili sl, ili da se doda neki terminator ili specijalni kabel što je još uvjek bolje nego raditi dodatnu skalameriju za svaki senzor, a busaju se u prsa kako radi na 300m, mozda budem i išao na to da provučem jedan link po jednom senzoru ako će to riješit problem, fala bogu io pinova na 18f4525 uvjek ima slobodnih, a i kabel čekam da mi dodje mikrofonski jer sam probao sa sličnima (alarmnim (ima oklop)STP ima oklop, i obični 3*0.75(taj nema)) ali nije tako kvalitetno kao sa njime....
da ovo da ih pošaljem u private mail, bih volio, ali sve znaš kako ide....
Post Reply