Arduinoで倒立振子の自作です。
前回まででハード部分が概ね完成したため、今回は回路基板に取り掛かります。(これまでの製作記録はこちらにまとめてます)
回路全体の概要
▲全体はこんな感じ。少し煩雑な感じはありますが、中身はほとんどモジュール品を使用しているため信号線と電源、GNDを結線しているだけです。
中身の概要としては、
- 6軸センサー、電流電圧センサーで本体/バッテリなどの情報取得
- タイヤ(モーター)を廻す
- おまけでインジゲーター用の2色発行のLEDも付けてます
- またXbeeでパソコンとの無線情報のやり取り
- その制御全体をArduinoで行う。
といった内容です。以下から小分けして説明していきます。
電源系
▲電源はLipoバッテリー(3セル、12.6v)を使う予定。Lipoバッテリから電流電圧センサーを経由して、Arduinoとモーターへそのまま供給してます。Arduinoへ12.6vはちょっと大きいかも・・・・・。
モータードライバのロジック電源は回路省くために、L6470モジュール品の内部レギュレーター(3v)を使用。
あと、6軸センサー、電流電圧センサーとXbeeへは、Arduinoの内部レギュレーターで降圧した5vを供給。後述しますがXbeeへの電源はジャンパーpin経由で供給してます。
それからあまり良くないかもしれませんが、LEDはArduinoのpinから直接駆動してます。
センサー類との通信
▲使用しているセンサーは6軸センサー(MPU-6050)と電流電圧センサー(INA219)の2種類です。
ともにI2C通信なので、ArduinoとSDL、SDAの2本のラインを繋いでいるだけです。複数デバイスでI2C通信を行う場合はラインを共通で行います。
モータードライバー(L6470)との通信
ステッピングモーターの回転制御を行うドライバ(L6470)とArduinoとの結線です。ステッピングモーターを2個を各々で制御するため、ドライバは2個使用します。
▲#SSとSCKラインは共通でArduinoを結線します。
▲デバイスとの通信はSPI通信です。複数のデバイスと接続するときはデイジーチェーンで接続します。以前、ステッピングモーターと繋いでデイジーチェーン接続の通信テストを行ったことがあるのですが、通信方法に少しくせがあります。
Xbee(無線通信)
▲XbeeとArduinoの結線です。単純なシリアル通信なのでRX/TXを繋いでいるだけです。Arduinoはハードウェアシリアルを使ってます。
Arduinoへスケッチ(ソース)を書き込む際に問題が出るかもしれないので、電源はジャンパーpin経由でON/OFFできるようにしてます。(実際に試したのですがXbeeと接続中でもなぜか問題なくスケッチが書き込めました。不明です・・・。)
あと無線の電波強度(RSSI)も取得したかったのでXbeeの6番pinとArduinoのアナログpinも結線してます。
回路図の細かいところはこのような感じ。 簡単にブレッドボードでは稼働確認してますが・・、回路が間違っていないか、うまく動くかどうか、実際に稼働確認するまで気になってしまいます・・・
基板の作成
ユニバーサル基板では大変そうなので基板作成しました。基板はFusionPCBへ注文。この手の基板が最近非常に安くてびっくりです。
▼で届いた基板▼
100mm×100mmに収まらなかったので2枚に分けてます。
さっそく部品半田付けして稼働確認してみました▼
貧乏性なもので・・、部品(モジュール品)が使いまわせるようにすべてソケットピンで付けるようにしてます。何気に部品代もかかりますからね。特にXbeeなんかは高価・・。
で、すべて正常に動くことを簡単に確認。少しほっとしました。
次回からはソフトに取り掛かかっていきます。 (これまでの製作記録はこちらにまとめてます)
コメント