logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Wzmacniacz sygnału 1-Wire do DS18B20 i ATMEGA162 – jak zwiększyć zasięg do 50m?

vir2000 26 Wrz 2009 16:36 3388 4
REKLAMA
  • #1 7060196
    vir2000
    Poziom 11  
    Posty: 74
    Ocena: 5
    Witam,

    Jakiś czas temu zacząłem budowę termometru wielopunktowego opartego na ATMEGA162 i DS18B20.
    Układ działa super, do wejścia 1wire podłączyłem 17 czujek temperatury i wszystko śmigało jak należy ale niestety po podłączeniu czujek przez skrętkę już tak cudownie nie jest.
    Między układem ATMEGA a DSami jest dość duża odległość nawet do 50m.
    W momencie kiedy odłączyłem dalsze czujki to uprocek wykrył mi 5 czujek (te bliższe) ale w momencie kiedy chciałem podłączyć kompa pod RSa żeby odczytywać dane na kompie to już wszystko się waliło (na wyświetlaczu już nie pokazywały się wartości...), po odłączeniu RSa wszystko wracało do normy.

    I tu mam pytanie, czy jest już jakiś gotowy element który mógłbym wykorzystać do budowy tego wzmacniacza czy może wystarczy że dam lepsze zasilanie na wejściu?
  • REKLAMA
  • #2 7110482
    ciacho23
    Poziom 11  
    Posty: 21
    Pomógł: 1
    Ocena: 32
    Na długich przewodach powstają odbicia sygnałów powodujące zakłócenia w odbiorze danych przez mikrokontroler.
    Ja mam obecnie do jednej szyny podłączonych 5 dallasów i długość przewodu okolo 150m. (skrętka kat. 5) a całość podłączona jest w topologi pnia. Linia podciągnięta rezystorem 1k. przy mikrokontrolerze Aby uporać się z zakłóceniami w programie znacznie wydłużyłem czas T rec. -jest to czas odczekania między odczytem kolejnego bitu. W dokumentacji jest napisane że musi on byś większy od 1us. i może przyjmować wartości aż do nieskończoności.
    W moim przypadku zwiększyłem go do 400us. i zakłócenia znacznie ustały- ale szybkość transmisji znacznie spadła.
    Dodam jeszcze że na długich przewodach czas próbkowania(tj. czas po którym mikrokontroler sprawdza stan portu) należy również zwiększyć. W dokumentacji jest napisane, że procesor po zwolnieniu linii powinien ją sprawdzić od 1 do 15us. U mnie to nie działało!! Dopiero zwiększenie tego czasu do 30us. pomogło:).

    Dodam taką ciekawostkę, że linia u mnie jest poprowadzona w powietrzu na słupach i częściowo w szklarniach. Gdy temperatura na zewnątrz sięgała powyżej 30 st. zaczęły się zakłócenia:(. Przy temperaturze od 10 st. do 25 st. wszystko śmigało dobrze. Taki problem występował też przy niskich temperaturach poniżej 4 st. I najciekawsze jest to że najpierw zakłócenia powstawały na czujnikach znajdujących się na środku linii. Ten najbardziej oddalony odpowiadał dobrze.
  • REKLAMA
  • #3 7125753
    sebazaz
    Poziom 14  
    Posty: 68
    Pomógł: 5
    Ocena: 7
    Jak podłączyłeś DS18B20, dwoma czy trzema przewodami?
    Ja zrobiłem termometr na siedmiu czujnikach przy odległości do ostatniego około 120m.
    Problemy ustały po następujących zabiegach:
    - przejście na podłączenie trzema przewodami
    - zmniejszenie rezystora podciągającego do 1k2
    - dodanie elektrolitu 47u na linii zasilającej przy każdym czujniku.
    - zwiększenie czasów jak pisał ciacho23 tylko nie pamiętam o ile
    Układ pracuje poprawnie od trzech lat i sporadycznie zdarza się fałszywy odczyt, co jest eliminowane programowo.
    Pozdrawiam.
  • REKLAMA
  • #4 7132172
    gothye
    Poziom 33  
    Posty: 2421
    Pomógł: 183
    Ocena: 60
    Również potwierdzam ,2ds18b20 na 100mb skrętki działają :) ,z tym, że rezystor podciągający do +V to 1k . Poza tym - jeśli planujesz większe odległości, to lepiej użyć rs485, dzięki temu możesz do 1200mb używać szyny ;)

    Poprawiłem pisownię. Proszę przestrzegać p.15 regulaminu lub - kosz.
    /prezeswal/.
  • #5 7505972
    vir2000
    Poziom 11  
    Posty: 74
    Ocena: 5
    Tak nie ma większego problemu w połączeniu jednego lub kilku DS18B20 jeżeli:
    -czujniki końcowe są blisko siebie i połączone z mikroprocesorem jednym przewodem
    -czujniki końcowe są na osobnych kablach o takiej samej długości

    Niestety jeśli (tak jak w moim przypadku) czujniki są w różnych odległościach czasami również na różnych kablach to zaczynają się schody. Problem stanowi napięcie na magistrali. Jeżeli napięcie jest zbyt duże "zagłuszane" są czujniki najbliżej mikroprocesora, jeśli poziom napięcia jest za duży to czujniki najdalej od mikroprocesora są "głuche". Parę razy udało mi się wycentrować napięcie tak aby działały wszystkie czujniki ale niestety po podłączeniu komputera przez rs232 już się wszystko sypało. Zbudowałem dodatkowo separator galwaniczny by oddzielić te dwa napięcia i problem znikł ale niestety nie udało mi się znaleźć takiego napięcia na magistrali aby wszystkie czujki działały jednocześnie. Teraz gdy będę miał czas przerobie układ aby miał 2 oddzielne magistrale 1wire.

    Jeśli ktoś jest zainteresowany schematami i wsadem do mikroprocesora to proszę o informację, w wolnej chwili skompletuję to co mam i zamieszczę na elektrodzie.
REKLAMA