Raspberry Pi와 I2C 장치를 장거리 케이블로 연결하고 통신

개요



30m, 100kHz에서 통신 가능

참고 : 조건이 다르면 결과가 바뀌고 신뢰성 테스트를 한 것은 아니므로 보증 값이 아니라 어디까지나 실적입니다. 각자의 책임에 있어서 참고로 해 주세요.

조건


  • Master
  • Raspberry Pi 3 모델 B +/Raspbian/i2ctools
  • core_freq=250
  • VDDIO = 3.3 V
  • 풀업 저항 1.8 kΩ (Raspberry Pi 장착)


  • 슬레이브

  • MCP23017
  • 배선이 5V이므로 슬레이브 측 VDD는 3.3V LDO을 사용합니다
  • .
  • 4.5 V 이상이면 1.7 MHz 대응이지만, 3.3 V의 경우는 400 kHz
  • 이쪽은 풀업 저항 없음


  • Cable
  • UTP (실드 없음 트위스트 페어 케이블)

  • 26AWG LAN 케이블 유용

  • P82B96 데이터시트 쌍 (5V:SCL/GND:SDA)


  • 환경
  • 상온 상습
  • 약 20 ℃/약 60 %RH


  • 방법
  • i2ctools i2cdetect i2cget 명령으로 슬레이브 반응 확인
  • 케이블의 길이와 마스터의 i2c_baudrate를 변경하여 통신 가능한 최대 속도를 확인합니다.
  • i2c_baudrate는 100kHz 단위로 변경



  • 검증



    모습



    MCP23017 & LDO 이외에도, 여러가지 붙어 있습니다만 영향은 작을 것 (오히려 부하 용량이 증가해 악영향 있다)



    결과




    케이블 길이
    통신 가능 속도
    비고


    0.3m
    700 kHz
    트위스트 페어가 아닌 26AWG

    3m
    600 kHz

    5m
    500 kHz

    10m
    300 kHz

    15m
    200kHz

    30m
    100kHz



    근사하면 通信可能速度(kHz) = 670 * exp(-0.0675 * 配線長(m))가 된다.
    그것에 따르면 60m, 10kHz 정도가 실용적인 한계인가

    배경 및 고찰



    장거리의 통신을 「저속으로 상관없다」 때문에 「저비용」으로 실시하고 싶다.
    다양한 조사하고 P82B96이라는 I2C 익스텐더 (버스 버퍼)를 시도했습니다. (그 때문에 검증 기판에 P82B96 과 주변 부품이 타고 있습니다)

    비교를 위해 원래 I2C의 실력을 측정해 보았을 때, 상상 이상으로 실력이 있었기 때문에 익스텐더의 검증은 그만두었습니다
    단, 구성에 따라 결과는 달라지며, 환경변동・노이즈에 대한 내성도 불명하므로, 뭔가 판명되면 기사를 추가합니다.

    PCA9600D (아키즈키 또는 Switch Science에서 구입 가능)를 구입하기 전에 먼저 시도해 볼 가치가 있는 방법입니다.

    나는이 방법을 시도하기 전에 먼저 실행 일본 일렉트릭으로 P82B96 주문 했어요. . .

    모처럼 검증 환경이 갖추어졌으므로, 디바이스의 검증 요구가 있으면 검토합니다

    검증되지 않은 항목


  • Raspberry Pi 3B+ 이외의 master
  • MCP23017 이외의 slave
  • 30m 초과 케이블
  • UTP 이외의 케이블
  • P82B96 등의 버스 버퍼 사용
  • 환경 시험
  • 노이즈 테스트
  • 좋은 웹페이지 즐겨찾기