2015 年 07 11 ( ) @軽 坂 はじめての GR-TSUBAME

2015 年 07 ⽉ 11 ⽇ (⼟)
@軽⼦坂
はじめての GR-TSUBAME
ルネサスエレクトロニクス・インキュベーションセンター
⻫藤博⽂
[email protected]
6.1.1 Web コンパイラの起動
1 GR-TSUBAME とは
6.1.2 テンプレートの選択
2 GR-TSUBAME の特徴
6.1.3 プログラミング
3 提供するモーターのスペック
6.1.3.1 速度制御のサンプルプログラム
4 本説明で使う物
6.1.3.2 角度制御のサンプルプログラム
5 GR-TSUBAME の接続
6.1.3.3 組み合わせのサンプルプログラム
5.1 GR-KURUMI の接続
6.1.3.4 Sketch で準備してあるサンプルプ
ログラム
5.2 モーターの接続
5.3 スイッチの確認
6.1.4 ビルド
5.3.1 GR-TSUBAME のモーターコントローラー
への給電
5.3.2 GR-KURUMI への給電
5.3.3 スイッチの切り替えのまとめ
6 GR-TSUBAME のプログラミング
6.1 Web コンパイラの利⽤
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)
外部電源 (5V 〜 12V)
準備ができたら、次のステップに進みましょう。
Figure 5-2: GR-TSUBAME の接続
既にコネクタを半⽥付けしてある GR-KURUMI を乗せるのは簡単です。
Figure 5-2 の向きに合わせて GR-KURUMI を接続します。
GR-TSUBAME とモーターを接続するには付属のケーブルを使います。
Figure 5.2-3: GR-TSUBAME とモーターの接続
NOTE:
GR-TSUBAME とモーターの接続はしっかりコネクターを差し込んでください。 また、コネクターを取
り外す際には破損させないように気を付けましょう。
Figure 5-2 に⽰してあるように、GR-TSUBAME と GR-KURUMI にそれぞれスイッチがありますので、以下のよ
うに設定してください。
GR-TSUBAME のモーターコントローラーへの給電に関しては以下のとおりです。
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 (下側)
右側
PC から切り離して実⾏
ON (上側)
右側
GR-TSUBAME にはモーターを制御するのに必要な API が準備されています。 ここに書かれている以外の情報や
API 仕様書等は後⽇ Renesas Rulz - Japan1 にて公開していきますので、ご確認ください。
ここでは Web コンパイラを⽤いたプログラミングの説明をします。
以下の URL から Web コンパイラを起動します。
がじぇっとるねさす | ルネサス エレクトロニクス2
Figure 6.1.1-4: がじぇっとるねさすの Web ページ
1. 右上の
を押します。
2. 「ご注意」に同意の上で
を押します。
3. ご登録のメールアドレスとパスワードを⼊⼒し
を押します。
Figure 6.1.1-5: Web コンパイラの画⾯
テンプレートの選択では以下のものを選択してください。
Figure 6.1.2-6: テンプレートの選択 (GR-KURUMI + GR-TSUBAME)
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 で、左
側の I2C アドレスが 32 で、右側のアドレスが 40 に設定されています。
以下は、左側の I2C アドレスが 32 の⽅を⽤いた場合のプログラム例です。
まず、速度制御の例を⽰します。
Code 6.1.3.1-1 は回転速度 600 [rpm] での回転を指⽰し、エンコーダーから読み取った回転数をシリアルコン
ソールに表⽰するものです。
Code 6.1.3.1-1: Sample̲1.ino
#include
#include
#include
#include
<Arduino.h>
<Control.h>
<Wire.h>
<SPI.h>
//Includes Control.h
ControlRoot root;
ControlMotor motor;
//Declares root class
//Declares motor class
void setup() {
Serial.begin(9600);
root.controlInit();
motor.attach(0, 32);
//Initializes Control API
//Assigns a motor module
motor.setTargetSpeed(600.0);
//Sets target rotational speed to 60rpm
}
void loop() {
float speed = motor.getPresentSpeed();
Serial.println(speed);
}
//Obtains present rotational speed [rmp]
次に、角度制御の例を⽰します。
Code 6.1.3.2-2 は回転角を 3600 度になるように指⽰ (すなわち 10 回転) し、エンコーダーから読み取った回転
角をシリアルコンソールに表⽰するものです。
Code 6.1.3.2-2: Sample̲2.ino
#include
#include
#include
#include
<Arduino.h>
<Control.h>
<Wire.h>
<SPI.h>
//Includes Control.h
ControlRoot root;
ControlMotor motor;
//Declares root class
//Declares motor class
void setup() {
Serial.begin(9600);
root.controlInit();
motor.attach(0, 32);
//Initializes Control API
//Assigns a motor module
motor.setTargetAngle(3600.0);
//Sets target angle to 3600 degree
}
void loop() {
float angle = motor.getPresentAngle();
Serial.println(angle);
}
//Obtains present angle [degree]
次に、速度制限を付けた角度制御の例を⽰します。
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
#include
#include
#include
<Arduino.h>
<Control.h>
<Wire.h>
<SPI.h>
//Includes Control.h
ControlRoot root;
ControlMotor motor;
//Declares root class
//Declares motor class
void setup() {
Serial.begin(9600);
root.controlInit();
motor.attach(0 ,32);
//Initializes Control API
//Assigns a motor module
motor.setMaxSpeed(60.0);
motor.setTargetAngle(3600.0);
//Sets maximum speed to 60 rpm
//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
#include
#include
#include
<Arduino.h>
<Control.h>
<Wire.h>
<SPI.h>
//Includes Control.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;
float middle_speed = 750.0;
float high_speed
= 1250.0;
// Low Speed:
< 250 [rpm]
// Middle Speed: < 750 [rpm]
// High Speed: < 1250 [rpm]
ControlRoot root;
ControlMotor motor;
//Declares root class
//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();
motor.attach(0, 32);
//Initializes Control API
//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 Term4
を⽤いています。
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 - Japan1
1. http://japan.renesasrulz.com/
2. http://gadget.renesas.com/ja/index.html
3. http://japan.renesasrulz.com/gr̲user̲forum̲japanese/b/weblog2/archive/2015/06/10/kurumi.aspx
4. http://ttssh2.osdn.jp/