6: 2010-11-02 (火) 18:56:38 eid7gud | 現: 2010-11-05 (金) 19:44:13 eid7gud | ||
---|---|---|---|
Line 12: | Line 12: | ||
それに対しFDIII-HCは、Dynamixelプロトコルに則ったシリアル通信を行うことでDynamixelと通信を行っています。故に反射型フォトインタラプタをFDIII-HCに直接接続して運用することはできません。 | それに対しFDIII-HCは、Dynamixelプロトコルに則ったシリアル通信を行うことでDynamixelと通信を行っています。故に反射型フォトインタラプタをFDIII-HCに直接接続して運用することはできません。 | ||
- | そこで必要になるのがDynamixel I/O moduleです。Dynamixel I/O moduleは、センサからのアナログ・デジタル信号を取り込み、FDIII-HCへDynamixelプロトコルに則ってその情報を渡す、云わば中継役です。 | + | そこで必要になるのがMultifunction I/O moduleです。Multifunction I/O moduleは、センサからのアナログ・デジタル信号を取り込み、FDIII-HCへDynamixelプロトコルに則ってその情報を渡す、云わば中継役です。 |
- | ここではDynamixel I/O moduleを使って、PSD距離センサのアナログ信号をFDIII-HCへ取り込む方法を紹介します。 | + | ここではMultifunction I/O moduleを使って、PSD距離センサのアナログ信号をFDIII-HCへ取り込む方法を紹介します。 |
**用意するもの [#uc8087ab] | **用意するもの [#uc8087ab] | ||
-[[FDIII-HC]] | -[[FDIII-HC]] | ||
- | -[[Dynamixel I/O module]] | + | -[[Multifunction I/O module]] |
-[[PSD距離センサ]] | -[[PSD距離センサ]] | ||
-ケーブル | -ケーブル | ||
-ハンダごて、ハンダ | -ハンダごて、ハンダ | ||
- | |||
- | あると良いもの | ||
-ユニバーサル基板 | -ユニバーサル基板 | ||
-ピンヘッダ | -ピンヘッダ | ||
-[[3ピンコネクタ>http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=98]] | -[[3ピンコネクタ>http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=98]] | ||
- | ケーブルには必要に応じてノイズの混入を防ぐためのシールド等の措置を講じてください。また、ケーブルが長過ぎると信号の劣化に繋がります。 | + | ハンダが苦手という方はブレッドボードを使用しても良いでしょう。 |
FDIII-HCの変わりに[[Dynamixelコンフィギュレータ]]を使用してパソコンと通信することも可能です。 | FDIII-HCの変わりに[[Dynamixelコンフィギュレータ]]を使用してパソコンと通信することも可能です。 | ||
Line 37: | Line 35: | ||
#ref(figure1.png) | #ref(figure1.png) | ||
- | PSD距離センサのVCCにDynamixel I/O moduleのCN2のPin1:VOUT(5V)を接続し、電源を供給します。 | + | PSD距離センサのVCCにMultifunction I/O moduleのCN2のPin1:VOUT(5V)を接続し、電源を供給します。 |
- | PSD距離センサのGNDとDynamixel I/O moduleのCN2のPin10:GNDを接続します。 | + | PSD距離センサのGNDとMultifunction I/O moduleのCN2のPin10:GNDを接続します。 |
- | PSD距離センサのOUTとDynamixel I/O moduleのCN2のPin2:PIO0を接続します。勿論PIO1~PIO7でも構いません。 | + | PSD距離センサのOUTとMultifunction I/O moduleのCN2のPin2:PIO0を接続します。PIO1~PIO7でも構いません。 |
- | Dynamixel I/O moduleのCN2には、VCCとGND端子が1つずつしかありません。複数台のセンサを接続したり、後でセンサを取り外したりする場合は、ユニバーサル基板とピンヘッダで変換基板を作り、ケーブルと3ピンコネクタでセンサを接続するなどの工夫が必要です。 | + | Multifunction I/O moduleのCN2には、VCCとGND端子が1つずつしかありません。複数台のセンサを接続したり、後でセンサを取り外したりする場合は、ユニバーサル基板とピンヘッダで変換基板を作り、ケーブルと3ピンコネクタでセンサを接続するか、ブレッドボードで配線するなどの工夫が必要です。 |
''変換基板作成例'' | ''変換基板作成例'' | ||
Line 50: | Line 48: | ||
複数のPSD距離センサを接続する場合には注意するべき点があります。~ | 複数のPSD距離センサを接続する場合には注意するべき点があります。~ | ||
- | Dynamixel I/O moduleのCN2のVOUTから供給できる電流は限られています。~ | + | Multifunction I/O moduleのCN2のVOUTから供給できる電流は限られています。~ |
- | VOUTに接続する機器の消費電流が許容量をオーバーすると、Dynamixel I/O module自体も同じ電源を使用しているため正常に動作しなくなります。 | + | VOUTに接続する機器の消費電流が許容量をオーバーすると、Multifunction I/O module自体も同じ電源を使用しているため正常に動作しなくなります。 |
- | Dynamixel I/O moduleが度々リセットするような場合は、別途電源を用意しPSD距離センサに供給する必要があります。 | + | Multifunction I/O moduleが度々リセットするような場合は、別途電源を用意しPSD距離センサに供給する必要があります。 |
#ref(figure3.png) | #ref(figure3.png) | ||
- | DynamixelケーブルでFDIII-HCとDynamixel I/O moduleを接続します。 | + | DynamixelケーブルでFDIII-HCとMultifunction I/O moduleを接続します。 |
**PIO Configを変更する [#ea65bbe1] | **PIO Configを変更する [#ea65bbe1] | ||
Line 69: | Line 67: | ||
しかし誤ってプログラムのループの中で高速に書き換えを行ってしまった場合、あっと言う間に制限を越えてしまう危険性があります。 | しかし誤ってプログラムのループの中で高速に書き換えを行ってしまった場合、あっと言う間に制限を越えてしまう危険性があります。 | ||
- | Dynamixel I/O moduleの設定の変更にはDxpacket Configuratorを使用します。 | + | PIO0 Configを3にするプログラムを以下に示します。 |
- | 基本的な使い方はDynamixel Configuratorと同じですのでそちらを参考にしてください。 | + | |
+ | #include <fd.h> | ||
+ | |||
+ | void main (void) { | ||
+ | fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); | ||
+ | |||
+ | fdWait(2000); | ||
+ | fd_DXWriteByteData (200, 6, 3); | ||
+ | fd_printf ("Complete"); | ||
+ | fd_SoftReset(); | ||
+ | while (1); | ||
+ | } | ||
+ | |||
+ | 一度だけ実行しましょう。~ | ||
+ | 書き換えが終わるとブートローダへ戻ります。~ | ||
+ | |||
+ | fd_DXWriteByteData (200, 6, 3); | ||
+ | |||
+ | ここでIDが200のMultifunction I/O moduleのアドレス6を3に書き換えています。アドレス6はPIO0 Configです。~ | ||
+ | IDとアドレスは適宜変更してください。 | ||
**プログラミング [#m50e9959] | **プログラミング [#m50e9959] | ||
Line 76: | Line 93: | ||
ここではFDIII-HCのプログラムを作成するための準備や書き込み方法は省略します。 | ここではFDIII-HCのプログラムを作成するための準備や書き込み方法は省略します。 | ||
- | Dynamixel I/O moduleのPIO0に接続したPSD距離センサの値を取得し、それを表示するプログラムは以下のようになります。 | + | Multifunction I/O moduleのPIO0に接続したPSD距離センサの値を取得し、それを表示するプログラムは以下のようになります。 |
#include <fd.h> | #include <fd.h> | ||
#define KEY_QUIT { if(fd_rx_buff()) fd_SoftReset();} | #define KEY_QUIT { if(fd_rx_buff()) fd_SoftReset();} | ||
+ | |||
void main (void) { | void main (void) { | ||
uint16_t ReadData; | uint16_t ReadData; | ||
+ | |||
fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); | fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); | ||
+ | |||
while (1) { | while (1) { | ||
- | fd_DXReadWordData (1, 26, &ReadData); | + | fd_DXReadWordData (200, 26, &ReadData); |
fd_printf ("%d\r", ReadData); | fd_printf ("%d\r", ReadData); | ||
KEY_QUIT; | KEY_QUIT; | ||
Line 95: | Line 112: | ||
---- | ---- | ||
- | fd_DXReadWordData (1, 26, &ReadData); | + | fd_DXReadWordData (200, 26, &ReadData); |
- | Dynamixel I/O module(ID=1)のAD0(アドレス26,27)のデータをReadDataに代入しています。IDを変更した場合は適宜書き換えてください。 | + | Multifunction I/O module(ID=200)のAD0(アドレス26,27)のデータをReadDataに代入しています。IDを変更した場合は適宜書き換えてください。 |