浜松市にいる組み込みおやじ-電子工作、回路設計、ファーム TIPS

このブログはビーコンの代表である菅原が、電気電子、電子工作、組み込みソフトウェアなどで、自分が苦労したところや面白い発見などを記事にしていきます。電子工作やマイコンに親しむ人が少しでも増えたらという思いでつづります。
やっぱり、電子工作が好きなんですよ。
<< Arduino UNO Rev3 の I2Cは2CHじゃなかった | main | USB電圧電流計を二つつなげてみた。 >>
Arduino UNO Rev3 の3.3V出力は無負荷だと電圧が高くなる
0

    ※途中までの考察が間違っていたので、急ぐ方は後半の愡のところから読んでください。

     

    Arduino UNO Rev3 に 気圧センサーをつなげて I2C通信でデータを取得している。

    で、どうも信号の電圧がおかしい。。

     

    みてみると I2Cのデータ通信をするときに電源電圧がさがり、しばらくすると回復するようにみえる。

    UnoRev3

    上が 3.3V 電源電圧

    下が I2Cの SCL信号

    よく見ると 通常時 4V程度になっている。

     

    UNO Rev3 の互換品である Maruduino UNO R3 で見ると 4V越えている。
    Maruduino

     

    ちなみにずいぶん古い ARUDINO Duemilanove を見ると 3.3Vぴったり。
    Duemilanove

    ARDUINO UNO Rev3の3.3V電源は

    LP2985-33DBVR(MAX 150mA)

     

    Duemilanoveの3.3V電源は

    FT232RL の3.3V出力 (MAX50mA)

     

    LP2985の仕様書を読んでもオープン時の挙動については書いていなかった。

    つなげている圧力センサーが低消費電力タイプで 2uA程度しか消費しないので、ここでは実質オープン。

    I2Cバスのプルアップ抵抗は 4.7KΩにしているので、通信していると3.3Vに近くなり、通信が終わるとじりじりと電圧が上がるようだ。

    UNO Rev3とMarduinoの違いは、なにか分からないが、LP2985-33DBVRの個体差なのではないか。

    一応デバイスも壊れないで動いているが、Absolute Maximum ratings の Max supply voltage では 4.0Vなので、これはまずい。

     

    対策として1kΩの抵抗を3.3V端子に入れると、3.3Vになった。

    ちょっとロード抵抗を入れたほうが良いだろう。
    1K

     

    ◆追伸

    Twitterにして指摘をいただいた。どうも Wire.h がマイコンの内蔵プルアップをONにしているためらしいということだ。

    ■[工作] ArduinoでI2Cする際のプルアップ抵抗について

    http://d.hatena.ne.jp/ohguma/touch/20161219/p1

     

    マイコンの電源 5Vの内蔵プルアップと 3.3Vに接続されている4.7Kx2で i2Cの端子の電圧があがり、それが圧力センサーの内部の寄生ダイオードなどからVCCに流れて、電圧が上がっていると推測される。

     

    3.3Vの電流がほとんど流れない状態では、LDOレギュレータが上がった電圧を下げることは難しいのだろう。
     

    1KΩの抵抗を入れて、アイドリング電流が流れるようにすれば VCCは大丈夫ですが、よく見ると各端子は 3.3Vより高い。

    5Vのプルアップと3.3Vのプルアップがぶつかっているので、当然端子電圧は 5Vと3.3Vの間の電圧になる。

    これもよろしくないので、Wire.begin()の後にI2C端子を強制的にLOにしてみる。

     

     Wire.begin();
      digitalWrite(SDA, 0);
      digitalWrite(SCL, 0);

    すると端子も 3.3Vになった。
     

    端子も3.3vになった

    電気的には問題はなくなったが、せっかくあるライブラリを強制的に変えるのは、ちょっと気持ち悪いところもある。

    Wire.bigin()から digitalWrite()までの間はわずかな時間だが、プルアップされているし。

    ちゃんとした回路にするのであれば TXS0102DCUR などの電圧変換のIC SDA/SCLを入れた方が、良いだろう。

     

     

    | ビーコン菅原 | Arduino | 03:08 | comments(0) | trackbacks(0) |









    http://blog.suga41.com/trackback/370
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
    << October 2017 >>
    + RECOMMEND
    + RECOMMEND
    + SELECTED ENTRIES
    + RECENT COMMENTS
    + RECENT TRACKBACK
    + CATEGORIES
    + ARCHIVES
    + つぶやき
    + MOBILE
    qrcode
    + LINKS
    + PROFILE