4: 2010-11-02 (火) 18:58:18 eid7gud ソース 現: 2010-11-05 (金) 19:44:27 eid7gud ソース
Line 7: Line 7:
**概要 [#y31bc0e6] **概要 [#y31bc0e6]
-ここではDynamixel I/O moduleを使って、FDIII-HCから外部LEDのON/OFF駆動とPWM信号で輝度を変えて点灯させる方法を紹介します。+ここではMultifunction I/O moduleを使って、FDIII-HCから外部LEDのON/OFF駆動とPWM信号で輝度を変えて点灯させる方法を紹介します。
**用意するもの [#uc8087ab] **用意するもの [#uc8087ab]
-[[FDIII-HC]] -[[FDIII-HC]]
--[[Dynamixel I/O module]]+-[[Multifunction I/O module]]
-LED -LED
-数百Ωの抵抗 -数百Ωの抵抗
-ケーブル -ケーブル
-ハンダごて、ハンダ -ハンダごて、ハンダ
- 
-あると良いもの 
-ユニバーサル基板 -ユニバーサル基板
-ピンヘッダ -ピンヘッダ
-[[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]]
-Dynamixel I/O moduleの仕様を考慮し適切なLEDと抵抗値を選定してください。+ハンダが苦手という方はブレッドボードを使用しても良いでしょう。 
 + 
 +Multifunction I/O moduleの仕様を考慮し適切なLEDと抵抗値を選定してください。
FDIII-HCの変わりに[[Dynamixelコンフィギュレータ]]を使用してパソコンと通信することも可能です。 FDIII-HCの変わりに[[Dynamixelコンフィギュレータ]]を使用してパソコンと通信することも可能です。
Line 36: Line 36:
#ref(figure4.png) #ref(figure4.png)
- +Multifunction I/O moduleのCN2のPin1:VOUT(5V)とPin6:PIO4の間にLEDと抵抗を接続します。LEDの向きを間違えないようにしましょう。
-Dynamixel I/O moduleのCN2のPin1:VOUT(5V)とPin6:PIO4の間にLEDと抵抗を接続します。LEDの向きを間違えないようにしましょう。+
LEDのON/OFF駆動ならPIO4~7、輝度を変えての点灯ならPIO4と5が利用できます。 LEDのON/OFF駆動ならPIO4~7、輝度を変えての点灯ならPIO4と5が利用できます。
-Dynamixel I/O moduleのCN2には、VOUTとGND端子が1つずつしかありません。複数台のLEDを接続したり、後でLEDを取り外したりする場合は、ユニバーサル基板とピンヘッダで変換基板を作り、ケーブルと3ピンコネクタでセンサを接続するなどの工夫が必要です。+Multifunction I/O moduleのCN2には、VOUTとGND端子が1つずつしかありません。複数台のLEDを接続したり、後でLEDを取り外したりする場合は、ユニバーサル基板とピンヘッダで変換基板を作り、ケーブルと3ピンコネクタでセンサを接続するか、ブレッドボードで配線するなどの工夫が必要です。
''変換基板作成例'' ''変換基板作成例''
Line 48: Line 47:
複数の機器を接続する場合には注意するべき点があります。~ 複数の機器を接続する場合には注意するべき点があります。~
-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が度々リセットするような場合は、別途電源を用意し外部機器に供給する必要があります。+Multifunction I/O moduleが度々リセットするような場合は、別途電源を用意し外部機器に供給する必要があります。
 +またPWM駆動のようにPIOをソース源とする場合は1端子あたり30mA以下に抑え、さらに全端子の電流が50mAを超えないように調整してください。
#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 67: Line 67:
しかし誤ってプログラムのループの中で高速に書き換えを行ってしまった場合、あっと言う間に制限を越えてしまう危険性があります。 しかし誤ってプログラムのループの中で高速に書き換えを行ってしまった場合、あっと言う間に制限を越えてしまう危険性があります。
-Dynamixel I/O moduleの設定の変更にはDxpacket Configuratorを使用します。 +PIO4 Configを1にするプログラムを以下に示します。 
-基本的な使い方は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, 10, 1); 
 +   fd_printf ("Complete"); 
 +   fd_SoftReset(); 
 +   while (1); 
 + } 
 + 
 +一度だけ実行しましょう。~ 
 +書き換えが終わるとブートローダへ戻ります。~ 
 +PWM駆動をする場合は以下修正が必要です。 
 + 
 + fd_DXWriteByteData (200, 10, 1); 
 + 
 +ここでIDが200のMultifunction I/O moduleのアドレス10を1に書き換えています。アドレス10はPIO4 Configです。~ 
 +PWM駆動をする場合は第3引数は1ではなく4となります。~ 
 +IDとアドレスは適宜変更してください。
**プログラミング [#k2387ac0] **プログラミング [#k2387ac0]
Line 76: Line 97:
***ON/OFF駆動 [#ib89c218] ***ON/OFF駆動 [#ib89c218]
-Dynamixel I/O moduleのPIO4に接続したLEDを1秒毎にON/OFFを切り替えます。+Multifunction I/O moduleのPIO4に接続したLEDを1秒毎にON/OFFを切り替えます。
 #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) {
   uint8_t DigitalOut = 255;  // アドレス43の値    uint8_t DigitalOut = 255;  // アドレス43の値
 + 
   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) {
     DigitalOut |= (1 << 4);      DigitalOut |= (1 << 4);
-     fd_DXWriteByteData (1, 43, DigitalOut);+     fd_DXWriteByteData (200, 43, DigitalOut);
     fd_Wait (1000);      fd_Wait (1000);
     DigitalOut &= ~(1 << 4);      DigitalOut &= ~(1 << 4);
-     fd_DXWriteByteData (1, 43, DigitalOut);+     fd_DXWriteByteData (200, 43, DigitalOut);
     fd_Wait (1000);      fd_Wait (1000);
     KEY_QUIT;      KEY_QUIT;
Line 101: Line 122:
***PWM駆動 [#vcf62c85] ***PWM駆動 [#vcf62c85]
-PWM信号のデューティー比を変えるとこで、Dynamixel I/O moduleのPIO4に接続したLEDの輝度を変えます。+PWM信号のデューティー比を変えるとこで、Multifunction I/O moduleのPIO4に接続したLEDの輝度を変えます。
 #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) {
   uint8_t Duty = 0;  // デューティー比    uint8_t Duty = 0;  // デューティー比
 + 
   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_DXWriteByteData (1, 49, Duty);+     fd_DXWriteByteData (200, 49, Duty);
     Duty++;      Duty++;
     if (Duty > 255) Duty = 0;      if (Duty > 255) Duty = 0;


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