ページへ戻る

− Links

 印刷 

BTA026​/BTA027 ユニバーサルドライバ3.5 のバックアップソース(No.8) :: Besttechnology

knowledge:BTA026/BTA027 ユニバーサルドライバ3.5 のバックアップソース(No.8)

« Prev[4]  Next »[5]
TITLE:ユニバーサルドライバ3.5マニュアル
#norelated
#contents
[[ショップページ(BTA026)へ>http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=147]]~
[[ショップページ(BTA027)へ>http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=148]]

**概要 [#x0a22961]
本製品(以後UD3.5と称す)は独立した2つのブラシ付DCモータ用ブリッジ回路を搭載したインテリジェンスモータコントローラです。~
モータドライバの他に11本のデジタル入出力端子を備え、そのうち8本はアナログ計測として使用でき、さらに任意周波数及びデューティーのPWM出力、パルス数やパルス幅計測を行う事ができます。~
また、I/FにUSB・RS485・Bluetooth(Advanceのみ)の3種類を装備していますので、様々なホストとのコミュニケーションをサポートします。~

C言語によるプログラミングが必要になりますが、フリーの開発環境であるGCC Developer Liteで開発を行う事ができます。また、リアルタイムカーネルとして[[Toppers>http://www.toppers.jp/]]を採用していますので、専用のAPIと組み合わせて複数の処理を同時にこなすシステムが容易に実現できます~

更に、UD3.5のRS485 I/FをホストとしたDynamixelとのコミュニケーションを行うためのAPIが用意されています。これにより、UD3.5で構成した車輪型の台車にDynamixelを装備するといった応用が出来ます。~
またAPIでスレーブとして初期化する事で、他のDynamixelと合わせて別途用意されたホストからの指令で運転することも可能です。

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

**仕様 [#ccb8af41]
***同梱内容 [#ydb80ee3]
| 型式 | 数量 | 備考 |
|ユニバーサルドライバ3.5本体 | 1|E107, E110 |
|コネクタキット | 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]]x4)&br;モータ電源用 ([[No.05023>http://www.kopropo.co.jp/sys/archives/182]]x1)&br;モータ用 ([[No.05001>http://www.kopropo.co.jp/sys/archives/183]]x2) |
''※microUSBケーブルは付属しません''

***基本仕様 [#tdfcd359]
|品番 |BTA026/BTA027 |
|PCBリビジョン |E107 & E110 |
|動作温度範囲 |-10~+60℃ 結露無きこと |
|寸法 |外形:73x52x25mm (±0.5mm 突起物を含む)&br;取り付け穴:66.7x45.7mm 4-φ2.2 |
|重量 |70g以下 |
|MPU |Atmel AT91SAM7S256D |
|MPU内蔵メモリ |フラッシュROM:256k&br;RAM:64kbyte |
|モータ電源  |入力: DC3~DC24V (絶対最大定格電圧:100V)&br;出力: UD3定格30A (FET 最大定格電流:190A パルス電流:740A)&br;許容損失電力: 380W @25℃ |
|MPU及びセンサ電源 |入力: DC7~35V (絶対最大定格電圧:DC42V)&br;出力: DC5V 7A(最大) |
|I/F |入力用プッシュスイッチx2&br;入力用4bitロータリーDIPスイッチx1&br;リセット用プッシュスイッチx1 |
|モータドライバ |2ch Hブリッジ&br;4象限の制御領域&br;1~200kHz(1kHz単位で任意)のPWMキャリア周波数 |
|ワイヤレス |BTA027のみBluetoothモジュール(ZEAL-C02)装備 |
|コネクタ |ホストPC間: USB (USB microB)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対応 |

***内部簡略ブロック [#h7708d30]
#ref(UD35_block.png)
全ての電源においてGNDは内部で接続されています。

***外観 [#uec5ec4d]
写真はBTA027です。BTA026にはBluetoothモジュールが装備されません。
| TOP | BOTTOM |
| #ref(UD35_TOP.png,35%) | #ref(UD35_BOTTOM.png,35%) |
| SIDE |
| #ref(UD35_SIDE.png,35%) |

***寸法 [#fb83eb26]
#ref(UD3.5_Size.pdf)
※括弧付の数値は参考値となり、最大±1mm程度の誤差を含みます。

***端子配置 [#n1509a83]
#ref(UD35_Layout.png,70%)
以下特に断りのない限り本図のレイアウトを正として端子番号やそれらの方向、位置等を示す。

****CN2 [#m0a0716d]
-BluetoothモジュールZEAL-''C02''装着用コネクタ
-ブートローダおよびライブラリの更新に伴い、ZEAL-''C01''はサポート対象外とする

****CN3 [#d3507a3a]
|CENTER:BGCOLOR(red): :idea:|電源の逆接続は電源回路の即時破壊・全損扱いとなる。|

|基板側ヘッダー |[[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ゲートドライバの一次電源を兼ねる
-[[図>#n1509a83]]右より順に ①:DM(RS485), ②:DP(RS485), ③:+(センサ&MPU電源), ④:-(GND) の端子割り当て
-RS485による通信を行わない場合は①②ピンは未接続にしておく
-入力絶対最大定格:DC42V
-入力定格電圧:DC7~35V(リプルなき事)
-④ピン(GND)はボード内全て(ロジックおよびモータ電源)において共通
-本端子から供給される電源によりボード内で使用されるDC5V電源とDC3.3Vが作られ、更にJ1~J12端子からの5V出力がなされる
-電圧変動が大きいアプリケーションの場合は、MPOWとは別の電源から供給する事
-J1~J12及びボード内で使用されるDC5V電源の総電流が7Aを超えてはならない。
-アプローチ方向は基板と垂直
#ref(CN3_approach.png)

****CN4 [#o42a9643]
|CENTER:BGCOLOR(red): :idea:|microUSBケーブルは同梱されませんので、市販のUSB[micro-B]<->USB[A]ケーブルを別途お買い求めの上ご利用下さい。|
-USB-microB
-PC(ホスト)と本ボード上のMPU(デバイス)間のUSBによる通信用
-USBバスパワーによるロジック電源供給用(CN3からの電源とOR)
-USBバスパワーからはJ1~J12及びゲートドライバへの電源供給は行われない
-アプローチ方向は基板と水平
#ref(CN4_approach.png)

****CN5 [#bd6d0de3]
-PB1及びPB2端子と並列に接続
-①:5V, ②:PB1, ③:PB2, ④:GND
-②ないし③をGNDの電位にすると、PB1ないしPB2の押下と同等となる
-②ないし③を5Vないしオープンにすると、PB1ないしPB2の解放と同等となる
-各端子はESDや電流制限等の保護措置がないため、使用する際はそれらの点を考慮する事

****MPOW [#l2483aa2]
|CENTER:BGCOLOR(red): :idea:|電源の逆接続はブリッジ回路の即時破壊・全損扱いとなる。|

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

-Hブリッジ(モータ)電源供給用
-[[図>#n1509a83]]上より順に ①:+(モータ電源), ②:-(GND) の端子割り当て
-入力定格電圧:DC5~24V
-入力絶対最大定格:DC100V
-②ピン(GND)はボード内全て(ロジックおよびモータ電源)において共通
-本端子から供給される電源がHブリッジ回路に供給されM1ないしM2端子を介して負荷へと供給される
-高負荷かつ電圧変動が大きい場合は、CN3に供給される電源と共通にすることは避ける事
-アプローチ方向は基板と垂直
#ref(MPOW_approach.png)

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

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

****PB1(プッシュボタン) [#h3816237]
-アプリケーションにて使用

****PB2(プッシュボタン) [#ca6747f6]
-アプリケーションにて使用

****PB3(プッシュボタン) [#i79f1773]
-押下でMPUをハードリセットし、ブートローダを起動する

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

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

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

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

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

****J1~J8 [#y6c5f6b8]
2.5mmピッチ3ピンヘッダ
-[[図>#n1509a83]]下より順に ①:SIG, ②:5V出力, ③:GND の端子割り当て
-J1~J8の各①ピン(SIG端子)がGPIO0~GPIO7に相当する
-①ピン(SIG端子)は5V入力トレラント対応~
IEC61000-4-2 level4のESD保護~
電流制限用に47Ωの直列抵抗搭載~
出力時レベル:L=0~0.4V/H=2.9~3.3V~
入力時レベル:L=-0.3~0.8V/H=2~5.5V~
絶対最大定格:-0.3~5.5V~
全GPIO総電流:100mA以下(入出力にかかわらず)
-③ピン(GND)はボード内全て(ロジックおよびモータ電源)において共通
-プログラマブルな内蔵プルアップ抵抗(約100kΩ)を搭載。
-アプローチ方向は基板と垂直
#ref(Jx_approach.png)

****J9~J11 [#k85ac496]
2.5mmピッチ3ピンヘッダ
-[[図>#n1509a83]]下より順に ①:SIG, ②:5V出力, ③:GND の端子割り当て
-J9~J11の各①ピン(SIG端子)がGPIO8~GPIO10に相当する
-①ピン(SIG端子)は5V入力トレラント対応~
IEC61000-4-2 level4のESD保護~
電流制限用に47Ωの直列抵抗搭載~
出力時レベル:L=0~0.4V/H=2.9~3.3V~
入力時レベル:L=-0.3~0.8V/H=2~5.5V~
絶対最大定格:-0.3~5.5V~
全GPIO総電流:100mA以下(入出力にかかわらず)
-③ピン(GND)はボード内全て(ロジックおよびモータ電源)において共通
-プログラマブルな内蔵プルアップ抵抗(約100kΩ)を搭載。
-アプローチ方向は基板と垂直
#ref(Jx_approach.png)

****J12 [#b82e4f80]
-[[図>#n1509a83]]下より順に ①:SIG, ②:5V出力, ③:GND の端子割り当て
-①ピン(SIG端子)と③ピン(GND)を短絡すると5V用DCDCコンバータがシャットダウン(ボード内の5V・12Vの電源がOFF)し消費電流が100uA以下に減少する~
なおUSB(CN4)からのバスパワーは本端子の影響を受けないため、シャットダウン中でも3.3V LDOを介してMPUのみ活性化する
-シャットダウンさせない場合は①ピン(SIG端子)をオープンにしておく事
-アプローチ方向は基板と垂直
#ref(Jx_approach.png)

****JP1 [#w3ccf192]
-CN3近傍に配置された半田ジャンパで、ショートする事でRS485 I/Fのターミネータが活性化する
-出荷時にオープン(ターミネータOFF)

****BZ1 [#p92a2f56]
-ブザー
-ブートローダのコマンドモードに入ると起動音が鳴る
-アプリケーションにてプログラマブルに発声可

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

***USB [#x334fbcc]
PCのUSBバスパワーでボード内の電源供給を行う他に、PCとMPUとの有線による通信手段を提供します。~
PCとUSBケーブルで接続しブートローダのコマンドモードが起動すると、PCからは増設シリアルポートとして見えます。
***RS485 [#l3a0ca24]
RS485 I/F(CN3)はDynamixelシリーズと電気的に互換性を持っています。ユーザプログラムによってDynamixelプロトコルのホストにもクライアントにも使用でき、単純なコンソールとしても機能させることができます。

なお、USB(CN4)へのアプローチが基板と平行になっているため、ロボットなどへ組み込んだ際に機構物等でUSBケーブルが接続できなくなる場合があります。その時は、RS485 I/F(CN3)をコンソールの代用として使用する事をおすすめします。PC用のRS485 I/Fとして、[[BTE061E]]や[[BTE068B]]が使用できます。
-コンソールないしDynamixelクライアントとして使用
#ref(CN3_to_USB.png,70%)
-Dynamixelのホストとして使用
#ref(CN3_to_DXHOST.png,70%)

***ブートローダ [#y20bce9e]
****使用方法 [#k7af2634]
UD3.5に予め書き込まれているブートローダによってUSB(ボーレート:任意)・Bluetooth(ボーレート:任意)・Dynamixel I/F(ボーレート:1Mbps)のいずれかを経由してPCからユーザプログラムの転送や諸設定を行う事ができます。~
PCにインストールしたSIMPLE TERMで3つのいずれかのポートを開き、ブートローダのコマンドモードに入ると、次のメッセージが表示されます。
 --< UDIII.V Ver.3.0 by BestTechnology >--
 >
この状態で'?'を入力すると、使用出来るコマンドの一覧が表示されます。
 >?
 --< UDIII.V Ver.3.0 by BestTechnology >--
  [w]UPLOAD [g]BOOT [i]FLASH INFO [e]ERASE [e]ERASE [d]DUMP [b]BLUETOOTH
 >
-w (UPLOAD)~
UD3.5用にコンパイルされたユーザプログラムをフラッシュROMに転送する。ダウンロードして実行出来るファイルは、GCC Developer LiteにてUD3.5向けにコンパイルされたバイナリファイルのみ。
-g (BOOT)~
フラッシュROMに転送されたユーザプログラムへ実行を遷移する。ユーザプログラム領域が消去されていると実行されない。
-i (FLASH INFO)~
ユーザプログラムのストア状況、GPIO・ディップスイッチ・プッシュスイッチの状態、モータ用電源の供給状況、Bluetoothの接続状況等を表示する。
-e (ERASE)~
ブートローダ本体を除くユーザプログラムエリアに書き込まれたデータを完全消去する。一度消去したデータは復活させる事は出来ない。
-d (DUMP)~
MPUのメモリを16進数でダンプする。
-b (BLUETOOTH)~
Bluetoothの設定モードに遷移する。USBケーブルでPCと接続された状態でのみ本モードに遷移し、Bluetooth経由で接続している場合はキャンセルされる。

なお、ユーザプログラムが書き込まれている場合は、電源投入直後にユーザプログラムが実行されるため、ブートローダのコマンドモードにはなりません。~
再度ユーザプログラムの転送や消去といった操作を行う場合は、PB3を押してリセットして下さい。「ピロッ♪」という起動音とともにLED1が一度フラッシュした後に、ブートローダはコマンドモードへ遷移します。

***Bluetooth [#fd0849c4]
BTA027のみBluetoothによるシリアルコンソールの無線化に対応します。搭載されるBluetoothモジュールであるZEAL-C02の出荷時の設定は以下の通りです。~
-サポートプロファイル:SPPのみ
-DTE速度:460.8kbps (UD3搭載のMPUとZEAL間のUSARTの速度)
-PINコード:0000 (文字列の'0000')
-認証:あり
-暗号化:なし
-デバイス検出への応答:あり
-フロー制御:ハード的に無効
-機器名称:UDIII.V-xxxxxxx (xxxxxxxはシリアル番号)
-接続モード:自動待ち受け

このうち、ユーザ自ら変更出来るのは接続モードとPINコードのみです。Bluetoothの設定を行う場合は、コマンドモードのプロンプトが'>'の状態で'b'を入力します。Bluetoothの設定モードに入ると、プロンプトは'BT>'に変わります。この状態で'?'を入力すると使用出来るコマンドの一覧が表示されます。なお、Bluetooth経由でブートローダを操作している場合は、本設定のモードへ遷移しません。

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

-i (INFO)~
ZEAL-C02の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コードを合わせておく。
-p (PINコード設定)~
PINコードを設定する。現在設定されているPINコードが表示されるので、最大16文字までの0から9の任意の数字を入力する。未設定は許容しない。

**プログラムの開発環境 [#rd9c4cb1]
***GCC Developer Lite [#xcbed9da]
GCC Developer Liteの詳細については[[こちら>GCC Developer Lite]]。~
コンポーネントの選択中にフルインストールないし「ユニバーサルドライバⅢ(AT91SAM7S)でのみ使用)」を選択する事で必要なコンポーネントが自動的にインストールされます。~

なお、UD3.5をサポートするのは''GCC Developer Lite Version2.5.1.0''以降となります。~
#ref(GDL_UD3_Select.png)
UD3.5で使用される主要なコンポーネントを簡単に紹介します。
-''[[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にてデバッグする際に使用する初期化ファイル、シリーズ毎に異なるメモリマップを定義したリンカスクリプトファイル、スタートアップルーチンを含む。基本的にコンパイル済みライブラリとしてソースとリンクして使用する。

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

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

PCとUD3.5をUSBケーブルで接続して使用するケースを紹介します。~
USBを仮想シリアルポートとして認識させるためのPC用デバイスドライバは、[[GCC Developer Lite>GCC Developer Lite]]をインストールした際に一緒にインストールされます。USBケーブルでUD3.5とPCを接続した際にデバイスドライバを要求された場合は、自動検索を選択して下さい。~
なお、64bitのWindowsやVista以降ではユーザアカウント制御や管理権限によってGCC Developer Liteをインストールする際にデバイスドライバのインストール処理中に注意が促される場合があります。その際は必ず「インストールする」を選んでください。また、Windows8では署名なしのデバイスドライバがインストールできなくなっています。Windows8で使用する際は、[[こちら:http://www.besttechnology.co.jp/modules/d3blog/details.php?bid=119]]の情報を参考にしてください~

UD3.5に対してWindowsが正しくデバイスドライバを適用できると、新しいCOMポートがWindowsのデバイス一覧に追加されます。SIMPLE TERMからそのCOMポートを選択(COMポート番号はPCの環境によって変わるが、デバイス名に「AT91 USB to Serial Converter」が表示されたポートを選択)しオープンする事で、SIMPLE TERMからUD3.5のブートローダの各種コマンドが使用できる様になります。その他の設定は以下の通りです。~
 Baudrate:USB経由では意味を持たないので何でも構わない
 Databits:8
 Stopbits:1
 Parity:Non
 Flow Control:Non
 Protocol:Xmodem
#ref(AT91SAM7_BL_COM.png,100%)

なお、UD3.5にユーザプログラムが既に書き込まれている場合は、電源投入直後にそのユーザプログラムが自動的に実行されてしまいますので、その際はPB3を押してUD3.5のブートローダをコマンドモードにします。

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

#ref(AT91SAM7_STERM_SCRIPT1.png,100%)

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

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

-UD3用サンプルプログラム Ver1.7 (2013/8/29)~
#ref(http://www.besttechnology.co.jp/download/UD3_SMPL1.7.zip)
--更新履歴~
UD3.5対応(モータの接続端子の入れ替えのみ)~
[[BTA034B]]用のサンプル追加(相手センサをPSDに変更したもの)

なお、基本的に[[UD3用のサンプル>UD3#kf8170aa]]からの微修正ですので、M1とM2への接続が同じであれば従来通りのサンプルプログラムがそのまま利用できます。

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

また、UD3とUD3.5用のサンプルは共通ですが、後に記載する接続のうちモータの接続をUD3のそれと左右入れ替えているため、もしサンプルプログラム中に以下の行の記述があれば、そのコメント(//)を外した上でコンパイルしてください。

 //#define _USE_UD35

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

***基本操作フロー [#q9d08cf4]
個々の詳細に関してはサンプルプログラム内のコメントを参照していただくとして、プログラムをコンパイルしてUD3.5に転送して実行させるまでの流れを書いておきます。
+GCC Developer Liteで任意のソースをコンパイラオプションで「UD3」を選択してコンパイル。
+コンパイル成功と同時にSIMPLE TERMが勝手に起動する。二重に起動する事はない。
+PCとUD3.5をUSBケーブルで接続し、PB3のリセットを長押しして放す。UD3.5から「ピロッ」という起動音が聞こえたらOK。
+SIMPLE TERMのポートを適宜設定しポートを開くと、SIMPLE TERMのターミナルウィンドウに起動メッセージが表示されたら転送可能状態。
+SIMPLE TERMの転送メニューからスクリプト実行をクリックし、プログラムの転送を開始する。スクリプトはプログレスバーが100%になれば転送を完了し、転送したプログラムを実行する。
+転送したプログラムに実行が遷移する際にSIMPLE TERMで開いているポートが切断されるが、プログラムが正常に実行されてしまえば再度活性化してポートが自動的に開く。
**注意事項 [#wb28fb6c]
|CENTER:BGCOLOR(red): :idea:|下記に記載された事項以外にも、経験を踏まえた危険回避方策を講じる事。&br;安全に配慮しない場合は人命や財産を失う恐れがある。&br;また従わない場合は保証対象外となる。|
-知識と認識がある場合を除き、MPU及びセンサ用電源とモータ用電源は同じソースから供給しない事。
-電流をシンクできない直流電源装置等をモータ用電源として使用しない事。状況によっては逆起電力によって見かけ上の電源電圧が上昇し、耐圧を超える場合がある。
-ノイズが大きいモータを使用する場合は、ノイズ対策を十分に施す事。アークが飛ぶ程の高インダクタンスなモータの使用は推奨しない。また、そういったモータへ定格を超える電源を印加する事は絶対にしてはならない。
-フルパワーからのモータの急反転は行わない事。反転等を行うと仕様以下の電源電圧であっても逆起電力やノイズが過大になり、電源電圧が上昇して耐圧を超える場合がある。
-最悪なケースではFETがショート状態の故障モードに陥るため、その際にバッテリ等が超過放電にならないよう最終的に電流を遮断するためのヒューズ等を電源ラインに挿入しておく事。
-運転中以外はバッテリは全て取り外す事。
-許容損失電力を考慮し、場合によっては冷措置を講じる事。
-コネクタのリードに直接半田したり不用意に導電性の物と接触させてはならない。
-移動台車等を構成した際にUSBケーブルを接続したまま使用しない事。
-Bluetoothを使用する場合は電波が遮蔽されないよう留意する事。
-ラジコン用のプロポをUD3.5に近づけると正常な動作を得られなくなる。少なくとも数メートル以上離す事。
-基板BOTTOMの露出パッドはいかなる場合も短絡してはならない。
-基板TOPの両端に配置されたコンデンサのリードはいかなる場合も短絡してはならない。
-2枚構成の基板を固定している四隅のネジはGNDと同電位。
-ゲートON中はPWM指令値が0であっても回生ブレーキ状態となる。
-タスクを複数起動すると1つのタスクの実行時間が延びる。動作時間を優先する場合は、実行タスク数を制限すること。
-本製品にかかるいかなる損害が生じても、本製品の単価を超える保障は行わない。


« Prev[4]  Next »[5]