<32チャンネル サーボコントローラ EZ-SERVO>
EZ-SERVOは高速(60MHz) 32bit ARM7 CPUを搭載した、32チャンネルR/Cサーボをコントロール可能なCPUボードです。2足歩行のロボットや、サーボを使用する制御ボードとして使用できます。TeamKNOxとの共同開発により誕生しました。
LPC2138マイコンは512Kbyteの大容量フラッシュメモリーを内蔵していますので、多彩なモーションデータなどを書き込んでおくことが可能です。また、60MHz・ノーウェイトで動作する32bit CPUのおかげで、従来では困難であった複雑なリアルタイム処理を行うことが可能です。
LPC2138マイコンは6chのPWMが内蔵されています。このPWM 4chをCPLD(XC9572XL)で時分割切り替えすることで、ジッタ(ゆらぎ)の無い32chサーボコントロールを実現しています。
EZ-SERVOはTeamKNOxが開発中の、RoboShellのソフトウエア・CPLDロジックを使用します。RoboShellはソースコード・HDLソースなどが公開(オープンソース)されていますので、ユーザが独自の機能を追加して拡張することも可能です。
(RoboShellインプリメント時のCPLDの使用率は70%未満ですので、ロジック部分にも追加機能を実装することが可能です。)
<スペック>
注意)サーボを多数接続して動作させるとかなりの電力を消費します。
動作電圧 5V〜12V
12ch分サーボを別電圧で駆動可動作電流 RoboShell 58.98MHz動作時で約81mA
(サーボ未接続)基板サイズ 72x48mm
秋月電子ガラエポC基板と同一サイズ重量 23g (サーボコネクタ、L字コネクタ含む)
安定的にCPUを動作させるためには十分な電源(バッテリー)用意してください。
回路図(PDF)ダウンロード
mini EZ-ARM7のページ(LPC2138開発情報など)
キットの入手はこちら
<製作>
キットが届きましたら部品を確認してください。
部品 数 備考 専用プリント基板 1 LPC2138、XC9572XL実装済み 3.3V 1Aレギュレータ 1 IRU1206-33 クリスタル 1 14.7456MHz タンタルコンデンサ 16V 10uF 1 極性あり チップコンデンサ 39pF 2 チップコンデンサ 4.7uF 1 チップコンデンサ 0.1uF 11 電解コンデンサ 10V 1000uF 1 極性あり チップビーズ(FB) 4 黒っぽい色をしている 集合抵抗 100Ω 8 101 集合抵抗 3.3KΩ 8 332 チップ抵抗 10KΩ 3 103 チップ抵抗 1KΩ 1 102 EZ-USB用L字アングル26Pヘッダ 1 L字コネクタは基板からはみ出します。
ストレートのピンヘッダを使用することも可能です。2*12ピンヘッダ 2 サーボ端子用 2*8ピンヘッダ 1 サーボ端子用 1*12ピンヘッダ 2 サーボ端子用 1*8ピンヘッダ 1 サーボ端子用 糸半田 1
20-30W程度の先端の細い半田ごて、ピンセット、ルーペ(虫眼鏡)、はんだを用意してください。
チップ部品のはんだ付けは、片側のランドにはんだを盛っておき、半田ごてではんだを溶かしながら、ピンセットでチップ部品を固定します。
ピンセットでチップ部品を飛ばしたりしないように注意してください。
チップ集合抵抗は半田不良が発生しやすいようです。必ずフラックスを塗布して半田付けしてください。
基板の裏面から半田付けします。
裏面の集合抵抗は3.3KΩ(332)を取り付けます。
値指定の無いチップコンデンサは全て0.1uFです。
タンタルコンデンサ(写真の黄色い部品)は極性(向き)がありますので、取り付けには注意してください。
EZ-SERVOはSV1-3(サーボNo0-11)の12chを別電圧(ハイボルトサーボ用など)で駆動させることが出来ます。
通常はシングル電圧で使用しますので、基板裏面の半田ジャンパーに半田を盛りショートさせます。
基板表面にも半田ジャンパーがありますので、半田を盛りショートさせます。
基板表面の部品を半田付けします。
電解コンデンサには極性がありますので、取り付ける向きに注意してください。
集合抵抗は100Ω(101)を取り付けます。サーボ用のコネクタを実装すると、集合抵抗の再半田付けが難しくなりますので、コネクタを取り付ける前に、半田不良がないか十分に確認します。(テスターで確認すると良いです)
キットにはmini EZ-USBとの接続用に26ピンL字タイプのピンヘッダが付属していますが、L字タイプを使用すると写真のようにピンが基板の外にはみ出します。はみ出すのが不都合な場合は、ストレートタイプのピンヘッダをお使いください。(完成品を注文の方はコメントにストレートピンヘッダ希望とご記入ください)
ユニバーサルエリアがありますので、バッテリー用のコネクタや、簡単なセンサー(加速度センサーなど)であれば実装することが出来ます。
秋月電子のDCジャックは横に出ているピンをニッパなどでカットすると、直接基板に取り付けることが出来ます。
UART(RxD、TxD)の信号をピンヘッダに引き出しておくと、RS232レベルコンバータを付けてPCと通信できます。
<電源供給>
EZ-SERVOは動作させるために電源を供給する必要があります。mini EZ-USBを接続してもUSBケーブルを介してPCから電源は供給されません。CPLDにロジックを書き込む場合や、LPC2138のフラッシュに書き込む際にも電源を供給する必要があります。
電源を接続する端子は、サーボSV4端子の隣にあります。
向かって左から、マイナス(BAT-)、プラス(BAT+)、別電圧プラス(BAT2+)になります。
2電圧使用する場合は、半田ジャンパをオープンにすることを忘れないでください。
(半田ジャンパは基板表と裏の2箇所あります)
使用可能電圧は+3.3Vレギュレータの関係から、+5〜+12Vまでです。
別電源(BAT2+)側に使用できる電圧には特に制限がありません。(サーボに合わせます)
ユニバーサルエリアに電源用のコネクタなどを実装して、太い線材で配線します。
下記の写真は、DCジャックを取り付け、配線したものです。
(写真のようにサーボ用ランドに直接配線してもOKです)
<プログラム・CPLDロジックの書き込み>
電源を接続したら、mini EZ-USBを接続します。mini EZ-USBにはAN2131版とAN2135版の2種類がありますが、AN2135版ではCPLDの書き込みを行うことは出来ません。AN2131版をご用意ください。
PCにはEZ-USBのデバイスドライバがインストールされている必要があります。初めてEZ-USBを使用する方は、このページ下からデバイスドライバをダウンロードしてインストールしてください。
CPLD/フラッシュ書き込みツール、動作確認用RoboShellバイナリをダウンロードして解凍してください。
CPLDの書き込みはコマンドプロンプト画面から、「robo_cpldwr roboshell.jed」を実行します。
LPC2138のフラッシュ書き込みもコマンドプロンプト画面から「jtag_flash roboshell.hex」を実行します。
<LPC2138 Rev C問題> 2006/12/1加筆
EZ-SERVOにはLPC2138のRev A、B、Cの3種類が使用されています。
最近出荷されたEZ-SERVOにはRev CのICが使用されています。
Rev CのLPC2138を使用して、38400bpsの設定でコンパイルされたRoboShellを使用すると、
正常に動作しないという不具合が確認されました。(RoboShellの起動メッセージの表示が無限ループする)
38400bps以外の通信速度(9600bps、57600bpsなど)ではこのような現象は確認されていませんので、
Rev Cをご使用の方は、38400bps以外の速度をご使用ください。
(38400bpsで発生する不具合については現在調査中です。結果が判明次第報告します。)
LPC2138のRevの見分け方は、LPC2138のICに刻印されている最後の文字を確認します。
「.....AY」がRev A、「.....BY」がRev B、「.....C」がRev Cとなります。
このページの下からダウンロード出来る動作確認用RoboShellにも9600bps用のroboshell96.hexを
用意してありますので,Rev CのLPC2138をお使いの方はそちらを書き込んでください。
その場合ターミナルソフトの通信速度も9600bpsでご使用ください。
<LPC2138 Rev Cの対策> 2006/12/5加筆
Rev CのLPC2138が38400bpsのRoboShellで動作しない件ですが、TeamKNOxさんに調べていただいたところ、
開発環境(GNUツールチェイン)をTeamKNOxさんHPで公表しているものを使用することで問題なく動作するとのことです。
このページからダウンロード出来る動作確認用のRoboShellもTeamKNOxさんに作成して頂いたものに変更しましたので、全てのRevのLPC2138で動作するようになっています。
<サーボの動作確認>
Roboshellのロジックとプログラムが書き込めましたので、実際にRCサーボを接続して動作確認を行います。
mini EZ-USBは必要ありませんので、外します。
サーボの接続は写真のように、基板の外側にGND(黒/茶)の信号がくるようにします。
動作確認用RoboShellは起動時に隣り合うサーボチャンネルが異なる角度を保持するようにしてあります。
ですので、サーボコネクタを順次各チャンネルに抜き差ししていくと、抜き差しごとにサーボの角度が変わります。
もし隣同士のチャンネルで角度が変わらないようなケースがあれば、そのチャンネルは正常に動作していません。
原因の多くは集合抵抗の半田不良やピンヘッダの半田不良ですので、半田付けを再度確認してください。
(完成品の場合は全チャンネル動作確認済みです)
<コンソール接続>
RoboShellはLPC2138のUART(RxD0、TxD0)を使用してコントロールできます。開発過程においてはPCのターミナルソフト(テラタームなど)を使用して、RoboShellに指示(コマンド)を与えることが出来ます。ロボット完成時にはUARTに無線モジュールを接続してリモート制御することも可能です。
(速度:38400 DATA:8bit Parity:none Stop:1bit)
RoboShellのコマンドは上記のように4桁の数字を4個入力します
「0200 0003 4000 0000」はサーボ3番を角度2000に設定するという意味です。
(サーボ番号はサーボコネクタの手前に小さく印字してあります)
「0900 0001 0000 0000」はモーションの実行です。このコマンドを実行するとフラッシュに書き込まれたモーションが順次実行されます。
LPC2138のUART(RxD0、TxD0)信号は3.3Vレベルになりますので、PCのシリアルポートと直結することは出来ませんので、RS232Cレベルコンバータを使用してPCと接続します。
実際の配線はこんな感じになります。
UART(RxD0、TxD0)の信号はEZ-USBのコネクタにも引き出されていますので、mini EZ-USBを仮想COMポートとして動作させてPCと通信を行うことも可能です。mini EZ-USBを仮想COMポートに設定すためのツールは「ezcom_robo.exe」を使用します。mini EZ-USBの仮想COMポートの詳細はこちらをご覧ください。
<ツールダウンロード>
EZ-USBデバイスドライバ(初めてEZ-USBを使用する場合必要です)
EZ-USB ツール(jtag_flash.exe、jtag_stub.exe、robo_cpldwr.exe、ezcom_robo.exe)
(動作確認用RoboShellバイナリを含む)
<関連ページ>
EZ-ARM7のページ(開発ツール・デバッガなどの情報)
TeamKNOx RoboShell