ページへ戻る

− Links

 印刷 

BTA022​/BTA023 ユニバーサルドライバ3 のソース :: Besttechnology

knowledge:BTA022/BTA023 ユニバーサルドライバ3のソース

« Prev[3]  
TITLE:ユニバーサルドライバ3マニュアル
#norelated
#contents
[[ショップページ(BTA022)へ>http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=110]]~
[[ショップページ(BTA023)へ>http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=111]]

**概要 [#x0a22961]
本製品は2個のDCモータ用ブリッジ回路を搭載したインテリジェンスモータコントローラです。~
モータドライバの他に11本のデジタル入出端子を備え、そのうち8本はアナログ入力を兼用します。また、リアルタイムカーネルとしてToppersを採用し、マルチタスクによる複数の処理を同時にこなすことが出来ます。~

|CENTER:BGCOLOR(red):||c
|  :idea:|本製品は使用方法によっては人や財産を失う恐れがある可能性があります。本ドキュメントを熟読し、危険性の理解と運用方法を順守してください。|

**仕様 [#r881cac5]
***同梱内容 [#m79dd66b]
| 型式 | 数量 | 備考 |
|ユニバーサルドライバ3本体 | 1|E093C |
|USBケーブル | 1|150cm |
|コネクタキット | 1|Dynamixel I/F(MPU・センサ電源)用 ([[50-37-5043>http://www.molex.com/molex/products/datasheet.jsp?part=active/0050375043_CRIMP_HOUSINGS.xml&channel=Products&Lang=ja-jp]]x1, [[08-70-1040>http://www.molex.com/molex/products/datasheet.jsp?part=active/0008701040_CRIMP_TERMINALS.xml&channel=Products&Lang=ja-jp]]x5)&br;モータ電源用 ([[No.05023>http://www.kopropo.co.jp/sys/archives/182]]x1)&br;モータ用 ([[No.05001>http://www.kopropo.co.jp/sys/archives/183]]x2)  |

***基本仕様 [#pb0bf34c]
|品番 |BTA022/BTA023 |
|リビジョン |E093B or E093C |
|動作温度範囲 |0~+50℃ 結露無きこと |
|寸法 |外形:53x73mm (±1mm)&br;取り付け穴:45.7x66.7mm 4-φ2.2 |
|厚み |突起物を含み約25mm |
|重量 |70g以下 |
|MPU |E093B:AT91SAM7S256もしくはAT91SAM7S512&br;E093C:AT91SAM7S256 |
|MPU内蔵メモリ |フラッシュROM:256kもしくは512kbyte(ブートローダ領域を含む)&br;RAM:64kbyte |
|モータ電源  |入力: DC5~DC24V (絶対最大定格電圧:75V)&br;出力: UD3定格20A (FET 定格電流:240A パルス電流:960A)&br;許容損失電力(25℃): 300W |
|MPU及びセンサ電源 |入力: DC8~24V (絶対最大定格電圧:DC35V)&br;出力: DC5V 7A(最大) |
|I/F |入力用プッシュスイッチx2&br;入力用4bitロータリーDIPスイッチx1&br;リセット用プッシュスイッチx1 |
|モータドライバ |2ch Hブリッジ&br;4象限の制御領域&br;1~200kHz(1kHz単位で任意)のPWMキャリア周波数 |
|ワイヤレス |BTA023のみBluetoothモジュール(ZEAL-C01)装備 |
|コネクタ |ホストPC間: USB (miniB)x1&br;GPIO: 2.5mmピッチ3ピンオスヘッダ(信号・5V・GND)x11&br;モータ用電源:近藤科学 ストロングゴールドコネクターx1&br;モータ用: 近藤科学 レーシングコネクターx2&br;Dynamixel I/F (MPU&センサ電源用):molex 22-03-5045x1 |
|GPIO機能 |GPIOは全部で11ch装備し以下の機能を割当可能(排他含)&br;汎用入力:11ch(プルアップON/OFF機能あり)&br;汎用出力:11ch(オープンドレイン出力機能あり)&br;アナログ入力:8ch(分解能10bit)&br;パルス幅計測:3ch(分解能16bit 基準クロックは47k~24MHzの中で5段階)&br;PWM出力:3ch(分解能16bit 基準クロックは47k~24MHzの中で5段階) |
|環境配慮 |Rohs未対応 |

***内部簡略ブロック [#y6e0b9c7]
#ref(ud3_block.png,100%)

***外観 [#uec5ec4d]
写真はBTA023です。BTA022にはBluetoothモジュールが装備されません。
| TOP | BOTTOM |
| #ref(E093B_TOP.png,40%) | #ref(E093B_BOTTOM.png,40%) |
| SIDE |
| #ref(E093B_SIDE.png,40%) |

***外形・端子配置 [#lc74b433]
#ref(ud3_layout.png,100%)
RIGHT:(単位:mm)

以下特に断りのない限り本図のレイアウトを正として端子番号やそれらの方向、位置等を示す。

****CN1 [#c95ac81b]
|CENTER:BGCOLOR(red):||c
|  :idea:|電源の逆接続は電源回路の即時破壊・全損扱いとなる。&br;リビジョン''E093B''に限り本端子に電源が印加され、CN3(モータ用電源)の電源供給が断たれている状態では、モータのイネーブル信号を発行してはならない。イネーブルするとゲートドライバに過大な負荷がかかり破損する。|

|基板側ヘッダー |[[22-03-5045>http://www.molex.com/molex/products/datasheet.jsp?part=active/0022035045_PCB_HEADERS.xml&channel=Products&Lang=ja-jp]] |
|ハウジング |[[50-37-5043>http://www.molex.com/molex/products/datasheet.jsp?part=active/0050375043_CRIMP_HOUSINGS.xml&channel=Products&Lang=ja-jp]] |
|ターミナル |[[08-70-1040>http://www.molex.com/molex/products/datasheet.jsp?part=active/0008701040_CRIMP_TERMINALS.xml&channel=Products&Lang=ja-jp]] |

-Dynamixel I/Fに準拠したコネクタで、RS485によるシリアル通信及び5Vロジック・3.3Vロジック・12Vゲートドライバの一次電源を兼ねる
-[[図>#lc74b433]]右より順に ①:DM(RS485), ②:DP(RS485), ③:+(センサ&MPU電源), ④:-(GND) の端子割り当て
-RS485による通信を行わない場合は①②ピンは未接続にしておく
-入力絶対最大定格:DC35V
-入力定格電圧:DC8~24V(リプルなき事)
-④ピン(GND)はボード内全て(ロジックおよびモータ電源)において共通
-本端子から供給される電源によりボード内で使用されるDC5V電源とDC3.3Vが作られ、更にJ1~J12端子からの5V出力がなされる
-CN3とは別の電源から供給する事
-J1~J12及びボード内で使用されるDC5V電源の総電流が7Aを超えてはならない。

****CN2 [#q01a8c34]
-USB Mini-B
-PC(ホスト)と本ボード上のMPU(デバイス)間のUSBによる通信用
-USBバスパワーによるロジック電源供給用(CN1からの電源が優先)
-USBバスパワーからはJ1~J12及びゲートドライバへの電源供給は行われない

****CN3 [#c0d4bab9]
|CENTER:BGCOLOR(red):||c
|  :idea:|電源の逆接続はブリッジ回路の即時破壊・全損扱いとなる。&br;リビジョン''E093B''に限りCN1に電源が印加され、本端子の電源供給が断たれている状態では、モータのイネーブルを発行してはならない。イネーブルするとゲートドライバに過大な負荷がかかり破損する。|

|ストロングゴールドコネクター  オス |[[No.05022>http://www.kopropo.co.jp/sys/archives/182]] |
|ストロングゴールドコネクター  メス |[[No.05023>http://www.kopropo.co.jp/sys/archives/182]] |

-Hブリッジ(モータ)電源供給用
-[[図>#lc74b433]]上より順に ①:+(モータ電源), ②:-(GND) の端子割り当て
-入力定格電圧:DC5~24V (DC16V以下を推奨)
-入力絶対最大定格:DCV75V
-②ピン(GND)はボード内全て(ロジックおよびモータ電源)において共通
-本端子から供給される電源がHブリッジ回路に供給されM1ないしM2端子を介して負荷へと供給される
-CN1とは別の電源から供給する事

****M1 [#p68e0f67]
|レーシングコネクター メス |[[No.05002>http://www.kopropo.co.jp/sys/archives/183]] |
|レーシングコネクター オス |[[No.05001>http://www.kopropo.co.jp/sys/archives/183]] |
-負荷接続用端子
-[[図>#lc74b433]]左より順に ①:M1+, ②:M1+, ③:M1-, ④:M1-
-①と②端子(M1+)および③と④端子(M1-)は各々ボード内で接続されている
-DCモータ等を接続した場合の回転方向はモータに依存するが、ソフト的にプラスのデューティを指定するとM1+側からプラスの出力が得られる

****M2 [#s05e2d77]
|レーシングコネクター メス |[[No.05002>http://www.kopropo.co.jp/sys/archives/183]] |
|レーシングコネクター オス |[[No.05001>http://www.kopropo.co.jp/sys/archives/183]] |
-負荷接続用端子
-[[図>#lc74b433]]左より順に ①:M2+, ②:M2+, ③:M2-, ④:M2-
-①と②端子(M2+)および③と④端子(M2-)は各々ボード内で接続されている
-DCモータ等を接続した場合の回転方向はモータに依存するが、ソフト的にプラスのデューティを指定するとM2+側からプラスの出力が得られる

****PB1(プッシュボタン) [#j5e009fe]
-ブートローダおよびアプリケーションにて使用

****PB2(プッシュボタン) [#y59d09cb]
-ブートローダおよびアプリケーションにて使用

****PB3(プッシュボタン) [#u237602b]
-押下でMPUの強制リセット

****DIP1(ロータリーディップスイッチ) [#r4a636d8]
-アプリケーションにて使用
-4bit(16段階)

****LED1 [#g2b739d3]
-橙色
-ブートローダ内でコンソール入力があるとフラッシュ
-アプリケーションにてプログラマブルに点灯・消灯

****LED2 [#uca490ef]
-赤色
-CN1から電源を供給した後、ボード内で5V電源が供給開始されると点灯
-CN2(USBバスパワー)の接続でもリーク電流で点灯する場合がある

****LED3 [#c8b9f642]
-緑色
-Bluetoothによるワイヤレス接続が確立すると点灯
-BTA022の場合は常時消灯

****LED4 [#f3885109]
-赤色
-CN3から電源を供給すると点灯~
リビジョンE093CからはCN1の電源供給が無いと点灯しない
-CN1(MPU&センサ電源)の接続でもリーク電流で点灯する場合がある
-電源供給を断っているにもかかわらずLEDが点灯している場合は、コンデンサに蓄積した電荷が残っている状態である。完全に消灯していない状態でCN3のリードを導電性の物で短絡するとアークが飛び危険である。

****J1~J8 [#y6c5f6b8]
2.5mmピッチ3ピンヘッダ
-[[図>#lc74b433]]左より順に ①:SIG, ②:5V出力, ③:GND の端子割り当て
-J1~J8の各①ピン(SIG端子)がGPIO0~GPIO7に相当する
-①ピン(SIG端子)は5V入力トレラント対応~
IEC61000-4-2 level4のESD保護~
電流制限用に47Ωの直列抵抗搭載~
出力時の最大電圧は3.3V
-②ピン(5V出力)はJ0~J4とJ5~J8の2グループで共通で、各々4Aトリップのリセッタブルヒューズを装備
-③ピン(GND)はボード内全て(ロジックおよびモータ電源)において共通
-プログラマブルな内蔵プルアップ抵抗(約100kΩ)を搭載。

****J9~J11 [#mcb1b14c]
2.5mmピッチ3ピンヘッダ
-[[図>#lc74b433]]左より順に ①:SIG, ②:5V出力, ③:GND の端子割り当て
-J9~J11の各①ピン(SIG端子)がGPIO8~GPIO10に相当する
-①ピン(SIG端子)は5V入力トレラント対応~
IEC61000-4-2 level4のESD保護~
電流制限用に47Ωの直列抵抗搭載~
出力時の最大電圧は3.3V
-②ピン(5V出力)はJ9~J12共通で4Aトリップのリセッタブルヒューズを装備
-③ピン(GND)はボード内全て(ロジックおよびモータ電源)において共通
-プログラマブルな内蔵プルアップ抵抗(約100kΩ)を搭載。

****J12 [#u979e189]
-出荷時にピンヘッダ等は未実装
-[[図>#lc74b433]]左より順に ①:SIG, ②:5V出力, ③:GND の端子割り当て
-①ピン(SIG端子)と③ピン(GND)を短絡すると5V用DCDCコンバータがシャットダウン(ボード内の5V・3.3V・12Vの電源がOFFになる)し消費電流が0.3mA以下に減少する~
なおUSB(CN2)からのバスパワーは本端子の影響を受けないため、シャットダウン中でもMPUのみ活性化する
-シャットダウンさせない場合は①ピン(SIG端子)をオープンにしておく事

****JP1 [#sde6761c]
-基板BOTTOM側 CN1近傍に配置された半田ジャンパで、ショートする事でRS485 I/Fのターミネータが活性化する
-出荷時にショート(ターミネータON)

**各機能の詳細 [#db9530a6]
***電源の印加順序 [#l7a7e35f]
リビジョン''E093B''において、CN1とCN2の電源の接続時には誤動作や破損を防ぐため、出来る限り以下の順序に従ってください。本制限はリビジョン''E093C''には適用されません。なお、CN2から供給されるPCからのUSBバスパワーは本手順に影響しません。
~&color(red){電源ON};
+CN1にMPU及びセンサ用電源を接続しLED2の点灯を確認(この時点でモータのイネーブルが発行されてはいけない)
+CN3にモータ用電源を接続(これ以後にモータのイネーブルを発行する事)

~&color(red){電源OFF};
+負荷を駆動していない状態でCN3からモータ用電源を切断(この時点でモータのイネーブル信号はディスエーブルにしておく)
+CN1からMPU用電源を切断

***MPU電源 [#c08ff775]
MPU電源の入力方法は3つあり、各々目的が異なります。
-CN1~
外部の電源装置からCN1に電源を接続すると、モータを除く本ボード上の全ての電源(3.3V・5V・12V)回路が活性化し、LED2が点灯します。この状態であればJ1~J12の②ピンから5Vが出力されます。~
ユーザプログラムが書き込まれていれば自動的に実行が開始されます。~
J12に入力される信号により3.3V・5V・12V回路全ての電源供給のON/OFF(省電力モード)が可能です。~
-CN2(PCからのUSBバスパワー)~
電源が入ったPCとUSBケーブルで接続すると同時に本ボード上の3.3V回路(MPU・Bluetooth)と一部の5V回路(RS485 I/F)に電源が供給され、J1~J12への5Vの電源は行われず、ゲートドライバは停止し、LED2は点灯しません。~
ユーザプログラムが書き込まれていれば自動的に実行が開始されます。~
この状態ではJ1~J12の②ピンから5V電源が供給されない都合、GPIOの信号の入出力が正常に行えません。
J12に入力される信号とは連動しません。~
-CN1とCN2両方~
いずれかから入力される電圧の高い方を優先する回路となっているため、両社を接続したとしても大抵の場合はCN1からの電源が優先されることになります。~
ユーザプログラムが書き込まれていれば自動的に実行が開始されます。~
J12に入力される信号がOFF(省電力モード)の場合は3.3V回路(MPU・Bluetooth)と一部の5V回路(RS485 I/F)のみが機能し、ONの場合はモータを除く本ボード上の全ての電源(3.3V・5V・12V)回路が活性化します。

***USB [#f213387d]
PCのUSBバスパワーでボード内の電源供給を行う他に、PCとMPUとの有線による通信手段を提供します。~
PCとUSBケーブルで接続し、予め書き込まれたブートローダのコマンドモードが起動すると、PCからは増設シリアルポートとして見えます。

***ブートローダ [#ueb4c356]
****UD3ブートローダのアップデート [#w41e0c1f]
本ドキュメントではブートローダのバージョンが2.4以前であることを前提に記述しています。次の手順に従ってブートローダを最新のバージョンに更新してください。
+アップデートファイルの入手~
以下のURLよりZIP形式で圧縮されたアップデートファイルをダウンロードします。なお、このファイルはV2.0よりも前のバージョンからV2.5にアップデートする場合は利用できません。~
[[UDIII_Bootloader_update_v2.5.zip:http://www.besttechnology.co.jp/download/UDIII_Bootloader_update_v2.5.zip]]~
ダウンロードしたZIPファイルを解凍し、同梱される UDIII_UpdateToV2.5.bin を任意のフォルダにコピーします。
+アップデートファイルの転送~
UD3をPCに装着しブートローダを起動します。SIMPLE TERMでUD3の仮想COMポートを開き、ブートローダのコマンドモードになっていることを確認します。~
'w'コマンドを入力した後'y'を入力し、ブートローダをアプリケーションプログラムの受信待機状態にします。
 --< UDIII Ver.2.4 by BestTechnology >--
 >w
  START UPLOAD...
  ARE YOU SURE? (Y/N) y
次にSIMPLE TERMの転送メニュー→ファイル送信をクリックし、先に解凍した UDIII_UpdateToV2.5.bin を指定して転送を開始します。
  <SUCCESS>
 >
SUCCESSの文字が表示されたらアップデートプログラムのダウンロードは完了です。
+アップデートプログラムの実行~
アップデートプログラムはユーザプログラムとして提供され、ブートローダから実行されない限り更新は行われません。アップデートプログラムの転送が完了したら'g'コマンドを入力し、アップデートプログラムを実行させます。~
しばらくしてUD3からアラーム音が発せられLEDが点滅すれば、アップデートプログラムが実行されている状態となります。SIMPLE TERMのターミナルウィンドウには以下の表示がなされます。
  Push space key to update UDIII bootloader v2.5
ここでスペースキーを押すとアップデート処理が開始され、それ以外のキーを押すとアップデートがキャンセルされます。~
スペースキーを押すと以下の様なメッセージが順に表示され、成功すれば新しくなったブートローダの起動メッセージが表示されます。
  Push space key to update UDIII bootloader v2.5
  Start to burn ....success
  Verifying ...........................................succcess
  Please unplug USB cable ...
再度UD3をPCに装着しブートローダを起動し、SIMPLE TERMのターミナルウィンドウに以下のメッセージが表示されたらアップデートは成功しています。
 --< UDIII Ver.2.5 by BestTechnology >--
 >
+Bluetoothの設定~
ブートローダを更新するとBluetoothの諸設定が初期化されます。Bluetoothを使用する場合は再度必要な設定を行ってください。

更新内容:~
V2.5 (2011/07/22)
-Bluetoothモジュール検出の条件が厳し過ぎて未検出するのを回避
-Bluetoothの設定時に表示上の文字が崩れるのを修正

V2.4 (2011/07/1)
-Bluetoothの設定をユーザアプリに引き継ぐ様に修正
-E093Cで追加されたモータ用電源供給検出に対応

V2.3 (2011/3/5)
-DIPスイッチの取り込みフローを修正

V2.0 (2010/9/20)
-初期リリース

****使用方法 [#d6e783d6]
本装置を操作するための専用プログラムが予め搭載されており、USB(ボーレート:任意)・Bluetooth(ボーレート:任意)・Dynamixel I/F(ボーレート:1Mbps)のいずれかを経由してユーザプログラムの転送や諸設定を行う事が出来ます。~
SIMPLE TERMで該当のポートを開き、ブートローダのコマンドモードに入ると以下のメッセージ及びプロンプトが表示されます。
 --< UDIII Ver.2.5 by BestTechnology >--
 >
この状態で使用出来るコマンドは'?'を入力すると表示されます。
 >?
 --< UDIII Ver.2.5 by BestTechnology >--
  [w]:UPLOAD [g]:BOOT [i]:FLASH INFO [e]:ERASE [b]:BLUETOOTH
 >
-w (UPLOAD)~
UD3用にコンパイルされたユーザプログラムをフラッシュROMに転送するモードです。ダウンロードして実行出来るファイルは、GCC Developer LiteにてUD3向けにコンパイルされたバイナリファイルのみです。
-g (BOOT)~
フラッシュROMに転送されたユーザプログラムへ実行を遷移します。ユーザプログラムエリアが消去されていれば実行されません。
-i (FLASH INFO)~
ユーザプログラム用フラッシュROMの状態を表示します。
-e (ERASE)~
ブートローダ本体を除くユーザプログラムエリアに書き込まれたデータを完全消去します。消去したデータは復活させる事が出来ません。
-b (BLUETOOTH)~
Bluetoothの設定モードに遷移します。Bluetooth経由でブートローダのコンソールにアクセスしている場合は設定出来ません。USBケーブルでPCと接続された状態でのみBluetoothの設定変更が出来ます。

なお、ユーザプログラムが書き込まれている場合は、電源投入直後にユーザプログラムが実行されるため、ブートローダのコマンドモードにはなりません。ユーザプログラムの転送や消去といった操作を行う場合は、以下の手順に従ってください。
+UD3にUSBないし外部電源を接続し電源を印加する
+PB1とPB2を押しっぱなしにする
+その状態のままPB3を1秒程度押してから放す
+ブートローダのコマンドモードに入ると「ピロッ」という起動音とLED1が一度フラッシュするので、押していたPB1とPB2を放す。
+SIMPLE TERMで該当のCOMポートを開けば、コマンドモードの操作が可能になる。

***Bluetooth [#vb8c51d8]
BTA023のみBluetoothによるシリアルコンソールやリモートコントローラの無線化に対応します。搭載されるBluetoothモジュールであるZEAL-C01の出荷時の設定は以下の通りです。~
-サポートプロファイル:SPPのみ
-DTE速度:460.8kbps (UD3搭載のMPUとZEAL間のUSARTの速度)
-PINコード:0000 (文字列の'0000')
-認証:あり (SIXAXISモード以外時に適用)
-暗号化:なし
-デバイス検出への応答:あり
-フロー制御:ハード的に無効
-機器名称:UDIII-xxxxxxx (xxxはシリアル番号)
-パフォーマンスレベル:9 (可能な限り高速動作,省電力に貢献しない)
-接続モード:自動待ち受け

このうち、ユーザ自ら変更出来るのは接続モードとPINコードで、ブートローダから選択及び変更が出来ます。ブートローダからBluetoothの設定を行う場合は、コマンドモードのプロンプトが'>'の状態で'b'を入力します。Bluetoothの設定モードに入ると、プロンプトは'BT'に変わります。この状態で使用出来るコマンドは'?'を入力すると表示されます。なお、Bluetooth経由でブートローダのコンソールを操作している場合はBluetoothの設定が行えませんので、その場合は他のI/Fを使用してください。

 --< UDIII Ver.2.5 by BestTechnology >--
  [w]:UPLOAD [g]:BOOT [i]:FLASH INFO [e]:ERASE [b]:BLUETOOTH
 >b
  CONNECTING TO BLUETOOTH MODULE ......
 BT>?
 -- BLUETOOTH CONFIGURATION --
  [o]:SLEEP [w]:MASTER [c]:SLAVE [s]:SIXAXIS [a]:AUTHENTICATION [p]:PIN CODE
  [h]:INQUIRY [i]:info [ESC]:exit
 BT>

-i (INFO)~
ZEAL-C01のMACアドレスと、現在のBluetoothの接続モードを表示します。自動待ち受けの場合は'WAITING MODE'、自動接続の場合は接続先のMACアドレスが表示されます。
-ESC (EXIT)~
Bluetoothの設定モードを抜けます。
-o (SLEEP MODE)~
Bluetoothモジュールを待機状態に設定します。他のBluetooth機器からの検索や接続が出来なくなります。
-w (MASTER MODE)~
自動待ち受けに設定します。他のBluetooth機器から本装置を検索させ、接続させる場合に選択します。~
-c (SLAVE MODE)~
自動接続に設定します。本装置から他のBluetooth機器を検索及び選択、もしくは直接MACアドレスを入力して自動的に接続させる場合に選択します。
 BT>c
  SEARCHING...
  0: INPUT MAC
  1: 001122334455 (RC100B)
  2: 5566778899AA (HOGEHOGE)
  3: BBCCDDEEFF00 ()
  OTHER: exit
  NO =
接続先がSPPに対応している必要があります。なお、接続先がPINコードを要求する場合はPINコードを合わせておく必要があります。
-s (SIXAXIS MODE)~
PlayStation®3用のワイヤレスコントローラであるSIXAXISないしDUALSHOCK®3からの接続を待ち受けます。~
使用するSIXAXIS側に予めUD3に搭載されたBluetoothモジュールのデバイスアドレスを設定しておく必要があります。SIXAXISの設定変更に関しては[[こちら>SIXAXIS]]を参照ください。
-p (PINコード設定)~
PINコードを設定します。現在設定されているPINコードが表示されるので、最大16文字までの0から9の任意の数字を入力します。未設定は許容しません。

**開発環境 [#v1eb2eaa]

***GCC Developer Lite [#v57a2534]
GCC Developer Liteの詳細については[[こちら>GCC Developer Lite]]。~
コンポーネントの選択中にフルインストールないし「ユニバーサルドライバⅢ(AT91SAM7S)でのみ使用)」を選択する事で必要なコンポーネントが自動的にインストールされます。~
#ref(GDL_UD3_Select.png)
UD3で使用される主要なコンポーネントを簡単に紹介します。
-''[[GCC Developer Lite>GCC Developer Lite#GCCDevL]]''
~ソースプログラムを編集するためのテキストエディタとその他のツールを起動するためのランチャ機能を有する。
-''[[SIMPLE TERM>GCC Developer Lite#STERM]]''
~汎用シリアルターミナル。簡易的なTELNETクライアントとしても機能する。~
USB等で提供されるCOMポートの動的な検出と、COMポートを使用する弊社ツールとの排他制御機能を持つ。
-''ARMGCC''
~ARMコア向けC/C++言語向けのコンパイラ。出来る限り最新のパッチを適用しているため、時に互換性を失う。
-''デバイスドライバ''
~弊社提供のAT91SAM7シリーズ向けUSB CDCエミュレーションドライバ。
-''ターゲットファイル''
~MPUの内蔵ペリフェラルを定義したヘッダファイルやUARTを簡便に使うためのAPI、USBをシリアルポートとして使用するためのAPI、GDBにてデバッグする際に使用する初期化ファイル、シリーズ毎に異なるメモリマップを定義したリンカスクリプトファイル、スタートアップルーチンを含む。基本的にコンパイル済みライブラリとしてソースとリンクして使用する。

****ターゲットファイル [#l9fe78a0]
[[GCC Developer Lite>GCC Developer Lite]]ではUD3用の設定を1種類備えています。~
#ref(GDL_CompileOption_TargetList.png)
以下にUD3に対応した設定リストの一覧とその設定における機能を紹介します。
-''UD3''
~USB・Bluetoooth・RS485 I/Fを介してDynamixelプロトコルをサポートするタスクとUD3搭載機能を簡便に使用するためのライブラリとして提供される。~
同時にOSとしてAT91SAM7Sシリーズ用Toppersカーネルもリンク対象となる。~
~ビルドするとブートローダにてMPUのフラッシュROMへ転送するための.bin(バイナリ)ファイルが作られる。~
ビルドが成功すると、STERM.exe(SIMPLE TERM)が起動する。~

****SIMPLE TERMとブートローダ [#zd751f4a]
ブートローダはUD3のUSB・Bluetooth・RS485を使用して外部からユーザーログラムの書き換えや操作を行う事が出来ます。~
ブートローダを使用して動作するプログラムが構成出来る設定リストは以下の通りで、これ以外の設定リストで構成されたプログラムをブートローダで転送しても正常に動作しないまでか、ボードが破損する可能性があります。
-UD3 (Bootloader)

PCとUD3をUSBケーブルで接続して使用するケースを紹介します。~
USBを仮想シリアルポートとして認識させるためのPC用デバイスドライバは、[[GCC Developer Lite>GCC Developer Lite]]をインストールした際にWindowsのシステムフォルダにコピーされます。USBケーブルでUD3とPCを接続するとデバイスドライバを要求されますが、自動検索させる事でインストールが行われます。~
インストール後、新しいCOMポートがWindowsのデバイスとして追加され、SIMPLE TERMから該当するCOMポートを選択(COMポート番号はPCの環境によって変わるが、デバイス名に「AT91 USB to Serial Converter」が表示されたポートを選択)しオープンするとブートローダの各種コマンドが使用可能となります。その他の設定は以下の通りです。~
 Baudrate:USB経由では意味を持たないので何でも構わない
 Databits:8
 Stopbits:1
 Parity:Non
 Flow Control:Non
 Protocol:Xmodem
#ref(AT91SAM7_BL_COM.png,100%)

なお、ユーザプログラムが既に書き込まれている場合は、電源投入およびリセット直後にユーザプログラムが実行される仕様です。[[こちら>#ueb4c356]]の手順にてブートローダのコマンドモードにしておく必要があります。

先の設定リストでソースプログラムをコンパイルし成功するとSTERM.exe(SIMPLE TERM)が自動起動されます。COMポート以外に関しては、以下の条件で起動します。
-既にSIMPLE TERMが実行中であれば2重に起動しない。
-ボーレートや転送プロトコルは要求される設定が自動的になされる。
-コンパイル済み.binファイルの情報が渡る(ステータスバーにて確認可)。
-ユーザプログラムを転送する際の手順を記述したスクリプトファイルが使用出来る様になる。

#ref(AT91SAM7_STERM_SCRIPT1.png,100%)

UD3がブートローダのコマンドモードであれば、「スクリプト実行[STERM UD3]」をクリックするだけで転送するファイルを手動で選択する事無く転送にかかる処理と実行までが全て自動的に行われます。
#ref(AT91SAM7_STERM_SCRIPT2.png,100%)
本機能により、手動で間違ったファイルを選択して転送してしまったり、転送不可能な状態で転送をしてしまうといったミスを軽減する事が出来ます。

**UD3向けターゲットファイル及びライブラリ [#zfc66a9e]
[[GCC Developer Lite>GCC Developer Lite]]では1つのソースプログラムのみを対象とするため、機能別にソースを分割して編集やコンパイルするといった使い方は出来ません(完全に出来ないという訳でもありません)。だからと言って全ての機能を一つのソースに記述する事は、プログラムの見通しが悪くなりバグの温床になりかねません。~
そこで、複数のソースに分割する事無くある程度のソースプログラムサイズでコーディングするために、頻繁に使用されるであろう一部の機能が専用のライブラリとして提供されます。~
GCC Developer Liteを標準的な環境のPCへインストールすると、「C:\Program Files\BestTech\GCC Developer Lite\TARGET」フォルダに必要なファイルがコピーされます。必要に応じて本フォルダを参照出来ますし、ユーザがソースを修正しライブラリを再構築する事も可能です。~
~
UD3は複数のライブラリを組み合わせて使用するため、実体はかなり複雑になっています。
-''SAM7S用ライブラリ''~
AT91SAM7Sシリーズ共通の内蔵ペリフェラルを簡便に扱う為のライブラリ。
-''AT91SAM7Sシリーズ用 TOPPERS/ASP''~
μITRON4.0仕様準拠であるリアルタイムカーネル[[Toppers>http://www.toppers.jp/]] ASPのAT91SAM7Sシリーズ向けベステクカスタム版。OSを搭載してもある程度のリアルタイム性を確保出来る事から採用。
-''UD3ライブラリ''~
UD3ライブラリはToppersを採用することで、2チャンネルあるモータドライバを全く違う目的で各々個別のタスクで動かしたり、ホストPCとDynamixelプロトコルで通信を行うタスクを走らせながらシステムを運用といった機能を提供。~
実際にはToppersのそれを意識する必要はほとんどない。~
使用できるAPIは膨大なため、別途[[こちら>UD3LIB]]のページにて詳細を公開。

**サンプルプログラム [#kf8170aa]
APIを使用したいくつかのサンプルプログラムを用意しました。以下よりダウンロードして解凍した上でご利用ください。詳細はコメントおよび[[UD3 Library]]のドキュメントを参考に読み解いてください。

-UD3用サンプルプログラム Ver1.6 (2011/8/9)~
#ref(http://www.besttechnology.co.jp/download/UD3_SMPL1.6.zip)
--更新履歴~
GCC Developer Lite 2.4.0.13r4以降のAPI変更に伴う修正(sample15(DX_HOST).cのみ)

-UD3用サンプルプログラム Ver1.5 (2011/8/3)~
#ref(http://www.besttechnology.co.jp/download/UD3_SMPL1.5.zip)
--更新履歴~
GCC Developer Lite 2.4.0.13r3以降のAPI追加・変更に伴う修正

-UD3用サンプルプログラム Ver1.4 (2011/7/22)~
#ref(http://www.besttechnology.co.jp/download/UD3_SMPL1.4.zip)
--更新履歴~
GCC Developer Lite 2.4.0.13以降のAPI追加・変更に伴う追加・修正

-UD3用サンプルプログラム Ver1.3 (2011/4/6)~
#ref(http://www.besttechnology.co.jp/download/UD3_SMPL1.3.zip)
--更新履歴~
GCC Developer Lite 2.4.0.0r3以降のAPI追加・変更に伴う追加・修正

-UD3用サンプルプログラム Ver1.2 (2010/9/25)~
#ref(http://www.besttechnology.co.jp/download/UD3_SMPL1.2.zip)
--更新履歴~
コメントを追加~
DUALSHOCK3を使用するサンプル追加~
相撲ロボット向けのサンプルの挙動を共通化

***相撲ロボット向けサンプルについて [#jf8d7859]
いきなりフルパワーで暴走すると危険ですので、いくつかのサンプルでは以下のマクロで最終段の出力を抑えています。
 #define POWERGAIN 30   // ★出力を調整するためのゲイン 0~100%で指定
パワーが上がらなのはバッテリやモータの問題ではありませんので、必要に応じてこの値を0~100の範囲で変更し、再度コンパイルし直してください。

相撲ロボット向けサンプルプログラムが想定している周辺機器の接続イメージは以下の通りです。
#ref(ud3_sumou_peripheral.png,40%)
各コネクタの詳細を以下に示します。
: CN1 | MPU及びセンサ用の一次電源。供給電圧は8V以上を必要とする。
: CN2 | PCとUD3をUSBケーブルで接続して通信を行う。プログラムのダウンロードを行ったら外しておく。
: CN3 | モータ用の一次電源。電源ラインにヒューズを挿入する事を推奨。
: J1 (GPIO0) | 左前土俵検出を目的としたセンサを接続。ここでは[[BTE003B 反射型フォトインタラプタ>BTE003B]]を想定し、5Vの電源供給も含め3線を接続する。
: J2 (GPIO1) | 右前土俵検出を目的としたセンサを接続。ここでは[[BTE003B 反射型フォトインタラプタ>BTE003B]]を想定し、5Vの電源供給も含め3線を接続する。
: J3 (GPIO2) | 左前ないし左にいる相手検出を目的としたセンサを接続。ここでは[[BTE023 800mm光センサ>BTE023]]を想定し、5Vの電源供給も含め3線を接続する。
: J4 (GPIO3) | 前方にいる相手検出を目的としたセンサを接続。ここでは[[BTE023 800mm光センサ>BTE023]]を想定し、5Vの電源供給も含め3線を接続する。
: J5 (GPIO4) | 右前ないし右にいる相手検出を目的としたセンサを接続。ここでは[[BTE023 800mm光センサ>BTE023]]を想定し、5Vの電源供給も含め3線を接続する。
: J8 (GPIO7) | ラジコン用受信器の電源供給用。未使用のJ6ないしJ7でも構わない。5Vで利用出来る受信器を想定。
: J9 (GPIO8) | ラジコン用受信器のCH1。右側のモータ(M1)のパワー及び回転方向を指令する信号が供給される前提。
: J10 (GPIO9) | ラジコン用受信器のCH2。左側のモータ(M2)のパワー及び回転方向を指令する信号が供給される前提。
: J11 (GPIO10) | 非常停止時に0.2秒以上LOWの信号を出力する何らかの非常停止装置を想定。
: M1 | 右側に配した車輪を駆動するモータを接続。プラスのデューティーを指令すると後退する方向に回転する前提。
: M2 | 左側に配した車輪を駆動するモータを接続。プラスのデューティーを指令すると前進する方向に回転する前提。

***基本操作フロー [#heb0404f]
個々の詳細に関してはサンプルプログラム内のコメントを参照していただくとして、コンパイルしてUD3に転送して実行させるまでの流れを書いておきます。
+GCC Developer Liteで任意のソースをコンパイラオプションで「UD3」を選択してコンパイル。
+コンパイル成功と同時にSIMPLE TERMが勝手に起動する。二重に起動する事はない。
+PCとUD3をUSBケーブルで接続し、PB1とPB2を押しながらPB3のリセットを押す。PB3だけを放しUD3から「ピロッ」という起動音が聞こえたら全てのボタンを放して構わない。
+SIMPLE TERMのポートを適宜設定しポートを開くと、SIMPLE TERMのターミナルウィンドウに起動メッセージが表示されたら転送可能状態。
+SIMPLE TERMの転送メニューからスクリプト実行をクリックし、プログラムの転送を開始する。スクリプトはプログレスバーが100%になれば転送を完了し、転送したプログラムを実行する。
+転送したプログラムに実行が遷移する際にSIMPLE TERMで開いているポートが切断されるが、プログラムが正常に実行されてしまえば再度活性化してポートが自動的に開く。

**注意事項 [#hc748965]

|CENTER:BGCOLOR(red):||c
|&nbsp; :idea:|下記に記載された事項以外にも、経験を踏まえた危険回避方策を講じる事。&br;安全に配慮しない場合は人命や財産を失う恐れがある。&br;また従わない場合は保証対象外となる。|
-搭載されるMPUはロットにより2種類混在するが選択は出来ない。
-知識と認識がある場合を除き、MPU及びセンサ用電源とモータ用電源は同じソースから供給しない事。
-一般的な直流電源装置をモータ用電源として使用しない事。モータの状態によっては容易に見かけ上の電源電圧が上昇し、破損の恐れがある。
-モータ用の電源を印加せずMPU・センサ用の電源のみを印加している状態ではモータの[[イネーブル>#x441e3d8]]を行ってはならない。イネーブルするとゲートドライバの負荷が上がり、発熱ないし破損する。
-高いモータ用電源の使用はひかえる事。当然アクチュエータにもよるが、ノイズ等の影響を考慮し公称7.4Vバッテリパックを2本直列程度にとどめる事を強く推奨する。
-ノイズが大きいモータを使用する場合はノイズ対策を十分に施す事。アークが飛ぶ程の高インダクタンスなモータの使用は推奨しない。また、そういったモータへ定格を超える電源を印加する事は絶対にしてはならない。駆動回路のアバランシェ破壊を誘発する可能性が高くなる。
-基本的にフルパワーからのモータの瞬時逆回転は許容しない事。急反転等を行うと仕様以下の電源電圧であっても逆起電力やノイズにより見かけ上の電源電圧が上昇し、もしその電圧がFETの絶対最大定格を超えた場合はFETが即時短絡破壊する。
-最悪ケースでFETがショート状態の故障モードに陥るため、その際にバッテリ等が超過放電にならないよう最終的に電流を遮断するためのヒューズ等を電源ラインに挿入しておく事。
-モータ駆動用のHブリッジが破損するときわめて大きな短絡電流が流入する。その際モータ用電源として接続したバッテリが電流制限ないし保護機能を持っていない場合は、極めて重篤な事態を生じる可能性がある。
-運転中以外はバッテリは全て取り外す事。
-許容損失電力を考慮し、場合によっては強制空冷措置を講じる事。
-コネクタのリードに直接半田したり不用意に導電性の物と接触させてはならない。
-移動台車等を構成した際にUSBケーブルを接続したまま使用しない事。
-FET部分を覆うシールドプレートは取り外してはならない。
-Bluetoothを使用する場合は電波が遮蔽されないよう留意する事。
-ラジコン用のプロポをUD3に近づけると正常な動作を得られなくなる。最低でも数メートル以上離す事。
-ゲートON中は指令値が0であっても電気的にバックドライバビリティが低下する。
-タスクを複数起動すると1つのタスクの実行時間が延びる。動作時間を優先する場合はシングルタスクにとどめておくことを推奨する。
-本製品にかかるいかなる損害が生じても、本製品の単価を超える保障は行わない。

« Prev[3]