tMDS-16 to moduł do pomiaru temperatury przeznaczony do systemów opartych na protokole Modbus RTU. Wyposażony jest w dwa niezależne interfejsy 1-Wire, z których każdy obsługuje do 8 czujników temperatury DS18B20, co daje możliwość podłączenia maksymalnie 16 czujników.
Dane pomiarowe udostępniane są przez rejestry Modbus, które zawierają zarówno bieżące odczyty temperatury, jak i odpowiadające im wartości offsetów kalibracyjnych, co zapewnia dokładne i spójne wyniki pomiarów.
Urządzenie zostało zaprojektowane głównie jako rozszerzenie dla LK4 lub LK3.5+ (również kompatybilne z LK3.9), umożliwiając skalowalny i rozproszony pomiar temperatury.
Gotowy do użycia plik konfiguracyjny dla tych urządzeń dostępny jest na stronie produktu tMDS-16, co pozwala na szybką integrację bez dodatkowej konfiguracji.
Domyślnie urządzenie posiada adres Modbus Slave ID = 1, który można zmienić przez konsolę USB.
Zasilanie | 5-12 V DC (złącze) 5 V (USB) |
---|---|
Obsługa czujników | Do 2 x 8 czujników DS18B20 |
Interfejsy | 1-Wire: 2 magistrale przez złącze RJ12 i 3-pinowe złącze śrubowe, Modbus RTU (RS485), Serial (przez USB; 115200 baud) |
Wymiary | 74 x 40 x 30 mm (bez uchwytu DIN) |
Waga | 44 g |
tMDS-16 bezproblemowo integruje się z urządzeniami LK4 oraz LK3.5+. Może być zasilany bezpośrednio z wyjść 5V i GND kontrolera LK. Następnie należy podłączyć go — samodzielnie lub wraz z innymi urządzeniami Modbus — do złącz Modbus A+ i B− w urządzeniu LK, aby nawiązać komunikację.
Po podłączeniu skonfiguruj niestandardowy moduł Modbus w LK, korzystając z gotowego pliku konfiguracyjnego dostępnego w sekcji Do pobrania. Plik ten można łatwo dostosować do własnych potrzeb, np. ograniczając odczyt do wybranych czujników lub offsetów kalibracyjnych.
Aby zaktualizować oprogramowanie, urządzenie tMDS-16 należy uruchomić w trybie bootloadera. W tym trybie urządzenie pojawia się jako nośnik pamięci masowej o nazwie RPI-RP2 po podłączeniu do komputera. Wystarczy skopiować nowy plik z firmware do tego nośnika. Po zakończeniu kopiowania urządzenie automatycznie się zrestartuje i wznowi normalną pracę z nowym oprogramowaniem.
Tryb bootloadera można włączyć na dwa sposoby:
bootloader
.💡 Pliki z oprogramowaniem dostępne są w sekcji Do pobrania.
Przycisk funkcyjny na urządzeniu tMDS-16 umożliwia szybkie i intuicyjne wykonanie podstawowych operacji konfiguracyjnych — bez konieczności podłączania przez USB. To rozwiązanie sprawdza się idealnie w przypadku szybkiej konfiguracji w terenie.
Przycisk znajduje się obok złączy magistrali 1-Wire, a dioda LED statusu znajduje się pomiędzy nimi. Dioda informuje, jaka funkcja zostanie uruchomiona w zależności od długości przytrzymania przycisku.
Podczas przytrzymywania przycisku, dioda LED miga, sygnalizując wybraną akcję:
Czas przytrzymania | Sygnał LED | Wywołana akcja |
---|---|---|
< 2 sekundy | 1 krótkie mignięcie | update_sensors – wykrycie i przypisanie czujników |
2–5 sekund | 2 mignięcia po 2 sekundach | set_offsets – autokalibracja wszystkich czujników (offsety zapisywane automatycznie) |
5–10 sekund | 3 mignięcia po 5 sekundach | reset_sensors – wyczyszczenie przypisań czujników i offsetów |
> 10 sekund | Brak działania | Anulowanie (przycisk przytrzymany zbyt długo) |
Aby wywołać wybraną funkcję, zwolnij przycisk zaraz po odpowiednim sygnale LED.
Jeśli przycisk zostanie przytrzymany zbyt długo (>10 s), żadna akcja nie zostanie wykonana.
ℹ️ W celu bardziej zaawansowanej konfiguracji i diagnostyki, skorzystaj z konsoli USB (opisana w następnej sekcji).
Aby zmienić ustawienia, musisz podłączyć tMDS-16 do komputera przez USB. Urządzenie może być zasilane przez USB, więc nie są potrzebne żadne dodatkowe połączenia zasilania.
Aby nawiązać połączenie z licznikiem impulsów, będziesz potrzebować aplikacji obsługującej komunikację szeregową. Popularne opcje to:
Wyświetlenie dostępnych portów:
Uruchom pyserial-ports, aby wyświetlić dostępne porty COM przed podłączeniem urządzenia. Wynik może wyglądać tak:
COM1
COM3
COM15
COM16
COM17
Podłącz urządzenie
Podłącz tMDS-16 i uruchom ponownie polecenie. Nowy port COM (np. COM11) będzie reprezentował podłączone urządzenie.
Połącz z tMDS-16
Użyj następujących parametrów połączenia:
Przykładowe polecenie:
pyserial-miniterm COM11 115200
Wysyłanie poleceń
Po połączeniu możesz wydawać polecenia do urządzenia. Każde polecenie musi być zakończone klawiszem Enter. Przydatnym poleceniem jest ?
lub help
, które wyświetla listę wszystkich dostępnych poleceń (opisanych poniżej).
Polecenie | Opis |
---|---|
address? | a? | Odczytuje aktualny adres Modbus (Slave ID). |
address=X | a=X | Ustawia adres Modbus. Parametry: X – adres do ustawienia, liczba z zakresu <1, 255>. |
offsetX? | oX? | Odczytuje offset kalibracyjny dla czujnika DSX. X: numer czujnika <1, 16>. |
offsetX=Y | oX=Y | Ustawia offset dla czujnika. X: numer czujnika <1, 16>, Y: wartość offsetu <-32768, 32767>. |
update_sensors | us | Aktualizuje listę czujników – wykrywa i przypisuje podłączone czujniki. |
set_offsets | so | Automatycznie oblicza offsety dla wszystkich aktywnych czujników. |
reset_sensors | Resetuje przypisania ID czujników i ich offsety. |
read_sensors | rs | Wyświetla aktualne odczyty temperatury z czujników. |
save_config | sc | Zapisuje konfigurację do pamięci Flash. Należy użyć po zmianie adresu Modbus i offsetów. |
read_registers | rr | Odczytuje wartości rejestrów Modbus. |
read_definitions | rd | Odczytuje definicje rejestrów Modbus: nazwa, adres, typ. |
bootloader | Uruchamia urządzenie w trybie bootloadera w celu aktualizacji oprogramowania. Po podłączeniu do komputera urządzenie pojawi się jako dysk o nazwie RPI-RP2, na który należy skopiować plik firmware z rozszerzeniem uf2. Następnie urządzenie automatycznie zrestartuje się i uruchomi w trybie normalnej pracy. |
restart | Restartuje urządzenie. |
verbose=X | v=X | Włącza lub wyłącza tryb szczegółowy (verbose), który wyświetla więcej komunikatów. |
help | ? | Wyświetla pomoc z listą dostępnych poleceń. |
Poniżej przedstawiono praktyczne przykłady konfiguracji i obsługi tMDS-16 za pomocą konsoli. Scenariusze te obejmują najczęstsze zadania integracyjne i kalibracyjne.
Podczas używania wielu urządzeń Modbus na jednej magistrali, należy przypisać każdemu unikalny adres.
address=5
Następnie zapisz nową konfigurację:
save_config
Aby ręcznie dostosować odczyty poszczególnych czujników, użyj offsetów indywidualnych.
Przykład: ustawienie offsetu −0.5°C dla czujnika nr 3:
offset3=-0.5
Zapisz zmiany:
save_config
Aby wyrównać odczyty wszystkich podłączonych czujników DS18B20, użyj komendy:
set_offsets
Polecenie oblicza średnią temperaturę ze wszystkich aktywnych czujników i ustawia offsety, które dopasowują każdy czujnik do tej wartości. Pozwala to zniwelować drobne różnice fabryczne i zwiększa spójność pomiarów w różnych środowiskach.
🛈 Przed uruchomieniem tej komendy zaleca się umieszczenie wszystkich czujników w jednym miejscu, przy stabilnej temperaturze. Odczekaj chwilę, aż czujniki się wyrównają, a następnie wykonaj kalibrację.
Komenda automatycznie zapisuje wyliczone offsety do pamięci Flash.
Aby wyświetlić odczyty temperatury w konsoli:
read_sensors
Po podłączeniu nowych czujników lub wymianie starych, zaktualizuj listę:
update_sensors
Aby zresetować przypisania ID czujników i ich offsety:
reset_sensors
Aby wyświetlić aktualne wartości rejestrów:
read_registers
Aby wyświetlić listę rejestrów z nazwami, typami i adresami:
read_definitions
Poniżej przedstawiono listę rejestrów Modbus dostępnych w urządzeniu.
Lista odpowiada wynikowi komendy read_definitions
i zawiera nazwy, adresy, typy i dzielniki.
| Name | Addr | Type | Func | Divisor |
| ------------------------------ | ---- | ------ | ------------ | ------- |
| uptime | 3000 | uint32 | 0x04 (IREG) | |
| ds1 | 3002 | int32 | 0x04 (IREG) | 10 |
| ds2 | 3004 | int32 | 0x04 (IREG) | 10 |
| ds3 | 3006 | int32 | 0x04 (IREG) | 10 |
| ds4 | 3008 | int32 | 0x04 (IREG) | 10 |
| ds5 | 3010 | int32 | 0x04 (IREG) | 10 |
| ds6 | 3012 | int32 | 0x04 (IREG) | 10 |
| ds7 | 3014 | int32 | 0x04 (IREG) | 10 |
| ds8 | 3016 | int32 | 0x04 (IREG) | 10 |
| ds9 | 3018 | int32 | 0x04 (IREG) | 10 |
| ds10 | 3020 | int32 | 0x04 (IREG) | 10 |
| ds11 | 3022 | int32 | 0x04 (IREG) | 10 |
| ds12 | 3024 | int32 | 0x04 (IREG) | 10 |
| ds13 | 3026 | int32 | 0x04 (IREG) | 10 |
| ds14 | 3028 | int32 | 0x04 (IREG) | 10 |
| ds15 | 3030 | int32 | 0x04 (IREG) | 10 |
| ds16 | 3032 | int32 | 0x04 (IREG) | 10 |
| ds1_readErrors | 3034 | uint32 | 0x04 (IREG) | |
| ds2_readErrors | 3036 | uint32 | 0x04 (IREG) | |
| ds3_readErrors | 3038 | uint32 | 0x04 (IREG) | |
| ds4_readErrors | 3040 | uint32 | 0x04 (IREG) | |
| ds5_readErrors | 3042 | uint32 | 0x04 (IREG) | |
| ds6_readErrors | 3044 | uint32 | 0x04 (IREG) | |
| ds7_readErrors | 3046 | uint32 | 0x04 (IREG) | |
| ds8_readErrors | 3048 | uint32 | 0x04 (IREG) | |
| ds9_readErrors | 3050 | uint32 | 0x04 (IREG) | |
| ds10_readErrors | 3052 | uint32 | 0x04 (IREG) | |
| ds11_readErrors | 3054 | uint32 | 0x04 (IREG) | |
| ds12_readErrors | 3056 | uint32 | 0x04 (IREG) | |
| ds13_readErrors | 3058 | uint32 | 0x04 (IREG) | |
| ds14_readErrors | 3060 | uint32 | 0x04 (IREG) | |
| ds15_readErrors | 3062 | uint32 | 0x04 (IREG) | |
| ds16_readErrors | 3064 | uint32 | 0x04 (IREG) | |
| version_major | 3100 | uint16 | 0x04 (IREG) | |
| version_minor | 3101 | uint16 | 0x04 (IREG) | |
| version_patch | 3102 | uint16 | 0x04 (IREG) | |
| address | 4000 | uint16 | 0x03 (HREG) | |
| offset1 | 4001 | int32 | 0x03 (HREG) | 10 |
| offset2 | 4003 | int32 | 0x03 (HREG) | 10 |
| offset3 | 4005 | int32 | 0x03 (HREG) | 10 |
| offset4 | 4007 | int32 | 0x03 (HREG) | 10 |
| offset5 | 4009 | int32 | 0x03 (HREG) | 10 |
| offset6 | 4011 | int32 | 0x03 (HREG) | 10 |
| offset7 | 4013 | int32 | 0x03 (HREG) | 10 |
| offset8 | 4015 | int32 | 0x03 (HREG) | 10 |
| offset9 | 4017 | int32 | 0x03 (HREG) | 10 |
| offset10 | 4019 | int32 | 0x03 (HREG) | 10 |
| offset11 | 4021 | int32 | 0x03 (HREG) | 10 |
| offset12 | 4023 | int32 | 0x03 (HREG) | 10 |
| offset13 | 4025 | int32 | 0x03 (HREG) | 10 |
| offset14 | 4027 | int32 | 0x03 (HREG) | 10 |
| offset15 | 4029 | int32 | 0x03 (HREG) | 10 |
| offset16 | 4031 | int32 | 0x03 (HREG) | 10 |