R2N-series 製作日記 


 なかなか実際にいろいろと取り組んでみると、サーボ自作が難しいです。 特に、ポテンショメータなどをどうアレンジするか? というのが見えないですね。
 そこで、2段階構成でいくことにしました。

 第1ステップ(これが R2N-series)

 第2ステップ(R2N-series では見送り)

 この調子だと、すでに購入してしまった FET が活躍する日は来るのかな? とはいえ、今は1つ1つ課題をクリアして前進あるのみ。


私の教科書 吉野ロボットさんや、NONSAYA ROBOT WORKS さんバーニング宮田さん の Web はほんとに参考になりますね。
彼らはどこまでもがんばって作りたいロボットを目指し、がんばってますね。 私も負けずにがんばろう、と、読めば読むほど感じる毎日です。

ところで、なかなかハイパワーギアとストロングギアが届かないのです。
先週、ロボコンマガジン館が移転するということで、問い合わせをしたら、なんと、11月末まで待ってほしいとのことでした。。。 悲しい。
1つだけ入手していたハイパワーギアを予備に買っておいた PS-2174FET に取り付けてみることにしました。

  • メタルギアが2つと樹脂パーツ1つ。 これで1800円とは。。。
  • 説明書を読む限り、簡単に交換ができそう。
  • ギアの方で、回転限界のストッパーがついていますが、特に「切断」なんてことをしないで、そのままとします。
  • いざ、分解をし、取替えを。。。 と思ったら、潤滑油がべっとり。。。 けど、新しいギアにはついてない。 これって、付け替えするときに潤滑油もってこと??
  • 交換の際、一番手間取ったのは、ベアリングを外すこと。
    結構しっかりと(隙間なく)入っているせいか、外れない。
    これをサーボの数だけ外さなきゃいけないと考えると。。。
  • バーニング宮田さんのところで解析(分解)されたロボット専用サーボと写真上比べてみても、同じギア構成になりそう(除く、まだ届いていないストロングギア)。 これは、うれしい限り。
  • あとは、このサーボにあった PWM 周期を見つけ出しプログラミングしてやれば、実力値が出てくれるに違いない!?

以下、覚書です。

どこかの Web にも書いてあったが、シンプルに H8/3664F + 自前サーボという組み合わせで 3664F を必要個数並列に並べた方がシンプルなのかもしれませんね。 そうかんがえると、1600円でボードに搭載された形で購入できる H8/3664F はなかなか良いデバイスと言えます。

(2003年11月9日)


 結局、加速度センサは買いなおしして、ADXL202 というメジャーなICにしてみました(まとめページ参照)。
また、ずいぶん前に衝動買いしていた SHARP 製の距離センサも取り付けてみました。
これら2つは、RC 受信機用の H8/3664F に処理させることにし、さらに同じ PBC 箱に搭載。 箱内は結構ぎっしりと入っており、これ以上の拡張はできそうにないです。

(2003年11月16日)


 3連休だというのに、子供の世話とかでなかなかロボットに手が出せない(涙)。

 ようやく、現・ロボット王国に発注していた、ハイパワーギア、ストロングギア、ベステクの7047Fボードが届きました(待つこと2ヶ月!)。

 R1Nを解体し、ハイパワーギア&ストロングギアを取り付けてみたのですが、1個のPS2174FETがうまく解体できない! ベアリングがアルミギアの中からでてこないのです。 どうしよう。。。 とりあえず、予備で買っておいたものと取り替えて・・・。 近藤科学のWebでは、郵送してくれれば修理する、とのコメントありでした。 時期をみて、送付してみるかな?

ともあれ、R2Nをつくるためのパーツは全て届いたので、全力で組み上げるのみです。 RoboOne第5回の公募も開始されたことだし、気合いをいれよう!

(2003年11月24日)


 ラジコンサーボのトルク測定を行った結果をまとめてみました(まとめページ参照)。
 驚きました。 アナログサーボは奥が深いですね。 PWM周期をもっと短く設定しないと保持力が保てないのですね。

 この結果から、今月はじめの一連のプラン変更としました。
 BTE055 は、デジタルサーボを念頭に作られているため、PWM周期に対してマージンがない(というか、小さくできない)ということがわかりました。 これで、確実に自作分周期作成です。

 そろそろ、Robo-One 申し込みを決断し、公募用紙の作成に取り掛からなければならないと思うのですが、なかなかロボットの制御までいきつかないです。 かなりあせりますね。
 大会で何を自由演技させるかは決まっているのですが、まず歩行ができるだろうか? また、2月に時間がとれるのだろうか?(仕事) と、いろいろと不安が。。。
 完成していなくても、とりあえず申し込みをしておくべきだろう、とは思うが、なかなか筆が進みません。 みなさん、この時期、本当に出来上がっているのでしょうか??

(2003年11月30日)


 R2N のコンセプトでパーツ(基板)をくみ上げ中(下写真)。

 現在、SH2/7047F+FPGA(Altera FLEX10K10LC84) の半田付けまで完了。 正直、この回路規模であれば、FLEX10K10 でなく MAX7000 でもよかったですね。
 今回は、FPGAでPWM波形を作るという最初の目論見から購入したFLEX10K10をとりあえず使ってみた、程度です。

 SH2/7047F のプログラム面では、SISO さんに大変助けて頂き、7047Fの基本プログラムは完成しました。


3ボードを重ね配置。
表面(左下): SH2/7047F、中央:電源制御系&
7047F SCI4用SP3232、最下段(右上):PWM信号
分離(FPGA)&RCサーボ出力ピン

Altera FLEX10K10LC84 を中央に左上:18.432MHz
水晶、左下:EPC1441PC8、ボード左辺、下辺、右辺
に(裏にむかって)RCサーボ用出力端子を装備。

SH2/7047FのCN2 は未使用。
SRAM保持用にELNA 1F スーパーキャパシタ。 

Altera FLEX10K10LC + EPC1441PC8 の
ダウンロードケーブルならぬダウンロードボード

 ようやく、RoboOne第5回大会へ申し込み書類を送りました。
 書類審査が通るかどうかわからないですが、ともかくも期日をきめて気合いをいれることにします!
 大会は、予選2004年1月31日、予選通過できれば、翌日2月1日が決勝。 今回は、その他イベントは2月下旬に行われるとのこと。
 まずは、書類選考突破!?

(2003年12月7日)


 昨日送った RoboOne 第5回大会の書類だが、無事、書類審査を通ったとの連絡が入いりました。 意外と簡単な審査なんですね(終わってみればそういうものかも)。
 もう、やるしかない! が、仕事が忙しく、なかなか着手できないので、休日をフルに使ってがんばるぞ!

(2003年12月8日)


 気ばかりあせる毎日。。。 うまく FLEX10K10 への Programmer が動作しない。 いろいろとバーニング宮田さんにアドバイスを頂きました。

    重大な問題が発覚! : 「 ConfigROM の書き込みハードがないという、大チョンボをしてしまっている。 」 (心の叫び:何やってるんだろう)

 なんてこった。 うるうる。。。 EPC2 だと動くが、ボードの上に、PLCC84+PLCC20 と、各種コネクタは配置しきれないという状況に、またまたアタフタ。。。
 ともあれ、適切なご指摘、数々のアドバイス、ほんとうにありがとう、宮田さん!!

 ここは、コンテンジェンシープラン(機能的に見て、Xilinx CPLD XC9572 クラスでも十分)の発動です!

 とり急ぎ、Xilinx の Web で ISE WebPACK のユーザー登録からしておきました。

 いろいろなところで、Xilinx の ISE WebPACK について紹介されてますので、それを参考に進めれば問題はないですね。 Xilinx の Web 見直し?からか若干操作面で違いはあったのですが、おおむね、Xilinx web の指示に従って入力すれば OK なので問題なしでした。
 インストール後も、色々な Web で紹介されているツールの使い方を頼りに。。。と思ったら、バージョンが6.1.03i まで上がっていて、大幅に違いがありました。 初心者の私にはとても辛い!! けど、やるしかない!! 明日は、熊本出張。 往復の飛行機の中で、ひたすら Help を参考に書くべし、書くべし。。。

(2003年12月11日)


 予定通り!?飛行機内で ISE WebPACK の勉強。 会議資料が前日までに出来上がっていたので、とってもラッキーでした。 普段だったら、人目を気にしながら飛行機内で資料作りなところが、完全に自由時間とできたのは、よかったです。 ふむふむ。。。 VHDL は、AHDL と違うところが多々あるが、基本的な考え方は同じなので、なんとか30分で移植完了。 つづいて、ピン配置の設定。。。 ん? これ、どうするんだ? とりあえず、Process View のそられしき Assign Package Pins をダブルクリックしてみると、Xilinx PACE なるプログラムが新たに起動。 なるほど。 イメージで作るわけね。 ということで、きっと「Design Object List - I/O Pins から、Package Pins のピンイメージの上にドラッグしていけば、ピンアサインしてくれるんだろう、とやってみると、すんなりできました。 こんな簡単なツールが自由に使えるとは、なかなか良い時代ですね(Xilinxさん、感謝!)。 昔、キャラクタベースで遊んでいた頃が嘘のよう。。。 と思いながら、1つ1つアサインして、完了。 とりあえず、出来上がりのボードでサーボ出力するヘッダピンの位置関係は、最終書き込みの段階で入れ替えすれば良いので、大体の感じで決めておきました。 上辺:SH2/7047F の信号入力ピン、左辺:左腕サーボ用出力ピン、下辺:足サーボ用出力ピン(ちょっと右辺まで入る)、右辺:右腕サーボ用出力ピン。 こんな感じ。 飛行機の中でここまでできるとは思ってもいなかったので、大きな収穫です。。。

(2003年12月12日)


 Xilinx CPLD で作れることが確認できたところで、いざ、半田付け開始。 う〜ん。 Altera FLEX10K10 の時にやったことと同じようなことを再びするとは。 やっぱり仕様書はしっかりと読むべし。 今日はとりあえず、半田付けの一日でしたが、なんとか完成。 下記にCPLDライタを紹介します。

  • XC9500 series 対応という感じだが、Programmer ボードの完成。
  • 参考にさせていただいた Web としては、
     趣味の電子工作Xilinx HomePage
    です。
    それほど難しいものではないのですが、結線が多いので、飽きちゃう。
  • Altera の時同様、PCからは、パラレル端子からの送受信になる。
    25ピンフルに使わないので、10ピンヘッダにまとめてしまった。
    (実際に使うのは8ピン。2ピンはGNDを余分に結線)。

 さてさて、XC9572-15PC44 を取り付けて、書き込み。。。 ん? また、バージョンの違いから、わからないところがあるぞ!?

 今度は難解でした。 同じような単語が見つからない。 ええーい。 とりあえず、書き込みボードの電源投入! 特に異常はない様子。 つづいて、ISE WebPACK で完了チェックが入ってない、Generate SVD/XSVF/STAPL File をダブルクリック!! なにやら新しい Window が開くが、わけわからん。。。 またマニュアルを読まず、突き進んでいるからだと、気づくも、とりあえず進めてみよう。 Configuration Mode のウィンドウでゴチャゴチャやってみたいので、Dialog ウィンドウとして開いてる Prepare Configuration Files は、とりあえずキャンセルで抜けてみました。

 Boundary-Scan ウィンドウ状態で、Edit -> Add Device -> Xilinx Device としてみると (後からわかったのですが、マウス右ボタンプルダウンメニューでも良いです)、*.jed ファイルを選択する画面になります(下の左図)。 これはいける! 作っておいたファイルを選択すると、どこかで見た画面。 よっっしゃ! 旧バージョンと同じ画面ができた! あとは、書き込みあるのみ(下の中央図)。 デバイスをマウス左シングルクリックで選択した後、マウス右ボタンのプルダウンメニューから、「Programming」を選び待つこと約10秒。 Programming Successded の文字がでてほっと一安心。 

 以上、心の声でした。

 できあがった XC9572 を取り外し、新しいサーボ制御基板に取り付けてみる。。。

 このCPLD の場合、ConfigROM は無いので、非常にすっきりとした配置にできあがります。 また、前回の反省として、サーボ出力ピンヘッダとの結線の方が多いため、ボードの表裏を逆にしてみました。 CPU からの信号は取り出しが CPLD からみると裏面になってしまうのですが、結線数が電源GNDを含めても11ピンなので、問題なしです(左写真の左上コーナー部)。 サーボ用バッテリーのコネクタも忘れず入れて(左写真の左下の白いコネクタ)、いざ、CPUボードと合体!(右写真)。 なかなかちっちゃな感じで出来上がった。 バーニング宮田さんの俺PCBにはぜんぜん性能的にかなわないですが、当初の見込んでいた機能は入っているので、いける!という感じです。

 よし。 CPUに基本プログラムを入れて動作確認してみよう。 とりあえず、CPU(SH2/7047F) から 10msec.に4つの信号を出力し、信号を確認。 CPLD からそれらが切り分けられて各サーボ出力端子にPWM波形がでれば、動作確認完了です。 今回登場となるのが、とってもちっちゃなオシロ。

  • 秋月電子通商で購入(ずいぶん前に買った品物)
    電源は、ACアダプタ(9V)にて。
    ソケット部分が違ったので、合うものに交換(店員さんに分けてもらった)。
  • このオシロ、RS232Cを使ってPCに波形出力してくれるソフト付き。
    ソフトは Windows98対応となっていますが、Windows2000/XP でも問題なし。

 実際のPWM波形は次のような感じです。 何故か、設定した横分解能が表示と違ったのですが、まぁ、今は気にしないことにします。
 ・・・ 後日判明。 テストしたプログラムが古かったため、PWM周期が大きく設定してあったという私のソフトミスでした。

 確かに4つ分のPWMを分配しているのを確認。 よしよし。
 今日1日でここまでいけたのは、集中して時間が取れたことが大きかったです。 しかし、まだまだこれからが大変!

(2003年12月13日)


 昨日はかなり半田付けなどで時間を取ってしまったが、今日は、回路の再確認と、若干の修正を行いました。
 また、KO-2174FET w/ HyperGear の PWM 信号(ON時間) に対する角度の再測定を行ってみました。(下グラフ)。

  • 動作確認は、H8/3664F 16MHz のクロックを 8 分周し、
    タイマー W 割り込みによる PWM 発生を行った。
      PWM [msec.] = 8 / 16x106 x GRB
        GRA = 12000 ⇒ ON/OFF cycle 6.0msec.
        GRB = 3000 ⇒ PWM = 1.5[msec.]
  • 特に回路的な手は加えていないのですが、標準で±90度(以上)設定が可能。 ±60度と思っていたが、とっても良い結果でした。
  • 線形フィッティングしてみると、
      PWM [msec.] = 20.23 * angle [degree] + 1163
    です。 ±45度くらいまでは、誤差0を実現。 すばらしい。
  • cos table の変わりに、角度事にPWM値を持たせるテーブルを作成し、演算の高速化と制度向上をする方針。

(2003年12月14日)


 またまた、半田ゴテを握って、ボードを作り直してしまった。 できてしまうと、また作りたくなる。 これでは、ぜんぜん先に進まないです。 まぁ、趣味ですから、OKですね。

 今回の変更点は、CPU 用電源ボードと、CPLD用ボードの2枚をシンプルにまとめること。 電源変換部は、別ボードとすることで、CPUとCPLDを1枚のボードで収めてしまおうというねらいです。 忘れちゃいけないのが、H8/3664F (受信機&センサ用サブCPU)との通信用に SP3232 を載せること。 で、完成したのが、このボード。。。

 実にシンプルにまとまった、と思ったが、意外と端子類が出っ張っていて、収納しようとすると、改善点が見えてきました。 この調子だと、なかなか実機が立ち上がらないですねぇ。 「大地に立つ」、もとい、「リングに立つ」という目標を失いつつあるのですが、趣味だから、楽しければそれでよい、ということで。

 上図左がCPLD面から見た写真。 同面には、サーボ制御用端子が3組に分かれて配置。 この配列は、前回のボードと同じ。 CPLDなので、右写真のように、配線が最短になるようにレイアウトできるのも、うれしいところ。 地べたを這わせたニクロム線が多く、黄色の線で結線した空中配線分が意外と少ない。
 RISC プロセッサである SH2/7047F は、諸先輩方の Web にもかかれているが、バッテリの持ちがよろしくない、ということで、スピード的には十分余裕があるので、core clock を最速 50MHz から半減させて使うことにした(右写真の DIP SW 1-4 を ON)。 確かに連続稼動させていると、CPU が熱くパワーを食っていることが良くわかります。

(2003年12月21日)


 RoboOne 第5回大会は、129機体の書類選考パス組みで実施されることになりそう。
 そんな中、まだ大会が終わっていないのに。。。

パーツがばらばら。。。 小人(こびと)のせいではないです。 気分転換でもないです。 単に順番をミスっただけ。 というのも、色塗りを一切していなかったので、サーボに色塗りをしてみたのです。 今回は、近くの模型屋に行って、白色のスプレー式塗料を買ってきてサーボのみ白色にしてみました。 ほんとうは、ブラケットも全て白色にする予定だったのですが、始めた時刻が遅く、日が暮れてしまったので、サーボだけ色塗りして終わり。 暖かい一日を、塗料の匂いにホワホワしながら過ごしたのでした。。。

  • スプレー式の塗料をつかってみました。
    結構、斑ができてしまうので、苦労しました。
  • モーター軸部分は、いずれ治具がくっつくので、きれいに塗装はしてません。
  • KOサーボのロゴは、シールを貼って保護。
    はがせば元のロゴが出てくるはず。
  • ケーブルが白くなってしまったが、まぁ、大丈夫でしょう。l
    これで、完全に修理だしなどできない状態になりました。

(2003年12月23日)


制御ボードが厚めなので、さらなるダイエットを試みてみてみました。 出来上がってみると、何故最初っからそうしかったのか、という感じです。

見てわかりますが、CPLD XC9572 が CPU ボードの下に食い込む感じでしか乗せきれなかったため、SH2/7047F を180°回転して配置できなかったです。 黄色の線でのラインが10本も走っているのは、ちょっとみっともないのですが、省スペースを優先した形なので、仕方ないかな?? 不安なのは、ノイズ。 GND 直結のシールを巻いた方がよいだろうか。。。 とりあえず、動かしてみて動作に異常があるか確認してみよう。

 これを1枚にしてみると、こんな感じでとってもシンプルに、かつ違和感なくできあがった。 さらに、ボディにつけてみると、さらにその小ささが良くわかる。 ちょっと隠れて見えませんが、ボディ内部に NiCd 5本一組6V相当品を2組搭載しています。 これで持続時間は十分なはずですし、規格では 2200mA/h 出せることになるので、RCサーボを全開で使えるのではないか?と期待しています。 リチウムポリマーだともっと軽量化&小型化できるらしいのですが、取り扱いが難しいらしいので、今回は見送りです。(本音は金銭面で見送りました。)

 ボディ上部の4つのピン状の台座みたいなものは、頭部固定用のネジ止めです。
 今回、頭部の動きは特に必要ないと判断し、サーボを外しました。 あと、頭部に搭載予定のRC受信機&g加速度センサ&サブCPUもちょこっと回路修正したので、写真をアップしておきます。

  • 奥の棒は、チャンプで見つけたインボードアンテナ
    ・・・RoboOne大会では、送受信の不安定さが問題になることが多々あるそうなので強化
  • 受信効率アップの方法が仕様書に書かれていました。
    • 受信機の搭載位置、アンテナ線を巻いたリールの位置で大幅に受信距離がかわる。
    • 取り付ける土台は、必ずプラスチック及び電気の通さない場所にセット。 ノーコンの原因になるので注意。
    • アンテナ線は、動力コードから、出来るだけ遠ざけてセット。
    • 付属のアンテナリールは、カーボンシャーシ及び金属部への直接取り付けは避けること。

  • 左図のように受信機とリールの位置では不味いのかもしれませんね。 機会があったら、送受信機距離や影問題など測定をしてみたいですね。

(2003年12月28日)


 先日のアンテナ関連を搭載した形で、胴体に頭を取り付けてみました。

 今年も終わろうとしているので、現時点での状態を写真に収めてみようと思い、仮組みを実行!

 森永さんの Metaric Fighter宮田さんのバーニングスターのようにかっこいい写真が撮れれば、と思ったのですが、写るのは、そのままのロボット(当たり前ですね)。
 (選抜した写真が下2つ)。 「早く動くところが見てみたい。」妻の一言に来年からの取り組みに、ますます拍車がかかります。

仮組みした状態での体重測定では、2.3kgでした(内訳 胴体:230g、片足:480g、片腕:230g、頭90g、バッテリー2組:460g)。

(2003年12月30日)


あけまして、おめでとうございます。 本年も引き続きがんばりますので、よろしくお願いします。

(2004年元旦)


 ようやく、時間が取れてソフト開発からスタート切れそう、と思ったら、電源周りが不安定で作り直しをしてしまいました。
 そのため、予定よりはるかに遅れた進捗になってしまい、RoboOne 出場が怪しくなってきた、というのが正直なところです。

 今回は、Excelシートでデータ編集をしたりしたかったので、Excelマクロで使う Visual Basic による制御ソフトを作ってみました。 モーションデータを作成するにあたって、キャラクタのみでは、なかなか面倒なので、各サーボの角度をWindowsのスクロールバーでコントロールできるようにしてみました。 これで、1モーションデータの作成が容易になったと満足です。 このソースコード、とても汚いコードなので、要望がでれば公開としますね。

  • Excel で可能なレベルでのみで挑戦。
  • Visual Basic での本格的なプログラミングは初めてでしたが、
    結構、直感的に使えるので、スムーズにコードが書けました。
  • とりあえず、足、手の合計20サーボ分のコントロールを可能としました。
    △ 数値入力でも、スクロールバーでの操作でも良い
  • 登録&次へのボタンで、モーションを Excel シートに書き出し、
    新規なモーション作成に移れるようにしました。
    また、シーケンスのスクロールバーを操作することで、
    前に作ったモーションを呼び出してみることも可能です。
  • 通信開始・終了・TEST は、デバッグの関係で入れてます。
  • 送信 LOG, 受信 LOG もデバッグ用であるが、予期したコードを
    出して、ロボット制御しているのか、確認できないと辛いと思い、
    TextBox を使って作ってみました。
  • ロボットとの通信は RS232C を使っている。 Visual Basic での
    COM ポート操作には、www.activecell.jp のEasyComm1.80 を
    流用させていただいた。 とてもよくできているので、大変助かりました。
    1からコードを書かなくて良かったのは、とても大きいです。
  • モーションデータ、シーケンスデータの詳細については、
    時間が取れれば書きたいと思います。
    何せ、RoboOne までに時間がない!

 ちょっと横道ですが、モーションデータを、いちいちプログラムのコードに持たせるのは得策ではないですよね。 SISO さんは I2C EEPROM に書いて、それを組み込む形式をとっているらしい。 I2C EEPROM 自身はとっても安価なので、是非採用したい。 しかし、ALTERA FLEX の ConfigROM と同じで専用のライターが必要となると話が違う。 いろいろと調べているが、64kbit(16kbyte)のEEPROMなら書き込めるというWebを発見。 1Mbit(128kbyte)のEEPROMへの対応については公言されていないですねぇ。(ソフトのプルダウンメニューによる選択肢にも入っていない)。
 というわけで、EEPROMの導入に際しては、いろいろと試しながら検討を進めることにします。 ちなみに、I2C については、この Web が役に立ちそう。

 RoboOne もひとつの目標だが、これは趣味。 仕事と同じように納期確保重視でなくても良い。 楽しく行こう!

(2004年1月11日)


 R3N-series 製作日記へ

 ロボット製作のページへ

 トップページへ