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

ADコンバータボード AGB65-ADC の紹介




<概要>

■16個までの電圧入力を数値データに変えるボード

AGB65−ADC (Analog Digital Converter) は1つのシリアルラインで制御できるADコンバータボードです。

■各種センサーとの接続が可能
一般的にホビー用途で入手可能な、5V電源の電圧出力型センサーとの接続が可能です。16個ある入力ポートには5V電源出力用のピンもあり、電源を持たないセンサーに電源を供給することも可能です(最大750mA)。よく電子部品店で売られているPSD距離センサGP2D12や、浅草ギ研製の3軸加速度センサ、感圧センサ、近接センサなどを直結することができます。その他センサーやスイッチなどとの接続もこのページ下で紹介しています。

■マイコンやPCと簡単接続
シリアル通信は5Vレベルなので5V系のマイコンと直結して使うことができます。又、オプションの232C変換ボードを使用することでPCとの接続も可能です。よって、シリアル通信の機能を使えればセンサーなどからの出力値を数値で読み取ることが可能となります。

■最高12bitの高解像度
アナログ−デジタル変換は8ビット又は12ビットの解像度が選択できます。つまり、12ビットの場合はセンサなどの出力を0〜4095段階で測定することができます。(8ビットの場合は0〜255の数値になる)


■最大入力数128ポート
本製品はDIPスイッチのID切替により8台までを同一シリアルラインに接続することができます。つまり、1つのシリアルポートで16x8=128ポートの入力が可能です。

■他のAGR65シリーズに接続可能
他のAGB65シリーズのセンサやコントローラと同じシリアルラインを共有できます。AGB65シリーズについては「ロボット神経システムAGB65シリーズの説明」のページを参照願います。

■115Kbpsの高速通信が可能!
通信速度は115Kbpsにも対応し、PCなどから高速にデータを送信することが出来ます。(初期設定は9600bps)
注)PCは115kbpsの速度を出せるものがほとんどですが、マイコンの場合はクロックによっては正確な115Kが出ないものがありますので注意してください。クロックの選択は各マイコンのデータシートを参照願います(大抵は115200の倍数のクロックを使う必要があります。)

■電源搭載で外部に電源回路不要!バッテリ駆動が可能!
ボード上に電源回路を内蔵し、外部に電源回路が不要で、バッテリなどで駆動することができます。


■28x31mmの超小型設計!
ロボットなどに基板を搭載する場合はその大きさがネックになりますが、本製品は極力小さい部品で構成されており、実装面積が小さくて済みます。また、基板の4角には取り付け穴があります。(穴系2.2mm、M2ネジ用)



<仕様>

基板用電源
 +6.5〜+15V (*1)  コネクタ:日圧B2B-EH  (9V電池ケーブル付属)
基板消費電流
 40mA
電源出力
 5V 750mA(max) *外部に対して供給できる電源
入力数
 16ポート(最大128ポート(*2)) コネクタ:2mmピッチピンヘッダ (*4)
分解能
 8bit/12bit *シリアル命令により選択
通信設定
 8ビット、ノンパリ、ストップ1ビット フロー制御なし 非同期通信
通信規格
 TTLレベルEIA232C準拠 (*3)
通信速度
 9600bps/115200bps (DIPスイッチで切替)
固有ID
 120〜127 (IDについては下記取扱い説明に詳しく書いてあります。)
寸法/重量
 寸法28x31mm 重量:6g
付属品
 ■AGB65電源ケーブルx1 (基板と9V乾電池をつなぐケーブル)
 ■電源延長ケーブルx1 (二台目のAGB65と電源を共有するケーブル)
 ■通信ケーブルx1 (二台目のAB65と通信ラインを共有するケーブル)
(*1)高い電圧になるほど効率が落ち、発熱量が増えます。12V以下での使用を推奨。
(*2)本製品を8台使用した場合。
(*3)5V系のマイコンと直結できます。PCと接続する場合は別売のAGB65-232Cが必用になります。
(*4)コネクタはヒロセ製A4B-3S-2Cを推奨。(別売ケーブルあり)


<ピン配列>

   



<bps/ID設定スイッチ>


 
 *上の写真はAGB65−ADCのものではありません。



  



<価格>
 税込み 12,600円 (本体価格12,000円)


<オプション>
 AGB65−232C 4,725円 (本体価格4,500円)
 (PCと接続する場合に必用です。下記接続例を参照。)

 センサーケーブル2mmピッチ3P-3P 20cm 315円(本体価格300円)
 センサーケーブル2mmピッチ3P-3P 20cm 10本セット 2,625円(本体価格2,500円)
 *20cm長の3本ツイストケーブル両端に2mmピッチx3ピンのメスコネクタが付いているもので、ADCのセンサポートに合います。
 *コネクタはヒロセ製A4B-3S-2Cです。


 Bluetooth無線機(本製品と接続するには下記2つが必要です。)
 BlueMaster  12,600円(本体価格12,000円)

 AGB65−BT 2,520円(本体価格2,400円)



<接続例>

<システム構成例>

 
 ※複数接続する場合は、消費電流合計以上の出力が出せるバッテリを使用してください。基板用の電源にアルカリ9V乾電池を使用する場合は最高で800mA前後です。ニッカドやニッケル水素はアルカリの5〜10倍ぐらい出力できます。(商品にもよります)

<マイコンとの接続詳細>

 


<PCとの接続>
 PCと接続する場合は、AGB65-232Cに表示されている通りにケーブルを接続します。AGB65-232CにはPCのCOMポートへ接続するためのD-sub9ピンコネクタケーブルが付属していますので、これをPCへ接続します。この結果、上記マイコンとの接続の場合と同様に、PC(マスタ)のTXがコントローラのRXへ、PCのRXがコントローラのTXへ接続されます。

 
 ※PCの通信設定は「フロー制御無し、スターとビット1、ノンパリティ」に設定します。フロー制御無しの場合はPCはRTS/CTS信号を無視しますが、念のため、PCケーブル内部でRTS/CTSラインをループしており、これによりまちがってフロー制御=RTS/CTSになった場合、もしくは通信ソフト側でどうしてもRTSコントロールを行ってしまう場合でも、強制的に通信可能状態になります。



<電源ケーブルの接続>

 AGB65電源ケーブルは、なれないと差し込みづらいので、下の図を参照に、慎重に差し込んでください。まっすぐに挿入すると簡単に入ります。簡単に入らない場合は無理をして端子を曲げないように注意して下さい。尚、逆に挿そうとすると入りません。
 電源ケーブルの逆側には、9V乾電池用のスナップが付いております。これは簡易的なものなので、何回も乾電池を抜き差しするとスナップ部がゆるみますのでご注意下さい。9V乾電池以外の電源を使用する方は、ケーブルを切断してそれぞれの電源に合ったコネクタを取り付けて下さい。電源ケーブルを切断する際は、電源がつながっていないことを十分注意した上で行ってください。通電したまま電源線をカットすると乾電池などが破裂する可能性がありますので注意して下さい。

  



<センサーの接続>

 AGB65-ADCのセンサーポートは2mmピッチ1x3のピンヘッダになっています。2mmピッチのコネクタであればなんでも接続できます。浅草ギ研ではオプションのセンサーケーブルも販売していますので、よくわからない方もしくはコネクタを作るのが面倒な方はこちらをご利用下さい。以下、浅草ギ研のセンサーケーブルの接続例です。

 
   
   *1つのセンサポートは3ピンで構成される

 これは、8番のセンサポートにケーブルを接続したところです。このように、1つのポートは3つのピンによって構成されています。

 基板内側:センサ信号線
 基板中側:センサへの電源(+5V)
 基板外側:センサへのグランド

 となっています。

  


 センサ側のコネクタは、各センサ用に改造する必要がある場合もあります。下は、浅草ギ研で販売しているセンサーケーブルを改造した例です。大きなコネクタは2.54mmピッチのもので、浅草ギ研でも販売しています。

  
 浅草ギ研の感圧センサとの接続はこのような改造が必要です。詳しくは各センサのページで説明します。



<シリアルデータ通信による操作>

<データ形式>


 マスタからADCへの指示は、バイトサイズの数値データで送られます。バイトサイズ(8ビット)なので、表される数値は0〜255の256種類になります。

 尚、以下特に記述がない場合は、数値は10進数で表しています。

 −基本形−

 データの基本形は次の通りになります。[ ]内は1バイトを表します。()内は送りえる数値の範囲を表します。

 [シンクロバイト(255)] [ID(120-127)] [送信バイト長(1-33)] [命令1] [命令2] [命令3] ...
シンクロバイト ADCにデータの通信開始を知らせるデータで、常に「255」で始まります。
ID ADCに設定された固有のID。(*)
送信バイト長 送信される命令の(バイト)数。シンクロバイト、ID、送信バイト数は数えません。
命令 ADCに動作させたい命令。以下で詳しく説明します。
(*)DIPスイッチで120-127の8パターンに設定できます。
注)データはキャラクタデータではなく、数値(バイナリ)データで送ります。
例えばマイコンをマスタとし、C言語でプログラムを作る場合に255を送信しようとして(PCや他の言語も考え方は同じ)、

printf("255");

とするのは間違いです。これですとキャラクタデータですので実際には2と5と5を表す3バイトのキャラクタデータが送られてしまいます。数値データに直すと[32][35][35]が送信され(ASCIIコード参照)、[255]ではないことになります。

unsigned char SINC = 255;
printf("%d",SINC);

で、[255]が1バイトだけ送られます。
※お使いのCコンパイラによっては構文がことなるかもしれません(printf関数がないとか、バイトサイズ変数の宣言はcharではなくintやbyteだとか)のでご注意下さい。

−命令一覧−
命令値 動作 方向 フォーマット
全ポート読み取り(8bit) 送信 [255][ID(120-127)][バイト長(1)][命令(1)]
    受信 [255][ID(120-127)][バイト長(17)][命令(1)][P1結果][P2結果]...[P16結果]
1ポート読み取り(8bit) 送信 [255][ID(120-127)][バイト長(2)][命令(2)][ポート番号(1-16)]
    受信 [255][ID(120-127)][バイト長(3)][命令(2)][ポート番号][結果]
11 全ポート読み取り(12bit) 送信 [255][ID(120-127)][バイト長(1)][命令(11)]
    受信 [255][ID(120-127)][バイト長(33)]
[命令(11)][P1_H][P1_L][P2_H][P2_L]...[P16_H][P16_L]
12 1ポート読み取り(12bit) 送信 [255][ID(120-127)][バイト長(2)][命令(12)][ポート番号(1-16)]
    受信 [255][ID(120-127)][バイト長(4)][命令(12)][P?_H][P?_L]
254 セルフチェック 送信 [255][ID(120-127)][長(1)][254]
    受信 [255][ID(120-127)][長(1)][254]
上以外 無視されます。    

※方向はマスタ側から見たデータの通信方向を表します。「送信」はマスタ−>コントローラへ送る命令、「受信」はコントローラ−>マスタへ返される結果を表します。



【命令1:全ポート読み取り(8bit)】


<説明>
送信フォーマットのデータ列をマスタからADCに送信すると、ADCは全ポートの電圧値を読み取った後、返信フォーマットの形式でマスタ側に返します。電圧読み取り時間はデータ送受信の時間に比べて非常に短いので、命令の処理時間は通信速度に依存します。9600bpsの場合、ADCが送信フォーマットを受け取ってから返信フォーマットを返し終わって待機状態になるまでの時間は約25mS、115200bpsの場合は約2.6mSとなります。


<送信フォーマット>
[255] [ID(120-127)] [バイト長(1)] [命令(1)]

・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は1で固定です。
・命令は1で固定です。


<返信フォーマット>
[255][ID(120-127)][バイト長(17)][命令(1)][P1結果][P2結果]...[P16結果]

・返信データの先頭は必ず255になります。
・次にIDが送られます。
・次にバイト長が送られます。命令1の返信バイト長は17で固定です。
・次に命令番号が送られます。
・その後、16バイト連続で各ポートの読み取り結果が送られます。
結果は8bitの値、つまり0(0V)〜255(5V)の値で送られます。


<送信データ例>
8bitの解像度で全ポートの読み取りをする場合には下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=120)のままとします。
[255] [120] [1] [1]

返信結果は例えば次のようになります。
[255] [120] [17] [1] [2] [3] [2] [0] [1] [2] [3] [2] [2] [0] [1] [2] [3] [2] [0] [0]

*センサーポートになにも接続していない場合は、大気中や基板上の微弱な電圧を読み取るので、結果は0ではなく、0〜2程度の値になることが多いです。センサーと接続する場合はセンサーからの出力の方が大きいので、これらの微弱な電圧の影響はありません。


【命令2:1ポート読み取り(8bit)】


<説明>
送信フォーマットのデータ列をマスタからADCに送信すると、ADCは全ポートの電圧値を読み取った後、返信フォーマットの形式でマスタ側に返します。電圧読み取り時間はデータ送受信の時間に比べて非常に短いので、命令の処理時間は通信速度に依存します。9600bpsの場合、ADCが送信フォーマットを受け取ってから返信フォーマットを返し終わって待機状態になるまでの時間は約12mS、115200bpsの場合は約1.4mSとなります。


<送信フォーマット>
[255] [ID(120-127)] [バイト長(2)] [命令(2)] [ポート番号(1-16)]

・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は2で固定です。
・命令は2で固定です。
・ポート番号には読みたいポートの番号を指定します。


<返信フォーマット>
[255] [ID(120-127)] [バイト長(3)] [命令(2)] [ポート番号] [結果]

・返信データの先頭は必ず255になります。
・次にIDが送られます。
・次にバイト長が送られます。命令1の返信バイト長は3で固定です。
・次に命令番号が送られます。
・次に読み取ったポート番号が送られます。
・最後に結果が送られます。
結果は8bitの値、つまり0(0V)〜255(5V)の値で送られます。


<送信データ例>
8bitの解像度で5番ポートの読み取りをする場合には下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=120)のままとします。
[255] [120] [2] [2] [5]

返信結果は例えば次のようになります。
[255] [120] [3] [2] [5] [2]

*センサーポートになにも接続していない場合は、大気中や基板上の微弱な電圧を読み取るので、結果は0ではなく、0〜2程度の値になることが多いです。センサーと接続する場合はセンサーからの出力の方が大きいので、これらの微弱な電圧の影響はありません。



【命令11:全ポート読み取り(12bit)】


<説明>
送信フォーマットのデータ列をマスタからADCに送信すると、ADCは全ポートの電圧値を読み取った後、返信フォーマットの形式でマスタ側に返します。電圧読み取り時間はデータ送受信の時間に比べて非常に短いので、命令の処理時間は通信速度に依存します。9600bpsの場合、ADCが送信フォーマットを受け取ってから返信フォーマットを返し終わって待機状態になるまでの時間は約42mS、115200bpsの場合は約4mSとなります。


<送信フォーマット>
[255] [ID(120-127)] [バイト長(1)] [命令(11)]

・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は1で固定です。
・命令は11で固定です。


<返信フォーマット>
[255] [ID(120-127)] [バイト長(33)] [命令(11)] [P1_H] [P1_L] [P2_H] [P2_L] ... [P16_H] [P16_L]

・返信データの先頭は必ず255になります。
・次にIDが送られます。
・次にバイト長が送られます。命令11の返信バイト長は33で固定です。
・次に命令番号が送られます。
・その後、2バイトづつ連続で16ポート分の読み取り結果が送られます。
結果は12bitの値、つまり0(0V)〜4095(5V)の値で送られます。上位8bitが先に送られ、下位8ビットが後に送られます。2つで16ビットになりますが、上位4ビットには0が入ります。よって12bitの値を表します。

(2バイトデータの合成方法)
ポート1の結果を合成する場合の例は
1)上位バイトである[P1_H] を16bit長の変数に入れます。
2)その変数を左へ8bitシフトします。
3)その変数に[P1_L]を足します

<送信データ例>
12bitの解像度で全ポートの読み取りをする場合には下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=120)のままとします。
[255] [120] [1] [11]

返信結果は例えば次のようになります。
[255] [120] [33] [11] [0] [82] [0] [73] [0] [82] [0] [80] [0] [81] [0] [72] [0] [83] [0] [82] [0] [72] [0] [80] [0] [71] [0] [82] [0] [83] [0] [82] [0] [70] [1] [101]

*たとえば、ポート16の結果の [1] [101] を合成すると357になります。
*センサーポートになにも接続していない場合は、大気中や基板上の微弱な電圧を読み取るので、結果は0ではなく、50〜400程度の値になることが多いです。センサーと接続する場合はセンサーからの出力の方が大きいので、これらの微弱な電圧の影響はありません。


【命令12:1ポート読み取り(12bit)】


<説明>
送信フォーマットのデータ列をマスタからADCに送信すると、ADCは全ポートの電圧値を読み取った後、返信フォーマットの形式でマスタ側に返します。電圧読み取り時間はデータ送受信の時間に比べて非常に短いので、命令の処理時間は通信速度に依存します。9600bpsの場合、ADCが送信フォーマットを受け取ってから返信フォーマットを返し終わって待機状態になるまでの時間は約13mS、115200bpsの場合は約1.5mSとなります。


<送信フォーマット>
[255] [ID(120-127)] [バイト長(2)] [命令(12)] [ポート番号(1-16)]

・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはDIPスイッチで設定したIDを指定します。
・バイト長は2で固定です。
・命令は12で固定です。
・ポート番号には読みたいポートの番号を指定します。


<返信フォーマット>
[255] [ID(120-127)] [バイト長(4)] [命令(12)] [P?_H] [P?_L]

・返信データの先頭は必ず255になります。
・次にIDが送られます。
・次にバイト長が送られます。命令12の返信バイト長は4で固定です。
・次に命令番号が送られます。
・最後に結果が送られます。
結果は12bitの値、つまり0(0V)〜4095(5V)の値で送られます。上位8bitが先に送られ、下位8ビットが後に送られます。2つで16ビットになりますが、上位4ビットには0が入ります。よって12bitの値を表します。

(2バイトデータの合成方法)
結果を合成する場合の例は
1)上位バイトである[P?_H] を16bit長の変数に入れます。
2)その変数を左へ8bitシフトします。
3)その変数に[P?_L]を足します


<送信データ例>
12bitの解像度で5番ポートの読み取りをする場合には下のような送信データになります。DIPスイッチは出荷時設定(9600bps、ID=120)のままとします。
[255] [120] [2] [12] [5]

返信結果は例えば次のようになります。
[255] [120] [4] [12] [1] [101]

*結果の [1] [101] を合成すると357になります。
*センサーポートになにも接続していない場合は、大気中や基板上の微弱な電圧を読み取るので、結果は0ではなく、50〜400程度の値になることが多いです。センサーと接続する場合はセンサーからの出力の方が大きいので、これらの微弱な電圧の影響はありません。



【命令254:セルフチェック】

<フォーマット>
[255] [ID(120-127)] [長(1)] [命令(254)]


<説明>
ADCはこの命令を受け取ると、同じ数値をマスタ側へ返信します。ADC起動後に、ADCが正常に動作しているかどうかはこの命令を実行することにより確認することができます。尚、ADCがはじめから正常に動作しているかどうかは、起動時にLEDが3回点滅しますのでそれで判断できます。

<送信データ例>
セルフチェックを行うには下のようなデータを送信します。その後、同じデータが返されます。
[255] [200] [1] [254]



<サンプルプログラム>

 ■PCからAGB65−ADC経由でセンサの値を読み取る

 ■無線でPCと接続する

 ■BASICスタンプからAGB65−ADC経由でセンサの値を読み取る−>こちらとほぼ同じです。

 ■H8からAGB65−ADC経由でセンサの値を読み取る−>こちらとほぼ同じです。

 ■PICからAGB65−ADC経由でセンサの値を読み取る−>こちらとほぼ同じです。

 ■AVRからAGB65−ADC経由でセンサの値を読み取る−>こちらとほぼ同じです。



<トラブルシューティングQ&A>

Q:自作回路につないでいるがまったく動かない。ADCが正常に動作しているか確認したい。
A:ADCは電源入り時に赤LEDが3回点滅します。これが確認できればADCは正常に動いていますので自作回路の方を重点的に確認してください。 この確認の時は電源以外のケーブルはつながないで下さい。

Q:マイコンと接続し、命令を送ったが返答が無い。
A:下記が考えられます。
・マイコンとADC間でGNDを接続していない。
・ADCのTXとマイコンのTXをつないでいる。(ADCのTXはマイコンのRXへ、ADCのRXはマイコンのTXへつなぎます。接続例の図を参照。)
・ADCが起動し終わる前にデータを送ると、マスタ間の通信ができなくなる場合があります。電源起動後はしばらく(3秒程度)経過してからデータを送り始めるようにしてください。マイコンと接続する場合は、マイコンのプログラム起動後に3秒ほどウェイトをおくと問題がおきません。
・電源電圧が不足(バッテリなどの表面の表示値ではなく、テスタで実際に電圧を測って確認して下さい)
・マスタ側の通信速度とADC側の通信速度が合っていない(マイコンで115kbps通信の場合は特に注意)
・データを数値データ(バイナリデータ)ではなく、キャラクタデータで送っている。
・マスタ側から送信する際のIDが間違っている。(ADCのIDは120〜127です。ご注意下さい。)
・通信中に、ADC側の電源を切ると、その後にADCの電源を入れてもADCとマスタ間の通信が出来ない場合があります。この場合は一度マスタとADC両方の電源を切り、ADC側を先に立ち上げてからマスタ側を立ち上げてください(マイコンがマスタの場合は電源を共通で使用していると思いますので、ソフト的に電源投入後しばらくしてからデータを送るようにプログラムしておけば、単純に電源を切り入りするだけで済みます)。


<使用上の注意>


・このボードは電子機器です。取扱い、輸送時には静電気対策を行ってください。ICの足や、各ピンを直接手で触ったりすると静電破壊される場合があります。

・バッテリ使用時には電源ラインをショートさせると、バッテリが破裂・発火する可能性があります。作業中にはショートさせないよう十分注意して下さい。また、取り付け後も、あいている電源ラインに導電物質が触らないように注意して下さい。




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