概要
30 m, 100 kHz で通信できました
注:条件が異なれば結果は変わり、また信頼性試験をしたわけではないので、保証値ではなくあくまで実績です。各自の責任において参考にしてください。
条件
- Master
- Raspberry Pi 3 model B+ / Raspbian / i2ctools
- core_freq=250
- VDDIO = 3.3 V
- プルアップ抵抗 1.8 kΩ (Raspberry Pi 実装済み)
- Raspberry Pi 3 model B+ / Raspbian / i2ctools
- Slave
- Cable
- UTP (シールド無しツイストペアケーブル)
- 26AWG の LANケーブル を流用
- P82B96 データシートのペア (5V:SCL / GND:SDA)
- UTP (シールド無しツイストペアケーブル)
- 環境
- 常温常湿
- 約 20 ℃ / 約 60 %RH
- 常温常湿
- 方法
- i2ctools の
i2cdetect
i2cget
コマンドでスレーブの反応を確認 - ケーブルの長さとマスターの
i2c_baudrate
を変更して、通信可能な最大速度を確認- i2c_baudrate は 100 kHz 刻みで変更
- i2ctools の
検証
様子
MCP23017 & LDO 以外にも、いろいろくっついていますが影響は小さいはず(むしろ負荷容量が増えて悪影響ある)
結果
ケーブル長 | 通信可能速度 | 備考 |
---|---|---|
0.3 m | 700 kHz | ツイストペアでない 26AWG |
3 m | 600 kHz | |
5 m | 500 kHz | |
10 m | 300 kHz | |
15 m | 200 kHz | |
30 m | 100 kHz |
近似すると 通信可能速度(kHz) = 670 * exp(-0.0675 * 配線長(m))
となる。
それによると 60 m, 10 kHz 程度が実用的な限度か
背景と考察
長距離の通信を「低速で構わない」ので「低コスト」で行いたい。
いろいろ 調べ、 P82B96 という I2C エクステンダ(バスバッファ)を試そうとしました。(そのため検証基板に P82B96 と周辺部品が乗っています)
比較のために素の I2C の実力を測ってみたところ、想像以上に実力があったのでエクステンダの検証はやめました
ただ、構成によって結果は変わりますし、環境変動・ノイズへの耐性も不明なので、何か判明したら記事を追加します。
PCA9600D ( 秋月 や Switch Science で購入可能)を購入する前に、まずは試してみる価値のある方法です。
私は、この方法を試す前に先走って ジャパンエレキットで P82B96 を注文 してしまいましたよ。。。
せっかく検証環境が整ったので、デバイスの検証リクエストあれば検討します
未検証項目
- Raspberry Pi 3B+ 以外の master
- MCP23017 以外の slave
- 30 m 超えケーブル
- UTP 以外のケーブル
- P82B96 等のバスバッファ利用
- 環境試験
- ノイズ試験