SSブログ

8ビット双方向ロジックレベル変換モジュールを試してみた! [Arduino]

I2Cに続いて8ビット双方向ロジックレベル変換モジュールも試してみました。Amazonで入手したノーブランド品です。当然、何も説明書がついていません。まぁなんとなかなるだろうと思いましたが、それが甘かった。

DSC03910.JPG


接続するセンサーはSPI対応の加速度センサーです。こちらは完成後ですが、こんな感じで接続しました。

DSC03907.JPG


加速度センサーの詳細や使用したスケッチは次の記事を参照してください。


Arduino で3軸加速度センサーを試してみた!
http://makers-with-myson.blog.so-net.ne.jp/2014-03-08


さて、今回はこのモジュールのOE端子の話です。なんの説明書もないので、負論理なのか正論理なのかよく分かりません。

加速度センサーSPI_OE.png


OEなのできっと負論理なのだろうと、最初はGNDに接続してみました。

DSC03911.JPG


スケッチを動かしてみました。

LVC_OE_LOW.png


どうやら負論理ではないようです。では正論理なのだろうとセンサー側の電源(3.3V)につないでみました。

DSC03913.JPG


出力を確認します。

LVC_OE_HIGH.png


値は出ているものの、Xの値だけがなぜかおかしい。

OEの正負のタイミングで挙動がどう変わるか調べるために、Arduinoの9ピンに接続してみることにしました。説明書がないので適正な電圧レベルがよく分かりませんが、ブランド品のモジュールでは大丈夫なので恐らく問題ないでしょう。


加速度センサーSPI.png


いろいろ試行錯誤した結果、Arduino のSPIの初期化中にロジックレベル変換モジュールのOE(出力)をONにしておくと値がおかしくなる ということが分かりました。

つまり、SPIの初期化コード中はロジックレベル変換モジュールをOFFにして、初期化後にONにする必要があるということです。

void setup() { 
  unsigned int res = 0;  
  
  pinMode(CS, OUTPUT);
  pinMode(OE, OUTPUT);
  digitalWrite(OE, LOW); // ロジックレベルコンバータの出力を止める

  Serial.begin(9600);
  
  SPI.begin();
  SPI.setBitOrder(MSBFIRST);
  SPI.setDataMode(SPI_MODE3);
  SPI.setClockDivider(SPI_CLOCK_DIV2);
  
  digitalWrite(OE, HIGH); // ロジックレベルコンバータの出力を開始(SPIでデバイスと通信開始) 

  writeRegister(0x20, 0x27); 
  res = readRegister(0x0F);

  Serial.println(res);
}


再掲になりますが、加速度センサーの駆動やスケッチについてはこちらを参照ください。

Arduino で3軸加速度センサーを試してみた!
http://makers-with-myson.blog.so-net.ne.jp/2014-03-08


あらためて調べてみると、8ビット双方向ロジックレベル変換モジュールはVA側とVB側で対応電圧が違ったり、OEの論理が正負逆だったり、色々なバリエーションがあるようです。

無駄な時間を費やさないよう、説明書付きのものを購入されることをお勧めします。
( ̄▽ ̄;)








TXB0108搭載8CH双方向ロジックレベルコンバータ

TXB0108搭載8CH双方向ロジックレベルコンバータ

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス







nice!(26)  コメント(0)  トラックバック(0) 
共通テーマ:趣味・カルチャー

nice! 26

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。