2015 年 07 ⽉ 11 ⽇ (⼟) @軽⼦坂 はじめての GR-TSUBAME ルネサスエレクトロニクス・インキュベーションセンター ⻫藤博⽂ hirofumi.saito.cj@renesas.com 1 GR-TSUBAME とは 2 GR-TSUBAME の特徴 3 提供するモーターのスペック 4 本説明で使う物 5 GR-TSUBAME の接続 5.1 GR-KURUMI の接続 5.2 モーターの接続 5.3 スイッチの確認 5.3.1 GR-TSUBAME のモーターコントローラー への給電 5.3.2 GR-KURUMI への給電 5.3.3 スイッチの切り替えのまとめ 6 GR-TSUBAME のプログラミング 6.1 Web コンパイラの利⽤ 6.1.1 Web コンパイラの起動 6.1.2 テンプレートの選択 6.1.3 プログラミング 6.1.3.1 速度制御のサンプルプログラム 6.1.3.2 角度制御のサンプルプログラム 6.1.3.3 組み合わせのサンプルプログラム 6.1.3.4 Sketch で準備してあるサンプルプ ログラム 6.1.4 ビルド 6.1.5 転送 7 実際に動かしてみよう 7.1 シリアルコンソールの起動 7.2 単体での起動 8 さいごに 9 お問い合わせ
GR-TSUBAME は Arduino や GR-KURUMI や GR-SAKURA のような Ardui no 互換機に繋がるモーターコントローラーです。 ⼀般にモーターを制御するには様々な知識が必要ですが、GR-TSUBAME を使 うことで簡単にモーターを制御することができます。 GR-TSUBAME には以下のような特徴があります。 速度制御ができます。 角度制御ができます。 トルク (電流) 制御ができます。 これらを組み合わせて複雑なプログラムを作ることみ可能です。
最⼤回転数: 最⼩回転数: 最⼤効率: ⼊⼒電圧: 角度制御分解能: 今回提供するモーターは以下のようなスペックです。 約 7,200 [rpm] @ 12 [V] 約 200 [rpm] 約 10 [W] (負荷トルク 25 [mN・m]、回転数 4,000 [rpm]、電流 2 [A]) 5 〜 12 [V] (設計 7.2 [V]) 約 ±5 [deg] NOTE: モーターのエンコーダー部 (目盛のついた円盤) は壊れやすいので取り扱いに注意してください。
ここでは GR-TSUBAME の上に GR-KURUMI を乗せて使う⽅法を紹介します。
Figure 4-1: GR-KURUMI on GR-TSUBAME
Figure 4-1 のようにGR-TSUBAME の上に GR-KURUMI を乗せて使うことで、コンパクトにモーターコントロー ラーを作ることができます。 必要な物は以下のとおりです。 GR-TSUBAME GR-KURUMI GR-TSUBAME に接続できるように端⼦にピンを半⽥付けしておいてください。 エンコーダー付きモーター 今回⽀給するモーターをご利⽤ください。 接続ケーブル コネクタハウジング: JST PHR-6 端⼦: JST SPH-002T-P0.5S FTDI ボード
DEV-09873 (Spark Fun) または SSCI-010320 (SWITCH SCIENCE)
準備ができたら、次のステップに進みましょう。
Figure 5-2: GR-TSUBAME の接続
既にコネクタを半⽥付けしてある GR-KURUMI を乗せるのは簡単です。
GR-TSUBAME とモーターを接続するには付属のケーブルを使います。
Figure 5.2-3: GR-TSUBAME とモーターの接続
NOTE:
GR-TSUBAME とモーターの接続はしっかりコネクターを差し込んでください。 また、コネクターを取 り外す際には破損させないように気を付けましょう。
Figure 5-2 に⽰してあるように、GR-TSUBAME と GR-KURUMI にそれぞれスイッチがありますので、以下のよ うに設定してください。
USB からの給電 左側に設定 GR-TSUBAME の右上の外部電源からの給電 右側に設定 GR-KURUMI への給電に関しては以下のとおりです。 USB からの給電 OFF (下側) に設定 GR-TSUBAME からの給電 ON (上) に設定 この場合には Section 5.3.1 にある「GR-TSUBAME の右上の外部電源からの給電」を選択する 必要があります。 つまり、⽤途によって以下に分けられます。 Table 5.3.3-1: ⽤途別のスイッチの切り替え
⽤途 Switch 1 (GR-KURUMI) Switch 2 (GR-TSUBAME)
プログラム書き込み時 OFF (下側) 左側
シリアル接続で確認しながらの実⾏ OFF (下側) 右側
GR-TSUBAME にはモーターを制御するのに必要な API が準備されています。 ここに書かれている以外の情報や API 仕様書等は後⽇ Renesas Rulz - Japan にて公開していきますので、ご確認ください。
ここでは Web コンパイラを⽤いたプログラミングの説明をします。 以下の URL から Web コンパイラを起動します。 がじぇっとるねさす | ルネサス エレクトロニクス Figure 6.1.1-4: がじぇっとるねさすの Web ページ 右上の を押します。 1. 「ご注意」に同意の上で を押します。 2. ご登録のメールアドレスとパスワードを⼊⼒し を押します。 3. 1 2
Figure 6.1.1-5: Web コンパイラの画⾯
テンプレートの選択では以下のものを選択してください。
GR-KURUMI̲TSUBAME̲E0.10zip GR-TSUBAME を GR-TSUBAME から制御する場合に選択します。 GR-SAKURA̲TSUBAME̲E0.10zip GR-SAKURA を GR-TSUBAME から制御する場合に選択します。 今回は前者の GR-KURUMI_TSUBAME_E0.10zip を選択したものとして解説を⾏います。 NOTE: 新しくテンプレートを選択するには Web コンパイラ画⾯の左下の「プロジェクト」の + をクリックす ると選択できます。 次に具体的な GR-TSUBAME を⽤いたプログラミングについて簡単にご説明 します。 Figure 5.2-3 に⽰してあるように、GR-TSUBAME のバス番号は 0 で、左 側の I C アドレスが 32 で、右側のアドレスが 40 に設定されています。 以下は、左側の I C アドレスが 32 の⽅を⽤いた場合のプログラム例です。 2 2
まず、速度制御の例を⽰します。
Code 6.1.3.1-1 は回転速度 600 [rpm] での回転を指⽰し、エンコーダーから読み取った回転数をシリアルコン ソールに表⽰するものです。
Code 6.1.3.1-1: Sample̲1.ino
#include <Arduino.h>
#include <Control.h>
//Includes Control.h
#include <Wire.h>
#include <SPI.h>
ControlRoot root;
//Declares root class
ControlMotor motor;
//Declares motor class
void
setup() {
Serial.begin(
9600
);
root.controlInit();
//Initializes Control API
motor.attach(
0
,
32
);
//Assigns a motor module
motor.setTargetSpeed(
600.0
);
//Sets target rotational speed to 60rpm
}
void
loop() {
float
speed = motor.getPresentSpeed();
//Obtains present rotational speed [rmp]
Serial.println(speed);
}
次に、角度制御の例を⽰します。
Code 6.1.3.2-2 は回転角を 3600 度になるように指⽰ (すなわち 10 回転) し、エンコーダーから読み取った回転 角をシリアルコンソールに表⽰するものです。
Code 6.1.3.2-2: Sample̲2.ino
#include <Arduino.h>
#include <Control.h>
//Includes Control.h
#include <Wire.h>
#include <SPI.h>
ControlRoot root;
//Declares root class
ControlMotor motor;
//Declares motor class
void
setup() {
Serial.begin(
9600
);
root.controlInit();
//Initializes Control API
motor.attach(
0
,
32
);
//Assigns a motor module
motor.setTargetAngle(
3600.0
);
//Sets target angle to 3600 degree
}
void
loop() {
float
angle = motor.getPresentAngle();
//Obtains present angle [degree]
Serial.println(angle);
}
次に、速度制限を付けた角度制御の例を⽰します。 Code 6.1.3.3-3 は Code 6.1.3.2-2 と同様に回転角を 3600 度になるように指⽰ (すなわち 10 回転) しますが 、その際に回転速度を 60 [rpm] に制限します。 また、エンコーダーから読み取った回転速度と回転角をシリアル コンソールに表⽰するものです。 Code 6.1.3.3-3: Sample̲3.ino
#include <Arduino.h>
#include <Control.h>
//Includes Control.h
#include <Wire.h>
#include <SPI.h>
ControlRoot root;
//Declares root class
ControlMotor motor;
//Declares motor class
void
setup() {
Serial.begin(
9600
);
root.controlInit();
//Initializes Control API
motor.attach(
0
,
32
);
//Assigns a motor module
motor.setMaxSpeed(
60.0
);
//Sets maximum speed to 60 rpm
motor.setTargetAngle(
3600.0
);
//Sets target angle to 3600 degree
}
void
loop() {
float
speed = motor.getPresentSpeed();
//Obtains present speed[rpm]
float
angle = motor.getPresentAngle();
//Obtains present angle[degree]
Serial.println(speed);
Serial.println(angle);
}
Sketch で準備させていただいたものは 1 秒毎に回転数を 125, 500, 1000 [rpm] と変更していくものです。 ま た、その回転数が 250 [rpm] 未満なら GR-KURUMI の LED を⾚に、500 [rpm] 未満なら緑に、1250 [rpm] 未満 なら⻘に回転数をモニターして点灯させるものです。
Code 6.1.3.4-4: Sample̲4.ino
#include <Arduino.h>
#include <Control.h>
//Includes Control.h
#include <Wire.h>
#include <SPI.h>
// Pin 22,23,24 are assigned to RGB LEDs.
int
led_red =
22
;
// LOW active
int
led_green =
23
;
// LOW active
int
led_blue =
24
;
// LOW active
float
low_speed =
250.0
;
// Low Speed: < 250 [rpm]
float
middle_speed =
750.0
;
// Middle Speed: < 750 [rpm]
float
high_speed =
1250.0
;
// High Speed: < 1250 [rpm]
ControlRoot root;
//Declares root class
ControlMotor motor;
//Declares motor class
void
setup() {
pinMode(led_red, OUTPUT);
pinMode(led_green, OUTPUT);
pinMode(led_blue, OUTPUT);
// turn the LEDs on, glow white.
digitalWrite(led_red, LOW);
digitalWrite(led_green, LOW);
digitalWrite(led_blue, LOW);
Serial.begin(
9600
);
root.controlInit();
//Initializes Control API
motor.attach(
0
,
32
);
//Assigns a motor module
motor.setMaxSpeed(
2000.0
);
// for Safety
}
void
loop() {
long
elapsed_time = millis();
// Elapsed Time
int
time =
int
(elapsed_time /
1000
) %
3
;
switch
(time) {
case
0
:
motor.setTargetSpeed((
0
+ low_speed) /
2
);
break
;
case
1
:
motor.setTargetSpeed((low_speed + middle_speed) /
2
);
break
;
case
2
:
motor.setTargetSpeed((middle_speed + high_speed) /
2
);
break
;
}
delay(
200
);
float
speed = motor.getPresentSpeed();
// Obtains present speed [rpm]
if
(speed < low_speed) {
// Set LED Color to Red
digitalWrite(led_red, LOW);
digitalWrite(led_green, HIGH);
digitalWrite(led_blue, HIGH);
}
else if
(speed < middle_speed) {
// Set LED Color to Green
digitalWrite(led_red, HIGH);
digitalWrite(led_green, LOW);
digitalWrite(led_blue, HIGH);
}
else if
(speed < high_speed) {
// Set LED Color to Blue
digitalWrite(led_red, HIGH);
digitalWrite(led_green, HIGH);
digitalWrite(led_blue, LOW);
}
else if
(speed >= high_speed) {
// Set LED Color to White
digitalWrite(led_red, LOW);
digitalWrite(led_green, LOW);
digitalWrite(led_blue, LOW);
}
Serial.println(speed);
delay(
200
);
}
Web コンパイラでのビルドは右側のペインの を押すことでビルドすることができます。実⾏時のメッセージの最後に Make process completed と表⽰されていることと kurumi_sketch.bin が⽣成され ていることを確認してください。
Section 6.1.4 で説明をした kurumi_sketch.bin を右クリックして を選択し、ダウンロードし ます。
この kurumi_sketch.bin を Kurumi Writer にて書き込みますが、いきなりモーターが⾼速回転してしまうと危険 ですので、動作確認ができていない場合には Kurumi Writer の Run after COM open(FTDI setting) にチェックを ⼊れて書き込んでください。
これらの説明の詳細は はじめてのKURUMI - 作り⽅使い⽅資料 - がじぇっとるねさすコミュニティ - Renesas Ru lz - Japan3 に記載されていますので参照してください。
必ず接続を確認してからモーターの電源を接続してください。 また、GR-KURUMI と GR-TSUBAME のスイッチ 組み合わせは Table 5.3.3-1 を参照してください。
最後に動作しているかどうかを確認するためにシリアルコンソールを⽴ち上げてください。 ここでは Tera Term を⽤いています。
Tera Term を起動し、 → → Serial にチェックを⼊れる → USB Serial Port と書かれているポートを選択 → と進めることでシリアルコンソールを⾒られます。
Table 5.3.3-1 の「PC から切り離して実⾏」に合わせてスイッチを切り替えてください。 切り替えた後に電源を
供給することで、PC から切り離して単体で実⾏することができます。
モーターを正確に制御するためには、電気、物理などの知識が 必要になるため、Makers の⼈たちがロボットなどの複雑な動作 を⾏うためには複雑なプログラミング技術が必要でした。 そこで、我々ルネサスはモーターを制御したい⼈たちに向け、 ルネサスの「動くものプロジェクト」の中で作り上げたモーター モジュールと API を活⽤し、さらに使いやすくしたものが GR-T SUBAME です。 それでは GR-TSUBAME を使った作品の開発をお願いします。 また、開発時に気になった点や改善点を連絡してください。 みん なで⼀緒に良いものを作り上げていきましょう! GR-TSUBAME に関するお問い合わせは以下の URL からお願いします。
Renesas Rulz - Japan
http://japan.renesasrulz.com/ 1. http://gadget.renesas.com/ja/index.html 2. http://japan.renesasrulz.com/gr̲user̲forum̲japanese/b/weblog2/archive/2015/06/10/kurumi.aspx 3. http://ttssh2.osdn.jp/ 4. 1