카테고리 없음

RS485 모드버스 RTU 에서 XY-MD01 SHT20 온도 및 습도 센서

기하 2021. 9. 2. 01:34

  1. 가능한 제조업체 - Aideepen. 사이트를 찾을 수 없습니다.
  2. 보드는 XY-MD01로 표시됩니다.
  3. SHT20 정밀 칩은 온도 및 습도 센서로 사용됩니다.
  4. 작동 전압: DC4-30v(최고값은 33v를 초과하지 않음).
  5. 소비 전력: 0.2W
  6. 성능 특성:
    1. 온도 20℃ - 60℃,
    2. 습도 0-100.
  7. 변경 정확도:
    1. 온도 ± 0.3℃,
    2. 습도 ± 3% RH.
  8. 연결 인터페이스 - RS485. 전송 속도: 9600(사용자가 설정할 수 있음), 8비트, 원스톱, 체크 없음.
  9. Modbus RTU 작동을 위한 프로토콜입니다.

 

모드버스 프로토콜

Modbus를 통해 센서를 연결하려면 슬레이브 ID가 필요하고 설명과 함께 주소를 등록해야 합니다.

장치 주소 : 1-247을 설정할 수 있으며 기본값은 1입니다. 따라서 기본적으로 Slave ID = 1입니다.

 

Modbus 기능 코드:

  • 0x03: "등록 유지" 읽기
  • 0x04: "입력 레지스터" 읽기
  • 0x06: 단일 "유지 레지스터" 쓰기
  • 0x10: 더 많은 유지 레지스터 쓰기

이 데이터는 연결하기에 충분하지 않습니다. 진부하고 Slave ID, 속도, 오프셋을 변경하여 온도 및 습도 판독 값을 읽는 방법이 명확하지 않으며 2 바이트라면 시퀀스를 파싱하는 순서가 무엇인지 명확하지 않습니다. 판매자는 기기와 무관한 절대적으로 왼손잡이 문서를 제공하지만 가격은 좋습니다.

 

Alaexpress에서 유사한 센서를 검색하면 별도로 판매되는 보드 를 가격이 부적절하게 높지만

더 자세한 설명이 포함되어 있어 매개변수 선택에 이미 충분합니다.

 

  Offset Description Number of bytes
Input Register 0x0001 Temperature scale 2
0x0002 Humidity value 2
Hold  Register 0x0101 Device address
(1~247)
2
0x0102       Baud rate
      0 : 9600
      1 : 14400
      2 :  19200
2
0x0103 Temperature
correction(/10)
-10.0 ~ 10.0
2
0x0104 Humidity
correction value(/10)
-10.0 ~ 10.0
2

 

테스트

작동하려면 USB <-> RS 485 어댑터와 전원 공급 장치가 필요합니다. 
6볼트 파워서플라이를 사용했습니다. 전원 및 데이터 단자를 연결합니다.

ModBus RTU 장치를 폴링하는 소프트웨어로서 저는 무료 QModMaster를 좋아합니다.

 

소프트웨어 설정 옵션 -> Modbus RTU에서 연결 매개변수를 설정합니다. 

컨버터가 설치된 포트는 제어판 -> 시스템 -> 장치 -> COM 포트에서 쉽게 찾을 수 있습니다. 

명령 -> 연결을 클릭합니다.

  • 모드버스 모드 -> RTU.
  • 슬레이브 주소 -> 1.
  • 기능 코드 -> Read Input Registers (0x04).
  • 시작 주소 -> 1 Hex.
  • 레지스터 수 -> 1  (1 레지스터 - 2바이트)
  • 데이터 형식 -> Dec

View -> Bus Monitor 를 엽니다.

Command -> Read/Write 를 클릭합니다.

버스 모니터에서 값 316을 얻습니다.

 

316의 온도가 상당히 높기 때문에 레지스터 값을 10으로 나누어야 합니다.

즉, 이것은 31.6 °C로 실온과 거의 같습니다. 

 일반적으로 정확도가 낮거나 해당 홀드 레지스터에 보정 계수를 입력하여 센서를 보정해야 합니다.

command -> scan 모드로 이동하면 스캔 속도(ms) 매개변수에 설정된 주파수로 장치가 스캔됩니다.

 

 

슬레이브 ID 변경(장치 주소)

슬레이브 ID 읽기

Slave ID Function Code SA Hi SA Lo Count Hi Count Lo
0x01 0x03 0x01 0x01 0x 0x01

슬레이브 ID 변경하기

SlaveID를 변경하려면 0x06 기능을 사용해야 합니다. 예에서 SlaveID를 주소 0x02로 변경합니다

Slave ID Function Code SA Hi SA Lo Count Hi Count Lo
0x01 0x06 0x01 0x01 0x00 0x02

예에서 내 SlaveID는 이미 이전에 0x02로 변경되었습니다. 

장치에 새 유닛 ID가 있는 스티커를 즉시 붙이기를 권장합니다.