前回はPCA9685について紹介しましたが、今回は電子回路、つまりモーターやマイコンとのつなぎ方について見ていきます。
使い方
ピンの役割
では、さっそく基板を見てみましょう。
ICは画像の左に見えるL字ピンヘッダで制御します。各ピンの役割は以下の通りです。
ピン名 | 詳細 |
GND | グラウンド |
OE | ボードの有効化(オープンで出力、Hiで停止) |
SCL | I2C通信のクロック |
SDA | I2C通信のデータ |
VCC | ロジック用電源 |
V+ | モーター用電源(ターミナルブロックと共通) |
このピンヘッダと制御基板側のI2C通信ピンをつなげば、PCA9685でサーボモーターを制御できるようになります。
Arduino UNOと接続
とはいっても、使うマイコンによってピンの仕様は様々なので、今回はArduino UNO (ATMEGA328P準拠)を使う想定でいきます。
ArduinoとPCA9685の接続は以下の通りです。
PCA9685 | Arduino |
Vcc | 5V |
GND | GND |
SDA | A4(SDA) |
SCL | A5(SCL) |
文字だけだと想像しづらい場合は、画像を参考につないでみてください。
なお、ArduinoとPCA9685は、ジャンパーワイヤー(オスーメス)で簡単につなぐことができます。
モーター用電源
モーターはかなりの電力を消費するため、Vccでモーターの電源も供給しようとすると、誤作動や部品を破壊する恐れがあります。
そこで、モーター用の電源をV+に接続して別々に電力を供給します。
電源は先述のピンヘッダ、もしくはターミナルブロックにつなぎます。
ジャンプワイヤーなどでピンヘッダと電池をつなげればよいのですが、難しい場合は下の商品を買って、ターミナルブロックにつなげば電源が供給できます。
ターミナルブロックは電線を穴に入れて、マイナスドライバーで上のねじを回すことで電池と電源ピンをつなぐことができます(入れる場所に注意)。
I2Cアドレスピン
また、右上のジャンパーピンでI2Cアドレス(スレーブアドレス)を変えられます。
ピンは10kΩ抵抗でプルダウンされており、そのままだとLow(0V)、ジャンパーをハンダ付けするとHigh(Vcc)が入力されます。
デフォルトでは0x40(最下位ビットは読み書き切替用のRW)ですが、IC内の読み取り専用ピンA0~A5はスレーブアドレスのビット1~6に対応しており、ピンの状態でアドレスの各ビットを0(L)または1(H)にセットします。ピンとアドレスの各ビットの対応は以下の通りです。
1(固定) | A5 | A4 | A3 | A2 | A1 | A0 | R/W |
もうお気づきかと思いますが、アドレスは0x40とA0~A5ピンのビット和で決まります(最下位ビットを除いた7ビット)。
ただし、0x7Fと0x43は予約済(Reserved)なので使わないようにと書いてあるため、それ以外の数値をセットしましょう
(…実は、0x43は使えたのですが、なぜ使えたかの詳細は未だ不明です。将来的にとあるので、現状は利用できるかもしれませんが、避けておいたほうが無難です)
次回は
いよいよ最後、ソフトウェア(ファームウェア)の紹介に入ります。これでサーボモーターが動かせるようになる…はず。