趣味のマイコンいじり

安価なマイコンを利用して作成したアプリの紹介です。

I2C の I/O Expander を調べて見ました

ESP-01で何でもやらせて見ようと言う昔の記事に、I2Cで接続できるデバイス
いくつか紹介されていたので、今回は I/O の拡張を行うものを検討して見ました。
I/Oの拡張用としては、廉価なものとして2種類がAmazonで紹介されていて、
それを購入して見ました。その時、LCDインターフェイスをI2Cに対応させる為の
バイスが通常のI/O Expanderの半額位で紹介されていたので、それも購入して、
それを汎用のI/O Expanderとして利用可能かどうかも調べてみました。
結果としては、このLCD用のものが、少しの変更で、全く問題無く汎用の
I/O Expanderとして利用できる事が判りました。その時の状況は次のものです。

<I/O Expander の概要>
  購入したI/O Expanderは次の3種類で、いずれの基板もPCF8574のチップが
  使用されていて、I2Cのインターフェイスで8bitsのI/Oを行うもので、次の様な
  ものでした。
 [デバイスの概要]
    イメージ 1


  1.PCF8574のチップには、PCF8574とPCF8574Aの2種類がが有り、
          違いはI2Cのアドレスのみ
                PCF8574 : 0x20 - 0x27, PCF8574A : 0x38 - 0x3F
  2.FC-113はLCD用のI2Cインターフェイス変換基板の為、そのままではP3の
          I/OとINTの端子が利用できない(改造方法は下記を参照)
  3.I/O出力は、LOW時の出力用は大きな電流にも対応しているが、HIGHの
          時の電流は少ない為、プルアップの抵抗が必要
  4.チップの電源は2.5V - 6V

 [FC-113の改造]
    イメージ 2

   1.P3ポートはLCDのK端子用のトランジスタのベースに接続されていて、
        そのままではHIの出力が出来ないのでP3ポートが接続されている配線をカット
   2.P3ポート(ICの7番ピン)を基板の空き端子に接続する
   3./INTポート(ICの13番ピン)を基板の別の空き端子に接続する

 [動作検証]
    イメージ 3 

  1.I2CのI/O Expanderでのステップモータ制御はESP-01で行う
  2.I2CのI/O ExpanderとしてはFC-113を改造したものを使用
  3.制御対象は、手作りのものの左右のステップモータによるタイヤの制御
  4.コントロールスマホからWiFi経由で行う

 [動作状況]
   

<関連資料>
  I/O Expanderのチップのデータシートは次のものを参考にしました。
   URL : http://www.nxp.com/docs/en/data-sheet/PCF8574_PCF8574A.pdf

    I/O Expanderの制御用コードは次のURLからのものを利用しました。
       (コピー&ペーストで利用)
       URL : http://playground.arduino.cc/Main/PCF8574Class

    ESP-01で利用しているWebSocketのライブラリは次のものを使っています。
       URL : https://github.com/Links2004/arduinoWebSockets

<テスト内容と結果>
   I2CでのI/O Expanderのテストに関しては、前のこの記事で使用した
     ステップモータを利用して、それによる手作りの模型の車をスマホから
     コントロールする事にして行いました。

       1.手作りの模型の車をステップモータで動く様にして、それをスマホから
             制御
       2.制御内容は、モータの回転速度と回転方向、ステアリングは左右の
             モータのバランスで対応

   動作させた結果としては、次の様なものでした。

       1.スマホからの制御に関しては、目標通りに回転方向および回転速度を
             制御する事が出来ました。
       2.ただし、ステップモータのギア比が大きい為、大きなタイヤを探して、
             速度を確保しようとしましたが、見つからず、速度は実用的なものに
             できませんでした。(電源電圧を上げて速度を上げる方法は大掛かりと
             なる為、今回は検討しませんでした。)
       3.手作りの模型で有る為、車軸が揺れて車輪のスリップが多発し、
             ステップモータによる駆動にも関わらず、直線走行させても、時々
             修正が必要になりました。メカの技術の差が大きく出るのを実感
             しました。

 [テストでの機器の接続]
    イメージ 4

     イメージ 5


 [コード類]
   テストに使用したコード類は次のURLからダウンロード可能です。

     Code download URL : https://www.dropbox.com/s/5eh8tykncr1k0sx/IO_Expander_test.zip?dl=0