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 

DS1820 1Wire ?
Pojdi na stran Prejšnja  1, 2, 3
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Periferija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2751
Aktiv.: 12.35
Kraj: Trzic

PrispevekObjavljeno: Ned Jan 08, 2006 6:28 pm    Naslov sporočila:   Odgovori s citatom

Silvo, bistveni del tega programa - 'algoritem' za iskanje napravic se mi zdi da je s precej enostavnimi izrazi napisan, tako da bi se ga dalo precej enostavno v asembler prepisat.
Če pa misliš na porabo RAM-a, se pa žal moram s tabo strinjat. Je pa možno, da se kode shranjujejo direktno v EEPROM, s čimer lahko polje kod izpustimo.

Zdajle sem se še enkrat lotil algoritma in ga spremenil tako, da mora delovati na vseh senzorjih. Prav tako sem stvari malce optimiral za tiste, ki bi želeli kodo prevesti v assembler.



1_wire_temp_sensors.c
 Opis:

Download
 Ime datoteke:  1_wire_temp_sensors.c
 Velikost datoteke:  7.1 KB
 Downloadano:  69 krat

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 23.08
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Pon Jan 09, 2006 2:44 pm    Naslov sporočila:   Odgovori s citatom

gnioco je napisal/a:
Da ne odpiram nove teme bom moj problem opisal kar tule:
S picem berem temperaturo iz treh ds1820 senzorjev, izpisujem temperaturo na lcd..
Vse deluje brezhibno, dokler so senzorji na protobordu. Ko jih dam na kabel dolg 2m, deluje vse še zmeraj vredu.Do tukaj ni problemov.......


Tule je napisano vse o dolgih žicah in 1 wire napravami:
h**p://www.maxim-ic.com/appnotes.cfm/appnote_number/148

Appendix D pove vse.


V vezju, ki si ga naredil manjka serijski upor 100 ohmov med RB0 on DO od senzorja. Tisti kondenzator (C1) brez upora kapaciteto samo še poveča in poslabša stvar.

Stvar deluje tako: brez upora chip napaja kapacitivno linijo (dolgo žico), kjer se napetost na impulzu, ko ga iz chipa pošljemo na linijo dviga po eksponentni krivulji, torej ne navpično navzgor. Enako se dogaja, ko DS1820 pošlje ven logično enko... Signal ne skoči na enko, ampak se počasi dviga po krivulji polnjenja kondenzatorja. To pomeni da output ni takoj logična ena in to negativno deluje na chip. Če damo med chip in senzor upor (v bližini senzorja) bo delalo tako: senzor da na izhod logično enko. Ker izhod senzorja ni vezan direktno na kapaciteto žice ampak na upor, bo takoj skočil na enko (brez počasnega dviga). Na drugi strani upora proti čipu bodo krivulje še vedno zaobljene, ampak senzorja to ne bo obremenjevalo.

To zadevo je težko opisati, ampak na osciloskopu se dobro vidi. Žal ne morem posneti. Z ascii grafiko pa zgleda približno tako:

_||_||_||_||_||_ signal na DS chipu (kratka žica) ali z uporom

_/|_/|_/|_/|_/|_ signal na DS chipu z dolgo žico (brez upora)


Zniževanje pullupa ne bo pomagalo. Vrednost je priporočena in če z njo ne deluje, mora biti nekaj narobe.

Jur
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
gnioco
Član
Član



Pridružen-a: Pon 26 Jan 2004 11:35
Prispevkov: 85
Aktiv.: 0.38
Kraj: Ljubljana

PrispevekObjavljeno: Pon Jan 09, 2006 3:57 pm    Naslov sporočila:   Odgovori s citatom

Jur,
Hvala za to nazorno pojasnilo Wink
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
pajo
Član
Član



Pridružen-a: Čet 29 Jan 2004 8:50
Prispevkov: 687
Aktiv.: 3.08

PrispevekObjavljeno: Sre Jan 12, 2011 10:37 pm    Naslov sporočila:   Odgovori s citatom

Sem imel podobne težave.
Sem skoraj zavrgel dva senzorja.
Torej na liniji cca 10m, sta mi dva senzorja od 4-ih povzročala težave. En je izpisoval neke nemogoče vrednosti, drugi pa je vztrajal pri vrednosti 0.

Pa sem probal eno preprosto stvar.
Upor 4,7k med +5V in data linijo sem na tiskanini pustil na mestu, kot to priporoča Datasheet. Sem pa dodal na koncu isti upor, vzporeno prvemu-torej med napajanje in data linijo, skoraj neposredno priklopljen upor na senzorje, pa je zadeva začela normalno delovati.

JUR! Hvala za opis podroben opis dvigovanja napetosti na data liniji!

_________________
Martin Krpan je že dobro vedel zakaj je posekal lipo.
Nazaj na vrh
Skrit 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 -> Periferija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3
Stran 3 od 3

 
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: 68 dni


Powered by phpBB © 2001, 2005 phpBB Group