SyntaxHigh

Monday, April 7, 2014

長い USB ケーブル



PCからArduinoまで5m+1mのUSBケーブルでつないでいたのだけど、これも問題だったらしい。

何が起こってるのかなと思って、USBオシロをつなぐためにArduino を電源付きのハブをつなぐと問題が緩和した。少なくともモジュール3つは動いている。ハブの電源を切ると問題が再発し、再現性がある。

5m のケーブルは「Extension Cable」といって先に電圧降下を補償するICが仕込んであるもの

http://www.sanwa.co.jp/product/syohin.asp?code=KB-USB-R205

ケーブルは電圧降下を補償するために100mA消費するらしいが、Arduino は100mAも使っていないはずなので電力は足りている。
  • USB Extension Cable のみを使って Arduino Uno は自前で給電(DCプラグから) 
という風にしても問題は解決しない。つまり単純に電力が足りていないわけではない。

4つ目のモジュールはLEDもフリッカーが顕著になった。これはICの電源が落ちている可能性が高い。

試すこと

  • グリッチが起こる状況のINPUT,OUTPUTの電圧及びICの電圧をオシロで見る。波形がおかしければこれでわかる。
  • コントローラ側のGNDに対するモジュールのGNDを見る。数百mV になっていると危ない。
  • シリアル通信の速度を遅くしてみる:2つ目までうまくいって、3つ目でダメだということは、シリアル通信で詰まっている可能性もある。
  • ノートPCでテスト:ケーブルが問題の場合


とはいえ、PCとデバイスは5m近く離れているので、一旦ノートPCでテストしてみることにする。

そんなことを言っていると異臭が。またサーボが燃えたらしい。ここまでロバスト性が無いとこの先不安になる。16個動かすだけでこんなに苦労していて、100個などできるのだろうか?