Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterownik z 1wire - problemy z większą ilością czujników.

09 Lip 2008 22:41 1862 10
  • Tłumacz Redaktor
    Witam

    Buduję sterownik do kolektorów słonecznych oraz kilku innych urządzeń sterowanych zależnościami temperatur. Jako czujniki temperatury chcę wykorzystać popularne DS1820. Napisałem procedury obsługi 1wire zgodnie z dokumentacją Dallasa. Początkowo testy wykonywałem na 6 czujnikach podłączonych blisko siebie oraz blisko uC. Wszysto działa jak należy. Problem się zaczyna po podłączeniu kabli. Do testów użyłem popularnej skrętki. Poglądowy schemat załączam na rysunku. Nie potrafię zmusić wszystkich czujników do pracy.

    Sterownik z 1wire - problemy z większą ilością czujników.

    Podam kilka konfiguracji testowych:
    Podłączone czujniki:
    4, 5 - 4 działa prawidłowo, a z 5 brak komunikacji
    wszystkie - 4 i 5 działa prawidłowo, reszta brak komunikacji
    1, 2, 3 - wszystkie działają prawidłowo
    2, 3, 4, 5, 6 - 4 i 5 działa prawidłowo, reszta brak komunikacji
    4, 5, 6 - 4 działa prawidłowo, reszta brak komunikacji
    1, 2, 3, 4, 6 - 4 i 6 działają prawidłowo, reszta brak komunikacji
    1, 2, 3, 4 - 4 działa prawidłowo, reszta brak komunikacji

    Podłączenie gdziekolwiek jednego czujnika zawsze działa prawidłowo. Także podłączenie kilku czujników bardzo blisko siebie (jeżeli innych nie ma nalini) zawsze działa prawidłowo (w miejscu czujnika 4 podłączyłem 3 czuniki)

    Ten spis to taki przykładowy który przed chwilą zrobiłem. Męczę się już z tym 2 dni ale, komletnie z tego nie umiem wyciągnąć jakichkolwiek wniosków, tym bardziej że jak jutro wykonam te same testy to dadzą inne wyniki. Próbowałem zmieniać Pullu-pa na mniejszy - żadnej poprawy (obecnie jest 1k). Wkładałem rezystor pomiędzy uC a 1wire (50 om) - zaczęły występować błędy CRC, włożyłem pomiędzy nogę każdego Dallasa a magistralę rezystor (12 om) - żadnej poprawy. Zamieniałem czujniki miejscami - żadnej poprawy. Czujniki wkładam w podstawki precyzyjne, ale myślę, że nie powinno to wprowadzać jakiś dużych pojemności. Gdzieś w internecie znalazłem informację, że na pojemność całej magistrali nie może przekraczać 5nF. Biorąc pod parametry skrętki (80nF/km) nie przekraczam tej granicy. Podejrzewam, że problemem będą jakieś odbicia w lini. Niestety nie mam zielonego pojęcia jak walczyć z tym problemem. Przeszukałem google, niestety ciężko znaleźć projekt gdzie jest więcej niż 2 czujniki na jendej lini. Docelowo chciałem włożyc na magistralę ok 15 czujników, ale na chwilę obecną jestem zrezygnowany.

    uC to PIC z seri PIC18

    Ktoś ma na to jakiś pomysł?
    Będę wdzięczny za wszelkie porady od osób, które miały do czynienia z większą ilością urządzeń na 1wire lub wiedzą o co chodzi.
  • Poziom 34  
    Witam

    Pamiętaj że maksymalna długość przewodu 1-wire to 100stóp = 30m, a z tego co widać na twoim rysunku ma 38m.

    To może być przyczyną twoich problemów.

    Pozdrawiam
  • Tłumacz Redaktor
    Skąd wziąłeś informację o 30 metrach? Przy 12 metrach problem też występuje. Podłączając czujniki 1,2,3,4 odłączyłem wszystkie nadmiarowe kable.
  • Poziom 39  
    W jaki sposób zasilane są czujniki? Przez linię danych czy z osobnego przewodu?
  • Tłumacz Redaktor
    zasilanie z lini danych
  • Poziom 41  
    Na duże odległości muszą mieć dodatkowy przewód zasilający i przy każdym DS.. kondensator 100n na zasilaniu.
  • Tłumacz Redaktor
    Mam czujniki DS18S20-PAR czyli typowo przystosowane do pracy bez osobnej lini zasilania. Z dokumentacji wynika ze trzecia noga w ukladzie jest "Not Connected".

    Co to znaczy duża odległość?? W manualu do tego czujnika nie potrafię znaleźć takiej informacji.
  • Tłumacz Redaktor
    Dzieki za linka! Co prawda nie znalazłem tam nic o oganiczeniu do 100stóp czy 30m, ale mam zamiar zbudować jeden z zaproponowanych tam układów. Dam znać co mi z tego wyszło.
  • Poziom 38  
    U mnie jest 6 DS podłączonych na 50 m skrętki sterowane z ATmega32 z jednego pinu. Aby zapewnić poprawną transmisje musiałem zmniejszyć rezystor pomiędzy Vcc a linią danych do 820R.