2019年12月11日水曜日

AE-BMX055使用9軸センサーモジュールの設定

"I2CとSPIで3軸ジャイロセンサL3GD20を使ってみた"のジャイロセンサが販売終了になっていたので、現在販売されている"BMX055使用9軸センサーモジュール"について調べてみることに。

モジュールの扱い方は、"取扱説明書"に回路図含め既に丁寧に記載されています。
ここでは実装部品やジャンパをショートする事による信号線の変化などを図解して整理してみたいと思います。
BMX055 - 小型汎用型9軸センサーモジュール
本モジュールの心臓部、Bosch Sensortec社の9軸センサのBMX055です。
非常に小型の9軸センサで、3軸12bit加速度センサ、3軸16bit±2000°/sジャイロスコープ、及び3軸地磁気センサから構成されています。

BMX055は、SPIとI2C両方の通信方式に対応していますが、このモジュールではI2Cに固定されていて、使用するのは下記の10ピンとなります。

Pin# Name I/O Type Description Connect to
3 VDD Supply 電源 アナログ/デジタル・ドメイン(2.4-3.6 V) VDD
4 GNDA Ground アナログ用GND GND
6 GNDIO Ground I/O用GND GND
7 PS Digital in プロトコル選択(GND=SPI/VDDIO=I2C) VDDIO
9 SCx Digital in SCL:シリアルクロック SCL
11 SDx Digital I/O SDA:シリアルデータI/O SDA
12 SDO2 Digital out ジャイロアセンサのドレス選択 JP3/VDDIO
13 VDDIO Supply デジタルI/O電源電圧(1.2V...3.6V) VDDIO
17 SDO1 Digital out 加速度センサのアドレス選択 JP2/VDDIO
20 CSB3 Digital in 磁気センサのアドレス選択 JP1/VDDIO
FXMA2102 - I2Cバス用のデュアル電源、2ビット電圧変換器
FXMA2102は、Fairchild Semiconductor社製の広範囲の入出力双方向の電圧レベル変換を行うデュアル電圧電源トランスレータです。
BMX055の駆動電圧は3.3Vなので、5V電源もしくは1.8V駆動のマイコンボードの信号線を3.3Vに変換するために使用します。
Pin# Name I/O Type Description Connect to
1 VCCA Supply A-サイドの電源 3V3
2 A0 Digital I/O A-サイド入力または3ステート出力 SCx
3 A1 Digital I/O A-サイド入力または3ステート出力 SDx
4 GND Ground GND GND
5 OE Digital in 出力イネーブル入力 3V3
6 B1 Digital I/O B-サイド入力または3ステート出力 SDA
7 B0 Digital I/O B-サイド入力または3ステート出力 SCL
8 VCCB Supply B-サイドの電源 VDDIO
参考 : I2Cバス用双方向電圧レベル変換モジュール(FXMA2102)
NJM2863F33 - ローノイズ低飽和型レギュレータ 3.3V100mA
5V電源のマイコンボードからの電源出力を3.3V(F33は3.3Vを指す)の電圧に変換するレギュレータです。Raspberry PiやESPシリーズなど3.3V電圧のマイコンボードでは、この経路を介さず動作させます。

各ピンの動作は以下。
Pin# Name I/O Type Description Connect to
1 CONTROL Digital in ON/OFF制御(ON=HIGH/OFF=LOW) VIN
2 GND Ground GND GND
3 NOISE Supply ノイズバイパス用端子 C3/GND
4 VOUT Supply 3.3V(固定)電源出力端子 C2/3V3
5 VIN Supply 電源入力端子(出力+14Vまで) C1/VCC
チップ積層セラミックコンデンサー 0.1μF
モジュール上でC1、C2、C3と表記されているコンデンサです。
レギュレータNJM2863F33のパスコンとして使用されています。
チップ抵抗 10kΩ
モジュール上でR1、R2、R3、R4、R5、R6、R7と表記されている抵抗です。
回路全般に渡って使用されています。
基板
10mm x 14mmの小さな基板です。
実装部品に隠れている箇所の配線は想定です。

モジュールのピン配置は以下のようになっています。
Pin# Name I/O Type Description
1 GND Ground グランド
2 SDA Digital I/O I2Cデータ
3 SCL Digital in I2Cクロック
4 3V3 Supply BMX055用電源端子
5 VCCIO Supply I2Cレベル用電源端子
6 VCC Supply モジュール電源端子
電源まわりの配線
部品を全く実装しない状態でのGND3V3VCCIOVCCが導電する範囲を図解した状態です。
5V電源の接続
3.3V電源の接続
NJM2863F33まわりの配線
レギュレータによりVCCに5Vを印加した場合でも3V3から3.3Vの電圧を取得可能となります。
BMX055まわりの配線
抵抗R5R6R7を設置した事によりBMX055のSDO1SDO2CSB33V3の電圧が印加されそれぞれHIGHと認証されます。

これら印加された電圧は、ジャンパJP1JP2JP3をハンダでショートさせる事で、それぞれLOWに変更可能で、それにより対応するセンサのアドレスを指定出来ます。

ジャイロセンサのアドレスは、以下の様にJP3をショートさせる事で変更可能。
抵抗R7を介して印加されていた3V3の電圧がGNDへと流れ込みSDO2への入力はLOWとなります。ジャイロセンサのアドレス指定の詳細は下表。
SDO2(JP3)
HIGH(OPEN) LOW(SHORT)
ジャイロセンサ 0x69 0x68
加速度センサのアドレス変更は、JP2をショート。
ジャイロセンサ同様に、SDO1への入力はLOWとなります。
加速度センサのアドレス指定の詳細は下表。
SDO1(JP2)
HIGH(OPEN) LOW(SHORT)
加速度センサ 0x19 0x18
地磁気センサのアドレス変更は、JP1をショート。
これまでと同じく、CSB3への入力はLOWとなります。
地磁気センサのアドレスは、SDO2SDO1の設定値の影響も受けるため以下の様になります。
SDO2(JP3) SDO1(JP2) CSB3(JP1)
HIGH(OPEN) LOW(SHORT)
加速度センサ HIGH(OPEN) HIGH(OPEN) 0x13 0x11
LOW(SHORT)
HIGH(OPEN) LOW(SHORT) 0x12 0x10
LOW(SHORT)
通常は、全てOPENなのでジャイロセンサは0x69、加速度センサは0x19、地磁気センサは0x13のアドレスになっています。
FXMA2102まわりの配線
まず、I2Cの配線から確認。
SDAは、FXMA2102のB1へ接続され、A1からR1でプルアップされBMX055のSDxへと繋がります。
SDLも、FXMA2102のB0へ接続され、A0からR2でプルアップされBMX055のSCxへと繋がっています。

次にFXMA2102へ印加される電源まわりを確認してみます。
FXMA2102の出力側に設定された電源端子VCCAは、3V3に固定されていますが、入力側のVCCBは、VCCVCCIO3V3の各端子への入力電源と、ジャンパJP6JP7JP8によって変化します。
5V信号線の場合
JP6をショートして、入力側電源VCCBへ5Vを入力する事で、SDASDLの信号線が5Vから3.3Vへ変換されます。
3.3V信号線の場合
JP7をショートすると、NJM2863F33で変換された3.3VがVCCBへ入力されます。
1.8V信号線の場合
JP8をショートし、VCCIOへ1.8Vの電源を接続します。このジャンパをショートさせる事でVCCへの供給電圧と異なる電圧を指定可能となります。
I2Cのプルアップ
I2Cでは、マイコンボードから接続デバイスへのSDASDLラインのプルアップが決まり事になっています。本モジュールにおいても、JP4JP5をショートさせる事によってプルアップを有効化出来るようになっています。

ただし、複数のI2C対応デバイスを接続する場合には、外部にプルアップ抵抗を置いてジャンパをオープンにしておく事が推奨されます。理由としては、プルアップ抵抗が重複してしまう可能があるからで、その場合適切な抵抗値を得られなくなってしまい正常に動作しない原因となってしまいます。

以上を踏まえた前提で、プルアップ動作を確認してみます。
上の図は5V電源、5V信号線となっていますが、3.3V、1.8Vでも同じです。
当たり前の事ですが、JP6JP7JP8のいずれかがショートされている状況でなければプルアップは有効になりません。理由がわからない場合は、もう一度"FXMA2102まわりの配線"の項目を最初から眺めてみて下さい。

ここまでの解説を元にジャンパの設定、配線を行えば問題なく動作するかと思います。

0 件のコメント:

コメントを投稿