ページへ戻る

− Links

 印刷 

UD4 のソース :: Besttechnology

knowledge:UD4のソース

« Prev[3]  
TITLE:UD4マニュアル
#norelated
#contents
[[ショップページへ>http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=253]]~

**概要 [#l04d2eb3]
本製品は独立した2つのブラシ付DCモータ用ブリッジ回路を搭載したモータアンプです。~
モータドライバの他に20本のGPIO端子とUSB・RS-485 I/Fを装備しています。~

C言語によるプログラミングが必要になりますが、フリーの開発環境であるGCC Developer Liteで開発を行う事ができます。また、リアルタイムカーネルとして[[FreeROTS>https://www.freertos.org/]]を採用していますので、複数の処理を同時にこなすシステムが構成できます。~

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

**仕様 [#ccb8af41]
***同梱内容 [#ydb80ee3]
| 型式 | 数量 | 備考 |h
|CAP MODULE | 1|E152 |
|UD4 | 1|E166 |
|I/O EXPANDER | 1|E167 |
|GPIO DISTRIBUTOR | 1|E170 |
|コネクタキット | 1|[[EHR-4>http://www.jst-mfg.com/product/detail.php?series=58]]x1, [[SEH-00x>http://www.jst-mfg.com/product/detail.php?series=58]]x4&br;[[XT60>https://china-amass.en.alibaba.com/product/1992804208-802174795/Female_and_male_XT60_connectors_Amass_XT60_Panel.html]]x1 |
|ケーブル | 1|[[686714200001>https://katalog.we-online.de/em/datasheet/6867xxxxx001.pdf]](FFC 14pos 200mm)x1&br;[[686710200001>https://katalog.we-online.de/em/datasheet/6867xxxxx001.pdf]](FFC 10pos 200mm)x1 |
''※microUSBケーブルは付属しません''

***基本仕様 [#tdfcd359]
|BGCOLOR(#d0d8e0):CENTER:|LEFT:|LEFT:|c
|品番|BTA028 |<|
|PCBリビジョン|CAP MODULE|E152|
|~|UD4|E166|
|~|I/O EXPANDER|E167|
|~|SIG. DIST.|E170|
|外形寸法|CAP MODULE|39x16x45mm |
|~|UD4|61x40x10.5mm |
|~|I/O EXPANDER|50x18x5.5mm |
|~|GPIO DISTRIBUTOR|34x16x5.5mm |
|動作温度範囲|-10~+60℃ 結露無きこと |<|
|重量|70g以下 |<|
|MPU|NXP LPC824M201JHI33E&br;(フラッシュROM:32k, RAM:8kbyte) |<|
|モータドライバ|2ch Hブリッジ&br;4象限の制御領域&br;入力: DC3~DC24V (絶対最大定格電圧:DC85V)&br;出力: 定格50A (FET 最大定格電流:300A パルス電流:1200A)&br;許容損失電力: 375W @25℃ |<|
|MPU及びセンサ電源 |入力: DC7~48V (絶対最大定格電圧:DC75V)&br;出力: DC5V 7A(最大) |<|
|HMI|UD4|リセット用プッシュスイッチ x1&br;LED x2 |
|~|I/O EXPANDER|リセット用プッシュスイッチ x1&br;ロータリディップスイッチ  x1&br;プッシュスイッチ x2 |
|コネクタ等|CAP MODULE|2-Φ3.5mmランド|
|~|UD4|USBデバイス: microBx1&br;I2C: 10ピンFFC x1&br;GPIO: 14ピンFFC x1&br;Dynamixel I/F: JST B4B-EH x2&br;モータ用電源: 2-Φ4.2mmランド&br;モータ出力: ベタランド x4 |
|~|I/O EXPANDER|10ピンFFC x1&br;GPIO: 2.5mmピッチ3ピンランド x10|
|~|GPIO DISTRIBUTOR|14ピンFFC x1&br;GPIO: 2.5mmピット3ピンランド x10|
|環境配慮|鉛フリー半田・RoHS対応 |<|

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

***外観・レイアウト・回路図 [#uec5ec4d]

****CAP MODULE [#ff12b1c1]
UD4のモータ用電源のデカップリングコンデンサとして一次側に挿入して使用します。
| SIDE | BOTTOM |h
| #ref(E152_SIDE.png,25%) | #ref(E152_BOTTOM.png,25%) |
| [[3D pdf>http://www.besttechnology.co.jp/download/3D/E152_3D.pdf]] |<|
#ref(E152_LAYOUT.pdf)
#ref(E152_SCH.pdf)

****UD4 [#tb58b2d6]
モータドライバ本体です。
|BGCOLOR(#d0d8e0): TOP |BGCOLOR(#d0d8e0): BOTTOM |
| #ref(E166_TOP.png,20%) | #ref(E166_BOTTOM.png,20%) |
|BGCOLOR(#d0d8e0): SIDE |<|
| #ref(E166_SIDE.png,20%) |<|
| [[3D pdf>http://www.besttechnology.co.jp/download/3D/E166_3D.pdf]] |<|
#ref(E166_LAYOUT.pdf)
#ref(E166_SCH.pdf)

****I/O EXPANDER [#gf639d08]
I2C経由でUD4にHMIを追加すると同時に10chのGPIOを増設します。
|BGCOLOR(#d0d8e0): TOP |BGCOLOR(#d0d8e0): BOTTOM |
| #ref(E167_TOP.png,25%) | #ref(E167_BOTTOM.png,25%) |
|BGCOLOR(#d0d8e0): SIDE |<|
| #ref(E167_SIDE.png,35%) |<|
| [[3D pdf>http://www.besttechnology.co.jp/download/3D/E167_3D.pdf]] |<|
#ref(E167_LAYOUT.pdf)
#ref(E167_SCH.pdf)

****GPIO DISTRIBUTOR [#i4f7e6c8]
UD4に10ch装備されたGPIOを扱いやすいように3ピンヘッダに変換します。
|BGCOLOR(#d0d8e0): TOP |BGCOLOR(#d0d8e0): BOTTOM |
| #ref(E170_TOP.png,25%) | #ref(E170_BOTTOM.png,25%) |
|BGCOLOR(#d0d8e0): SIDE |<|
| #ref(E170_SIDE.png,35%) |<|
| [[3D pdf>http://www.besttechnology.co.jp/download/3D/E166_3D.pdf]] |<|
#ref(E170_LAYOUT.pdf)
#ref(E170_SCH.pdf)

***各機能詳細 [#n1509a83]

****E166_CN1 [#o42a9643]
|CENTER:BGCOLOR(red): :idea:|microUSBケーブルは同梱されませんので、市販のUSB[micro-B]<->USB[A]ケーブルを別途お買い求めの上ご利用下さい。|
-USB-microB
-PC(ホスト)と本ボード上のMPU間のUSBによる通信用
-USBバスパワーでの動作は不可
-アプローチ方向は基板と水平

****E166_CN2, E166_CN3 [#d3507a3a]
|CENTER:BGCOLOR(red): :idea:|電源の逆接続は電源回路の即時破壊・全損扱いとなる。|
#ref(E166_CN2_CN3.png)
-RS-485 I/F
#ref(DXLSHARE/RS485_IF.png)
-電源と通信用信号ラインが接続 
| Pats Name | JST Parts Number |h
|基板用ヘッダー |[[B4B-EH>http://www.jst-mfg.com/product/detail.php?series=58]] |
|ハウジング |[[EHR-4>http://www.jst-mfg.com/product/detail.php?series=58]] |
|ターミナル |[[SEH-00x>http://www.jst-mfg.com/product/detail.php?series=58]] |
#ref(DXLSHARE/jst_B4B-EH.png)
| 端子番号 | 信号名 |h
|1 |GND |
|2 |VDD |
|3 |RS-485 D+ |
|4 |RS-485 D- |
-Dynamixel I/Fに準拠したコネクタで、RS-485によるシリアル通信及び5Vロジック・3.3Vロジック・12Vゲートドライバ用の一次電源
-③④ピン間にはプログラムによってON/OFFできる120Ωのターミネータを装備
-RS-485の物理的な最大データレートは20Mbps
-RS-485による通信を行わない場合は③④ピンは未接続にしておく
-入力定格電圧:DC8~48V(リプルなき事)
-入力絶対最大定格:DC75V
-①ピン(GND)はボード内全て(ロジックおよびモータ電源)において共通
-本端子から供給される電源によりボード内で使用されるDC5V電源とDC3.3Vが作られ、更にCN5,CN6端子から5V出力がなされる
-電圧変動が大きいアプリケーションの場合は、MPOWとは別の電源から供給する事
-CN5とCN6、及びボード内で使用されるDC5V電源の総電流が7Aを超えてはならない。

****E166_CN4 [#l2483aa2]
|CENTER:BGCOLOR(red): :idea:|電源の逆接続はブリッジ回路の即時破壊・全損扱いとなる。|
#ref(E166_CN4.png)
-モータ用電源
-図左より順に ①:+(モータ電源), ②:-(GND) の端子割り当て
-入力定格電圧:DC3~24V
-入力絶対最大定格:DC85V
-②ピン(GND)はボード内全て(ロジックおよびモータ電源)において共通
-本端子から供給される電源がHブリッジ回路に供給されM1ないしM2端子を介して負荷へと供給される
-高負荷かつ電圧変動が大きい場合は、CN2,CN3に供給する電源と共通にすることは避ける事

****E166_CN5 [#sc26bb78]
#ref(E166_CN5.png)
-I2C接続による拡張機能付加用コネクタ~
-I2Cは5Vのみ
-FFC用コネクタ
| Manufacturer | Parts Number |h
| Amphenol |[[HFW10S-2STE1LF>https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/hfw_s-2ste1lf.pdf]] |
-対応FFC
| Manufacturer | Parts Number |h
| Wurth Electronics Inc. |[[686710xxx001>http://katalog.we-online.de/em/datasheet/6867xxxxx001.pdf]] |
-電源とリセット及びI2Cバスが接続
| No. | 端子名称 | I/O |h
| 1 | GND | O |
| 2 | GND | O |
| 3 | RESET | I/O |
| 4 | SCL | I/O |
| 5 | SDA | I/O |
| 6 | 5V | O |
| 7 | 5V | O |
| 8 | 5V | O |
| 9 | GND | O |
| 10 | GND | O |

****E166_CN6 [#d00386cb]
#ref(E166_CN6.png)
-UD4に搭載されるMPUのGPIOに10Ωの直列抵抗を介して接続
-全GPIOはアナログ入力兼用
-FFC用コネクタ
| Manufacturer | Parts Number |h
| Amphenol |[[HFW14S-2STE1LF>https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/hfw_s-2ste1lf.pdf]] |
-対応FFC
| Manufacturer | Parts Number |h
| Wurth Electronics Inc. |[[686714xxx001>http://katalog.we-online.de/em/datasheet/6867xxxxx001.pdf]] |
-電源と各GPIOが接続
| No. | 端子名称 | I/O |h
| 1 | PIO0_7/ADC0 | I/O |
| 2 | PIO0_6/ADC1 | I/O |
| 3 | PIO0_14/ADC2 | I/O |
| 4 | PIO0_23/ADC3 | I/O |
| 5 | PIO0_22/ADC4 | I/O |
| 6 | 5V | O |
| 7 | GND | O |
| 8 | PIO0_21/ADC5 | I/O |
| 9 | PIO0_20/ADC6 | I/O |
| 10 | PIO0_19/ADC7 | I/O |
| 11 | PIO0_18/ADC8 | I/O |
| 12 | PIO0_17/ADC9 | I/O |
| 13 | 5V | O |
| 14 | GND | O |

****E166_M1 [#jf98fa18]
#ref(E166_M1.png)
-負荷接続用端子
-図右から順に ①:M1_A, ②:M1_B

|CENTER:BGCOLOR(red): :idea:|UD4の基板エッジの切り込みを介して表裏に装備されたFETの端子に直結しており、静電防止対策を行った上でリード線などの半田付けを行う事|
|~|M1_A及びM1_Bのランド近傍にある異なる信号のランドには絶対に接触させてはならない|

****E166_M2 [#c7311b2d]
#ref(E166_M2.png)
-負荷接続用端子
-図右から順に ①:M2_A, ②:M2_B

|CENTER:BGCOLOR(red): :idea:|UD4の基板エッジの切り込みを介して表裏に装備されたFETの端子に直結しており、静電防止対策を行った上でリード線などの半田付けを行う事|
|~|M2_A及びM2_Bのランド近傍にある異なる信号のランドには絶対に接触させてはならない|

****E166_PB1 [#i79f1773]
#ref(E166_PB1.png)
-押下でMPUをハードリセットし、ユーザープログラムを再起動させる。

****E166_LED1 [#caf27d8b]
#ref(E166_LED1~2.png)
-色:緑
-ブートローダ内でコンソール入力があるとフラッシュ
-アプリケーションにてプログラマブルに点灯・消灯

****E166_LED2 [#f0159705]
-色:緑
-アプリケーションにてプログラマブルに点灯・消灯

****E167_CN1 [#x8d55023]
#ref(E167_CN1.png)
-[[UD4のCN5>#sc26bb78]]に接続
-I2Cは5Vのみ
-FFC用コネクタ
| Manufacturer | Parts Number |h
| Amphenol |[[HFW10R-2STE1LF>https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/hfw01lf.pdf]] |
-対応FFC
| Manufacturer | Parts Number |h
| Wurth Electronics Inc. |[[686710xxx001>http://katalog.we-online.de/em/datasheet/6867xxxxx001.pdf]] |
-電源とリセット及びI2Cバスが接続
| No. | 端子名称 | I/O |h
| 1 | GND | I |
| 2 | GND | I |
| 3 | RESET | I/O |
| 4 | SCL | I/O |
| 5 | SDA | I/O |
| 6 | 5V | I |
| 7 | 5V | I |
| 8 | 5V | I |
| 9 | GND | I |
| 10 | GND | I |

****E167_PB1 [#v7c3df74]
#ref(E167_PB1.png)
-押下でUD4のMPUをハードリセットすると同時にPCAL6416Aをリセットする

****E167_DIP1 [#i422a015]
#ref(E167_DIP1_PB2_PB3.png)
-PCAL6416AのP1_4~7がロータリディップスイッチの各ビットに接続

****E167_PB2 [#u8e374f6]
-押下でPCAL6416AのP1_3がGNDに短絡

****E167_PB3 [#g3dd2da7]
-押下でPCAL6416AのP1_2がGNDに短絡

****E167_JP1 [#i45bb28b]
#ref(E167_JP1.png)
-J1~J10のVCC端子へ供給する電源を3.3Vと5Vから選択~
同時にPCAL6416AのVDD(P)への供給電圧も変更される~
PB2,PB3,DIP1を使用する際は必ずいずれかの電源を選択する必要がある
| No. | 端子名称 | I/O |h
| 1 | 5V | CN1の5Vへ接続 |
| 2 | VCC | J1~J10のVCCへ接続 |
| 3 | 3.3V | 3.3V/2A LDOレギュレータへ接続 |
-VCCへ接続する電源の選択~
5V:JP1-2とJP1-1を短絡~
3.3V:JP1-2とJP1-3を短絡

****E167_J1~J10 [#xad77c4b]
#ref(E167_J1~J10.png)
-電源とPCAL6416AのP0_0~7, P1_0~1の各ポートがJ1~10のSIG端子に接続
| J | Pin No. |<|<|h
|~| 1 | 2 | 3 |
| J1 | P0_0 | VCC | GND |
| J2 | P0_1 |~|~|
| J3 | P0_2 |~|~|
| J4 | P0_3 |~|~|
| J5 | P0_4 |~|~|
| J6 | P0_5 |~|~|
| J7 | P0_6 |~|~|
| J8 | P0_7 |~|~|
| J9 | P1_0 |~|~|
| J10 | P1_1 |~|~|
-注意~
基板のシルク上では5Vとあるが「VCC」が正しい

****E170_CN1 [#z500f985]
#ref(E170_CN1.png)
-[[UD4のCN6>#d00386cb]]に接続
-FFC用コネクタ
| Manufacturer | Parts Number |h
| Amphenol |[[HFW14R-2STE1LF>https://cdn.amphenol-icc.com/media/wysiwyg/files/drawing/hfw01lf.pdf]] |
-対応FFC
| Manufacturer | Parts Number |h
| Wurth Electronics Inc. |[[686714xxx001>http://katalog.we-online.de/em/datasheet/6867xxxxx001.pdf]] |
-電源とLPC824の各GPIOが接続
| No. | 端子名称 | I/O |h
| 1 | PIO0_7/ADC0 | I/O |
| 2 | PIO0_6/ADC1 | I/O |
| 3 | PIO0_14/ADC2 | I/O |
| 4 | PIO0_23/ADC3 | I/O |
| 5 | PIO0_22/ADC4 | I/O |
| 6 | 5V | I |
| 7 | GND | I |
| 8 | PIO0_21/ADC5 | I/O |
| 9 | PIO0_20/ADC6 | I/O |
| 10 | PIO0_19/ADC7 | I/O |
| 11 | PIO0_18/ADC8 | I/O |
| 12 | PIO0_17/ADC9 | I/O |
| 13 | 5V | I |
| 14 | GND | I |

****E170_JP1 [#l1cdc31c]
#ref(E170_JP1.png)
-J1~J10のVCC端子へ供給する電源を3.3Vと5Vから選択
| No. | 端子名称 | I/O |h
| 1 | 5V | CN1の5Vへ接続 |
| 2 | VCC | J1~J10のVCCへ接続 |
| 3 | 3.3V | 3.3V/2A LDOレギュレータへ接続 |
-VCCへ接続する電源の選択~
5V:JP1-2とJP1-1を短絡~
3.3V:JP1-2とJP1-3を短絡

****E170_J1~J10 [#p2135dbb]
#ref(E170_J1~J10.png)
-電源とLPC824の各GPIOが接続 
| J | Pin No. |<|<|h
|~| 1 | 2 | 3 |
| J1 | PIO0_7/ADC0 | VCC | GND |
| J2 | PIO0_6/ADC1 |~|~|
| J3 | PIO0_14/ADC2 |~|~|
| J4 | PIO0_23/ADC3 |~|~|
| J5 | PIO0_22/ADC4 |~|~|
| J6 | PIO0_21/ADC5 |~|~|
| J7 | PIO0_20/ADC6 |~|~|
| J8 | PIO0_19/ADC7 |~|~|
| J9 | PIO0_18/ADC8 |~|~|
| J10 | PIO0_17/ADC9 |~|~|

**各機能の詳細 [#g2ca7cf7]
***MPU及びセンサ電源 [#c084dd0b]
CN2もしくはCN3に電源を印加すると、UD4内の3.3V・5V・12Vの各電源が生成されます。~
ユーザプログラムが既に書き込まれていれば、自動的に実行が開始されます。

***モータ用電源 [#d2189b53]
モータの逆起電力などにより電圧の変動が起こりますが、その際に半導体の絶対最大定格を超えると容易に破壊します。付属のデカップリングコンデンサは必ず電源に対して並列に挿入してください。~
MPU及びセンサ電源を供給せずにモータ用電源のみを供給してもモータが勝手に動く事はありませんが、その状態が長時間維持される事は想定していません。両電源ともほぼ同時に印加するようにして下さい。

なお、MPU及びセンサ電源のみが供給されモータを駆動するプログラムが既に実行されている場合、その状態で後からモータ用電源を供給してもゲートドライバは活性化しません。~
両電源が供給された状態になってからゲートドライバへイネーブルを発行する必要があります。

***USB [#x334fbcc]
PCのUSBバスパワーはUD4の電源として供給されません。MPU電源を供給した状態でPCと接続する事で初めてUSBシリアル変換チップが活性化します。~

USB(CN1)はUSBシリアル変換ICにつながっており、PCと接続するとFTDI社のデバイスドライバが要求されます。デバイスドライバは[[こちら>ftdi]]のページを参考にインストールしてください。~
PCには仮想シリアルポートとしてCOMポートが追加されます。

***RS-485 [#l3a0ca24]
RS-485 I/F(CN2,CN3)はDynamixel Xシリーズと電気的に互換性を持っています。ユーザプログラムによってDynamixelプロトコルのホストにもクライアントにも使用でき、単純なコンソールとしても機能させることができます。~
なお、RS-485 I/Fによるブートローダのコマンドモードは標準ではサポートされません。

***I/O EXPANDER, GPIO DISTRIBUTOR [#ub397f8c]
いずれもUD4本体とFFCで接続する事で配線の自由度を向上させています。また、各信号は電源を含む2.54mmピッチの3ピンランドで構成されていますので、センサなどへの給電(基板単位で5Vと3.3Vを選択可)と信号の取り込みがしやすくなっています。~
なお、FFCには向きがありますので、次の図に示すとおりの向きに各コネクタへ挿入します。
-E166_CN5, E166_CN6 (UD4)
#ref(E166_CN5_CN6_FFC.png)
-E167_CN1 (I/O EXPANDER)
#ref(E167_CN1_FFC.png)
-E170_CN1 (GPIO DISTRIBUTOR)
#ref(E170_CN1_FFC.png)

また、FFCは180度まで折り曲げると破断するのと、コネクタへの挿抜回数には制限があります。

***ブートローダ [#y20bce9e]
****使用方法 [#k7af2634]
UD4に予め書き込まれているブートローダによってUSB(非標準でRS-485 I/Fの場合もあり)を経由してPCからユーザプログラムの転送や諸設定を行う事ができます。~
PCにインストールしたSIMPLE TERMで3つのいずれかのポートを開き、ブートローダのコマンドモードに入ると、次のメッセージが表示されます。
 LPC82x BL1.3
 >
この状態で'?'を入力すると、使用できるコマンドの一覧が表示されます。
 >?
 LPC82x BL1.3
 w:write e:erase d:dump g:go
 >
-w (UPLOAD)~
UD4用にコンパイルされたユーザプログラムをフラッシュROMに転送する。ダウンロードして実行できるファイルは、GCC Developer LiteにてUD4向けにコンパイルされたバイナリファイルのみ。
-e (ERASE)~
ブートローダ本体を除くユーザプログラムエリアに書き込まれたデータを完全消去する。一度消去したデータは復活させる事はできない。
-g (BOOT)~
フラッシュROMに転送されたユーザプログラムへ実行を遷移する。ユーザプログラム領域が消去されていると実行されない。
-d (DUMP)~
MPUのメモリを16進数でダンプする。

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

**プログラムの開発環境 [#rd9c4cb1]
***GCC Developer Lite [#xcbed9da]
GCC Developer Liteの詳細については[[こちら>GCC Developer Lite]]で紹介しています。~
基本パックとARMパックをダウンロードし、基本パックをフルインストールしたらARMパックのコンポーネントから「LPC82xでのみ使用」を選択してインストールします。

-~
GDL2.6.0.55_LPC824_2.exe~
141,702,743 byte~
MD5sum:c99f5a38632cf028ddc9870af5691cd7~
改訂履歴:~
LPC82x_EXTRAのwl_spi.hにタスクスイッチ用のフックルーチンを追加

-~
GDL2.6.0.55_LPC824.exe~
141,702,727 byte~
MD5sum:afb5a7db7c7a32c2d516f4f1556f661d~
改訂履歴:~
GCCDevLでマウスホイール操作を行った時にエラーが表示されるのを抑止~
LPC82xのブートコードにディスパッチルーチンを追加できるよう修正

-~
GDL2.6.0.54_LPC824.exe~
141,702,529 byte~
MD5sum:45840863a134cf6926eb5d934e5a38c6~
改訂履歴:~
FreeRTOSの一部コンフィギュレーションを追加~
GCCDevl及びSTERMのコンポーネント更新に伴う再構築

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

****ターゲットファイル [#g93dc767]
[[GCC Developer Lite>GCC Developer Lite]]ではUD4用の設定を1種類備えています。~
#ref(GDL_CompileOption_TargetList.png)
以下にUD4に対応した設定リストの一覧とその設定における機能を紹介します。
-''LPC824 EXTRA (TERM, FREERTOS, EXTRA)''
~NXP LPC824用のペリフェラルライブラリとFreeRTOSを提供。~
~ビルドするとブートローダにてMPUのフラッシュROMへ転送するための.bin(バイナリ)ファイルが作られる。~
ビルドが成功すると、STERM.exe(SIMPLE TERM)が起動する。~

****SIMPLE TERMとブートローダ [#jc96d963]
ブートローダはUD4のUSBを使用して外部からユーザーログラムの書き換えや操作を行う事ができます(非標準としてRS-485 I/Fを介したブートローダを搭載したものもあります)。~
ブートローダを使用して動作するプログラムが構成できる設定リストは以下の通りで、これ以外の設定リストで構成されたプログラムをブートローダで転送しても正常に動作しないまでか、ボードが破損する可能性があります。
-LPC824 EXTRA (TERM, FREERTOS, EXTRA) 

PCとUD4をUSBケーブルで接続して使用するケースを紹介します。~
USBを仮想シリアルポートとして認識させるためのPC用デバイスドライバは、[[GCC Developer Lite>GCC Developer Lite]]をインストールした際に一緒にインストールされます。USBケーブルでUD4とPCを接続した際にデバイスドライバを要求された場合は、自動検索を選択して下さい。~

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

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

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

#ref(AT91SAM7_STERM_SCRIPT1.png,100%)

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

**UD4向けターゲットファイル及びライブラリ [#ff5a8415]
[[GCC Developer Lite>GCC Developer Lite]]では1つのソースプログラムのみを対象とするため、機能別にソースを分割して編集やコンパイルするといった使い方はできません(完全にできないという訳でもありません)。だからと言って全ての機能を一つのソースに記述する事は、プログラムの見通しが悪くなりバグの温床になりかねません。~
そこで、複数のソースに分割する事無くある程度のソースプログラムサイズでコーディングするために、頻繁に使用されるであろう一部の機能が専用のライブラリとして提供されます。~
GCC Developer Liteを標準的な環境のPCへインストールすると、「C:\Program Files\BestTech\GCC Developer Lite\TARGET」フォルダに必要なファイルがコピーされます。必要に応じて本フォルダを参照できますし、ユーザがソースを修正しライブラリを再構築する事も可能です。~
~
UD4は複数のライブラリを組み合わせて使用するため、実体はかなり複雑になっています。
-''LPC82xライブラリ''~
LPC82xシリーズ共通の内蔵ペリフェラルを簡便に扱う為のライブラリ。主に[[LPCOpen>https://www.nxp.com/support/developer-resources/software-development-tools/lpc-developer-resources-/lpcopen-libraries-and-examples:LPC-OPEN-LIBRARIES]]とシリアル通信、ブートコードを含む。
-''LPC82x追加ライブラリ''~
LPC82xシリーズ用のよく使われるペリフェラルのラッパーライブラリ。主にI2C,FLASH,DELAY,SPI,ADC,DXLIB,DX2LIBを含む。
-''cortex-M0用FREERTOS''~
Cortex-M0+用に予めビルドされたリアルタイムオペレーティングシステム[[FreeRTOS>https://www.freertos.org/]]。

なお、本UD4向けの専用ライブラリはライブラリファイルとして提供するのでは無く、全て「ud4.h」というヘッダファイルとしてサンプルプログラムに同梱しました。~
よって、コンパイル時のオプションに影響されてその都度挙動が変わる可能性があります。~
未完成ですが[[こちら>UD4 API]]にAPIの詳細を記載しています。

**サンプルプログラム [#wdaaa367]
以下よりダウンロードし展開して利用してください。詳細はコメントを参考に読み解いてください。

-UD4用サンプルプログラム Ver0.5 (2018/8/25)~
#ref(http://www.besttechnology.co.jp/download/UD4BETA_SMPL0.5.zip)
--更新履歴~
GPIOのマクロ定義を追加~
モータへ指令は変数を介す様にし、別タスクでランプ的にデューティを更新する様に変更

なお、ARMGCCそのものがSJISに対応していないため、コメント等に日本語を使用するとコンパイルエラーが発生する場合があります。サンプルプログラムは日本語のコメントを使用していますが、全てUTF8のエンコードにしているためそれに起因するエラーが発生しません。
GCC Developer Liteにて自身で新規で作成したプログラムは必ずSJISで生成されるため、編集中にGCC Developer Liteのステータスバーに表示される「SJIS(CR+LR)」をマウスで右クリックし、ポップアップメニューのリストから「UFT8」を選んでからソースプログラムを保存して下さい。「UFT8」になってさえいれば全角日本語のコメントによるコンパイルエラーは発生しません。
#ref(GDL_ENCODE.png)

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

相撲ロボット向けサンプルプログラムが想定している周辺機器の接続イメージは以下の通りです。
#ref(ud4_sumou_peripheral.png,40%)
各コネクタの詳細を以下に示します。
: E166_CN2, E166_CN3 | MPU及びセンサ用の一次電源。供給電圧は8V以上を必要とする。
: E166_CN1 | PCとUD4をUSBケーブルで接続して通信を行う。プログラムのダウンロードを行ったら外しておく。
: E166_CN4 | モータ用の一次電源。電源ラインにデカップリングコンデンサとヒューズを挿入する事を推奨。
: E170_J10 | 左前土俵検出を目的としたセンサを接続。ここでは[[BTE007 IRPXセンサ>BTE007]]を想定し、5Vの電源供給も含め3線を接続する。
: E170_J9 | 右前土俵検出を目的としたセンサを接続。ここでは[[BTE007 IRPXセンサ>BTE007]]を想定し、5Vの電源供給も含め3線を接続する。
: E170_J8 | 左前ないし左にいる相手検出を目的としたセンサを接続。ここでは[[BTE023B 800mmIRリフレクタ >BTE023B]]を想定し、5Vの電源供給も含め3線を接続する。
: E170_J7 | 前方にいる相手検出を目的としたセンサを接続。ここでは[[BTE023B 800mmIRリフレクタ >BTE023B]]を想定し、5Vの電源供給も含め3線を接続する。
: E170_J6 | 右前ないし右にいる相手検出を目的としたセンサを接続。ここでは[[BTE023B 800mmIRリフレクタ >BTE023B]]を想定し、5Vの電源供給も含め3線を接続する。
: E170_J5 | 非常停止時に0.2秒以上LOWの信号を出力する何らかの非常停止装置を想定。
: E170_J3 | ラジコン用受信器のCH1。右側のモータ(M1)のパワー及び回転方向を指令する信号が供給される前提。
: E170_J2 | ラジコン用受信器のCH2。左側のモータ(M2)のパワー及び回転方向を指令する信号が供給される前提。
: E170_J1 | ラジコン用受信器のCH3。
: E166_M1 | 左側に配した車輪を駆動するモータを接続。プラスのデューティーを指令すると後退する方向に回転する前提。
: E166_M2 | 右側に配した車輪を駆動するモータを接続。プラスのデューティーを指令すると前進する方向に回転する前提。

***基本操作フロー [#q9d08cf4]
個々の詳細に関してはサンプルプログラム内のコメントを参照していただくとして、プログラムをコンパイルしてUD4に転送して実行させるまでの基本的なフローは以下となります。
+GCC Developer Liteで任意のソースをコンパイラオプションで「    LPC824 EXTRA (TERM, FREERTOS, EXTRA)」を選択してコンパイル。
+コンパイル成功と同時にSIMPLE TERMの起動を促すダイアログボックスが表示されるので「OK」をクリックする。SIMPLE TERMは二重に起動する事はない。
+電源を供給したUD4とPCをUSBケーブルで接続する。
+SIMPLE TERMのポートを適宜設定しポートを開き、スクリプト実行をクリックし転送待機状態になったらPB1を押して放す。
+転送中のプログレスバーが100%になれば転送は完了し、転送スクリプトの処理が終了する。
+SIMPLE TERM上で「g」を送信すると転送したプログラムに実行が遷移する。

**注意事項 [#wb28fb6c]
|CENTER:BGCOLOR(red): :idea:|下記に記載された事項以外にも、経験を踏まえた危険回避方策を講じる事。&br;安全に配慮しない場合は人命や財産を失う恐れがある。&br;また従わない場合は保証対象外となる。|
-知識と認識がある場合を除き、MPU及びセンサ用電源とモータ用電源は同じソースから供給しない事。
-付属の電源コネクタは必要に応じて利用の事。またパワーラインの線材は使用環境に応じた物を任意に選定の事。
-最低限付属のデカップリングコンデンサをUD4のモータ電源ラインに装備する事。また計算上の容量が不足する場合は別途任意の容量のコンデンサを装備する事。
-電流をシンクできない直流電源装置等をモータ用電源として使用しない事。状況によっては逆起電力によって見かけ上の電源電圧が上昇し、耐圧を超える場合がある。
-ノイズが大きいモータを使用する場合は、ノイズ対策を十分に施す事。アークが飛ぶ程の高インダクタンスなモータの使用は推奨しない。また、そういったモータへ定格を超える電源を印加する事は絶対にしてはならない。
-モータへの急激な指令値更新は行わない事。特に急反転等を行うとモータ電源として仕様以下の電圧を印加していても逆起電力やノイズが過大になり、それによって半導体の耐圧を超える場合がある。
-最悪なケースではFETがショート状態の故障モードに陥るため、その際にバッテリ等が超過放電にならないよう最終的に電流を遮断するためのヒューズ等を電源ラインに挿入しておく事。
-運転中以外はバッテリは全て取り外す事。
-FETの許容損失電力を考慮し、場合によっては強制冷措置を講じる事。
-コネクタに対して不用意に導電性の物と接触させてはならない。
-移動台車等を構成した際にUSBケーブルを接続したまま使用しない事。
-ラジコン用のプロポをUD4に近づけると正常な動作を得られなくなる。少なくとも数メートル以上離す事。
-基板の露出している部品やパッドはいかなる場合も短絡してはならない。
-タスクを複数起動すると1つのタスクの実行時間が延びる。動作時間を優先する場合は、実行タスク数を制限すること。
-本製品にかかるいかなる損害が生じても、本製品の単価を超える保障は行わない。

**その他 [#me5d51e1]
***半導体の耐圧保護措置 [#uc78d50c]
絶対最大定格を超えないという運用は実質的に難しく、ほんの少しのパルス的なノイズでも永久破壊する事も起こりえます。~
そこで、TVSダイオードを設置する事をお勧めします。定電圧ダイオードをノイズ源となる端子に挿入して電圧を抑えるといった手法で、電源と負荷接続端子の5カ所に設置しておけば良いでしょう。~
TVSダイオードのクランプ電圧は印加される電源電圧以上かつ半導体の絶対最大定格電圧以下、容量はモータの回生電力を吸収しきれるものを選びます。
#ref(ud4_tvs_mount.png,50%)
なお容量がかなり大きめかつ高価ではありますが、実例として[[15KPA51A>https://www.littelfuse.co.jp/products/tvs-diodes/leaded/15kpa/15kpa51a.aspx]]を適用したことがあるため、この仕様で宜しければ[[5個セットで販売>http://www.besttechnology.co.jp/modules/onlineshop/index.php?fct=photo&p=254]]しています。

« Prev[3]