TITLE:FDIII-HCにPSD距離センサの信号を取り込む #norelated #contents |CENTER:BGCOLOR(red):||c | :idea:|本ページの注意事項は各製品のナレッジベースやマニュアルに準拠します。&br;各製品のナレッジベースやマニュアルをお読み頂き、ご理解頂いた上で本ページを参考にしてください。| **概要 [#g6c8e5ca] PSD距離センサは、物体との距離を測定するセンサです。距離に応じた電圧(0.35~3.2V)を出力します。 それに対しFDIII-HCは、Dynamixelプロトコルに則ったシリアル通信を行うことでDynamxielと通信を行っています。故に反射型フォトインタラプタをFDIII-HCに直接接続して運用することはできません。 そこで必要になるのがDynamixelConverterです。DynamixelConverterは、センサからのアナログ・デジタル信号を取り込み、FDIII-HCへDynamixelプロトコルに則ってその情報を渡す、云わば中継役です。 ここではDynamixelConverterを使って、PSD距離センサのアナログ信号をFDIII-HCへ取り込む方法を紹介します。 **用意するもの [#uc8087ab] -[[FDIII-HC]] -[[DynamixelConverter]] -[[PSD距離センサ]] -ケーブル -ハンダごて、ハンダ **接続 [#od38be17] ***1個のPSD距離センサを接続する [#e0156c85] 下図の様に、ケーブルをDynamixelConverterとPSD距離センサのそれぞれの端子にハンダ付けして接続します。後でセンサを取り外したり複数台のセンサを接続したりする場合は、変換基板やコネクタ等を用意して工夫しましょう。 #ref(figure1.png) PSD距離センサのVCCにDynamxielConverterのCN2のPin1:VOUT(5V)を接続し、電源を供給します。 PSD距離センサのGNDとDynamxielConverterのCN2のPin10:GNDを接続します。 PSD距離センサのOUTとDynamxielConverterのCN2のPin2:PIO0を接続します。勿論PIO1~PIO7でも構いません。 #ref(figure2.png) DynamixelケーブルでFDIII-HCとDynamixelConverterを接続します。 ***複数のPSD距離センサを接続する [#af62cf20] DynamxielConverterのCN2のVCCから供給できる電流は300mAです。~ それに対し、PSD距離センサは最大消費電流50mAです。つまり6個接続すると最大300mAになります。よって電源を供給できる台数は、PSD距離センサなら最大6個までということになります。 7個以上接続したい場合は、別途電源を用意しPSD距離センサタに供給する必要があります。 #ref(figure3.png) DynamxielConverterのCN2には、VCCやGND端子が1つしかありません。複数のPSD距離センサを接続する場合、1つの端子に何本ものケーブルをハンダ付けするのは危険です。~ 変換基板やコネクタ等を用意し、接続数分の端子を用意するなど工夫をしましょう。~ また、いつでも付け替えられるようにしておくとより便利です。 **PIO Configを変更する [#ea65bbe1] PIO Configの設定は、運用時のプログラム内では設定しないことをお勧めします。 PIO Configを含む電源を切っても保存されるEEPROMエリア(アドレス0~24)の書き換え回数には制限があるためです。 制限といっても何十万回という数ですので、普通に使用していれば制限を越えることはありません。 しかし誤ってプログラムのループの中で高速に書き換えを行ってしまった場合、あっと言う間に制限を越えてしまう危険性があるためです。 DynamixelConverterの設定の変更にはDxpacket Configuratorを使用します。 基本的な使い方はDynamixel Configuratorと同じですのでそちらを参考にしてください。 **プログラミング [#m50e9959] ここではFDIII-HCのプログラムを作成するための準備や書き込み方法は省略します。 DynamixelConverterのP1に接続したPSD距離センサの状態を取得し、それを表示するプログラムは以下のようになります。 #include <fd.h> #define KEY_QUIT { if(fd_rx_buff()) fd_SoftReset();} void main (void) { uint16_t ReadData; fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); while (1) { fd_DXReadWordData (1, 26, &ReadData); fd_printf ("%d\r", ReadData); KEY_QUIT; } } ---- fd_DXReadWordData (1, 26, &ReadData); DynamixelConverter(ID=1)のAD0(アドレス26,27)のデータをReadDataに代入しています。IDを変更した場合は適宜書き換えてください。
(This host) = http://www.besttechnology.co.jp