Pololu Maestroは、専用ソフトウェア、TTLシリアル(5V)、内部スクリプトの3方法でサーボモータを制御できる高機能なサーボコントローラです。接続可能なサーボモータのチャンネル数が4種類(6,12,18,24)あり、6チャンネルがMaestro Microで、それ以外がMaestro Miniで高性能版になります。Maestroサーボコントローラは、5~16Vの供給電流40mAで動作します。
Micro 6-Channel | Mini 12-Channel | Mini 18-Channel | Mini 24-Channel | |
---|---|---|---|---|
チャネル数 | 6 | 12 | 18 | 24 |
アナログ入力 チャネル数 | 6 | 12 | 12 | 12 |
デジタル入力 チャネル数 | 0 | 0 | 6 | 12 |
設定可能な パルスレート | 33~100Hz | 1~333Hz | 1~333Hz | 1~333Hz |
制御パルス幅の範囲 | 64~3280μs | 64~4080μs | 64~4080μs | 64~4080μs |
スクリプトサイズ | 1KB | 8KB | 8KB | 8KB |
サイズ(mm) | 21.6×30.5 | 27.9×36.1 | 27.9×45.7 | 27.9×58.4 |
重さ(g) | 3.0 | 4.2 | 4.9 | 6.0 |
実装済み型番 | 1350[suzaku-shop code=’Pololu-1350′] | 1352[suzaku-shop code=’Pololu-1352′] | 1354[suzaku-shop code=’Pololu-1354′] | 1356[suzaku-shop code=’Pololu-1356′] |
パーツキット型番 | 1351[suzaku-shop code=’Pololu-1351′] | 1353[suzaku-shop code=’Pololu-1353′] | 1355[suzaku-shop code=’Pololu-1355′] | 1357[suzaku-shop code=’Pololu-1357′] |
このチュートリアルでは、主にPololu Maestro Micro 6-Channelについて解説します。
Pololu Maestroはつぎのような特徴があります。
今回使用するハードウェアとソフトウェアは以下の通りです。
Pololuから提供されているMaestro Control Centerとドライバをダウンロードし、インストールします。この記事では、Windows版を使用しています。
ダウンロードしたzipファイルを展開し、setup.exeを実行します。インストール中にドライバをインストールするかどうか尋ねられるので、「インストール」をクリックします。
Arduino IDEで使用するライブラリを導入します。以下の手順で導入します。
もし、以上の手順がうまくいかない場合は、以下の方法で導入してください。
サーボモータを動作させるためには、駆動電源接続端子に駆動電源を接続する必要があります。
また、サーボモータは以下のように接続します。
Maestro Control Centerは、Pololu Maestroとパソコンを直接接続して制御する専用のソフトウェアです。Arduinoなどでプログラムを作成しなくても簡単にサーボモータを制御できます。
USB TypeA-MiniBケーブルでPololu Maestroとパソコンを接続し、Maestro Control Centerを開きます。パソコンと接続すると、自動的にソフトとも接続されます。接続されない場合は、「Connected to」の右欄を選択して、接続できるものをクリックしてください。
「Status」タブを開き、以下の図のような操作をしてください。デフォルトでは、中立点である1500μsになっています。
※サーボモータを動作させるためには、駆動電源接続端子に、駆動電源を接続する必要があります。
「Channel Settings」タブで、サーボの動作角度の制限できます。デフォルトでは992~2000μsになっています。
サーボの動作角度によって、制限する値を変えることで、サーボの故障を防げます。一例として180°制限のものは、750~2250μsの値で動きます。(この値は、角度制限の限界ではありません)
※ここでの角度制限は、マイコンからのサーボ制御動作にも適応されます。
Maestro Control Centerの機能の1つに、サーボモータの動作を保存しておき、再生する機能があります。以下の手順で動作を保存、再生します。
Arduino UNOとPololu MaestroでTTL通信を行い、サーボモータを制御します。専用ライブラリを使用することで簡単にプログラムを作成することができます。
Maestro Control Centerの、「Serial Settings」タブに移動し、「UART:fixed baud rate」を9600にします。設定後、右下の「Apply Settings」を押すと、設定が完了します。
つぎのようにPololu MaestroとArduino UNOを接続します。
Pololu Maestroのchannnel 0にサーボモータを接続しているとき、RCサーボパルスを1.5ms(中心位置)から1.8msへ変化させるサンプルプログラムです。
#include <Wire.h> #include <PololuMaestro.h> //ライブラリの読み込み #ifdef SERIAL_PORT_HARDWARE_OPEN #define maestroSerial SERIAL_PORT_HARDWARE_OPEN #else #include <SoftwareSerial.h> SoftwareSerial maestroSerial(0, 1); #endif MicroMaestro maestro(maestroSerial); void setup() { maestroSerial.begin(9600); } void loop() { maestro.setSpeed(0, 0); //サーボモータの回転速度を決定 左がモータ番号(【channel 0】=0) 右は動作速度(0だと制限なし) maestro.setAcceleration(0, 0); //サーボモータの回転加速度を決定 左がモータ番号(【channel 0】=0) 右は動作加速度(0だと制限なし) maestro.setTarget(0, 6000); //左がモータ番号(【channel 0】=0) 右はパルス幅(単位【μs】、入力したいパルス幅×4の値を入れる) //1500μs(1.5ms)のパルス幅の信号をサーボモータに入力 (6000 = 1500μsx4) delay(2000); // 2秒間停止 maestro.setTarget(0, 7200); //1800μs(1.8ms)のパルス幅の信号をサーボモータに入力 (7200 = 1800μsx4) delay(2000); // 2秒間停止 }
#include <Wire.h> #include <PololuMaestro.h> #ifdef SERIAL_PORT_HARDWARE_OPEN #define maestroSerial SERIAL_PORT_HARDWARE_OPEN #else #include <SoftwareSerial.h> SoftwareSerial maestroSerial(0, 1); #endif
MicroMaestro name(maestroSerial); //MicroMaestroの場合 MiniMaestro name(maestroSerial); //MiniMaestroの場合
サンプルプログラムでは、nameをmaestroとして、MicroMaestro maestro(maestroSerial); でインスタンスを生成しています。
指定したチャンネルに指定した信号を出力する関数です。
引数1:uint8_t channelNumber
チャンネル番号
引数2:uint16_t target
ターゲット(0~16383)
戻り値:なし
指定したチャンネルのサーボモータの制限速度を設定する関数です。引数2:speedが0の時、制限速度は無制限です。
引数1:uint8_t channelNumber
チャンネル番号
引数2:uint16_t speed
制限速度(0~16383)
戻り値:なし
指定したチャンネルのサーボモータの制限加速度を設定する関数です。引数2:accelerationが0の時、制限加速度は無制限です。
引数1:uint8_t channelNumber
チャンネル番号
引数2:uint16_t acceleration
制限速度(0~16383)
戻り値:なし
指定したサーボモータの現在の制御パルスを取得する関数です。
引数:uint8_t channelNumber
チャンネル番号
戻り値:現在の制御パルスの4倍の値
すべてのサーボモータをホームポジションへ動かす関数です。
引数:なし
戻り値:なし
その他の関数はMaestro Servo Controller library(英語)をご覧ください。
[itemlink post_id=”260″]