■KCB-1アップデーターVer.1.1.0 Rev.20090410
KCB-1 SDKをアップデートしました。今回のアップデート内容は次のようになっています。
- counter.hが新設され、エンコーダーなどのパルスをカウントする16ビットイベントカウンター機能がつきました。
- イベントカウンターは1相モード(アップカウントのみ)が3系統で、2相モード(アップダウンカウント。A相・B相モード)が2つ使えます。2相モードでは4逓倍でカウントできます。
- これまでは決まった周波数のタイマーしか作成できませんでしたが、任意の周波数※でタイマーを動作させられるようになりました。
- ワンショットタイマーが追加されました。ワンショットタイマーと通常のタイマーを組み合わせると非常に細やかなサーボモーター制御が可能となります(サーボモーター制御サンプルプログラムは近日公開予定)。
パルスカウント機能が追加されたので、モーターやタイヤに赤外線センサーなどをつけることで、回転数を読み取ってDCモーターのPID制御なども使えるようになりました。
アップデートプログラムは下記リンク先のZIPファイルをダウンロードして解凍し、できたインストールプログラムでインストールをしてください。なおインストールにはKCB-1 SDK CDROMのジャケットに記載されたシリアル番号が必要となります。Ver.1.00 Rev.20080318、Ver.1.0a Rev.20080510のアップデート内容も含みます。
KCB-1 アップデートプログラム(KCB1_V11020090410.ZIP)
※基底となる周波数が20MHz、10MHz、1.25MHz、625kHzとなっていますので、これらを割り切れない周波数を指定した場合は割り算の余りの分だけ周波数がずれます。詳しくは付属のマニュアルを参照して下さい。
■KCB-1 回路図の公開
近藤科学株式会社ではみなさまのご要望に応え、この度、KCB-1の回路図を公開することになりました。
これからもKCB-1ならびに弊社製品をご愛顧下さいますようお願いいたします。
- インストールは管理者権限で行って下さい。
- インストールには、KCB-1 SDK CDROMのジャケットに記載されている、シリアル番号が必要です。
- ZIP形式で圧縮されたセットアップファイル「KCB1_Circuit.ZIP」をダウンロードし解凍して下さい。
- 解凍されたファイル「KCB1_Circuit.exe」をダブルクリックで実行するとインストールが開始されます。
- インストールの途中で表示される使用許諾および注意事項をよく読み、インストールを行って下さい。
ダウンロードはこちらから> KCB1_Circuit
■HEWのツールメニューにFlashStarterを追加する
作成したプログラムを書き込むときに使用するFlashStarterを、統合開発環境HEWのツールメニューに追加する機能を紹介します。
①HEWのメニューから「基本設定」の「カスタマイズ」を選択します。
②「カスタマイズ」画面にある「メニュー」タブを選択し「アプリケーション内有効」の追加をクリックします。

③「ツールの追加」画面の「コマンド」の参照ボタンをクリックし、CDROMからコピーした「FlashSta.exe」を選択してください。
④同じ「ツールの追加」画面の「名前」に『FlashStarter』などお好みの名前を書き込みます。

⑤OKボタンで「ツールの追加」と「カスタマイズ」画面を閉じてください。作業は終了です。
ツールメニューの一番下を見ると、FlashStarterが追加されているはずです。この設定でFlashStarterのショートカットを探さなくても、HEWの画面から直接起動できるようになりました。

便利な機能なので、是非お試しください!
無線コントロールユニット用のソフトウエア、RCBコマンダーのアップデート版。
●変更点
設定ファイルの保存と読み込みに対応。
画面上で設定した、ボタン配置などを
複数保存しておくことが可能です。
RCBコマンダーVer1.1マニュアル
KRS-784ICS,786ICS,788HV,2350HVもこちらのソフトウエアをご使用ください。
REDVersion専用版です。KRS-2346RED、KRS-2350REDをはじめとするレッドバージョンの機種には、こちらのソフトウエアをご使用ください。
RED Version以外では、ご使用いただけません。
接続するために、KOPROPO製品のNo.01106「ICS-USBアダプター」が別途必要です。
マニュアル(PDF)
■HEWをWindows Vistaにインストールするときの注意事項
KCB-1は買ってすぐにマイコンプログラムを楽しむことができるように、ルネサスの統合開発環境HEW(High-performance Embedded Workshop)が付属しています。
ただしWindows VistaにHEWをインストールするには、いくつか手順を踏まなければなりません。
- インストーラー(CD-ROMの「開発環境」フォルダにある「nc30wav543r00_ev.exe」)をCD-ROMからいったん「ドキュメント」フォルダなどのローカルディスクへコピーします。
- nc30wav543r00_ev.exeを右クリックして、プロパティを選択します。
- 互換性タブを開き、「互換モード」欄で「互換モードでこのプログラムを起動する」にチェックを入れ、プルダウンメニューから「Windows XP (Service Pack2)」を選びます。
- 「特権レベル」欄の「管理者としてこのプログラムを実行する」にチェックを入れます。
- nc30wav543r00_ev.exeをダブルクリックして、通常のインストールを開始します。

インストール終了後にHEWをインストールしたフォルダ(通常は「C:\Program Files\Renesas\Hew」)を開き、「HEW2.exe」について、インストーラーファイルと同様に互換性モードと管理者権限を設定します。
- インストールしたフォルダにある「HEW2.exe」)を右クリックして、プロパティを選択します。
- 互換性タブを開き、「互換モード」欄で「互換モードでこのプログラムを起動する」にチェックを入れ、プルダウンメニューから「Windows XP (Service Pack2)」を選びます。
- 「特権レベル」欄の「管理者としてこのプログラムを実行する」にチェックを入れます。
- HEW2.exeをダブルクリックして、通常のインストールを開始します。

以上でHEWは画面にちょっと不具合があるものの、普通に使用できます。ただし、AutoUpdate.exe(標準では「Renesas\Hew\AutoUpdate\AutoUpdate.exe」)などはそのままでは使用できませんので、もしアップデートしたい場合はこちらにも「互換レベル」と「管理者権限」の設定を行います。
HEWをアップデートした場合は、「Hew2.exe」の「互換レベル」と「管理者権限」の設定を再確認して下さい。
Windows Vistaでは「C:\Program Files」フォルダにインストールしたつもりでも、実際は別の場所に保存されてしまうことと、管理者権限を持っていてもシステム関連のフォルダにあるファイルは自由に読み書きできないという仕様となりましたので、HEWが設定ファイルなどの保存が今まで通りできなくなってしまいました。ご面倒ですがVistaをご使用の方は、上記内容をよくお読みいただき、ご利用なさいますようお願いします。
さらに詳しい内容はルネサスサポートページ「ルネサステクノロジ, Windows Vista(TM)対応, ツールニュース, 20070516」をご覧になって下さい。
裏技として、「C:\Program Files」ではなくて、全くちがうフォルダへインストールするという方法もあります。この方法ではHEWの設定は不必要になりますが、AutoUpdateやDocumentUpdaterなどは設定が必要です。
アップデートに関しては、Renesasの対応をもう少し待った方がよいかもしれません。
■KHR-1自律ロボット作例
今回はKHR-1での自律ロボットを紹介します。
画像のKHR-1には前後左右に計4つのPSDセンサーを実装しています。これらのセンサーの値を読み取り、最も近い物体へKHR-1が向かうようにプログラムを組みました。

<画像 クリックして拡大>
写真は「KCB-1でKHR-1を動かす①、②」でKCB-1を実装したKHR-1にPSDを取り付けた画像です。頭部のフレームの前後と、両肩にPSDセンサーをひとつずつ取り付けました。
<ムービー (2.31 MB)>
画像のKHR-1を実際に動かした動画です。それぞれのPSDセンサーに手をかざすと、KHR-1が近づいてきます。
<サンプルプログラム ダウンロード>
サンプルプログラムは動画のKCB-1に書き込まれているものと同じです。以下はこのプログラムを説明します。
・サンプルプログラムの流れ:
①. ボードの初期化、RCB-1と通信開始。通信の準備ができたら赤LEDが点灯する
②. スイッチが押されるまで(AD2がHになるまで)待機している間、ニュートラル信号を流し続ける
③.スイッチが押されると、お辞儀モーションを一回再生
④ 無限ループ開始。ループ内では1回ループする度に必ずニュートラル信号を送信すること
⑤. 前後左右に取り付けたセンサーの値を読み取り、グローバルで宣言した配列に代入
⑥. センサーの値をバブルソートして、最も高い値を求める
⑦. バブルソートで求められた値を元に、モーション再生分岐
⑧. ④~⑦の処理を繰り返す
・解説:
②、④のように、モーションを再生していないときはなるべくニュートラル信号を送信するようにしてください。ニュートラル信号なしにモーションを再生すると、うまく動作しません。
⑥のバブルソートは複数の値の中で最も大きい値、または小さい値を求める処理です。詳しくは「センサーで目標を探す(KRS788使用)③」の解説をご覧ください。
■シリアルサーボの簡易位置制御
シリアルサーボモーターを回す場合は、sio_set_pos関数などで指定した目標角度に到達するまでには時間がかかります。かといって次のようなプログラムでは、むだ時間が発生します。
while (1) {
pos == sio1_set_pos(id, 目標)
if ((pos <= 目標 + 5) && (pos >= 目標 - 5) {
//目標位置に到達した(誤差付き)と見なして、何か処理をする
}
else {
wait (100000); // モーターが目標に到達するまでちょっと待つ
}
}
シリアルサーボモーターは目標位置へ到達すると停止しますので、現在位置を数回調べても移動していない場合は、目標へきちんと到達したと判断します。
while (1){
wait (300); // タイミング調整
現在位置 = sio1_set_pos(ID, 目標); //シリアルサーボに目標位置を送って現在位置を取得
if (前回位置 == 現在位置) { // もし、現在位置が前回位置と同じだったら
cnt = cnt + 1; // cntが一つ増える
}
if (cnt == 適当な数){ // cntが適当な数になったら、目標位置で停止したと判断して
break; // ループを抜ける
}
前回位置 = 現在位置; //現在の値を保持
}
sio_set_posは、処理の後に現在の位置を返します。その現在の位置と前回の位置を比べて変化が無かった場合は、サーボが目標の位置に到着していると判断してcntを増やします。数回命令を送って同じ位置にいた場合は、サーボが完全に目標の位置にいると判断し、ループを抜けて次の処理に移ることができます。
同一サーボに連続して命令を送るときには、ある程度間隔をあける必要があるので、ここでは約500us(wait(300))待ちます。
ビーチフラッグロボットでは8回一致したら目標に到達したと判断しています。
■KCB-1でKHR-1を動かす方法(2)
前回の続きです。
このプログラムでは2バイトコントロールコード再生のプログラムを、RCB-1対応に変更をしています。2バイトコントロールコード再生は、KCB-1からKRCと同じ再生コマンドをRCB-1へ送信し、モーションを再生する方法です。モーションを再生するには、モーションを各ボタンに割り付ける必要があります。
なお、コントロールコード再生を行う際は、更新プログラム「KCB1Update20080510.exe」をダウンロードする必要があります。詳しくは「KCB-1 SDK更新(Rev.20080510)」をご覧ください。
・ プログラム
#include <ad.h>
#include <rcb3.h>
#include <led.h>
// プログラム中で実行するモーションをHTHで割付してください
#define FORWARD BTN2B_LU // 前進
#define LEFTSTEP BTN2B_LL // 左サイドステップ
#define RIGHTSTEP BTN2B_LR // 右サイドステップ
#define LEFTTURN BTN2B_LL | BTN2B_LD // 左ターン
#define RIGHTTURN BTN2B_LR | BTN2B_LD // 右ターン
#define BOW BTN2B_RU // あいさつ
#define NP_WA 1200000 //停止後の待機時間(前に再生したモーションとかぶらないために余裕を持って設定する)
void khr_2Bmotion(int cc) //2BYTEcodeモーション再生関数
{
rcb3_put_2Bcode (cc); //2BYTEcodeでモーション再生
while (ad_read(1) > 500) {} //モーションが終了するまで待つ
rcb3_put_2Bcode (BTN2B_NP); //モーション終了後ニュートラルを送信
wait (NP_WA); //少しだけ待つ
}
void main(void)
{
cpu_init (); // CPUの初期設定を行う
ad_oneshotmode (); // ADはワンショットモードで読み込む
ledgrn_on (); // 起動確認用LEDを点灯する
rcb3_rx_open (); // RCBのRXポートを接続します
wait (5000000); // RCBの起動が安定するまで待ちます
ledred_on(); // 赤LED点灯後、モーション再生可能
while(1){
rcb3_put_2Bcode (BTN2B_NP); //何もしていないときはニュートラルを送信
if (ad_read(2) > 500) { //もしスイッチが押されたら
khr_2Bmotion(BOW); //モーション再生
khr_2Bmotion(FORWARD);
khr_2Bmotion(RIGHTSTEP);
}
}
}
・解説
▼変更点①
通常の2バイトコントロールコード再生のプログラムと違うところは、モーションを再生していないときに、常にニュートラル信号を送信していることです。これは、通常、KRCの電源を入れて何も操作していない場合に、KRCからはニュートラル信号が送信されているためです。
▼変更点②
1)コントロールコード再生
2)再生終了待ち
3)ニュートラル送信
4)ニュートラル状態に戻るまで待つ
以上の④項目を今回はkhr_2Bmotionという関数にまとめました。