Fórum témák

» Több friss téma
Fórum » DS18B20 hőmérő-szenzor
 
Témaindító: Korben, idő: Nov 16, 2005
Témakörök:
Lapozás: OK   18 / 39
(#) zlanczky hozzászólása Feb 3, 2015 /
 
Sziasztok, segítséget kérek.
DS18B20-as hőmérőt szeretnék illeszteni PIC18F4550-es procihoz, 48Mhz. A reset nem működik, úgy tűnik, a hőmérő nem válaszol. Kiadok egy 484 us 0 jelet, felengedem és várom, hogy visszajelezzen a hőmérő. De az nem mozdul meg.
Természetesen felhúztam az adatvonalat egy 4.7 kOhmmal az Vcc-re. A mellékelt képen látható módon kötöttem be.
Mellékelek egy jel-mintavételt (Clipboard01.jpg).
Ezen az látszik, hogy a channel 0: 1-0-1 átmenete 484 us. Tehát a proci lenyomta és fölengedte, de utána nem történik semmi. (a channel 1 az egy led lába).
Két 18B20-t is kipróbáltam. Mit ronthatok el?
Adok egy képet a panelről (DSC_0020).
(#) kissi válasza zlanczky hozzászólására (») Feb 3, 2015 /
 
Szia!

Mikor várod a választ a lábat BEMENETNEK állítod ?!
(#) zlanczky válasza kissi hozzászólására (») Feb 3, 2015 /
 
Szia, igen, de ettől függetlenül a csipnek le kéne húznia a vonalat, nem?
Vagy akkor mi történik, ha a procin output marad és magason tartja és a csip meg lehúzná?
(#) kissi válasza zlanczky hozzászólására (») Feb 3, 2015 /
 
Szerinted ?! "Erősebb kutya él nemi életet" !
(#) kissi válasza kissi hozzászólására (») Feb 3, 2015 /
 
Ha véletlenül kimenetnek hagytad, akkor a DS akár el is költözhetett az örök vadászmezőkre!
(#) zlanczky válasza kissi hozzászólására (») Feb 3, 2015 /
 
ez a reset kódja, az eredeti input_func helyére beírtam a tutit.

  1. unsigned char DS1820_Reset(void)
  2. {
  3.    unsigned char bPresPulse;
  4.    DS1820_DisableInterrupts();
  5.    /* reset pulse */
  6.    output_low();
  7.    wait_DS1820_RST_PULSE;               //480
  8.    output_high();
  9.    /* wait until pullup pull 1-wire bus to high */
  10.    wait_DS1820_PRESENCE_WAIT;
  11.    /* get presence pulse */
  12. //   bPresPulse = input_func();
  13.     TRISBbits.TRISB3 = 1;
  14.      bPresPulse=PORTBbits.RB3 ;
  15.    wait_424;
  16.    DS1820_EnableInterrupts();
  17.    return bPresPulse;
  18. }
(#) kissi válasza zlanczky hozzászólására (») Feb 3, 2015 / 1
 
A függvényeid nem tudom mit csinálnak pontosan, de az output(high) UTÁN van a TRISB 3. bit bemenetre állítása !!!
(#) zlanczky válasza kissi hozzászólására (») Feb 3, 2015 /
 
Értelmezésem szerint a szekvencia eleje a következő:
adatláb = 0,
vár 484 us
adatláb =1
vár
adatláb input
adatláb olvas
stb

Ha előbb trisb.b3 bement állítás előbb van, akkor nem lehet magasra emelni
Ezt én is így gondolom és 3 minta progi is így csinálja.
(#) zlanczky válasza kissi hozzászólására (») Feb 3, 2015 /
 
IGAZAD van, kipróbáltam, megszólalt.
Dehát pont ezért néztem meg több progit a netről, és mind a 3 így csinálta.
(#) kissi válasza zlanczky hozzászólására (») Feb 3, 2015 /
 
Ha bekapcsolt kimenetnél '1'-et adsz rá, azt a DALLAS nem tudja '0'-ra húzni ! Ilyenkor nem kell '1'-et kiadnod, arra való a felhúzóellenállás, igazából a kimenetet '0'-ra kell állítanod és csak a TRIS-t kell állítgatnod, hogy le akarod húzni '0'-ra vagy sem !!
(#) zlanczky válasza kissi hozzászólására (») Feb 3, 2015 /
 
Köszi a segítséget!
(#) kissi válasza zlanczky hozzászólására (») Feb 3, 2015 /
 
!
(#) zlanczky hozzászólása Feb 20, 2015 /
 
Sziasztok! Sikeres kísérletek történtek DS18B20-szal, DE...
Először egy PIC16F887-tel hajtottam meg, Mikroc könyvtárral, sikeresen, adta a jó hőmérsékletet.
Átálltam PIC18F4550-re, MPLAB C-re, megszólal, de rossz adatot ad föl.
Logikai analizátorral megnéztem, mindkét esetben CCh+44h parancs megy le, majd 750 ms várakozás után CCh+BEh parancsra 887 procinál jön a 84h+01h adat, 4550 esetben 7Bh+01h adat jön. Ebből nekem az következik, hogy beindul a mérés.
Mi lehet a baj? ugyanúgy az alapértelmezett 18B20 beállításokat használom.
(#) zlanczky válasza zlanczky hozzászólására (») Feb 20, 2015 /
 
Megvan a gond, nem a 18B20, hanem a két C fordító közötti különbségből adódik!
Az MPLAB C nem szereti a beépített függvényeket, a Mikroc meg tudja:
pl
temp = DS18B20_ReadByte();
temp = (DS18B20_ReadByte())<< 8) + temp;
(#) Wudoou hozzászólása Feb 27, 2015 /
 
Sziasztok!

Nincs valakinek jó ötlete, hogy szoftveresen hogyan lehetne lekezelni azt, ha egy buszon lévő DS18b20-as power-on-reset miatt, vagy bármi egyéb miatt nem kapja meg a szükséges utasításokat és 85 dec-el tér vissza?
Honnan lehetne azt megtudni, hogy ez nem valós hőmérséklet, hanem a gyári reset érték?
Sajnos egy egyszerű if nem elég, mert mi van akkor, ha tényleg annyi a hőmérséklet?!
(#) zlanczky hozzászólása Feb 28, 2015 /
 
Kérdésem van DS18B20 szenzorral kapcsolatban.
Készítettem egy kis panelt, amely többek között DS128B20-szal mér hőmérsékletet. Miért van az a sejtésem, hogy ha a csipet közvetlenül illesztem a nyákra, akkor 1-2 fokkal többet mér, mint amikor egy 10 méteres kábelen lóg és a szenzort visszateszem a nyák ugyanarra a pontjára. Hiszen digitális jelek rohangálnak a dróton, a bitek nem sérülnek.
(#) Bakman válasza zlanczky hozzászólására (») Feb 28, 2015 /
 
Valami melegíti a NYÁK-on. A sugárzó hő hatására is többet mér, valamint a túl sűrű lekérdezéstől is. A YNÁK-on hagyd magára kb. tíz percig, hogy biztosan ne az esetleges kézmeleg NYÁK tréfáljon meg.
(#) zlanczky válasza Bakman hozzászólására (») Feb 28, 2015 /
 
Pontosítok. Ha 10 méteres drótra kötöm a szenzort és visszateszem a nyákra ugyanoda, akkor is azt gondolom, hogy kevesebbet mér 1-2 fokkal. Sajnos ráforrasztottam a drótra a szenzort, nem tudom könnyedén mozgatni.
(#) Bakman válasza zlanczky hozzászólására (») Feb 28, 2015 /
 
Nagyfrekvenciás zavar esetleg amit a hozzú vezeték már lenyel (mint egy zavarszűrő kondenzátor)? A szenzor viszonylag bonyolult felépítésű, lehetséges, hogy nem az adatátvitelt, hanem a mérést zavarja valami.
(#) CyberLaci hozzászólása Márc 3, 2015 /
 
Sziasztok,

8 db ds18b20 szenzort használok egy raspberry-n, usb-s 1-wire csatolóval. Az egész 1-wire hálózat hossza kb 60m (cat5). Szépen működnek is a szenzorok, eddig egyszer volt olyan, hogy a legtávolabbi adott 85C-t.
A gond, hogy amikor ki akarom iratni egy kis weblapra a mért értékeket, akkor 7-10mp kell hozzá.
Úgy csinálom, hogy minden szenzornak megvan a könyvtára, abban egy temperature nevű file, aminek a tartalmát php-val kiolvasom. Tehát a 8 file olvasása 7-10mp-ig tart. Ha az rpi-n figyelem a szenzorokat, akkor el-eltűnik 1-2, majd újra látszik. Gyanítom ez okozhatja a lassú olvasást is.
Van esetleg ötlete valakinek, hogy mivel lehetne stabilizálni illetve gyorsítani a kiolvasást?

Előre is köszönöm a segítséget.
(#) Kovabe válasza CyberLaci hozzászólására (») Márc 3, 2015 /
 
Én más környzetet használok (pic és lcd) de ott is közel 1s a frissités. Olvass egy kicsit utánna, a DS 8MHz-en kb 750ms-onként írja ki az adatot, ha ezt kiszámolod 8 érzékelőre akkor mr megvan a hiba.
(#) CyberLaci válasza Kovabe hozzászólására (») Márc 3, 2015 /
 
Értem, köszönöm.
Akkor már csak az nem tiszta, hogy néha úgy tűnik, mintha eltűnne 1-1 szenzor, vagy az imént mind. Azaz eltűnik a könyvtára. Ettől függetlenül a php viszont hiba nélkül olvassa, értékkel tér vissza. Lehet nem is tűnik el valójában, csak a rendszer nem mutatja? Vagy van olyan állapot, amikor nem látszik? Annyira nem vagyok otthon a működésében, de lehet kommunikáció bizonyos fázisaiban így kell lennie?
(#) Kovabe válasza CyberLaci hozzászólására (») Márc 3, 2015 /
 
Igazat megvalva nekem se teljesen tiszta a dolog csak egy másik topikban sugtak meg néhány dolgot. Illetve látni kéne egy hozzáértönek a kiolvasási programrészt legalább ahoz hogy legyen kiindulás.
Tapasztalat hogy a fele lényegi dolgot leheggya az ember ha nem teszi fel a programot.
(#) titi11 hozzászólása Márc 19, 2015 /
 
Sziasztok DS18B20/PIC16F84A+LCD hőmérővel küzdök nem tudom hol kellene módosítanom a programon hogy menjen ezzel a hőszenzorral is ds18b20 .Az eredeti pedig ds1821 volt mellékelem a programot is ha valaki tudná nekem módosítani?

hőmérő.hex
    
(#) kissi válasza titi11 hozzászólására (») Márc 19, 2015 /
 
Nem valószínű, a 2 hőmérő nem teljesen ugyanabban a formátumban küldi ki az adatokat... Hex-ből visszafejteni nem kis munka, Te meg nagyjából 1000 Ft-ból tudsz venni DS-t !
(#) titi11 válasza kissi hozzászólására (») Márc 19, 2015 /
 
Köszönöm szépen ebből van itthon kb 10 db-om csak ezért szeretem volna hozzá igazi tani a programot.Köszi még egyszer!
(#) kissi válasza titi11 hozzászólására (») Márc 19, 2015 /
 
Akkor ajánlj fel cserére, hátha van valakinek cserébe !
(#) titi11 válasza kissi hozzászólására (») Márc 19, 2015 / 1
 
Nem akarom őket eladni vagy elcserélgetni mert van egy iw csöves órám abba kettesével kellenek:d Inkább akkor veszek az e-bay röl.
(#) Kovabe válasza titi11 hozzászólására (») Márc 19, 2015 /
 
Arra vigyázz mert én is vettem 10darabot és 45 fokig mér majd kiakad.
(#) Kovidivi hozzászólása Ápr 27, 2015 /
 
Sziasztok!
Van két DS18b20 szenzorom, két teljesen külön eszköz mutatja a mért értéket. A szenzorok a levegőben lebegnek, és 10cm kábellel vannak bekötve a nyákra, hogy ne melegítse őket se 7805, se semmi. Törekedtem arra, hogy a szenzorok egymáshoz képest 1cm-en belül legyenek, és ne érjenek tényleg semmihez. A szenzorokat 3mp-ként szólítom meg, tehát az önmelegítéssel szerintem nem kell foglalkozni.
A két mért érték között mindig 0.5-0.6°C különbség volt, teljesen együtt mozgott a két érték. Megcseréltem a két szenzort, és most 0.1-0.2°C-om belül marad a különbség.
Ebből ki, milyen következtetést tud levonni? Köszönöm!
Következő: »»   18 / 39
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem