8 x DS na ESP

Awatar użytkownika
wojtas567
Posty: 2209
Rejestracja: ndz kwie 03, 2016 7:16 pm
Lokalizacja: Olsztyn

Na początek muszę powiedzieć, że nie jest to jeszcze ideał ale działa :) przynajmniej na biurku
a teraz do rzeczy.
Udało mi się poprawić i dodać kilka drobiazgów dzięki którym 8 czujników DS działa.
W załączeniu soft który na początku odczytuje do 8 czujników i podaje takie informacje:
  • czy czujnik/czujniki są zasilane pasożytniczo
  • adresy urządzeń
  • rozdzielczość (o tym później za chwilę)
  • no i temperatury z poszczególnych DS
Oczywiście działa opcja aktualizacji przez www

Po odczytaniu adresów najlepiej przepisać je do linijek jak poniżej:
DeviceAddress jeden = { 0x28, 0xFF, 0xE8, 0x00, 0xB6, 0x16, 0x03, 0x65 };

na początku skieczu opisałem też co należy usunąć jak już wpiszemy wszystkie adresy.

Teraz trochę informacji o tym co to jest "rozdzielczość" odczytu czujników DS.

Dla 9 bitów są 2 podziałki między kolejnymi stopniami: 0,0 0,5
Czyli możemy odczytać temperaturę z rozdzielczością 0,5 °C. Dla tej rozdzielczości czas pomiaru wynosi 93,75 ms. Czyli możemy wykonywać 10,6 pomiarów na sekundę.

Dla 10 bitów są 4 podziałki między kolejnymi stopniami: 0,0 0,25 0,5 0,75
Tu odczytujemy temperaturę z rozdzielczością 0,25 °C. Czas pomiaru dla tej rozdzielczości wynosi 187,5 ms, co pozwala na 5,3 pomiarów na sekundę

Dla 11 bitów jest 8 podziałek między kolejnymi stopniami: 0,0 0,125 0,25 0,375 0,5 0,625 0,75 0,875
Czyli rozdzielczość wynosi 0,125 °C Czas pomiaru dla tej rozdzielczości wynosi 375 ms. co pozwala na 2,6 pomiaru na sekundę.

Dla 12 bitów jest 16 podziałek między kolejnymi stopniami: 0,0 0,0625 0,125 0,1875 0,25 0,3125 0,375 0,4375 0,5 0,5625 0,625 0,6875 0,75 0,8125 0,875 0,9375
Czyli rozdzielczość jest na poziomie 0,0625 °C Czas pomiaru wynosi w tym przypadku 750 ms, czyli możesz dokonać 1,3 pomiaru na sekundę.

Standardowo DS jest ustawiony na 12 bitów i w zasadzie jeden pomiar na ok 1 sekundę to teoretycznie ESP daje radę razem z SUPLĄ ale,
pytanie czy nam jest potrzebna taka dokładność? schodząc do 10 bitów odczyt z czujników jest już na poziomie zadowalającym ni najważniejsze działa odczyt z 8 czujników.

Druga sprawa i tu zwracam się z pytaniem i prośbą o pomoc odnośnie pętli odczytu czujników, zauważyłem, że funkcja
sensors.requestTemperatures();
odczytuje wszystkie czujniki na raz i w zasadzie wystarczyło by teraz te dane rozesłać na poszczególne kanały, w programie natomiast jest tak, że odczyt z czujników jest 8 razy a to spowalnia wyświetlanie pomiarów.
Na dzień dzisiejszy nie potrafię tego w SUPLI zmienić, ale może komuś się to uda.

*************************
Zmodyfikowałem odczyt i wysyłkę z DS odczyt jest tylko raz a potem wysyłka i faktycznie różnica jest widoczna :).
Dzięki Espablo za podpowiedz.
Załączniki
Supla_DS8_START.rar
(3.06 KiB) Pobrany 764 razy
Ostatnio zmieniony wt paź 30, 2018 9:14 pm przez wojtas567, łącznie zmieniany 1 raz.
Pozdrawiam
Wojtek
PioKar
Posty: 411
Rejestracja: czw maja 03, 2018 5:56 am

Jak ja bym chciał dostać łopatologię do odczytania adresów i wgrania na "coś co zadziała".
Naprawdę Was szanuję :)
Awatar użytkownika
slawek
Posty: 2465
Rejestracja: pn mar 14, 2016 11:48 pm
Lokalizacja: Biała Podlaska

Adresy odczyta ci po starcie i wyświetli w konsoli - potwierdzam - działa...
TEORIA jest wtedy gdy wszystko wiemy i nic nie działa
PRAKTYKA jest wtedy gdy wszystko działa a my nie wiemy dlaczego
My łączymy teorię z praktyką czyli nic nie działa i nikt nie wie dlaczego
Awatar użytkownika
wojtas567
Posty: 2209
Rejestracja: ndz kwie 03, 2016 7:16 pm
Lokalizacja: Olsztyn

Wgraj soft przez arduino, włącz terminal i adresy Ci się wyświetlą.
w takiej postaci : 28371BCB050000E2 a trzeba zmienić na postać jak poniżej

Kod: Zaznacz cały

DeviceAddress osiem = { 0x28, 0x37, 0x1B, 0xCB, 0x05, 0x00, 0x00, 0xE2 }; 
Pozdrawiam
Wojtek
Awatar użytkownika
Espablo
Posty: 1754
Rejestracja: śr cze 29, 2016 5:04 pm
Lokalizacja: Oświęcim
Kontakt:

A testowałeś tak, raz uruchomić

Kod: Zaznacz cały

sensors.requestTemperatures() 
I potem odczytywać stany z poszczególnych czujników np tak

Kod: Zaznacz cały

t1= sensors.getTempC(jeden);
t2 = sensors.getTempC(dwa);
itd... 
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
Awatar użytkownika
wojtas567
Posty: 2209
Rejestracja: ndz kwie 03, 2016 7:16 pm
Lokalizacja: Olsztyn

Trochę inaczej w sumie podobnie ale wtedy jest tylko jeden odczyt przy starcie i już koniec ale sprawdzę tą kombinację.
Pozdrawiam
Wojtek
Awatar użytkownika
Espablo
Posty: 1754
Rejestracja: śr cze 29, 2016 5:04 pm
Lokalizacja: Oświęcim
Kontakt:

Tak sobie jeszcze myślę, że z tymi adresami to trochę kłopot jest. Możesz zrobić tak że na początku tworzysz pustą tablicę adresów w eepromie. W setup sprawdzasz czy tablica jest pusta. Jeśli tak, to sprawdzasz adresy czujników i zapisujesz do tablicy. Potem tylko odnosisz się już do adresów w tablicy. Gdy tablica będzie już zapisana to już nie odczytujesz adresów.
Można jeszcze dołożyć jakąś funkcję gdy będziesz chciał wymienić czujnik na nowy. Zerowanie tej tablicy lub jeszcze inaczej.
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
Awatar użytkownika
bulek68
Posty: 453
Rejestracja: czw lut 08, 2018 6:51 pm
Lokalizacja: Podkarpackie

Zielony jestem więc wybaczcie:
Rozumem że 8xDS to na jednym GPIO?
Czy nie łatwiej jest ogarnąć multipomiar wykorzystując różne GPIO?

Wiem, wiem takie rozwiązanie pozwala użyć w zasadzie każde urządzenie oparte o esp8266. Ale z drugiej strony taki wemos majątku nie kosztuje a ma wprowadzone kilka GPIO.

Jeśli coś porecilem proszę bez nagonki 😅
Zari
Posty: 42
Rejestracja: ndz wrz 17, 2017 12:30 pm

Panowie kombinujcie kombinujcie :D Ja w te klocki za słaby jestem a potrzebuję dla znajomego pomiar temperatury z kilku czujników.
Wgrałem mu już raz soft od Zybiego ale niestety był on dla konkretnego nodemcu i 8 sztuk DS18b20 to za mało ;)
Nadmienię że poza tym że soft był kompilowany dla konkretnego ESP8266 adresy czujników nie miały znaczenia, przynajmniej z punktu widzenia użytkownika.

8 DS na jednym GPIO nie jest raczej problemem. Problem leży w połączeniu z Suplą, tak mi się przynajmniej wydaje.
Ostatnio wgrałem sobie soft z elektrody https://www.elektroda.pl/rtvforum/topic3357545.html i na thingspeak ładnie idzie odczyt z 3 DS na jednym GPIO.
Awatar użytkownika
slawek
Posty: 2465
Rejestracja: pn mar 14, 2016 11:48 pm
Lokalizacja: Biała Podlaska

Zari pisze: wt paź 30, 2018 5:45 pm ... adresy czujników nie miały znaczenia, przynajmniej z punktu widzenia użytkownika.
A co będzie gdy jeden się uszkodzi/odetnie?
A z adresami wiesz, który zaszwankował lub zginął
TEORIA jest wtedy gdy wszystko wiemy i nic nie działa
PRAKTYKA jest wtedy gdy wszystko działa a my nie wiemy dlaczego
My łączymy teorię z praktyką czyli nic nie działa i nikt nie wie dlaczego
ODPOWIEDZ

Wróć do „Nowości”