■ホビーロボット部品の製造・販売 
  モータコントローラ、センサ、音声、画像、無線モジュールなど、
■ホビーロボット制作記事のページ (各種マイコン、PCとの接続事例)
■特殊メイク、特殊材料の販売 ※特殊メイクのコーナーはこちらに移りました。
Top(お知らせ) 製品紹介 使い方とサンプルプログラム 通信販売 リンク ロボット掲示板 会社案内
 Easy Robotics for all enthusiastic people!!!  ---HOBBY ROBOT PARTS SHOP ASAKUSAGIKEN---   Since 2003...
AVRマイコンと感圧センサAGB65-4FSの接続
はじめに

 ここでは AVRマイコンから浅草ギ研製感圧センサーボード「AGB65−4FS(4 point Force Sensor)」を駆動してみます。

 ※このページで紹介する内容はあくまでも一例です。個別の作成のご相談ご質問はお答えできませんのでご了承下さい。このページと同じ内容についてのご質問についてはロボット掲示板にてお願いいたします。


AVRマイコンとAGB65−4FS

 ロボット神経システムAGB65シリーズはPCやマイコンのシリアル通信機能を使えるスキルがあれば簡単に動かすことのできるモータコントローラ、センサー群です。1つのシリアルラインを複数のAGB65シリーズで共有でき、取り外しや追加も簡単に行えますのでPCやマイコンをホストコンピュータとしたロボットの作成が容易にできます。

 AGB65シリーズについてはこちらにも情報があります。

 今回使用するAGB65−4FSは1つのセンサーボードに4つの感圧センサーを付けて、それぞれの荷重情報だけでなく、4点内の重心位置をXY座標で出力する機能もついています。

 4点感圧センサー AGB65-4FSの詳細はこちらを参照願います。<−このページは必ず参照してください。
  (以後、このページを4FSのページといいます)

 AGB65シリーズは標準ではマイコンと接続するようになっております。PCと接続する場合でも変換にはAGB65−232Cというオプションボードが用意されておりますので簡単に接続できます。下の図はマイコンとつなぐ場合のイメージです。AGB65シリーズは各ボードに固有のIDがあり、これを変更できるタイプのものは1つのシリアルラインに同じ種類のボードを複数接続することができます。4FSの場合は1つのシリアルラインに16個のボードを接続できます。

 


<AVRマイコンについて>
 日本ではホビー用としてH8やPICと同じように使われているマイコンにAVRというものがあります。AVRマイコンには、C言語でのプログラミングに考慮されたAT-megaシリーズがあり、浅草ギ研で販売しているロボットキット「AT-WALKER」にはベストテクノロジー社のAT−mega32マイコンボード、BTC067が使われています。
 マイコンの開発で一番はじめにカベとなるのが開発環境ではないかと思います。ベストテクノロジー社ではAT-mega32用のC言語開発環境GDLを無償で公開しており、これは本来であれば自分で構築しなくてはならない開発環境の設定があらかじめされている、という便利なもので、ビギナーでもすぐにプログラミングを始めることができます。
 以降では、AT−WALKERのマイコンボード(BTC067に5V電源回路を追加したボード)を使用した接続・プログラミング例を紹介します。他のAT−megaのマイコンボードや、自作マイコンボードを作っている方も大体同じですので参考にしてください。
 
書籍で作るボードの完成品。5V電源基板の上にBTC067が載っている

 AT-mega32のプログラミングについては、浅草ギ研より出ている書籍「二足歩行ロボット製作超入門」に詳しく書いてあります。また、浅草ギ研ではこのAT−mega32マイコンボードだけの販売もおこなっております。(上の写真の真ん中の部分だけ)



BTC067の改造

 この節は、ベステクのBTC067(AT−WALKERボードの上にのってるもの)を使用する場合に必要な処理ですので、自作のマイコンボードなどの場合は飛ばしてもOKです。

 BTC067の場合、シリアルポート通信ポートはプログラムポートも兼ねており、PCと通信ができるような外部回路がついています。この影響により、受信(RX)を使用とすると問題が発生しますので、若干改造をする必要があります。送信の場合(TXを使用)は問題ありません。

 下はBTC067についてくるマニュアルの回路図です。(R80がどうの、という記載は無視してください。図を使いまわし。)


 JP1は出荷時にはつながっており、PCからプログラムが受けられるようになってます。

 下の図は実際にこの状態でRXにデータを受けたときの波形です。
 下の図のレンジは1マス2Vで、Highの状態は5Vですが、LOWが0Vではなく2.2V近辺に上がってしまいました。実際にプログラムでデータを受け取ろうとしましたがこの波形では全てHighと認識されてしまい、データは受け取れませんでした。



 BTC067ではJP1の接続を切れますので、MAX3313(上の図の右のIC)の影響が出ないようにするために、JP1を外して実験してみます。

 基板中央右に四角に囲まれた JP1 というところがあり、ハンダが盛られています。このハンダを取り去ると接続を切ることができます。



ハンダ吸い取り線でハンダをとりました。(実際にはこの上からハンダゴテをあてます)



 JP1のハンダが取れて、接続が切られているのがわかります。



 波形を観測すると、今度はきちんとLOWが0Vまで下がり、データを受け取ることができました。


 が、しかし、今度はMAX3313の接続が切られているので、新しいプログラムを入れようとするとAVDUDE(*1)を起動してもプログラムが転送されません。
(*1)GDLで作ったプログラムをATmega32に転送するプログラム。詳しくは浅草ギ研の書籍「二足歩行ロボット製作超入門」かBTC067のマニュアルを参照。

 この対策として、ここではJP1にプッシュスイッチを取り付けて、「プログラムを転送している間はスイッチを押す」ということにしました。



これで、プログラムの書きこみも、RXを使うこともできるようになりました。

ついでに、通信に使うピンにヘッダピンを取り付けて作業しやすくしました。


接続

 4FSはTTLレベル(0V/5V)でシリアル通信を行いますので、5V系のマイコンと直結できます。ということでAVRマイコンとも直結できます。(電源が違う場合、例えば3.3Vなど、の場合は電圧変換回路が必要です。)下は通信ラインの接続図です。電源やセンサーの接続などは省略しています。

  

AT-mega32は、シリアルポートが1つしかありませんので、取得したデータを別なシリアルラインでモニタするということができません。ということで、PC0とPC1にLEDを取り付けて、重心位置によって光らせることにしました。5VラインはPDxの横から取ってます。注意点ですが、AT-WALKERのマイコンボードはPCxにサーボ接続用のピンヘッダがついてますが、真ん中のラインはサーボ電源の+に接続されるようになっているので5Vは来てません。PCx以外のところから5Vを取る必要があります。
AT-mega128などの場合は、シリアルポートが複数あるので、1つを4FSにつないで、別な方から結果を出力(PCなどでモニタ。)ということもできるでしょう。

LEDの点灯については書籍で詳しく解説してます。


センサーの取り付け・実際の接続

<センサ取り付け>
 まずは測定するためにセンサーを固定する必要があります。4FSのページに取り付け寸法がのってます。作業場に有った適当なアルミ板に取り付け穴をあけました。実際にはロボットの足裏や、外装の内側に取り付けることになります。
  

4点を取り付けたところです。真ん中に4箇所ネジ穴が開いてますが、これはこの裏にモジュール部を取り付けるためにあけました。モジュールの取り付け穴ピッチは25x25mm間隔です。AGB65の取り付け穴ピッチは5mm単位なので、製図をせずに、方眼紙を板に貼りつけても正確な穴があけられるかと思います。モジュール部のサイズも、ロボットへの取り付けを考慮して29x29mmと非常に小さく作りました。
  

裏面にモジュール部を取り付けたところです。
  

<電源ケーブル>
モジュールは内部5Vで動いており、7.5V以上(25Vまで)の電源が必要です。添付されている電源ケーブルは9V乾電池用のスナップがついてます。
プログラミング中はずっと通電することもあるかと思いますので乾電池を使いたくない場合はケーブルを加工して外部電源化するのもよいでしょう。私は開発中は、1Aぐらいの出力のACアダプタを使ってます。ACジャックは秋葉原の電子部品店などでも売ってます(私は千石電商で買いました。)。ACジャックと、4FSに添付されている9V乾電池用のケーブルを切ってハンダ付けしたのが下の右の写真です。
  
  ※右の写真に「RSCに添付...」とありますが、4FSに添付されたものを使います。(写真使いまわし)

<通信ケーブル>
 スタンプと4FSの接続には4FSに付属の通信ケーブルを使います。これはAGB65同士を接続するように両側にコネクタが付いています。4FSを増設するときは、4FS同士を接続しますのでこのまま使いますが、マスタとの接続の場合はこのケーブルの加工が必要です。
  


 今回は、マイコンボードからヘッダピンが出ているので、一方に2550コネクタを取り付けしました。皆様は、このマイコンボード+5V電源回路とまったく同じということは無いと思いますので、実際にはマイコンボードに合ったコネクタを自分で取り付けたり、直接マスタ側の基板にハンダ付けすることになると思います。  TXEラインはAGB65シリーズ同士をつなぐときにだけ使いますので接続しないでOKです。写真では黄色の線ですが、線の色は決まってませんので注意して下さい(フラットケーブルを切って作っているため。別な色もある。)。
  

 実際の接続は下の写真のようになりました。4FSが立ち上がる前にデータが送信されると通信ができなくなるので、電源はAVRマイコンと4FSの両方を同じ電源を使った方が良いです。マイコン側で起動時に4FS起動終了までウェイトしてからメインプログラムを走らせれば、間違いなく4FS側でデータが受け取れます。
 



その他細かい接続や注意点は4FSのページを参照願います。


プログラミング〜重心を表示するプログラム

 AGB65−4FSは、それぞれの荷重を数値で取得できるだけでなく、4点から重心を割り出してXY座標で返す機能もあります。ここでは、一番使われるであろうこの機能を使うプログラムを考えます。  


重心読み取りのフォーマットを4FSのページで確認しますと、命令60と80があります。80の方が現在の荷重を中心にセットできるのでこちらの方を使ってみます。

<命令送信フォーマット>
[255] [ID] [長(1)] [命令(80)]

<結果返信フォーマット>
[255] [ID] [長(3)] [命令(80)] [X] [Y]

とありますので、単純に4バイトの命令を送って6バイト取得するプログラムを作れば良いようです。

ということで作ったのが次のプログラムです。

テキストデータはこちら AVR_4FS.c (右クリックで対象を保存)

■行1〜3
ヘッダファイルインクルード

■行5〜7
変数宣言。行5はシリアル通信用バッファ、行6は4FSに送るデータの配列、行7は受け取るデータ。

■行9〜19
ウェイト関数。詳しくは本に書いてあります。

■行22〜28
4FSに命令を送るところ。rs_putc( )関数は1バイト送信する関数です。GDLでない場合はこうゆう関数は無いと思いますので、自分で特殊レジスタを操作して送信することになります。

■行33〜35
シリアル通信を行う設定などの準備。

■行36,37
LEDにつないだピンの設定。Lowで点灯、Highで消灯します。これも本に書いてあります。

■行38
ココ重要です。4FSが立ち上がる前に通信を開始すると、どこが通信はじめかわからなくなるので、起動時に4FSが立ち上がるまで待ちます(非同期通信なので)。2秒待ってますが、1秒でも大丈夫。

■行42〜54
命令発行−>6バイト受信−>LED処理、を繰り返します。命令80は起動時は無負荷時で中心を返します。中心は127です。ここから重心がX方向(5バイト目、rcv_data[4]に格納される)にプラスマイナス20ズレるとLEDが光ります。6バイト目はY方向の重心なので、こちらでY方向を判定できます。



結果は次の通り、

右を押すと右のLEDが点灯


左を押すと左のLEDが点灯

となりました。

このような感じで簡単に重心を判定することができます。命令70は現在の重心を記憶するので、例えば、「ロボットが現在たっている状態を記憶して、そこから重心がどちらの方向に移動したか?」 ということも簡単に判定できます。


センサー取り付けのポイント

 取り付け時のポイントですが、センサー部は点なので、接触部がその点以外の場合は当然荷重を検知できません。この場合、たとえば二足歩行ロボットの足裏につける場合は、足裏が床と平行に接触する場合でないと全センサーポイントからの値を読むことができません。床が水平でない場合も同様です。これではせっかくセンサーを付けた意味が無いので、全ポイントに荷重されるように構造的に改善するしかないかと思われます。
 これは重要なポイントなので、浅草ギ研では引き続き、対象物が水平でなくても4点に荷重されるようなパーツを検討していきます。これらの情報については開発が終了しだい、4FSのページにてお知らせいたします。


おわりに

 
浅草ギ研では、4FSと同じようにコントロールできるセンサやコントローラを順次リリースする予定があります。感圧センサーだけでなく、他のセンサーやサーボモータコントローラも同様にコントロールできますので、これらを使えばロボットのアプリケーション開発に注力することができるでしょう。是非、高度なロボットを作成してみてください。

2006年4月20日

 
(C)Copylight 2003. 有限会社浅草ギ研 | 通信販売の法規(訪問販売法第8条)に基づく通信販売業者の表示