製作事例の最近のブログ記事

4.動作確認

 それではマイコン・カーを動かしてみましょう。
 まずマイコン・カーの電源を2個ともONにしてください。
 図12のようにLCDに Camera init[NG] と表示され、mbedに内蔵されている4個のLEDが点滅したら、一度カメラの電源の配線を抜き刺ししてカメラを初期化します。
 そのあともう一度mbedのリセット・ボタンを押して再起動してみてください。LCDに Camera init [OK] 続けて Camera Sync [OK] と表示されれば、マイコン・カー側の準備は完了です。

s図12_マイコンカー起動時のL.jpg
図12 マイコン・カー起動時のLCD表示


2.マイコン・カー制御回路の製作

 次にマイコン・カーを制御するための回路を製作します。以前マイコン・カーを赤外線リモコンで制御する際に製作した記事(http://www.eleki-jack.com/arm/2012/06/12.html)をベースにマイコン・カーを制御する回路を製作します。
 今回製作する回路は以前製作したマイコン・カー制御回路に、シリアル・カメラ、XBee,そしてこれらの動作に必要な 3.3[V]電源を加えたものです。図8が回路図そして図9が実体配線図です。

s図8_マイコンカー制御回路図.jpg
図8 マイコン・カー制御回路図


s図9_マイコンカー制御配線図.jpg
図9 マイコン・カー制御配線図


 それでは、XBeeの設定が完了しましたので、いよいよマイコン・カーにシリアル・カメラとXBeeを載せたいと思います。

(2) マイコン・カーにシリアル・カメラを取り付ける

1.カメラ取付用の加工

 まず最初にカメラをマイコン・カーに搭載するために少しだけ工作をします。
 図1はマイコン・カーにカメラを取り付けるための部品例です。カメラのネジ穴はM1.4の精密ネジが使えましたので、適当に持ち合わせの部品を使って取り付けてください。手持ちがない場合は、図2のような精密ネジがホームセンタで販売されています。Bセットはさまざま長さのM1.4のネジがセットになっており、DセットはM1.2からM2.6までの精密用ナットがセットになっています。
 部品リストにあるタミヤ製のユニバーサルアームセットは、このセットに含まれるパーツの中のL型アームしか使用していません。もし、適当なL型ジョイント金具があればそちらをご利用ください。

s図1_部品リスト例.jpg
図1 部品リスト例


s図2_カメラ留め精密ネジ.jpg
図2 カメラ留め精密ネジ


XBeeを使って無線化 2
 それでは、簡単なプログラムでXBeeが正しく動作するか確認してみましょう。
  このプログラムは二つの機能をもっています。一つはPCから送信したデータをmbedで受信し、データをmbedのLCDに表示します。もうひとつの機能は、mbedが受信した文字数をカウントし  そのデータ数をPCに送信しています。

  図8は回路図です。今回は回路を簡単にするためにXBeeの電源はmbedのVOUT端子から供給しています。

ss図8_mbed-XBee接続図.jpg
図8 mbed-XBee接続図

XBeeを使って無線化 1

 前回はmbedとカメラをRS-232Cを使って有線で接続し、カメラで撮影した画像をPCに送信して表示しました。そこで、今回はXBeeを使って有線部分を無線化したいと思います。

(1) XBeeについて
 XBeeは小型の無線デバイスで以下のような特徴をもっています。
  • 低消費電力
  • 近距離通信
  • 低コスト
 XBeeは電子工作に興味のある方であれば、一度くらいは耳にしたことがあると思います。
2 画像表示回路の製作

 カメラを使った画像表示回路は以下のような構成で図9のように接続します。

s図9_mbed-カメラ接続図.jpg
図9 mbed-カメラ接続図


(1) カメラ(C1098)とmbedの接続
 カメラのTx端子とmbedのTx端子(P9)、そしてカメラのRx端子とmbedのRx端子(P10)を接続します。

(2) mbedとレベル・コンバータとパソコンの接続
 レベル・コンバータのTx端子とmbedのTx端子(P13)、そしてレベル・コンバータのRx端子とmbedのRx端子(P14)を接続します。パソコンとレベル・コンバータは、USB-シリアル変換ケーブルで接続します。

(3) 電源回路
 カメラの電源はmbedのVOUT端子からでは電源容量が不足するため、以前使用したLDOレギュレータで製作した3.3[V]を出力する電源回路を使用します。このとき、mbedの電源をPCから供給している場合、mbedのGND端子を回路のGNDに忘れず接続します。
 図10は(1),(2),(3)のすべてを接続したものです。

s図10_カメラ-mbed-PC接続.jpg
図10 カメラ-mbed-PC接続



 前回はmbedにカメラを接続し、4種類の画像サイズで撮影したものをSDに保存しました。そこで今回はマイコンに接続したカメラの画像データをパソコンに送信し表示してみます。カメラとmbed、mbedとPC間はいずれもUART(Serial)通信を使って、データの送受信を行います。
4 カメラを制御

3 画像取得プログラムの作成


 C1098-SSとC328の制御コマンドは図2のようにほとんど同じなので、C328のプログラムの一部をそのままC1098で利用することができます。しかし、C328のライブラリをそのまま使用すると、転送速度を初期値から変更した場合など使い勝手が悪い部分もあります。
 そこで、C328のライブラリを少しだけ修正しC1098-SS用のライブラリを作成しました。ちなみに、Cookbookで公開されているカメラ用ライブラリは、いずれもShinichiro Nakamura氏が作成されたものです。氏はほかにも有用なライブラリやプログラムを多数公開されており、筆者もありがたく利用させてもらっています。
4 カメラを制御

2 シリアル・カメラとmbedを接続する

  それでは、カメラの使い方を学ぶため、最初は簡単な事例を紹介します。
  作成するプログラムは4種類の画像サイズで撮影し、画像データをSDカードに保存するというものです。
 http://mbed.org/users/sunifu/notebook/c1098-ss-jpeg-serical-camera/のページは、作成したプログラムで金沢の中心街を流れる犀川を4種類の画像サイズで撮影したものです。
4 カメラを制御

 今回はmbedでカメラを制御するプログラムを以下の手順に沿って作成していきます。
(1) シリアル・カメラを使った画像の取得
(2) カメラとパソコンを有線(RS-232C)で接続しカメラで撮影した画像をパソコンに表示
(3) RS-232C(有線)をXBee(無線)に置き換えカメラをマイコン・カーに搭載
3 マイコン・カーの制御

 マイコン・カーを制御するプログラムを作成してする前にちょっとだけ前に作成した回転数を求めるプログラムを修正したいと思います。以前作成したプログラムはシャフトに取付けた円盤の黒いマーカーをフォト・リフレクタで読込むとパルスが出力されました。そこで、図23のように一定時間の間に何個パルスが発生するかをカウントすることで回転数を求めていました。

s図23_回転数の求め方.jpg
図23 回転数の求め方


 しかし、この方法では一定時間(以前作成したプログラムでは3秒)の間回転数の表示が更新されません。そこで、フォト・リフレクタの周期から回転数を求めるプログラムに変更したいと思います。ただし、この方法はノイズの影響を受けやすいため、求まった値をそのまま表示すると回転数がありえない値になってしまうことがあります。そこで、回転数が300を超えた場合は、前回求めた回転数をそのまま表示するようにしています。

2-3 PWMを使った速度制御
 前項ではモーター・ドライバICの機能Vrefを使って回転数を制御しましたが、ここでは、PWMを使って回転数を制御してみます。PWMとはPulse Width Modulationの略で、パルス幅を変えることで様々なものを制御します。
 マイコン・カーでは、PWM制御を使ってサーボやモーターの回転数を制御しています。
 図19のように周期に対するパルス幅の割合のことをデューティ比とよび、
  デューティ比 = パルスの幅(ONの幅) / 周期
で表され、モーターを制御する場合はこの値が大きいほどモーターの回転が速くなります。

s図19_duty比.jpg
図19 duty比


 もし、周期が100[mS]でパルスの幅を50[mS]とした場合、デューティ比は50%になりますが、デューティ比100%と比べて回転数が半分になるわけではありません。あくまでも、周期に対するパルス幅の割合が50[%]になるだけです。
 マイコン・カーにPWMの信号を与えるには、モーター・ドライバーICのIN1とIN2の端子を使用します。
 通常この端子に、0と1もしくは1と0を入力することで前進や後進しますが、そのときに 1 を入力する代わりにPWMの信号を入力します。
 mbedではPWM信号を簡単に出力するためにPwmOutオブジェクトが準備されていて、このオブジェクトを使うと変数宣言と、周期とパルス幅(もしくはデューティ比)を設定するだけで、簡単にPWM信号を出力することができます。
 以下はPwmOutオブジェクトで使用する主な関数です。

2-2 Vrefを使った速度制御
 ここでは、モータ・ドライバICの機能を使って速度制御をしてみます。TA7291Pでの回転数の制御は、「マイコン・カーを制御してみよう(6)」の図10のように、Vrefを変化させることでモータに印加する電圧を制御することができます。そこで、実際にmbedを使って回転数を制御してみましょう。
 図16は、mbedの出力でVrefの値を変え速度を制御する回路です。具体的には青色の押しボタンを押すとモータは中速で回転し、赤色のボタンを押すと高速に回転します。
 mbedはVrefの電圧を AnalogOutオブジェクトを使って制御しています。AnalogOutはmbedのP18端子に割り当てられており、0.0~1.0の範囲で値を指定すると、それに対応して0.0~3.3[V]の電圧を出力します。

s図16_Vrefを使った回転数制.jpg
図16 Vrefを使った回転数制御

2 マイコン・カーの速度を制御する
 マイコン・カーのモータ制御にはモータ・ドライバICのTA7291Pを使用しています。
 このモータ・ドライバICは、「マイコン・カーを製作してみよう(6)」で紹介していますが、IN1とIN2に信号を与えることで、前進や後進、停止を簡単に制御することができます。ほかにも速度制御の機能があり、Vrefの電圧を変化することでモータへの電圧を制御できます。速度制御はモータ・ドライバの機能を使う以外に一般的に用いられるPWM制御という方法もありますので、今回はVrefとPWMを使った速度制御をそれぞれ紹介します。

 前回はマイコン・カーを制御するための回路を製作しました。今回は、マイコン・カーを制御するためのプログラムを作成します。プログラムは大きく以下の四つに分けることができます。
(1) チョロQハイブリッドのリモコンからの赤外線信号を解析する
(2) サーボを制御しステアリング動作を実現する
(3) モータの回転数を測定する
(4) モータの回転数を制御し速度をコントロールする
 この中の(1)については、以前のエレキジャックの記事「CHOROQ HYBRIDを使って赤外線リモコン制御の基礎を学ぶ」(http://www.eleki-jack.com/arm/mbed/cat691/choroq-hybrid/)で紹介しました。
 そこで、今回は(2)から(4)についてプログラムを作成していきます。

(3) モーターについて
 今回使用した4速パワーギヤボックスにはマブチモーターRE-260が使用されていますが、このRE-260には三つのモデルがあります。
  http://www.mabuchi-motor.co.jp/cgi-bin/catalog/catalog.cgi?CAT_ID=re_260ra
 4速パワーギヤボックスはこの中のどのモデルが使われているかわかりませんが、図12の青いアンダーラインのようにギヤボックスのパッケージに基準電圧は3[V]と記載されているので、今回はこの電圧値を基準に回路を設計します。

図12_ギヤボックスパッケージ.jpg
図12 ギヤボックスのパッケージ裏面





カテゴリ


Copyright (C) 2006-2015 CQ Publishing Co.,Ltd. All Rights Reserved.