4: 2010-10-25 (月) 13:07:22 eid7gud ソース 現: 2010-11-05 (金) 19:44:13 eid7gud ソース
Line 10: Line 10:
PSD距離センサは、物体との距離を測定するセンサです。距離に応じた電圧(0.35~3.2V)を出力します。 PSD距離センサは、物体との距離を測定するセンサです。距離に応じた電圧(0.35~3.2V)を出力します。
-それに対しFDIII-HCは、Dynamixelプロトコルに則ったシリアル通信を行うことでDynamxielと通信を行っています。故に反射型フォトインタラプタを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コンフィギュレータ]]を使用してパソコンと通信することも可能です。
**接続 [#od38be17] **接続 [#od38be17]
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ピンコネクタでセンサを接続するか、ブレッドボードで配線するなどの工夫が必要です。
''変換基板作成例'' ''変換基板作成例''
#ref(figure2.png) #ref(figure2.png)
 +#ref(figure25.png)
-また複数のPSD距離センサを接続する場合には注意点があります。+複数のPSD距離センサを接続する場合には注意するべき点があります。
-Dynamixel I/O moduleのCN2のVCCから供給できる電流は300mAです。+Multifunction I/O moduleのCN2のVOUTから供給できる電流は限られています。
-それに対しPSD距離センサは最大消費電流50mAです。つまり6個接続すると最大300mAになります。よって電源を供給できる台数は、PSD距離センサなら最大6個までということになります。 +VOUTに接続する機器の消費電流が許容量をオーバーすると、Multifunction I/O module自体も同じ電源を使用しているため正常に動作しなくなります。 
- +Multifunction I/O moduleが度々リセットするような場合は、別途電源を用意しPSD距離センサに供給する必要があります。
-7個以上接続したい場合は、別途電源を用意し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 66: Line 64:
PIO Configを含む電源を切っても保存されるEEPROMエリア(アドレス0~24)の書き換え回数には制限があるためです。 PIO Configを含む電源を切っても保存されるEEPROMエリア(アドレス0~24)の書き換え回数には制限があるためです。
-制限といっても何十万回という数ですので、普通に使用していれば制限を越えることはありません。 +制限といっても普通に使用していれば制限を越えることはまずありません。 
-しかし誤ってプログラムのループの中で高速に書き換えを行ってしまった場合、あっと言う間に制限を越えてしまう危険性があるためです。+しかし誤ってプログラムのループの中で高速に書き換えを行ってしまった場合、あっと言う間に制限を越えてしまう危険性があります。
-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を変更した場合は適宜書き換えてください。


トップ   差分 リロード印刷に適した表示   全ページ一覧 単語検索 最新ページの一覧   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom