Wpis z mikrobloga

Mirki, ile maksymalnie czujników #ds18b20 można podłączyć do jednego pinu w #arduino?
Jeśli dobrze widziałem w specyfikacji, czujnik pobiera maksymalnie 4mA.
Nie wiem czy dobrze rozumiem, ale przy podłączeniu pasożytniczym czujnik pobiera prąd także z linii danych, która w Arduino Uno ma wydajność ok. 20 mA, tak więc pewnie to będzie ograniczeniem.
Pytanie tylko, ile dokładnie mA pójdzie z pinu w Arduino, a ile z linii zasilającej połączonej przez rezystor z linią danych.
Czy przy podłączeniu trzema przewodami, prąd pobierany z linii danych jest minimalny, więc można go pominąć, np. przy 20 czujnikach?
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@szynka_reksia: większą ilość w trybie pasożytniczym można podpiać stosując "hard pullup" (czy jakoś tak), tj. tranzystor podciągająccy linie do 5v podczas ładowania wewnetrznego kondensatora w ds18
  • Odpowiedz
@zachwiej: @szynka_reksia:
Najsensowniejszym bezpiecznym i mądrym używaniem DS18b20 jest nie "parasite power" a prawdziwe zasilanie, czyli normalne 3 druty (gnd, 1wire, Vcc). Wtedy cały prąd, jaki DS18b20 pobiera z zasilania - idzie z zasilania.
W przeciwnym wypadku DS "kolekcjonuje" stan wysoki z linii danych do swojego małego wewnęrznego kondensatorka, by mu wystarczyło zasilania na czas stanów niskich na magistrali. Co oczywiście obciąża magistralę 1wire.

Sama magistrala 1wire w
  • Odpowiedz
@szynka_reksia: Jak chcesz dużo, daleko i na dziwacznej topologii to magistralę przez driver DS2480B. Miałem podpięte mniej więcej 20 czujników do RPi przez GPIO i średnio działały. Część była na krótkiej - kilku metrowej pętli, jeden na 20m, wszystko szło po cat5e, spięte dość dziko czyli jakieś 2-3 gwiazdy połączone w super (roz)gwiazdę ;-) Czyli tak jak były kable... Jak szło to przez GPIO to część działała, część nie, co
  • Odpowiedz
@szynka_reksia: @hrumque: Sam odpaliłem bardzo "brudną" magistrale onewire na budynku 27 ds'ów i do tego topologia multi gwiazdy na odległosć ze 100m (w lini prostej, długości kabla nie zlicze) :D Czyli nie ma gorszego scenariusza wg tego co pisze w datasheet, i działa do dziś. Ale zasilanie było osobno puszczone.
  • Odpowiedz
Przeczytanie wszystkich czujników w maksymalnej rozdzielczości trwa około minuty... weź to pod uwagę.


@kwanty: to jakiś błąd chyba. Przecież wysyłasz "start measure" do wszystkich, bez adresu, i wszystkie równocześnie wykonują pomiar w tym samym czasie, a ty odliczasz dla spokoju te 1.5-2s, a potem odczytujesz po kolei wynik z każdeg.
1wire może szybkie nie jest, ale bez przesady - odczytanie wyniku z jednego czujnika, wraz z procedurą resetu trwa jakieś
  • Odpowiedz
@zachwiej: @hrumque: @kwanty: Dziękuję Panowie za odpowiedzi. Planuję podłączenie czujników w domu właśnie na strukturze gwiazdy po skrętce, gdzie do niektórych odgałęzień będzie max 10 m, a na niektórych będzie po kilka czujników.
Na razie mam 4 czujniki z Botlandu (podłączone dopiero 2), a kolejne płyną z Chin.
Muszę też zmienić to na połączenie przez 3 przewody.
Jeśli pojawią się jakieś problemy, będę próbował z tym
  • Odpowiedz
DS2480B (tylko muszę poczytać jak to w ogóle podłączyć z Arduino).


@szynka_reksia: Prosto i banalnie - RxD i TxD prost z pinów arduino, uart. I gadasz z nim jak z urządzeniem szeregowym, nie przejmując się wcale 1wire sprawami, timingami itd. Wszystkiego pilnuje ten układ.
http://datasheets.maximintegrated.com/en/ds/DS2480B.pdf
Przykładowo: zamiast pilnować timingów każdego bitu 1wire, arduino robisz "wyślij 'c1' na usart" i gotowe - DS sam wysyła reset do urządzeń na 1wire.
Jakbyś
  • Odpowiedz
to jakiś błąd chyba. Przecież wysyłasz "start measure" do wszystkich, bez adresu, i wszystkie równocześnie wykonują pomiar w tym samym czasie, a ty odliczasz dla spokoju te 1.5-2s, a potem odczytujesz po kolei wynik z każdeg.

1wire może szybkie nie jest, ale bez przesady - odczytanie wyniku z jednego czujnika, wraz z procedurą resetu trwa jakieś 6ms


@hrumque: Hmm... nie wiem jak to jest zaimplementowane, ja używałem bibliotek wysokopoziomowych, ostatecznie
  • Odpowiedz