1: 2010-10-25 (月) 13:06:33 eid7gud |
2: 2010-10-25 (月) 14:13:42 eid7gud |
| | | |
| **概要 [#y31bc0e6] | | **概要 [#y31bc0e6] |
- | ここではDynamixel I/O moduleを使って、FDIII-HCから外部LEDのON/OFFと輝度を変えて点灯させる方法を紹介します。 | + | ここではDynamixel I/O moduleを使って、FDIII-HCから外部LEDのON/OFF駆動とPWM信号で輝度を変えて点灯させる方法を紹介します。 |
| | | |
| **用意するもの [#uc8087ab] | | **用意するもの [#uc8087ab] |
| | | |
| FDIII-HCの変わりにDynamixelコンフィギュレータを使用してパソコンと通信することも可能です。 | | FDIII-HCの変わりにDynamixelコンフィギュレータを使用してパソコンと通信することも可能です。 |
| + | |
| + | **接続 [#ja34fcfb] |
| + | |
| + | ON/OFF駆動を行う場合は下図の様に配線を行います。 |
| + | |
| + | #ref(figure1.png) |
| + | |
| + | PWM信号で輝度を変えて点灯させる場合は下図のように配線を行います。 |
| + | |
| + | #ref(figure4.png) |
| + | |
| + | |
| + | Dynamixel I/O moduleのCN2のPin1:VOUT(5V)とPin6:PIO4の間にLEDと抵抗を接続します。LEDの向きを間違えないようにしましょう。 |
| + | |
| + | LEDのON/OFF駆動ならPIO4~7、輝度を変えての点灯ならPIO4と5が利用できます。 |
| + | |
| + | Dynamixel I/O moduleのCN2には、VCCとGND端子が1つずつしかありません。複数台のLEDを接続したり、後でLEDを取り外したりする場合は、ユニバーサル基板とピンヘッダで変換基板を作り、ケーブルと3ピンコネクタでセンサを接続するなどの工夫が必要です。 |
| + | |
| + | ''変換基板作成例'' |
| + | #ref(figure2.png) |
| + | |
| + | また複数のLEDを接続する場合には注意点があります。~ |
| + | Dynamixel I/O moduleのCN2のVCCから供給できる電流は300mAです。~ |
| + | LED点灯時の消費電流の合計が300mA以上にならないようにしてください。 |
| + | 300mA以上になる場合は、別途電源を用意し供給する必要があります。 |
| + | |
| + | |
| + | #ref(figure3.png) |
| + | |
| + | DynamixelケーブルでFDIII-HCとDynamixel I/O moduleを接続します。 |
| + | |
| + | **PIO Configを変更する [#ea65bbe1] |
| + | |
| + | コントロールテーブルのLEDを接続した端子に対するPIO Configを、ON/OFF駆動させる場合は1、輝度を変えたい場合は4に設定します。 |
| + | |
| + | PIO Configの設定は、運用時のプログラム内では設定しないことをお勧めします。 |
| + | PIO Configを含む電源を切っても保存されるEEPROMエリア(アドレス0~24)の書き換え回数には制限があるためです。 |
| + | |
| + | 制限といっても何十万回という数ですので、普通に使用していれば制限を越えることはありません。 |
| + | しかし誤ってプログラムのループの中で高速に書き換えを行ってしまった場合、あっと言う間に制限を越えてしまう危険性があるためです。 |
| + | |
| + | Dynamixel I/O moduleの設定の変更にはDxpacket Configuratorを使用します。 |
| + | 基本的な使い方はDynamixel Configuratorと同じですのでそちらを参考にしてください。 |
| + | |
| + | **プログラミング [#k2387ac0] |
| + | |
| + | ここではFDIII-HCのプログラムを作成するための準備や書き込み方法は省略します。 |
| + | |
| + | **ON/OFF駆動 [#ib89c218] |
| + | |
| + | Dynamixel I/O moduleのPIO4に接続したLEDを1秒毎にON/OFFを切り替えます。 |
| + | |
| + | #include <fd.h> |
| + | #define KEY_QUIT { if(fd_rx_buff()) fd_SoftReset();} |
| + | |
| + | void main (void) { |
| + | uint8_t DigitalOut = 255; // アドレス43の値 |
| + | |
| + | fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); |
| + | |
| + | while (1) { |
| + | DigitalOut |= (1 << 4); |
| + | fd_DXWriteByteData (1, 43, DigitalOut); |
| + | fd_Wait (1000); |
| + | DigitalOut &= ~(1 << 4); |
| + | fd_DXWriteByteData (1, 43, DigitalOut); |
| + | fd_Wait (1000); |
| + | KEY_QUIT; |
| + | } |
| + | } |
| + | |
| + | **PWM駆動 [#vcf62c85] |
| + | |
| + | PWM信号のデューティー比を変えるとこで、Dynamixel I/O moduleのPIO4に接続したLEDの輝度を変えます。 |
| + | |
| + | #include <fd.h> |
| + | #define KEY_QUIT { if(fd_rx_buff()) fd_SoftReset();} |
| + | |
| + | void main (void) { |
| + | uint8_t Duty = 0; // アドレス43の値 |
| + | |
| + | fd_Init (0, BT_CONSOLE, FD_BEEP_MMI | FD_BEEP_PACKETERR | FD_BEEP_LOWVOLTAGE | FD_BEEP_BOOTUP, 7.4); |
| + | |
| + | while (1) { |
| + | fd_DXWriteByteData (1, 49, Duty); |
| + | Duty++; |
| + | if (Duty > 255) Duty = 0; |
| + | KEY_QUIT; |
| + | } |
| + | } |