softwarowe rozpoznanie DS18b20, s20 i 20?

Jan 26, 2013 9 Replies

Robię mikro-terometro-termostacik (wyświetlacz 88 dla temperatur



+99/-9'C i wystarczy, ustawianie progu włącz/wyłącz przekaźnik), który będzie miał podłączane czujniki dallasa DS18_20. Problem w tym, że układ ma być maksymalnie prosty, łatwy do naprawy, wymiany czujnika itp, więc:

- ma działać z każdym czujnikiem (bez rozpoznawania jego nr seryjnego)



- ale ma działać też z każdym czujnikiem, tzn DS18B20, S20, i 20, a jednak różnią się one troszkę w zawartości rejestrów/odczycie.



Więc powstaje pytanie - czy jest jakaś (oficjalna? sprawdzona?) metoda rozpoznawania softwarowego, czy podłączony 1wire jest _S20, _B20 czy _20?



Można by teoretycznie sprawdzać domyślne wartości w "Scratchpad Memory": DS18S20 DS18B20 byte 0 Temperature LSB (AAh) Temperature LSB (50h) byte 1 Temperature MSB (00h) Temperature MSB (05h) byte 2 TH Register TH Register byte 3 TL Register TL Register byte 4 Reserved (FFh) Configuration Register byte 5 Reserved (FFh) Reserved (FFh) byte 6 Count Remain (0Ch) Reserved byte 7 Count Per °C (10h) Reserved (10h) byte 8 CRC CRC Np czy byte4=FFh czy coś innego, ale jeśli w 18b20 conf będzie =FFh ?



Może w numerze "mac" seryjnym jest jakoś zaszyta wersja czujnika? Przeglądając dokumentacje widzę zapisy:



The least significant 8 bits of the ROM code contain the DS18B20’s 1-Wire family code: 28h.
> The first eight bits are a 1–Wire family code (DS1820 code is 10h)
> The least significant 8 bits of the ROM code contain the DS18S20’s 1-Wire family code: 10h.

Prawie że fajnie, ale jak rozpoznać między ds1820 a ds18s20, skoro mają family=10h?

BartekK wrote: [..]

nie

[..]

Zrezygnuj z obsługi dowolnego czujnika na rzecz kompatybilnego.

W dniu niedziela, 27 stycznia 2013 01:11:46 UTC+1 użytkownik AlexY napisał:

tez mi sie tak wydaje -co za problem opisać że uszkodzony czujnik należy wymienic na ds18b20 i tylko taki. One są ogólnie dostępne, i tak trzeba isc do sklepu i kupic , wiec sie kupi akurat ten. To nie jest ograniczenie.

Ale gdybys problem rozwiązał to napisz cos :)

b.

"BartekK" snipped-for-privacy@drut.org schrieb

A czy na pewno Ci potrzebne odroznianie ich? One jak widze maja dostep niemal identyczny

mw

sposób kodowania wyniku jest inny

U¿ytkownik "mw158979" snipped-for-privacy@tam.pl napisa³ w wiadomo¶ci news:51053780$0$26691$ snipped-for-privacy@news.neostrada.pl...

Kiedy¶ napisa³em ma³y sofcik na mega8 do destylarni jakiej¶. Ch³op do mnie ¿e ma swój czujnik ju¿ zarobiony i wkrêcony w gilzê. Ja mu ¿e ma byæ taki a taki. On mi ¿e OK akurat taki tam jest. Okaza³o siê jednak ¿e ma inny i by mu siê ugotowa³o.

Marek

"AlexY" snipped-for-privacy@irc.pl schrieb

Ja widze, ze jednakowy.

mw

Oj bardzo ale to bardzo nie chce mi się PDFów otwierać...

W dniu 2013-01-31 01:18, AlexY pisze:

A ja nie muszę otwierać PDFów by powiedziec, że sposób kodowania jest ten sam (zasada) ale zapis w 18b20 jest przesunięty z powodu na regulowaną rozdzielczość 9-12bit, z tego co widzę to gdy ustawimy mu rozdzielczość 9bit, to po przesunięciu - zapis będzie identyczny jak w

18s20. (Z = znak, T=temperatura, x = nieistotne) DS18b20 12bit : ZZZZ ZTTT TTTT TTTT DS18b20 11bit : ZZZZ ZTTT TTTT TTTx DS18b20 10bit : ZZZZ ZTTT TTTT TTxx DS18b20 9bit : ZZZZ ZTTT TTTT Txxx DS18_20 9bit : ZZZZ ZZZZ TTTT TTTT

- jak widać wystarczy powyższe przesunąć w prawo o 3 bity uzupełniając znakiem Z i jest to samo. Ale trzeba najpierw wiedzieć że mamy to zrobić, bo mamy _20 lub S20 a nie B20

W dniu 2013-01-31 10:55, BartekK pisze:

Tfu, dla dostosowania zapisu z ds18s20 do b20 - w lewo, niczym ciekawym nie uzupełniając ;) a dla dostosowania zapisu z ds18b20 dp s20 - w prawo uzupełniając znakiem ;) tak to jest jak się myśli o dwóch metodach na raz

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required