KCBサポート » KCB-1 » ハードウエア »


       

■KRS-788HVをKCB-1で動かす(2)

 
関連カテゴリー: ダウンロード, ハードウエア

前回の続きです。ここを読む前に必ず「KRS-788HVをKCB-1で動かす①」を読んで下さい。

今回はPWM信号をKCB-1で作成し、KRS-788HVを実際に動かすプログラムを作成します。

・PWM信号を作るための基礎知識

下の図はPWM信号を図示したものです。上に出っ張っている部分は信号がHIGHになっていることを表しており、へこんだ部分がLOWです。電気的にはHIGHは5VでLOWが0Vです。

図のように一定間隔で繰り返しHIGHとLOWを切り替えると、サーボモーターに繰り返し命令を送ったことになります。この切り換え間隔をPWM周期と呼びます。また、HIGHの時間の長さでサーボモーターに回転角度を命令します。

・今回のプログラム設計手順

  1. PWM周期が細かいほど命令をたくさん送ることと一緒なので、周期を速くすると反応は良くなる。しかし、ある程度以上になると違いは分からないので、今回はPWM周期を8[ms]とします。
  2. HIGHの時間(700[us]~2300[us])も細かいほど詳細な角度を指定することになりますが、細かすぎても違いが分からないので、今回は0度~180度を50分割ぐらいで指定できるようにします。つまり最小角度は3.6度。

・KCB-1でPWM信号を出力するために必要な計算

1) 周期の決定

KCB-1ではPWM信号を送るために8bit PWMモードと16bit PWMモードの2種類があります。おおまかな違いは、8bit PWMモードではHIGHの時間指定の細かさは255段階ですが、命令を送る間隔(PWM周期)の指定は255×4段階から選ぶことができます。一方16bit PWMモードでは、HIGHの時間指定の細かさは65535段階から選べますが、命令を送る間隔の指定は4種類(3.27675[ms]、6.5535[ms]、26.214[ms]、104.856[ms])しか選ぶことができません。16bit PWMモードの詳細についてはKCB-1のマニュアルをお読み下さい。

今回は8[ms]周期にするために、8bitモードを選択します。

2) 周期の計算

周期は下の式で計算できます。fqが周期を決定する変数0~255の間で選ぶことができます。Fjは分周比と言って、20MHz(PWM_F1)、10MHz(PWM_F2)、2.5MHz(PWM_F8)、625kHz(PWM_F32)のいずれかとなります。

周期=(fq + 1) × 255 / Fj

例えば、分周比Fj=PWM_F1=20MHzを選択すると、

周期=(fq + 1) × 255 / 20000000 ≒ (fq + 1) × 0.00001275

となります。fqの最大値255を代入すると、周期=3.25125[ms]となり、8[ms]に足りません。また、PWM_F2を選択しても6.5025[ms]となり少し足りませんので、今回はFj=PWM_F8を選択します。このときの周期決定変数fqを次のように計算で求めます。

fq = (周期 x Fj)/255 - 1
   = (周期 x PWM_F8)/255 - 1
   = (8ms x 2.5MHz)/255 - 1
   = (0.008 x 2500000)/255 - 1
   = 78.43 - 1
   ≒ 77

この計算から、KCB-1でPWM周期を決定する命令は、次のようになります。

pwm8_init (PIO0, PWM_F8, 77);

PWM8_init関数に、出力する端子"PIO0"、メインクロックの分周比"PWM_F8"、fqの"77"を指定して準備は完了です。

・HIGH時間の計算

8bit PWMモードでの周期8[ms]に対して、HIGHを指定できる細かさは255段階です。図のように、8[ms]と255を対比させると、角度を指定する有効なHIGH時間の長さ(700[us]~2300[us])は、だいたい22~72となり、ちょうど50段階となります。したがってサーボモーターを180度の位置へ回転させるには、KCB-1のプログラムでは、次のようになります。

pwm_out (PIO0, 72);

動作させる場合は、命令を送った後にサーボが目標角度へ到達するまで、必ずwait関数で待つようにして下さい。

より細かく角度を指定したい場合は、周期を狭くすることで可能になります。解説図のように8ms周期を4ms周期にすると、
44~144の100段階で設定できますので、約1.8度間隔でサーボを制御することができるようになります。

・サンプルプログラム

サンプルプログラムでは、サーボモーターを0度の位置へ回転させた後で、180度の位置へ回転させています。pwm_out関数の中の数値をいろいろ変えてみると、対応する角度へ移動します。

<プログラム ダウンロード  (3KB)>

KCB-1はPWM信号を4つ同時に出すことができますので、KRS-788HVを4つ同時に制御することができます。

ぜひお試し下さい。

 

■この記事へのリンクはこちらです。
 

       

■KRS-788HVをKCB-1で動かす(1)

 
関連カテゴリー: ダウンロード, ハードウエア

今回はPWMサーボをKCB-1で方法を紹介します。

例で使用するKRS-788HVは、KHR-HVシリーズに標準で使用されているPWMサーボです。

 

・PWM信号とは
PWM信号とは一定の時間で、HIGH(KCB-1では5V)とLOW(0V)を切り換えて作った信号のことです。

KRS-788HVはだいたい5[ms]~30[ms]の間隔でHIGHとLOWの時間を読み取って、角度制御を行います。

具体的には、KRS-788HVの白い端子を700[us]だけHIGHにすると0度の位置へ回転します。2300[us]だけHIGHにすると180度の位置へ回転します。
  

・準備

KCB-1にはPWMサーボを動かすための端子が用意されていないため、KRS-788HVを接続するには少し工夫が必要です。

KCB-1は、PWM信号をPIO端子の0,2,4,6番端子から出力することができます。この端子のいずれかにPWMサーボのコネクタから信号線(白線)を抜き取り、接続します。赤線はSIO端子のVccに、黒線はGNDに接続しサーボに電源を供給します。

※PIO端子はピンがたっていないため、予め2mmピッチヘッダーピンを立てておく必要があります。また、サーボのコネクターは2.54mmピッチなので、2mmピッチのヘッダーピンでは接続したときに隙間が空いてしまいます。コネクターの先端をペンチ等で軽く潰し、しっかりと接続できるように調節してください。

(※ 作業による故障等は弊社では責任を負いかねます。予めご了承下さい。)

 

 (画像 クリックで拡大)

 

今回はここまでです。次回はpwm.hを使って簡単制御プログラムを紹介します。

※1 msはミリ秒のことで、1[ms] = 0.001秒
※2 usはマイクロ秒のことで、1[us] = 0.000001秒

■この記事へのリンクはこちらです。
 

       

■KCB-1用PIO接続ケーブルセットを使った制作例

 
関連カテゴリー: センサー, ダウンロード, ハードウエア

端子が立っていなかったPIOポートを有効に活用するための「KCB-1用PIO接続ケーブルセット」が発売されました。このケーブルセットは、2mmピッチのオスコネクターをPIOポートの空いているパターンにハンダ付けするだけで、すぐに使用することができます。

今回はこのケーブルセットの簡単な使用例をご紹介します。

(写真 クリックで拡大)

左の写真は、8個のLEDのアノードを、470Ωの抵抗を通してPIOポートのそれぞれの端子に接続しました。PIOポートからHを出力するとLEDが点灯し、LにするとLEDが消灯します。ケーブルの先には市販の圧着式10ピンコネクタを使用しました。

このLEDボードを使用して、アナログ値を表示するプログラムを組みました。

右の写真はPSDセンサーに白い板を近づけてLEDを点灯させているところです。AD1に接続したPSDセンサーのアナログ値が大きくなる(物体に近づく)ことに比例してLEDの点灯する個数が増えます。

以下はサンプルプログラムのダウンロードと解説です。

 

<プログラム ダウンロード 2KB>

プログラム解説:

メイン関数ではLEDの点灯パターンのみを処理し、アナログ値は10ms間隔のタイマー割り込みで読みました。

メイン関数ループ内の数式( y = 7.0 / 500.0 * (adv – 100.0) + 1; )は、PIOポートの点灯パターンを求める式です。AD1から読み取ったPSDセンサーの値advが、600以上ではLEDが全点灯、100以下のときはLEDは全消灯となるように式を作りました。100~600間は約70の間隔で点灯するLEDの数が増減します。

式の中で7.0としているのは、値を整数型として扱わないようにするためです。もし7のままで計算した場合、Cコンパイラは整数型として計算を行うため、小数点以下を切り捨てるので、答えは全て1になります。これは#define関数でもよく間違うので注意しましょう。

※ LEDは品種によって接続する抵抗値が変化します。また、LEDには極性がありますので使用時には必ずデータシートでご確認ください。

■この記事へのリンクはこちらです。
 

       

■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使用)③」の解説をご覧ください。

■この記事へのリンクはこちらです。
 

       

■超音波センサー(受信部)

 
関連カテゴリー: センサー, ダウンロード, ハードウエア, 自律ロボット

KHR4thアニバーサリーにて行われる自律ビーチフラッグ大会に、心強い味方「USRX-1 超音波センサー(受信部)」が発売されます!

フラッグから発信する中心周波数40kHzの超音波を受信し、フラッグの位置を知るためのセンサーです。

このセンサーは、KCB-1のアナログポートに差し込み、関数を書き込めばすぐにアナログ値を検出できます。また、約5mまでならフラッグの方向を検出できますので、サッカーコートのどこにいてもフラッグを見つけることが可能です。

また、USTX-1 超音波センサー(送信部)の発売も予定されていますので、ご自宅での実験も可能です。

販売はロボスポット限定です。また、KHRの頭部に取り付けの際は専用のフレームもありますので是非ご利用ください!

 

 

■この記事へのリンクはこちらです。
 

       

■KCB-1の寸法について

 
関連カテゴリー: ダウンロード, ハードウエア

KCB-1の寸法を公開します。下からダウンロードしてください。

 

ダウンロード KCB-1穴位置図.pdf

 

KCB-1の実装にご利用ください。なお、KHR-HVシリーズに実装される方はこちらもご覧ください。

※このデータは転載・再配布を禁止します。

■この記事へのリンクはこちらです。
 

       

■書き込みをスムーズにする

 
関連カテゴリー: ダウンロード, ハードウエア

今回は、ジャンパーピンをタクトスイッチに置き換えて書き込みをスムーズに行う方法を紹介いたします。

 

市販のタクトスイッチ(プッシュスイッチ)を一つ用意します。タクトスイッチとは、押してON、離してOFFのスイッチのことです。

次に接続ケーブル(約100mm)を半分に切ってタクトスイッチとケーブルをハンダ付けすれば完成です。

きれいに見せるためにコネクタの空いた部分を削ってみました。

余裕のある方は熱収縮チューブをハンダの部分にかぶせると安心です。

 

 

ついでに、残ったケーブルでリセット側のスイッチも作りました。こちらは白を取って赤黒を残しました。

 書き込みの際はライトスイッチを押ながら電源を入れれば書き込みモードになります。電源を入れた後は手を離しても大丈夫です。

 比較的簡単な作業ですのでお試しください。ジャンパーピン付け外しの手間がかなり解消されるはずですよ。

 

※ご使用の際は自己責任にてお願い致します。

■この記事へのリンクはこちらです。
 

       

■KCB-1の電源について

 
関連カテゴリー: ダウンロード, ハードウエア

今回はKCB-1に電源を持ってくる簡単な方法を紹介したいと思います。

 

 KCB-1を使うには8~12V程度の電源が必要です。バッテリーでは弊社製ROBOパワーセルHVシリーズバッテリーがぴったりの電圧ですが、コネクタの端子数が合いません。そのためKCB-1には電源用ケーブルが付属されています。しかし、このケーブルはKCB-1と接続するコネクターが付いているだけなので片方を加工する必要※があります。

 

加工の仕方がわからない、ハンダ付けはちょっと・・・、という方はKHR-HVシリーズに付属のHV電源スイッチハーネスのご利用がおすすめです。

ROBOパワーセルHVシリーズのコネクターに対応しているので、HVシリーズのバッテリーでKCB-1を起動させることができます。また、スイッチがついているので、電源の抜き差しをする手間も省けます。

※安定化電源などでも使用できるよう、片方を未加工としています。

■この記事へのリンクはこちらです。