ヴイストン「Beauto Chaser」で学ぶプログラミング入門講座
【第6回】VS-WRC003に各種センサーを取り付けてみよう!
皆さんこんにちは。前回に引き続き連載を担当いたします、大阪工業大学電子工学研究部のimokenpiです。これまでの連載でBeauto Chaser標準の赤外線センサーを使い光を追尾したり、ライントレースを行なってきました。
マイコンプログラミングのおもしろさの一つに、各種センサーでさまざまな値を取得でき、またこの値を反映させたプログラミングを行なえることがあげられるかと思います。センサーについてはこれまでBeauto Chaser標準の赤外線センサーしか使ってきませんでした。VS-WRC003には他にもセンサーが取り付けられる構造になっているのに、これではもったいない! ということで、今回はVS-WRC003のアナログ入力ポートに電子部品として市販されているセンサーを取り付け、実際に値を取得していきたいと思います。
●トランジスタって何?
応用のためにはまずは基本から、というわけで、各種センサーを付ける前にBeatuo Chaserに標準でついている赤外線センサーの仕組みを見ていきましょう。
Beauto Chaserの赤外線センサーはフォトカプラと呼ばれるもので、中にトランジスタの様な物が入っています。トランジスタは信号を増幅したり、スイッチのような動作をさせたいところに使われています。トランジスタの詳しい説明は割愛しますが、今はB(ベース)に流れる電流が大きくなるにつれてC(コレクタ)とE(エミッタ)に流れる電流が増えると考えてください。トランジスタを蛇口、電流を水に例えると下記のようになります。
●赤外線センサーにトランジスタの様な物が入っているってどういうこと?
通常トランジスタを電子回路で使うときはベースに電流を流すことでC(コレクタ)とE(エミッタ)に流れる電流を制御します。しかし、フォトカプラなどのセンサーの中に入っているトランジスタもどきはちょっと違います。
赤外線センサーでは、センサーから出した赤外線を床などに反射させ、同じくセンサー内に搭載されている受光部で読み取ることによって、外部情報をセンサーに取り込みます。受光した赤外線の量が多ければ多いほどセンサー内部のB(ベース)に電流が多く流れ、結果的にC(コレクタ)とE(エミッタ)間に流れる電流が多くなります。
赤外線センサー(フォトカプラ) | 赤外線センサー(フォトカプラ)の動作の仕組み |
●どうやって電流の変化を読み込むの?
実はマイコンは電流の変化を読み込むのが苦手です。なので電流の変化をマイコンに読み込むには流れる電流を電圧に変換してから読み込む必要があります。赤外線センサーだけでは電圧の変化を作り出すことができませんので赤外線センサーに加え、外部回路が必要です。
ヴイストン株式会社にあるBeauto ChaserのWebページでVS-WRC003の回路図が公開されています。
□VS-WRC003テクニカルマニュアルのダウンロードサイトhttp://www.vstone.co.jp/top/products/robot/beauto/cdownload.html#ref
回路図から赤外線センサーの部分のみ抜き出したもの |
回路図から赤外線センサーの部分のみ抜き出したものが右図となります。緑の枠内が赤外線センサー、緑の枠外がVS-WRC003に搭載されている外部回路になります。H8マイコンがつながっている部分の電圧変化を読みとることで、赤外線センサーの値を調べるわけですね。
K(カソード)につながっている100Ωの抵抗は、赤外線センサーの内部の赤外線LEDに流れる電流を制限するための抵抗です。C(コレクタ)につながっている33kΩの抵抗はプルアップ抵抗と呼びます。プルアップの説明は長くなりますのでここでは省き、回路がどのように動作するかのみ説明したいと思います。
●外部回路はどのように動作するの?
センサーを動かすための外部回路を説明するのに、赤外線センサーの中のC(コレクタ)-E(エミッタ)間の流れる電流が多くなる、少なくなるという表現では少しわかりにくいので、受光部が十分な量の赤外線の反射を読み取り、C(コレクタ)とE(エミッタ)の間が短絡している時(スイッチON)、受光部がほとんど赤外線の反射を読み取れず、C(コレクタ)とE(エミッタ)間が開放している時(スイッチOFF)と言うスイッチのような挙動であると近似して考えてみましょう。下図のように受光部が十分な量の赤外線の反射を読み取っている場合はスイッチがONとなり、Vccの電流は33kΩの抵抗を通ってGND(0V)に流れていきます。結果的にマイコンの入力端子には0Vがかかります。受光部がほとんど赤外線の反射を読み取れていない場合はスイッチがOFFとなり、Vccの電流は33kΩの抵抗を通りますが、GNDとつながっていないためVccに近い電圧がマイコンにかかります。
受光部が十分な量の赤外線の反射を読み取っている場合はスイッチON。水色のラインが0V(GND)に近い電圧になる | 受光部がほとんど赤外線の反射を読み取れていない場合はスイッチOFF。水色のラインがVccに近い電圧になる |
それではスイッチをC(コレクタ)とE(エミッタ)に置き換えてみましょう。基本は先ほどのスイッチの挙動と同じです。受光部が十分な量の赤外線の反射を読み取っている場合はC(コレクタ)-E(エミッタ)間に多く電流が流れる(スイッチONの状態に近くなる)ことにより、Vccの電流は33kΩの抵抗を通ってGND(0V)に流れていき、結果的にマイコンの入力端子には0Vがかかります。受光部がほとんど赤外線の反射を読み取れていない場合はC(コレクタ)-E(エミッタ)間に電流が流れずに、Vccの電流は33kΩの抵抗を通りますが、GNDに向かって電流が流れていないため、結果としてVccに近い電圧がマイコンにかかります。
C(コレクタ)-E(エミッタ)間に多く電流が流れる(スイッチONの状態に近くなる)ことにより、Vccの電流は33kΩの抵抗を通ってGND(0V)に流れていき、結果的にH8マイコンの入力端子に0Vがかかる | C(コレクタ)-E(エミッタ)間に電流が流れない場合、GNDに向かって電流が流れていないため、Vccに近い電圧がマイコンにかかります |
ただし、単純に「0V」、「Vccに近い電圧」と言うように、どちらかの電圧のみがH8マイコンによって感知されるわけではありません。トランジスタにはB(ベース)に流れる電流の量(赤外線センサーの場合は受光する赤外線の量)に応じて、C(コレクタ)、E(エミッタ)間に流れる電流の量が決まるため、赤外線を受光する量によって連続的に電圧が変化します。
さて、Beauto Chaserに搭載されている赤外線センサーの仕組みは理解できましたか。ここまで記事を読んでいただけた方にはわかっていただけると思いますが、VS-WRC003にあらかじめ搭載されている外部回路に対応したセンサーでないと使うことができないというわけです。これを言いたいために電子回路の説明を長々と書いてきたわけです(笑)。
赤外線センサーが赤外線を読み取る量とH8マイコンが読み取る電圧の関係をグラフに表すとこのように、電圧が連続的に変化している箇所がある。※このグラフはBeauto Chaserの赤外線センサーの特性を示すものではありません | 緑の枠外に収まるセンサーでないと使うことができない |
●実際にセンサーをつなげてみよう
さて、ここからは実際に市販のセンサーを取り付けていきましょう。今回取り付けるセンサーはフォトICダイオード、曲げセンサー、焦電型赤外線センサーモジュールです。
CPUボードとセンサーの結線ですが、今回ブレッドボードを使用しました。ブレッドボードは等間隔に並んだ穴に部品を挿し、回路を作っていくことができます。ここではブレッドボードについては詳しく触れることはしませんが、PC Watchの「武蔵野電波のブレッドボーダーズ」という記事で詳しく触れられていますので一読をお勧めします。
今回はヴイストン社から発売されているアナログ入力デバイス用コネクタケーブルを使ってVS-WRC003とブレッドボードを接続しています。ケーブルの先をワイヤストリッパで剥ぎ、線を強くよってあげることでブレッドボードに挿しています。
今回取り付けるセンサー | 使用した工具です。左から順に、ワイヤーストリッパー、ニッパー、はんだごてになります |
今回使用したブレッドボード | ヴイストンのアナログ入力デバイス用コネクタケーブル |
●フォトICダイオードをつなげてみよう
簡単に接続でき、しかも安いので今回つなげるセンサーの中でお勧めの1品です。
明るければ抵抗値が低く、暗ければ高くなります。Beauto Builder NEOで値を読み取った場合、明るければ数値が小さく、暗ければ大きくなります。光の強さによって抵抗値が変わる可変抵抗の一種と考えればよいでしょう。それではフォトICダイオードをVS-WRC003につないでいきます。
●曲げセンサーをつなげてみよう
曲がると抵抗値が高くなる不思議なセンサー、それが曲げセンサーです。
抵抗値が変化する……要するに可変抵抗です。回路図は上記のフォトICダイオードが曲げセンサーに入れ替わっただけですので省略します。3番ピン(青)、4番ピン(白)を曲げセンサーの端子につなげば値を読み取れます。
曲げセンサーの端子の部分は繊細なので、大切に扱ってあげてください。Beauto Builder NEOで値を読み取ると、曲げていない時には900程度、直角に曲げると1,500を超える値が出ました。
曲げセンサーとブレッドボードをつなぐとこのようになります | 曲げることによってスピーカーから出る音が変化するプログラムです | 【動画】実際にプログラムを動作させています。センサーを曲げることでスピーカーからでる音が変わります |
●焦電型赤外線センサーモジュールをつなげてみよう
このセンサーモジュールは秋月電子通商から購入しました。
このセンサーには+B(電源入力:線の色は(赤)、GND(茶)、ALARM(黒)の3つがあり、センサーの周りで熱源の移動がなければALARM、GND間は切断された状態となり、何か熱源が動くとショート、つまり電流が流れます。このようにスイッチの働きをするセンサーになります。
さて、このセンサーモジュールをつなげたいのですが、データシートには5Vから12Vの電源に対応、内部的には3.3Vで動作すると書かれています。どういうことかというと、電源電圧を3端子レギュレータというものを使いセンサーモジュールで使う3.3Vに変換しています。残念ながらVS-WRC003の電源ピン(3.3V)をセンサーの電源ピンにつないでもそのままでは動きません。これを解決するにはVS-WRC003の電源ピンから出ている3.3Vをセンサーモジュール内部の3.3Vの電圧がかかる部分に直接つないであげる必要があります。以下を参考に作業を行ないます。
焦電型赤外線センサーモジュールをつなげたものです。後に書くように接続には加工が必要です | 焦電型赤外線センサーモジュールを使った回路図 | モジュールにつながっている赤い線を半田ごてで半田を溶かし、モジュールからはずします。その後、写真を参考に表面実装部品の横に赤い線の先をはんだ付けしてください。表面実装の部品は取れやすいので手早く半田付けする必要があります |
それではVS-WRC003と接続しましょう。VS-WRC003の1番ピン(オレンジ)をモジュールの+B(赤)に、VS-WRC003の3番ピン(青)をモジュールのGND(茶)に、VS-WRC003の4番ピン(白)をモジュールのALARM(黒)に接続してください。VS-WRC003の2番ピン(緑)は不要なのでセロハンテープなどをつけ、ショートしないようにしましょう。
筆者の環境では実際につなぐと、センサーの前に何も熱源が動いていない場合はセンサーの値は4,092(電気が流れていない)、センサーの前で手をかざすと50(電気が流れている)を下回りました。
人などの熱源が通ると音を鳴らすプログラムを作りました | 【動画】実際に動作させるとこのような感じになります。動きを止めると反応しません。かなり広い範囲を読み取れていますね |
●次回予告
これまでBeauto ChaserのプログラミングにはBeauto Builder Neoを使用してきました。次回から2回に分けてBeauto Builder Neoに代わりC言語でBeauto Chaserをプログラミングしていきます。それではまた次回お会いしましょう。
今回購入した部品は以下の通りです。
□ブレッドボード(EIC-301):150円
・秋月電子通商
http://akizukidenshi.com/catalog/g/gP-00313/
□Beauto用 アナログ入力デバイス用コネクタケーブル(5本入):630円
・ヴイストン株式会社
http://www.vstone.co.jp/robotshop/index.php?main_page=product_info&cPath=23_51&products_id=273
□フォトICダイオード S9648-100:120円
・秋月電子通商
http://akizukidenshi.com/catalog/g/gI-02426/
□曲げセンサー:1,780円
・スイッチサイエンス
http://www.switch-science.com/products/detail.php?product_id=126
□焦電型赤外線センサーモジュール:850円
・秋月電子通商
http://akizukidenshi.com/catalog/g/gM-02471/
2009/5/14 01:00