Blog Archives

マイクロマウス研修[4]モータを動かす

こんにちは。koraです。

前回の更新からだいぶ時間がたってしまいましたが、今回はモータを動かせるようにしたいと思います。

モータドライバについて

まず、マイクロマウス本体を見てみましょう。HM-StarterKitにはDRV8838というモータドライバが2つ搭載されていて、2つのモータの回転方向、回転速度をそれぞれコントロールすることができます。

それぞれのモータドライバは次の3つのピンから制御できます。

  • nSLEEPピン:スリープモードを切り替える。
  • PHピン:回転方向を制御する。(Lowにすると正転、Highにすると逆転)
  • ENピン:回転速度を制御する。(PWM信号を入力する)

回転速度の制御にはPWM(Pulse Width Modulation)を使います。PWMとは、信号線のHIGH/LOWを素早く繰り返すことで、出力される電圧を制御する方法です。繰り返す周期に対するHIGH時間の割合をDuty比といいます。モータドライバから出力される電圧は、バッテリー電圧にDuty比を掛けたものになります。

つまり、このマウスを自由に走らせるには、任意のDuty比のPWM信号を2つ出す必要があります。実際にどうすればいいのか、サンプルプログラム(Step2)を見てみます。

PWM信号の生成には、マイコンのタイマ機能を使います。HM-StarterKit.cの中で、クロックとIOの設定を行っています。この設定では、48MHzで内部のカウンタが動いています。カウンタとPWM信号がどのように連動しているかというと、

  • カウンタの値がMTU0.TGRAの値より小さければ、HIGHが出力される
  • カウンタの値がMTU0.TGRAの値より大きくなれば、LOWが出力される
  • カウンタの値がMTU0.TGRDの値になれば、カウンタがリセットされ0に戻る

“MTU0.TGRD = 240-1″と設定しているので、カウンタは0~239でループします。したがってDuty比は240段階で調整することができます。ちなみに、TGRAが左側、TGRCが右側のモータドライバを制御します。

ファイルの分割

マウスの最終目標は迷路を走ることです。モータを動かすだけでなく、直進、方向転換、センサの読み込み、迷路探索など、多様な機能を盛り込む必要があります。それぞれの機能、処理を分かりやすいように関数化しましょう。というわけで、サンプルプログラム(Step7)を参考に、ファイルを作成していきます。

今回作るファイルは、こちらの4つです。

  • init.c
  • init.h
  • static_parameters.h
  • portdef.h

新しいファイルを作るには、「プロジェクト・ツリー」の「ファイル」を右クリックして「追加」を選択し、「新しいファイルを追加」をクリックします。ソースファイルを作る場合は、表示された「ファイル追加」ウィンドウで「Cソース・ファイル(*.c)」を選択し、ファイル名を入力します。ヘッダファイルを作る場合は、「ヘッダ・ファイル(*.h; *hpp; *.inc)」を選択し、ファイル名を入力です。

init.c

init.cファイルには、クロックの初期化関数(clock_init)、モータの初期化関数(motor_init)、そしてこの2つの関数をまとめて呼び出す関数(init_all)を作ります。

init.h

init.hファイルには、init_allのプロトタイプ宣言を追加します。そうすることで、init.hをインクルードしたファイルから初期化関数を呼べるようになります。

static_parameters.h

static_parameters.hファイルでは、プログラム内で使用する定数を定義します。

  • IO_OUT …

続きを読む ›

Posted in DCマウス研修


マイクロマウス研修[3] 新しいプロジェクト

こんにちは、koraです。

今回はマイクロマウスの新しいプロジェクトを作る方法を解説します。

まずCS+を起動して、ファイル -> 新規作成 -> 新しいプロジェクトを作成から、プロジェクト作成画面を開きます。そして各項目を次のように設定します。

  • マイクロコントローラ:RX
  • 使用するマイクロコントローラ:RX631 -> R5F5631PDxFL(48pin)
  • プロジェクトの種類:アプリケーション(CC-RX)
  • プロジェクト名:任意(今回はmy_hm_starterkit)
  • 作成場所:任意

設定できたら「作成」ボタンをクリックします。my_hm_starterkitというプロジェクトができました。また、自動的にいくつもファイルが作られています。

プロジェクト名と同じ名前のファイル(my_hm_starterkit.c)があり、main関数がそこに書かれています。さっそく、前回試したブザーのサンプルプログラムからmain関数の中身をコピペします。そして前回と同様にしてビルドできるかというと、残念ながらできません。

エラーメッセージで、PORTBが定義されていないと表示されています。マイコンの入出力設定に使われるI/Oレジスタはiodefine.hで定義されているため、このヘッダーファイルをインクルードする必要があります。この対策は簡単で、my_hm_starterkit.cの先頭に、#include iodefine.hを追加するだけです。

もう一つのエラーでは、変数宣言を実行文の後に持ってきてはいけないと表示されています。これはC言語の昔の仕様です。デフォルトではC89規格になっているので、C99規格に変更します。

プロジェクト・ツリーから「CC-RX (ビルド・ツール)」をダブルクリックしてCC-RXのプロパティを開きます。次に「コンパイル・オプション」タブの「Cソース・ファイルの言語」をC89からC99に変更します。

エラーの対応はこれで十分ですが、ついでに「最適化レベル」 を0に設定します。最適化が適用されていると、割り込み処理などで変数の取り扱いに問題が起きる可能性があるそうなので、今後もマイクロマウスのプログラムを作成する際は最適化を切っておきます。

これで設定は終わりです。こんな風に、オリジナルのプロジェクトが作れるようになりました。

次回からは、迷路走行のサンプルプログラムを参考にしながら、まっさらなプログラムに少しづつ機能を追加していって、最終的に迷路を走行できるプログラムを作り上げたいと思います。

 

続きを読む ›

Posted in DCマウス研修


マイクロマウス研修 [2] 環境構築とサンプルプログラム

こんちには。koraです。

マイクロマウス研修、第二回目です。今回は開発環境とサンプルプログラムについてご紹介します。

今回の内容は、HM-StarterKitマニュアルのパート2に詳細手順が記載されていますので、ご購入いただいた方はそちらもご覧ください。(マニュアルの閲覧には、製品に同梱されているパスワードが必要です。)

 

1. 環境構築

HM-StarterKitには、ルネサスエレクトロニクス製のRXマイコンが使われています。そのため、プログラムの作成にはルネサスの統合開発環境「CS+」、プログラムの書き込みには「Renesas Flash Programmer」使用します。

まず、CS+のダウンロードページにアクセスし、無償評価版CS+のインストーラをダウンロードします。(ダウンロードにあたり、ルネサスのユーザ登録が必要です。)なお、無償評価版にはプログラムのサイズに制限がありますが、マイクロマウスで使用する分にはあまり問題ないそうです。

次に、ダウンロードしたインストーラを起動し、CS+をインストールします。この際、Renesas Flash Programmerも同時にインストールされます。

 

2. サンプルプログラム

HM-StarterKitのサンプルプログラムはGitHubからダウンロードできます。「Clone or Download」ボタンから、Zipファイルをダウンロードします。そしてダウンロードしたファイルを解凍し、適当な場所に置きます。

CS+を起動して、サンプルプログラムを開きます。HM_StarterKitのサンプルプログラムは、0番から7番まで8つ用意されています。今回は1番のブザーを鳴らすプログラムを使います。

電子工作といえばLチカですが、本製品のLEDはI2Cを使って光らせる仕様のため、直接IOから操作できるブザーが一番簡単です。

「ファイルを開く」をクリックし、先ほど解凍した「HM_StarterKit-master\ Sample_software\step1_buzzer」フォルダから「HM StarterKit.mtpj」を開きます。

プロジェクト内の各ファイルは左端のプロジェクト・ツリーから開くことで編集できます。dbsct.c、intgrp.cなど、いくつもファイルがありますが、main関数はHM_StarterKit.cに書かれています。

中身の解説はここでは省略するとして、さっそくビルドを始めます。

ビルド -> ビルド・プロジェクトをクリックして、このプログラムの実行ファイルを生成します。初回のビルドには数分かかります。2回目以降は数秒で終わるようです。ビルド終了と表示されたら終了です。

プログラムを書き込むには、「PC」「USBケーブル」「書き込み基板」「書き込みケーブル」「ハムスター本体」「バッテリー」を接続します。

次に、Renesas Flash Programmerを起動して、書き込み用のプロジェクトの作成を行います。ファイル -> 新しいプロジェクトの作成をクリックし、以下のように設定します。

  • マイクロコントローラをRX63x
  • プロジェクト名をRX631
  • 作成場所を適当に選択

設定できたら「接続」ボタンをクリックします。

次の画面の「操作」タブで書き込みたいプログラムファイルの場所を入力します。先ほどビルドした際、サンプルプログラムのstep1_buzzerフォルダ内にDefaultBuildが作られており、その中に生成されたHM_StarterKit.motがそれです。

ファイルパスの入力が終わったら、「接続設定」タブに移り、以下のように設定します。

  • 通信速度を115,200 bps
  • メインクロック周波数を12MHz

設定が終わったら「操作」タブに戻ります。

これでようやく書き込みができます。書き込み基板のスライドスイッチが書き込みモードであることを確認して、マイクロマウス本体の電源を入れます。Renesas Flash Programmerの「スタートボタン」を押せば書き込みが始まります。

書き込みが終了したら、書き込み基板のスライドスイッチを実行モードに移すか、書き込みケーブルを取り外して、マイクロマウス本体の電源を入れなおすと書き込まれたプログラムが実行されます。写真からは分かりませんが、無事、ブザーの低い音が出力されました。

ちょっと長くなってしまいましたが、今回はここまでです。設定さえできてしまえば、他のサンプルプログラムも簡単に実行できます。

次回はサンプルではなく、自分で新しくプログラムを作る方法について書きたいと思います。

続きを読む ›

Posted in DCマウス研修


DCマウス研修[25] モータマウントの設計

こんにちは、nomuraです。
前回から凄く時間が経ってしまいました。いつの間にやら地区大会が始まっていて焦ります。。。
あの製品この製品のお世話でマウスを触る時間が取れていませんでした。まだ慌ただしいのですが地区大会に向けて(ポイントを取らないと全国に出れないそうなので)時間を作って頑張ります。

さて、改めてモータについての話題から再開します。

続きを読む ›

Posted in DCマウス研修


マイクロマウス研修 [1] HM-StarterKitの開封

初めまして。

今年8月から入社した新人のkoraと申します。

 

社員研修として、マイクロマウスを始めることになりました。

学生の頃にライントレースマシンなどを作った経験はありますが、マイクロマウスは初めてです。

ロボットの基礎を学ぶにはもってこいの教材ということで、頑張って取り組みます。

 

研修の教材として、HM-StarterKit(通称ハムスター)を使用します。

こちらは今月アールティより発売されたばかりのハーフマウスのキットです。

新商品のレビューも兼ねて、ブログに進捗を掲載していきたいと思います。

 

まずは開封の儀から。

 

マイクロマウス本体、書き込み基板、バッテリーなど、一通り同梱されています。

基板はすべて実装済みのため、私のようなはんだ付け苦手勢にも優しい仕様です。

 

早速マイクロマウスを組み立てます。

説明書を参照しながら、本体裏面に絶縁用のポリイミドテープを張ります。

もし床面に金属等があった場合、回路が接触してショートする可能性があるため、絶縁処理は必要とのことです。

 

その後、適切なサイズに切り出した滑り材を車体の前後に取り付けて、本体は完成です。

バッテリーを繋いでサンプルプログラムを書き込めば、すぐに動かすことができます。

本製品は小さいサイズながら、LED、スイッチ、赤外線センサ、エンコーダを搭載しているため、多彩な動作が可能とのことです。

次回からは、プログラミングと制御に取り掛かりたいと思います。

続きを読む ›

Posted in DCマウス研修


DCマウス研修[24] ToFの動作確認

こんにちは、nomuraです。
今回はToFの動作確認を行います。

続きを読む ›

Posted in DCマウス研修


DCマウス研修[23] 受光動作の確認

こんにちは、nomuraです。
今回は受光回路の動作確認を行います。

続きを読む ›

Posted in DCマウス研修


DCマウス研修[22] LEDの動作確認

こんにちは、nomuraです。
今回から回路の動作確認を行っていきます。まずはLEDの動作確認です。

続きを読む ›

Posted in DCマウス研修


DCマウス研修[21] はんだ付け出来ました

こんにちは、nomuraです。
手はんだ部品が付けばいよいよ回路の完成です(動くとは言っていない)。

続きを読む ›

Posted in DCマウス研修


DCマウス研修[20] リフロー(3)

こんにちは、nomuraです。
前回の続きでリフロー編、最終回です。

続きを読む ›

Posted in DCマウス研修