ATNEL tech-forum
https://forum.atnel.pl/

DS18B20 - ID (odróżnienie czujników)
https://forum.atnel.pl/topic21850.html
Strona 1 z 1

Autor:  Tom92 [ 8 sty 2019, o 18:06 ]
Tytuł:  DS18B20 - ID (odróżnienie czujników)

Witam,

Mam problem odnośnie czujników DS18B20. Chodzi mi dokładnie o to, że mam np. dwa czujniki (temp_in, temp_out). Obydwa mierzą temperaturę i pokazują ją na wyświetlaczu. Poniżej kod z odczytu temperatury:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ale w powyższym kodzie wiadomo, że odróżnia te czujniki kolejność na magistrali 1-wire. I TERAZ jeżeli wyciągnę pierwszy w kolejności czujnik do się zaczyna mieszać, czyli w miejscu na wyświetlaczu gdzie ma pokazać error pierwszego czujnika pokazuje temperaturę drugiego czujnika, który wskoczył na jego miejsce. A w miejsce drugiego pokazuje error...

Dużo szukałem i natknąłem się na ten temat:
topic939.html
W opisie jest punkt 7, który mnie interesuje, a mianowicie przypisanie czujnika do odpowiedniego miejsca.

Nie wiem czy dobrze myślę, pomóżcie:
PRZED MAIN()
- powinienem odczytać id z dwóch czujników,
- wpisać id czujników do osobnych zmiennych np. temp_in, temp_out,
- zapisać te zmienne do pamięci EEPROM
W PĘTLI
- odczytać id z dwóch czujników,
- wpisać id czujników do osobnych zmiennych np. t1, t2,
- odczytać zmienne temp_in, temp_out z pamięci eeprom do ram
- porównać zmienne t1 == temp_in, t2 == temp_out
- jeżeli się zgadzają wyświetlić temperaturę, a jeżeli nie to wyrzucić error.

Zacząłem przerabiać powyższy kod i nie wiem czy jestem na dobrej drodze:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Lub może ktoś już napisał funkcję przypisującą czujnik do określonego miejsca i zechciałby się podzielić?

Pozdrawiam.

Autor:  roberto_k_w [ 8 sty 2019, o 19:02 ]
Tytuł:  Re: DS18B20 - ID (odróżnienie czujników)

Ahoj,
ja miałem przyjemność przypisywać ID czujników pojedynczo, poniżej funkcja przypisania Id czujnika z wykorzystaniem enkodera ;-)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Pozdrawiam

Autor:  Tom92 [ 9 sty 2019, o 18:11 ]
Tytuł:  Re: DS18B20 - ID (odróżnienie czujników)

Nie mam żadnych przycisków i enkodera w projekcie :P Dlatego problem rozwiązałem w inny sposób, żeby nowych funkcji nie tworzyć. Jakby ktoś miał taką potrzebę to podaję jak to zrobiłem.

Osobno napisałem programik odczytujący i wysyłający adresy czujników na terminal w takiej postaci:
Kod:
28866fcb080000b0


Następnie wpisałem go w kodzie w ten sposób do zmiennej temp_in:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I odczytuję temperaturę w ten sposób podając zmienną przechowującą odpowiedni adres czujnika:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Teraz czujniki się nie mieszają i nie jest pokazywana temperatura w zależności od kolejności na magistrali 1-wire. Wiadomo jak czujnik się uszkodzi to trzeba odczytać ID nowego czujnika i wpisać jego adres w miejsce starego :)

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/