創るたのしみを応援

高機能サーボコントローラ Pololu Maestro

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
チャネル数6121824
アナログ入力
チャネル数
6121212
デジタル入力
チャネル数
00612
設定可能な
パルスレート
33~100Hz1~333Hz1~333Hz1~333Hz
制御パルス幅の範囲64~3280μs64~4080μs64~4080μs64~4080μs
スクリプトサイズ1KB8KB8KB8KB
サイズ(mm)21.6×30.527.9×36.127.9×45.727.9×58.4
重さ(g)3.04.24.96.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はつぎのような特徴があります。

  • 専用ソフトウェア、TTLシリアル(5V)、内部スクリプトの3方法による制御が可能
  • 出力パルス幅の分解能が0.25μs
  • 各チャネルごとに、速度/加速度を制御可能
  • 起動時またはエラー時に指定位置に移動するように設定可能
  • デジタル入出力やアナログ入力としても使用可能(Maestro Mini)
  • 単独で複雑な動作を実行するようにコントローラをプログラム可能
  • 専用ソフト(Maestro Control Center)がさまざまな機能をサポート
  • Arduino用の専用ライブラリを提供

開発環境

今回使用するハードウェアとソフトウェアは以下の通りです。

ハードウェア

  • Maestro Micro 6-Channel [suzaku-shop code=’Pololu-1350′]
    • 本チュートリアルではMicro 6-Channel を使用します。
  • サーボモータ
  • サーボモータ駆動用電源
    • アルカリ乾電池4本もしくは、充電式乾電池4本
  • Arduino UNO[suzaku-shop code=’Pololu-2191′]
  • USB TypeA-MicroBケーブル[suzaku-shop code=’Pololu-2073′]
    • Arduinoとパソコンの接続用
  • USB TypeA-MiniBケーブル[suzaku-shop code=’Pololu-130′]
    • Pololu Maestroとパソコンの接続用
  • パソコン
    • Windows10

ソフトウェア

  • Arduino IDE 1.8.9
  • Pololu Maestro Control Center

準備

Maestro Control Centerのインストール

Pololuから提供されているMaestro Control Centerとドライバをダウンロードし、インストールします。この記事では、Windows版を使用しています。

ダウンロードしたzipファイルを展開し、setup.exeを実行します。インストール中にドライバをインストールするかどうか尋ねられるので、「インストール」をクリックします。

ライブラリの導入

Arduino IDEで使用するライブラリを導入します。以下の手順で導入します。

  1. Arduino IDEで「スケッチ」メニューを開き「ライブラリをインクルード」を選択、次に「ライブラリを管理」を選択します。
  2. 「PololuMaestro」を検索します。
  3. リストの「PololuMaestro」をクリックします。
  4. 「インストール」をクリックします。

もし、以上の手順がうまくいかない場合は、以下の方法で導入してください。

  1. GitHubから最新のリリースアーカイブをダウンロードし、それを展開します。
  2. フォルダ「maestro-arduino-xxxx」の名前を「PololuMaestro」に変更します。
  3. 「PololuMaestro」フォルダをArduinoスケッチブックディレクトリ内の「libraries」フォルダに移動します。スケッチブックの場所は、Arduino IDEの「ファイル」メニューより、「環境設定」を開くことで確認することができます。なお「libraries」フォルダがない場合、自身で作成してください。
  4. Arduino IDEを再起動します。

端子の接続

サーボモータを動作させるためには、駆動電源接続端子に駆動電源を接続する必要があります。

 また、サーボモータは以下のように接続します。

Maestro Control Centerで動かす

Maestro Control Centerは、Pololu Maestroとパソコンを直接接続して制御する専用のソフトウェアです。Arduinoなどでプログラムを作成しなくても簡単にサーボモータを制御できます。

Maestro Control Centerの使い方

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で動かす

Arduino UNOとPololu MaestroでTTL通信を行い、サーボモータを制御します。専用ライブラリを使用することで簡単にプログラムを作成することができます。

Arduinoと接続するための設定

Maestro Control Centerの、「Serial Settings」タブに移動し、「UART:fixed baud rate」を9600にします。設定後、右下の「Apply Settings」を押すと、設定が完了します。

Pololu MaestroとArduino UNOを接続

つぎのように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秒間停止
}

Libraryリファレンス概要

初期設定

ライブラリのインクルード

#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

インスタンスの生成(nameは任意)

MicroMaestro name(maestroSerial); //MicroMaestroの場合
MiniMaestro name(maestroSerial); //MiniMaestroの場合

サンプルプログラムでは、nameをmaestroとして、MicroMaestro maestro(maestroSerial); でインスタンスを生成しています。

関数一覧

void Maestro::setTarget(uint8_t channelNumber, uint16_t target)

指定したチャンネルに指定した信号を出力する関数です。
引数1:uint8_t channelNumber
チャンネル番号
引数2:uint16_t target
ターゲット(0~16383)
戻り値:なし

void Maestro::setSpeed(uint8_t channelNumber, uint16_t speed)

指定したチャンネルのサーボモータの制限速度を設定する関数です。引数2:speedが0の時、制限速度は無制限です。
引数1:uint8_t channelNumber
チャンネル番号
引数2:uint16_t speed
制限速度(0~16383)
戻り値:なし

void Maestro::setAcceleration(uint8_t channelNumber, uint16_t acceleration)

指定したチャンネルのサーボモータの制限加速度を設定する関数です。引数2:accelerationが0の時、制限加速度は無制限です。
引数1:uint8_t channelNumber
チャンネル番号
引数2:uint16_t acceleration
制限速度(0~16383)
戻り値:なし

uint16_t Maestro::getPosition(uint8_t channelNumber)

指定したサーボモータの現在の制御パルスを取得する関数です。
引数:uint8_t channelNumber
チャンネル番号
戻り値:現在の制御パルスの4倍の値

void Maestro::goHome()

すべてのサーボモータをホームポジションへ動かす関数です。
引数:なし
戻り値:なし

その他の関数

その他の関数はMaestro Servo Controller library(英語)をご覧ください。

資料

[itemlink post_id=”260″]