TL;DR (wielki skrót)
Producent nadpisuje dwa bajty konfiguracji czujnika DS1820 na 0x44 0x53, aby sprzedawać urządzenia po 29.00zł, zamiast po 6.00zł. Zmieniając (w bardzo prosty sposób) te bajty w dowolnym czujniku – zacznie on poprawnie działać. To ustawienie nie ma żadnego związku z działaniem samego czujnika, jednak da się je odczytać i jeśli nie zgadza się z kodem ustawionym przez producenta – program pokaże błąd, pomimo faktycznego działania czujnika.
Podkład historyczny
Jakiś czas temu kupiłem sobie takie urządzenie: „Expander GSM INTEGRAL+”. Cena urządzenia – ciężko określić czy niska, czy wysoka, nie mniej jednak cena czujników temperatury na pewno z kosmosu.
Do urządzenia, według zapewnień producenta miały pasować wszystkie czujniki DS1820, dostępne na allegro za niecałe 6.00zł. Sam producent sprzedaje jednak ‚wybierane’ czujniki w cenie 29.00zł.
Niby prosta piłka – nikt nie każe nam kupować tych po 29.00, skoro pasują te po 6.00. Czy aby jednak na pewno?
„Moduł nie może podłączyć nowego czujnika CT”
Próbowałem 10 czujników z 10 sklepów – jednak za każdym razem moim oczom ukazywał się ten sam błąd. Dla odmiany czujniki kupione w sklepie producenta działały poprawnie. Czy więc sprzedawca miał rację pisząc o ‚przebranych’ czujnikach?
Oczywiście, że nie
Pod tym adresem: http://www.systronix.com/Resource/ds1820.pdf znajduje się dokumentacja techniczna czujnika. Na stronie 8 opisane są bajty pamięci dostępne do odczytu / zapisu w EEPROMIE, a więc jedyne ‚trwałe’ ustawienia.
Było to więc jedyne miejsce, gdzie producent w prosty sposób mógł coś zapisać. Podłączając dowolne czujniki do urządzenia odczytującego (prod własna, na zdjęciach) – dziwnym trafem wszystkie czujniki dostępne na rynku zwracały domyślny kod (pierwszy wierz do kod urządzenia, drugi to scratchpad, 5 i 6, 7 i 8 znak to bajty konfiguracji)
0x4B 0x46
podczas gdy czujniki sprzedawane do urządzenia – zwracały kod
0x44 0x53
To oczywiście niekoniecznie musiała być przyczyna, jednak został wykonany…
Szybki test
Przy użyciu płytki z atmegą dwa bajty konfiguracji czujnika z dowolnego sklepu zostały ustawione na te odczytane z czujników od producenta. Potem zostało wykonane ‚Copy Scratchpad’ (opisane w dokumentacji) aby utrwalić ustawienie w EEPROMIE i czujnik został zamontowany do urządzenia „EXPANDER”.
Dziwnym trafem urządzenie poprawnie wykryło czujnik.
Zaprogramowane kolejne 5 czujników – o dziwo wszystkie wykrywane poprawnie.
Wszystkie czujniki kupione za 1/5 ceny zostały „ożywione” i urządzenie działa poprawnie.
DS1820 / DS18B20 / DS18S20
Smutna wiadomość dla posiadaczy DS18B20 – niestety urządzenie jest z nimi po prostu niekompatybilne – będzie pokazywało ujemne temperatury (wszystko przesunięte o 3 bity)
DS18S20 i DS1820 są teoretycznie identyczne – różnią się czasem pomiaru i sposobem jego wykonania, jednak format danych jest taki sam.
Jak zaprogramować DS1820 / DS18S20 aby działały z „EXPANDEREM”?
Wymagana jest podstawowa znajomość elektroniki oraz obsługi 1-Wire
Aby zaprogramować czujnik – należy podłączyć go samodzielnie (tylko jeden) do procesora i wykonać:
- Zapisanie danych:
- Reset
- Write SKIP_ROM
- Write 0x4E (polecenie Write ScratchPad)
- Write 0x44 (pierwszy bajt konfiguracji)
- Write 0x53 (drugi bajt konfiguracji)
- Utrwalenie danych
- Reset
- Write SKIP_ROM
- Write 0x48 (Copy ScratchPad)
- while(!ReadBit()); (poczekać aż linia się podniesie – zapis gotowy)
Gotowe.
W razie pytań zapraszam do kontaktu.
To prawda, że firma strasznie naciąga na akcesoriach i na przesyłce też.
Sam użytkuję ich pierwsze dwa modele (NV33 i NV44). Mogę tylko dodać, że do NV33 pasują bezproblemowo 1820
Jednak, ze względu na możliwości, cały czas kręci mnie właśnie INTEGRAL (tylko ta cena!)
A dla Ciebie P.K. duże dzięki za informację, może kiedyś się przyda.
Świetna robota, panie P.K.
Całkowicie się zgadzam.Ja mam z kolei prosty Sim Ster 3.0
Do niego też są czujniki CT za podobne i większe pieniądze. Nie wiem, czy moja wersja wymaga również czujnika cyfrowego czy podejdzie tam analog?
Cena rynkowa 4,50, u nich albo 29 albo prawie 50 zł 🙁
Mam NV33T+ i tam nie pasują już DSy kupione samodzielnie.
Nigdy nie pasowały, bez odpowiedniej modyfikacji 😉