softwarowe rozpoznanie DS18b20, s20 i 20?

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?

Reply to
BartekK
Loading thread data ...

BartekK wrote: [..]

nie

[..]

Zrezygnuj z obsługi dowolnego czujnika na rzecz kompatybilnego.

Reply to
AlexY

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.

Reply to
Budyń

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

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

mw

Reply to
mw158979

sposób kodowania wyniku jest inny

Reply to
AlexY
Reply to
invalid unparseable

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

Reply to
AlexY

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

Reply to
BartekK

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

Reply to
BartekK

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.