2015 年 ( 軽 坂 はじめての GR-TSUBAME ルネサスエレクトロニクス インキュベーションセンター 藤博 1 GR-TSUBAME とは 2 GR-TSUBAME の特徴 3 提供するモーターのスペック 4

18 

Loading.... (view fulltext now)

Loading....

Loading....

Loading....

Loading....

全文

(1)

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 お問い合わせ

(2)

GR-TSUBAME は Arduino や GR-KURUMI や GR-SAKURA のような Ardui no 互換機に繋がるモーターコントローラーです。 ⼀般にモーターを制御するには様々な知識が必要ですが、GR-TSUBAME を使 うことで簡単にモーターを制御することができます。 GR-TSUBAME には以下のような特徴があります。 速度制御ができます。 角度制御ができます。 トルク (電流) 制御ができます。 これらを組み合わせて複雑なプログラムを作ることみ可能です。

(3)

最⼤回転数: 最⼩回転数: 最⼤効率: ⼊⼒電圧: 角度制御分解能: 今回提供するモーターは以下のようなスペックです。 約 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: モーターのエンコーダー部 (目盛のついた円盤) は壊れやすいので取り扱いに注意してください。

(4)

ここでは 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)

(5)

準備ができたら、次のステップに進みましょう。

Figure 5-2: GR-TSUBAME の接続

既にコネクタを半⽥付けしてある GR-KURUMI を乗せるのは簡単です。

(6)

GR-TSUBAME とモーターを接続するには付属のケーブルを使います。

Figure 5.2-3: GR-TSUBAME とモーターの接続

NOTE:

GR-TSUBAME とモーターの接続はしっかりコネクターを差し込んでください。 また、コネクターを取 り外す際には破損させないように気を付けましょう。

Figure 5-2 に⽰してあるように、GR-TSUBAME と GR-KURUMI にそれぞれスイッチがありますので、以下のよ うに設定してください。

(7)

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 (下側) 右側

(8)

GR-TSUBAME にはモーターを制御するのに必要な API が準備されています。 ここに書かれている以外の情報や API 仕様書等は後⽇ Renesas Rulz - Japan にて公開していきますので、ご確認ください。

ここでは Web コンパイラを⽤いたプログラミングの説明をします。 以下の URL から Web コンパイラを起動します。 がじぇっとるねさす | ルネサス エレクトロニクス Figure 6.1.1-4: がじぇっとるねさすの Web ページ 右上の を押します。 1. 「ご注意」に同意の上で を押します。 2. ご登録のメールアドレスとパスワードを⼊⼒し を押します。 3. 1 2

(9)

Figure 6.1.1-5: Web コンパイラの画⾯

テンプレートの選択では以下のものを選択してください。

(10)

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

(11)

まず、速度制御の例を⽰します。

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);

}

(12)

次に、角度制御の例を⽰します。

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);

}

(13)

次に、速度制限を付けた角度制御の例を⽰します。 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);

}

(14)

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

:

(15)

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 を右クリックして を選択し、ダウンロードし ます。

(16)

この kurumi_sketch.bin を Kurumi Writer にて書き込みますが、いきなりモーターが⾼速回転してしまうと危険 ですので、動作確認ができていない場合には Kurumi Writer の Run after COM open(FTDI setting) にチェックを ⼊れて書き込んでください。

これらの説明の詳細は はじめてのKURUMI - 作り⽅使い⽅資料 - がじぇっとるねさすコミュニティ - Renesas Ru lz - Japan3 に記載されていますので参照してください。

(17)

必ず接続を確認してからモーターの電源を接続してください。 また、GR-KURUMI と GR-TSUBAME のスイッチ 組み合わせは Table 5.3.3-1 を参照してください。

最後に動作しているかどうかを確認するためにシリアルコンソールを⽴ち上げてください。 ここでは Tera Term を⽤いています。

Tera Term を起動し、 → → Serial にチェックを⼊れる → USB Serial Port と書かれているポートを選択 → と進めることでシリアルコンソールを⾒られます。

Table 5.3.3-1 の「PC から切り離して実⾏」に合わせてスイッチを切り替えてください。 切り替えた後に電源を

供給することで、PC から切り離して単体で実⾏することができます。

(18)

モーターを正確に制御するためには、電気、物理などの知識が 必要になるため、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

Updating...

参照

Updating...