8 x DS na ESP

Post Reply
User avatar
wojtas567
Posts: 1367
Joined: Sun Apr 03, 2016 7:16 pm
Location: Olsztyn

Mon Oct 29, 2018 8:15 pm

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.
Attachments
Supla_DS8_START.rar
(3.06 KiB) Downloaded 193 times
Last edited by wojtas567 on Tue Oct 30, 2018 9:14 pm, edited 1 time in total.
Pozdrawiam
Wojtek
PioKar
Posts: 151
Joined: Thu May 03, 2018 5:56 am

Tue Oct 30, 2018 4:34 pm

Jak ja bym chciał dostać łopatologię do odczytania adresów i wgrania na "coś co zadziała".
Naprawdę Was szanuję :)
User avatar
slawek
Posts: 2035
Joined: Mon Mar 14, 2016 11:48 pm
Location: Biała Podlaska

Tue Oct 30, 2018 4:51 pm

Adresy odczyta ci po starcie i wyświetli w konsoli - potwierdzam - działa...
Gdy wszystkie możliwe sposoby zawiodą - pozostaje przeczytać instrukcję...
User avatar
wojtas567
Posts: 1367
Joined: Sun Apr 03, 2016 7:16 pm
Location: Olsztyn

Tue Oct 30, 2018 4:52 pm

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

Code: Select all

DeviceAddress osiem = { 0x28, 0x37, 0x1B, 0xCB, 0x05, 0x00, 0x00, 0xE2 }; 
Pozdrawiam
Wojtek
User avatar
Espablo
Posts: 1339
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim
Contact:

Tue Oct 30, 2018 5:00 pm

A testowałeś tak, raz uruchomić

Code: Select all

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

Code: Select all

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:
https://github.com/Espablo
User avatar
wojtas567
Posts: 1367
Joined: Sun Apr 03, 2016 7:16 pm
Location: Olsztyn

Tue Oct 30, 2018 5:09 pm

Trochę inaczej w sumie podobnie ale wtedy jest tylko jeden odczyt przy starcie i już koniec ale sprawdzę tą kombinację.
Pozdrawiam
Wojtek
User avatar
Espablo
Posts: 1339
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim
Contact:

Tue Oct 30, 2018 5:21 pm

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:
https://github.com/Espablo
bulek68
Posts: 70
Joined: Thu Feb 08, 2018 6:51 pm

Tue Oct 30, 2018 5:34 pm

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
Posts: 42
Joined: Sun Sep 17, 2017 12:30 pm

Tue Oct 30, 2018 5:45 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.
User avatar
slawek
Posts: 2035
Joined: Mon Mar 14, 2016 11:48 pm
Location: Biała Podlaska

Tue Oct 30, 2018 5:49 pm

Zari wrote:
Tue Oct 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ął
Gdy wszystkie możliwe sposoby zawiodą - pozostaje przeczytać instrukcję...
Post Reply