Elektroda.pl
Elektroda.pl
X

Search our partners

Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

1Wire Know-How (DS18B20+, DS9097U-009)

hubert56 24 Jun 2009 11:36 5420 13
  • #1
    hubert56
    Level 11  
    Witam
    Mam pytanie odnośnie magistrali 1wire.
    Zależy mi na opinii osób które projektowały rozwiązania oparte na układach z magistralą 1wire.
    W chwili obecnej projektuje system kilku linii składający się z 15-20 czujników na około 40 metrowych przewodach. Częstotliwość odczytu około 1 godzina. Master DS9097U-009 plus zabezpieczenie DS9503. Poszczególne linię chcę multipleksować pomiędzy jednym masterem.
    Prawda że na elektroda.pl jest dość dużo artykułów nawiązujących do tematu ale można spotkać dość dużo sprzecznych opinii.

    To na co ja chciałem zwrócić uwagę to:



    1) Oparcie całego systemu na topologii magistrali, czyli grupa układów typu Slave zakończona masterem. Maxim/Dallas nie zaleca stosowania wszelkich gwiazd, rozgałęzień itp. kombinacji.
    2) Wykorzystanie 3 przewodowego modelu zasilania (Vcc, GND, DQ). "Parasite power" często jest przyczyną błędów i zakłóceń szczególnie przy większej ilości układów.
    3) Konieczności liczenie sumy kontrolnej CRC odczytów.

    Natomiast zastanawiam się nad następującymi kwestiami:
    1) Dobór kabla, myślę o przewodzie ekranowanym - LIYCY 3x0,14mm, czy jest sens (środowisko przemysłowe) spotkałem się z opinią że ekran wprowadza dodatkową pojemność.
    Jeśli jest sens to o czym należy pamiętać przy podłączaniu ekranu. Niektórzy zalecają również przewody słuchawkowe, telefoniczne. Dallas/Maxim zaleca „Category 5 phone cable”
    2) Czy jest sens izolowania galwanicznego mastera od linii slave.
    3) Jak rozwiązać kwestie zasilania


    Proszę o wyrozumiałość i Państwa opinię.

    Pozdrawiam
    HM
  • #2
    arrevalk
    Level 25  
    Co do twoich pytań:
    AD.1)Ekran jak najbardziej. Podłączony TYLKO z jednej strony np przy masterze.
    AD.2) Jest sens a nawet konieczność ze względu na odległości. Dodatkowo idealna była by transmisja różnicowa.
    AD.3)Np. zasilanie z jednej szyny DC z której każdy z czujników izolowaną przetwornicą DC/DC tworzy sobie napięcie.

    Najlepsze było by oparcie tego systemu o RS485/RS422. Ze względu na odległości i prostotę izolacji galwanicznej oraz transmisję różnicową. W punktach pomiarowych można przecież zastosować jakieś małe procesory (ATtiny lub PIC) które kosztują grosze
  • #3
    piti___
    Level 23  
    Wykorzystanie słabego kabla telefonicznego odpada. Ostatnio w projekcie na 5m kablu telefonicznym miałem duże problemy z transmisją na 1w. Okazało się że opór tych 5m wynosił ponad 50ohm, przy innym lepszym kablu sygnałowym na ponad 200m było około 15ohm i procedury 1w bez problemu działały.
  • #4
    hubert56
    Level 11  
    AD.1) OK, będę miał na uwadze.
    AD.2) RS485/RS422 jest często wykorzystywany przy takich instalacjach. Ale w moim przypadku gdzie odległość pomiędzy pierwszym slavem i masterem to tylko kilka metrów (około 5-10m), częstotliwość odczytów jest dosyć mała jak również jest możliwość liczenia CRC , to konwersja sygnałów wydaje mi się zbędna. Opis standardu 1wire mówi w zależności o zastosowanego mastera o długościach dochodzących do 500 metrów. Dokument AN148 mówi że przy zastosowaniu prostego mastera DS9097U (DS2480B) wraz z prostym filtrem RC waga sieci może osiągnąć 200 metrów (każdy DS18B20 to +0,5 m, kabel max 50 metrów całość osiągnie maksymalnie 65 metrów). Jeszcze jedno punkty pomiarowe będą w osłonie, średnica kabla wraz z czujnikiem nie może przekroczyć 7 mm.


    Odnośnie kabla taką odpowiedz dostałem od wsparcia technicznego Maxim/Dallas:

    | The best cable for 1-Wire applications is the unshielded twisted pair,
    | which is often called Category 5 phone cable. Typically such cables
    | have 2 or more pairs.

    Ja chciałem zastosować przewód ekranowany - LIYCY 3x0,14mm 138,0 [W/km].

    Jeszcze mam pytanie odnośnie podciągania linii DQ do zasilania przez rezystor 4,7 kOhm. Czy przy zasilaniu 3przewodowym jest taka konieczność.

    Pozdrawiam
    HM
  • #5
    marekos
    Level 16  
    hubert56 wrote:

    Jeszcze mam pytanie odnośnie podciągania linii DQ do zasilania przez rezystor 4,7 kOhm. Czy przy zasilaniu 3przewodowym jest taka konieczność.


    Tak, ponieważ układy na 1wire wymuszają stan tylko niski natomiast stan wysoki jest cały czas i to właśnie ten rezystor wymusza ten stan.
  • #6
    hubert56
    Level 11  
    Witam, mam jeszcze jedno pytanie czy rezystor wymuszający stan wysoki musi być przy każdym czujniku, czy tylko przy masterze. Dodam że w chwili obecnej uruchomiłem jedną linię bez rezystora/rezystorów i działa prawidłowo może poza faktem że od czasu do czasu czujnik wskazuje temperaturę 85 'C.
    Link do schematu

    Pozdrawiam i proszę o odpowiedź.
  • #7
    CDMaster
    Level 14  
    Wystarczy jeden, ale za to musi być odpowiednio mały, by pull-up był odpowiednio silny. Tak na pewno musi być w przypadku zasilania pasożytniczego, ale możliwe, że przy normalnym zasilaniu można zrezygnować z rezystora:D Już kiedyś czytałem na angielskiej wiki:
    Quote:
    Serial or USB "bridge" chips are also available that handle the timing and waveform requirements of the 1-Wire bus, and are particularly useful in utilizing long (greater than 100 m) cables effectively. 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Ω.

    Masz tu chyba odpowiedzi na wszystko:D A moim skromnym zdaniem w razie czego po prostu tylko zwiększ opóźnienia i powinno działać:D
    Pozdrawiam
  • #8
    mirekk36
    Level 42  
    hubert56 --> skoro czytałeś już wiele postów n/t łączenia wielu czujników na magistrali 1Wire - gdzie jej długość to ok 40m, to powinieneś zauważyć, że:

    1. długość magistrali może być nawet i 50m - 60m tylko trzeba dać odpowiedni kabel - i nie żadne tam telefoniczne, linki, lice czy jakieś ekranowane - wystarczy że dasz najnormalniejszy kabel skrętkowy Kategorii 5 (taki jak do sieci komputerowych) i nie żaden ekranowany - a gwarantuję ci, że będzie ci to śmigało bez najmniejszego bólu jeśli o długość i kabel się rozchodzi (sam robiłem taką magistralę w domku - o dł około 50m - gdzie skrętka - przechodziła przy różnych stycznikach, leciała w torach zasilania 220V itp itd)

    2. oczywiście najlepiej zastosować 3 przewodową magistralę a linię danych koniecznie/bezwzględnie podciągnąć jednym rezystorem do VCC a szczególnie gdy ma być jakaś dłuższa magistrala. Kombinacje bez tego rezystora zawsze będą się kończyły błędami i już. Rezystor tylko jeden i przy masterze - a nie przy każdym czujniku.

    3. oczywiście, że zawsze korzystać z CRC8 i sprawdzania PresencePulse po odczycie temperatury. Jeśli co jakiś czas zdarza ci się że pojawia się 85st C - to masz przykład - pokiełbaszonej magistrali i/lub softu. Zauważ, że gdy podasz pierwszy raz zasilanie na czujnik - następnie podasz polecenie odczytu temperatury ale bez wcześniejszego polecenia wykonania pomiaru/konwersji - to normalna rzeczą jest że w takim przypadku zawsze będzie pokazywał ci 85st C (opisane jest to w nocie PDF). Skoro w trakcie działania tak się dzieje, że co jakiś czas wskakuje 85st C - to właśnie może z powodu kiepskiej magistrali czujnik się kompletnie resetuje - albo masz jakieś problemy z kodem do obsługi czujników - sprawdzaniem CRC itp

    4. czy jest sens izolowania galwanicznego - hmmm trochę to chyba bez sensu gdy zasilanie puszczane jest z układu mastera a nie każdy czujnik zasilany osobno na magistrali. Jak mówiłem wyżej - kup sobie 40-50m skrętki i przylutuj na niej co jakiś odcinek same czujniki do 3 żył. Sam zobaczysz że wszystko będzie śmigać dobrze

    5. oczywiście podstawa to też dobrze odfiltrowane zasilanie i wszędzie gdzie można w układzie mastera dać kondensatorki po 100nF - w tym jeden tuż przy pinach zasilania wychodzącego na magistralę.
  • #9
    hubert56
    Level 11  
    Witam, dziękuje za odpowiedz.
    Cała niepewność bierze się stąd że jednocześnie próbuje dojść prawdy w maxim-ic.
    Taką oto odpowiedz dostałem dzisiaj od inżyniera maxima: "Place a 4.7kohm resistor between Vdd and DQ at every sensor."
    Do odczytu temperatury używam DLL dostarczonych przez maxima.
    O zakłócenia się boję bo sonda będzie uruchomiona w warunkach przemysłowych (falowniki, silniki, itd., itp.).

    Pozdrawiam
    hm
  • #10
    BoskiDialer
    Level 34  
    Zastosowanie skrętki wymusza zastosowanie tylko dwóch przewodów - zakłócenia indukują się w obu przewodach pary w takim samym stopniu, a więc się znoszą - pojawia się co najwyżej różnica potencjałów pomiędzy końcami, ale różnica w parze jest zachowana. Puszczenie zasilania jedną żyłą z innej pary spowoduje, że układ będzie wrażliwy na zakłócenia właśnie z tej linii.
  • #11
    kulmar
    Level 28  
    Przeczytałem te zalecenia z Dallasa (w tym wątku) odnośnie stosowania skrętki i mam watpliwości - który właściwie sygnał zostanie podany na drugi przewód skrętki ? Bo rozumiem, że jeden z przewodów jest właśnie magistralą 1-Wire. Jeśłi ktoś z Kolegów mógłby rozjaśnić problem, to będę wdzięczny.

    Pozdrawiam

    Mariusz
  • #12
    hubert56
    Level 11  
    Uzasadnienie dlaczego niezbędny jest rezystor przy każdym komponencie Slave.

    You are safer having a pull-up at each component so there is no degradation in I/O switching, as a direct function of the distance to the Master.

    Every foot of wire has capacitance, and it adds.
  • #13
    kulmar
    Level 28  
    hubert56 wrote:

    W chwili obecnej projektuje system kilku linii składający się z 15-20 czujników na około 40 metrowych przewodach. Częstotliwość odczytu około 1 godzina. Master DS9097U-009 plus zabezpieczenie DS9503. Poszczególne linię chcę multipleksować pomiędzy jednym masterem.



    Czy sumaryczna liczba czujników to 15-20, czy też jest to liczba czujników na jednej linii ? Bo to uzasadnienie Dallasa lekko się czyta, ale parametry czujników DS18B20 są podawane dla prądu w stanie niskim = 4mA, co w praktyce oznacza, że zastępcza rezystancja wszystkich podłączonych do linii rezystorów nie powinna być mniejsza niż 1k. I oczywiście można przyjąć proponowane przez nich rozwiązanie, odpowiednio przeliczając pojedynczy rezytor. Ale czy taka linia nie będzie w przyszłości rozszerzana o kolejne czujniki, bo wtedy może się okazać, że taka rozbudowa wymaga przeróbki wszystkich istniejących i już podłączonych węzłów ?

    Pozdrawiam

    Mariusz
  • #14
    hubert56
    Level 11  
    Docelowo przewiduje około 100 linii po 15-20 czujników.
    Linie z pewnością nie będą zmienianie.

    Pozdrawiam
    hm