TOP >
製作日記 >
3月上旬
下の写真はクリックすると大きい写真が見れます。
今月分を全て見る場合はこちら⇒ CLICK
パルス送信16ビット
昨日に引き続き、デバッグを行う。デバッグを行っていくにつれて、あることが分かってくる。現在、各時間の出力ポートを記録する配列と、その間の時間を記録した配列の2種類を使っている。
RCサーボの角度が90°の状態でスタートしたとする。その状態で、10個ほど違う角度にしたときにパルスの一部がHighの状態で止まるという現象だ。
原因はよく分からないが、9個までなら問題なくRCサーボを操れるようだ。そして、ポートの出力状態を見ていくうちにある結論にたどり着く。パルスとパルスの間の時間が、ポートの出力に上書きされているのではないかと。
間の時間が255増えれば、LEDの出力は0x00FFとなり、510になれば0x01FEとなり...etc。まぁ、この時点では良く分からないので、さらに検証する必要があるかもしれない。
16ビット化から、戦略的撤退
結局、バグを取り除くことはできず、これ以上時間をかける訳にもいかないので、今回は16ビット化を諦めることにした。パルス出力プログラムを最適化するのがメインじゃないですしね・・・。
まぁ、可能な限りやりましたよってことで・・・。ソースは残しているので、機会があったらまた挑戦してみようとおもいます。
8ビット化にもバグが・・・
さて、16ビット化の際に作っておいた8ビットパルス出力プログラムを8ビットx4の32ビット化をするためにコンパイルしてみるものの、なぜか計算後の値がめちゃくちゃになる。
なんでだろう?っと思って、いろいろ調べた結果、まだ8ビット分の配列しかないのに、8ビットx2の計算をやろうとしていたからでした・・・。初歩的なミスですね。ダメダメですよっと。
で、16ビットパルス出力プログラムに時間が取られたので、今日はここまで。明日から、8ビットx4のパルスを作れるようにしつつ、VBの方へ行こうと思います。
4ポート分までパルスの生成可能
昨日に引き続き、パルス生成プログラムを調整。なんとか4つ分作れるように。これで、2.5msecの間に8ビットのパルスを送り、10msecで32ビット分送り終えられる。当初の目的どおりに行けたようで、えがった。
モーション作成の方へ
現状では、モーションが作れないのでモーションを作れるようにプログラムを修正する。今までのプログラムだったらこの時点で、モニタデバッガが使えなくなるんですが、まだまだ行けそうです。圧縮した甲斐がありました。
さて、いきなり全て作ろうとすると失敗するので、段階的にクリアしていくことにします。で、最初は楽そうなトリム調整からいこうかと・・・。これを作る時点でVBが関与してくるんですが・・・。
Visual Basic(VB)
今までは、全ての機能を一つのプロジェクトで作っていたんですが、今回はトリムの調整とモーションエディタは別々のプロジェクトで作ることにしました。
一緒にすると、ごちゃごちゃになって修正がし難かったので・・・。モーションエディタ部分にバグがあったら、トリムの調整もできなくなったりしますしね・・・えっ?そんなのは、あんただけと?・・・がっくり。(T▽T)
なかなか、進まない・・・
前に作ったRCS Editor ver1.0を必要な箇所だけコピー&ペーストして修正していく。しかし、通信がうまくいかない。通信は、モーション絵作成パートでも最重要な機能の一つ。動かなければ困る・・・凄く困る。
で、マイコンから返ってくる値を読み込もうとしたら・・・エラー。なんでじゃーっ! Σ(>x< )
しゃーないので、H8のSCI0(シリアルコミュニケーションインターフェース0)をVBとの通信に使い、SCI1(シリアルコミュニケーションインターフェース1)をHTERM(ルネサス配布のデバッグ用のハイパーターミナルのよーなもん)との通信に割り当てた。
で、HTERMでVBから送られてくる信号を表示させるようにした。目が見えない状態から目が見えるようになった感触、最初からこれをやっとけばよかった。
さて、送信は早々に片付いたのですが、受信がなんだかおかしい。なぜか、HTERMでは文字化けしている・・・。見つけるのに少々時間がかかったが、答えは簡単。VBにはバイナリで送信、HTERMでは数字を送信。
そうです、送信先を間違えていただけでした。まぁ、こんなもんです。送信先を直し、ちゃんと送信されるようになった結果を見るに、どうやらVB側での受信するための待ち時間が短いために、取りこぼしていた模様。ウェイトを長くすることで解決した。なんか、こんなんばっかりで情けなくなってくる・・・。(T▽T)
明日は、練習会
当然のごとく、動かせる状態になっているはずもなかった。久々にROBO-ONEの方々にも会いたかったので、明日(もう今日だが)は行くことにする。ちなみに、上記の問題が解決したのは夜中の3時だったりする。
頭が回らんと困るので、この辺で寝る。明日は7時に起きれればしめたものだが・・・。
やばい!日記がたまってる
今日も入れて3日分の日記をためてしまった・・・いかんいかん。さりげなく、毎日日記を付けていたりするが、意外と続くなぁ・・・。ホームページ編集環境を変えて、大分更新が楽になったのが大きい。
今までの更新の弊害が、専用のHTML編集ソフトがないため、メモ帳での更新に苦痛を感じていたことと、スタイルシートの構造がうまくなかったので、無駄にタグが多かったため。
これからは、なるべく更新できるように頑張ろう!っと、心に誓うのであった。
今日は動かせそうにない・・・
RCサーボは動かせるが、モーションは作れないという感じ。ひとまず、モーションエディタの完成させるために力を注ぐことにした。出発前に、足のRCサーボに火を入れてみる。一部、動かない。ブレーキがかかっているみたいなので、制御基板かポテンショメータの配線がショートし、制御基板側ではリミッタを超えていると判断され、ブレーキモードになっていると考えられる。
秋月のオシロで見ても制御基板まではパルスが来てるし、FETもマイコンも熱くなったり、燃えたりしないので、そうであると信じたい。
4014HVが・・・ばらされてた
トコトコ丸の網野さんが、4014HVをばらしても良いということで、
MAGIのZipponさんがばらしてました。自分は横で見学。意外と中はスペースに余裕もあり制御基板もゆったりめで、ちょっとびっくり。
ポテンショメータは例のクルクル製になってました。シャフト用の穴も深くなっているので、かなり頑丈そうな印象を受けました。網野さんの話だと、PWMとシリアルが兼用なのでノイズが入って変なところでHighになるとシリアルと勘違いして制御がストップしてしまうそうな。マイコンとの4014HVとの間にプルダウンすることで解決できるそうです。
解体後、
不知火のGIYさんがモーターをさらに分解して解析してました。
おみあげ
MAGIのZipponさんが新型の足を作った為に旧型の足が要らなくなったそうで、足を頂いてきました。足裏の形状がほぼ同じな自分のマシンに搭載できそうです・・・。
ただ、今回は間に合わないので、このままアルミ板で行く予定。色も、Wegweiserの基本色である青と白に塗りなおさないといけないですしね。
ビリヤード
ビリヤードは、
不知火のGIYさんが1分30秒で片付けてました。蹴りが左右両方出せて、紙コップを蹴りで落としてました。機動性もなかなか良い。上位の方とのレベル差をあらためて実感。
GIYさん曰く、意外とタイムが伸びなかったと言われてました・・・。自分も早くモーションが作りたいなぁ・・・やる気を充電。
寝坊しちった
起きたら12時過ぎてた。こんなはずでは・・・。悔やんでも仕方ないのでさっそく作業を開始する。で、ふとマイコン用006Pバッテリ周りとか、腰の緩みきったパーツとか、冷却ファンの配線とかが終わっていないことに気づく。
で、腰パーツを分解し徹底的にネジロックを各ネジにつけて締めなおしておいた。その過程で、006P用バッテリホルダー固定用のネジ穴がばかになっているのが発覚!1mm厚なんてこんなもんです・・・しくしく(T▽T)
だからといって、作り直す気にもならんのでここは片面ガラスエポキシ基板にネジ穴を設け固定することにした。せっかく片面基板を使っているので、006Pの電源スイッチも増設することにした。
その後、冷却ファン用の3端子レギュレータを1つだけ製作し、右足のフレーム内に収めた。残り3個作らなければならないのだが、ここで再びソフト制作に戻った。
モーション再生機能の追加
VBの方は、モーション再生ボタンを作るだけに留め、H8の方をガリガリ処理する。が、バグが行く手を阻み思うように進めない。まずは、パルスの作成方法を少々変更した。当初0msec〜2.3msecを255分割する方式を採用していたが、角度がどうもおかしいので、0.7msec〜2.3msecを180分割する方式に変更。RED Ver.の特殊パルスは、パルス生成時に必要に応じて修正すればいいのでこの方法にした。
さらに、角度A〜角度Bまでの補間が1°制御だとやはり滑らかではない。補間時はやっぱり、1°以下の方が滑らかである。そんな訳で、メモリ節約のためにChar型にしていた角度情報をInt型に戻した。
パルスの長さにあらかじめしておくことで1°以下の数値を引き出した。他にも、補間時のパルス修正用関数を旧プログラムから移植したが、unsigned longでなければならないところがunsigned intになっていたりしたため、RCサーボの動きが結構おかしかった。こんなんで、前回は動いていたんだから謎である。
モーション作成とか
日付を越して作業。ようやくまともなモーション登録ができるようになった。現在製作中のモーションの再生も可能。ようやくここまできた。あと少しである。
今回は、簡略化しているのと、過去の資産が残っているのでエディタの開発スピードが向上している。良いことである。あとは、EEPROMへの記録であるが、なかなかうまくいかない。そろそろ朝になりそうなので、今日はこの辺りで・・・。(__ ).zzZZ
寄り道・・・
また、起きたのが午後だった。また生活のリズムが狂い始めている・・・。やはり、夜更かしはダメだと思いつつも、焦りからかついつい作業を延長してしまう。厄介だ。
で、最初ふと思った。DMAの転送に使っているITUは25MHzで使用しているが、1/2の周期に落としても良いのではないかと・・・。現状では、最小のパルスとパルスの間の時間は20/25000 = 0.8μsecが限界。
1°制御ではこれの約10倍の、222/25000 = 8.88μsecなので全く問題にならないのだが、補間の際に1°以下の世界へ行ってしまうので、小さな値が必要になってくる。
最小の値が1ではなく20なのだから、1/2に分周しても全く問題ない。しかし、世の中そううまくはいかないもので、ポート1,2は正常にパルスを送っているが、ポート3が点滅するというバグが発生。
いろいろ調べてみたが、解決するみこみがないので前のプログラムに戻して、他の部分を追加することにした。
信じられない話かもしれないが、プログラムのバックアップを取るのは今回が初めて。今までは散々いじったあげく、元のソースがどうだったか分からなくなるという事態が起こっていた。
まぁ、面倒だったのかもしれないが、今回は良好な動作が確認できたら保存するようにしている。おかげで、プログラムもスイスイ進む。やっとまともになれたか。 Σ(−。−;
EEPROMの保存形式・・・
ふと、モーションの保存の仕方について疑問がわいてきた。現在の保存方法は完全に独自のものなので、他との互換性は全くない。そういえば、FAT16や、FAT32なんていうものがあったなぁ・・・っと思いまして。使えるかもしれないと思い、ググッてみた。検索ワードは以下の通り
FAT12 FAT16 FAT32 BPB クラスタ セクタ フォーマット 日付
FAT32 memo
Fat File System
ディスクの論理構造 OntrackNow
ファイルシステムと誤操作耐性 OntrackNow
気まぐれな戯れ言 バックナンバー5 簡易OSを作ろう編−2(FAT12/16の解析)
大体分かったような気がするが、FAT16はBPB(Boot Parameter Block)と、FAT(File Allocation Table)、ROOT(ルートディレクトリ)、データ領域の4つで構成されているらしい。FATは通常FAT1がFAT2と同じアドレスで保存されており、片方のアドレスが違う値だと、ファイルが壊れていると判断するようだ。
これなら、EEPROMの内容が壊れた状態でモーションの再生とかを行わずにすむので、信頼性が若干アップするかも。ROOTディレクトリには、ディレクトリ構造や、ファイルの情報などが保存されるとか・・・。最終アクセス日とか名前とかを保存する場所があらかじめ決まっているのは便利かも。
これらは、1クラスタが512Byteのサイズを必要とするらしく、BPBにおいては1/10しか使用しておらずその大半が使われずに放置状態。なんかもったいない感じがするが、それは1MBitのEEPROMを使おうとしているからだろう。
さて、1クラスタが512Byteであれば、データ領域も512Byteで区切られるわけだ。それならば、512Byteに収まるデータ構造にすると、結構ラッキーかも・・・。で、計算してみると、7コマしか作れないみたいである・・・。今のところ、モーションもあまり作ってないので、これでも良い気がするが・・・。なんにしても、今は独自方式で突き進むしかない。
ちなみに、現在の方式は、32Byteで区切っていく方式。
ファイルの保存とか、ファイルを開くとか
先ほどのFATは、夜更かししたときの話。寝たのは朝の5時30分(アホ過ぎ)。結局今回も、寝坊した訳ですが・・・。で、今回はモーションの保存をできるようにしようと思います。EEPROMに保存したデータを読み出す方式にするか、ファイルを保存する方式にするか迷いましたが、EEPROMからの読み出しはEEPROMが壊れたときにシャレにならんので、PCに残せるタイプにしました。
EEPROMはおいおいということで・・・。で、古いVersionのプログラムから引っ張ってきたら、飛騨高山の時の再構築した関数があってラッキー。ほぼ無改造で、名前を付けて保存、上書き保存、ファイルを開くを実装できた。
保存形式はCSV形式なので、EXCELで見れたりします。で、その他の機能として、ホームポジションをEEPROMから読み込みエディタに反映させるようにしてみました。しかし、ホームポジションの角度を読み込んだ後、エディタの角度を何度も送信したりするようになっていたらしく、マイコンが止まったりしましたが、なんとか修正が完了。
ようやく、モーションを作る下準備ができたようです。(遅すぎ!)補間モードの選択とかがまだですが、それは足のトリム調整やホームポジションの登録をしてからにします。あ・・・ホームポジションもファイル化できるようにしないと・・・。
少佐!えんぱくのパイロットが工場ブロックに・・・w
最近、TOPページに設置した逆アクセスランキングで、
思い立ったが吉日が1位になってた。で、行ってみると・・・?
そうそう。PIC-BASICの本。発見しました♪
これで8×8のマトリクスLEDをピカピカ出来そうです。うふふ。うっちー覚悟はいいか?
えっと・・・、「8×8のマトリクスLEDをピカピカ」って、例の某ロボットに似ている頭関連ですかっΣ( ̄□ ̄ )
某ロボット似ている ⇒
しんじられない・・・これがWegweiserに?
そのうち、
思い立ったが吉日で公開されるかもしれないので、詳細は伏せておこう・・・。いしかわさんの笑いに、私は震えた。(大げさ)
冷却ファンの配線
冷却ファンの配線がおわってなかったので、三端子レギュレータを使った5V生成基板をちょこちょこと作成。若干写真がボケたか・・・不覚!
使用したのはJRCの78L05です。元々取り付けるスペースがほとんどない場所に増設するので、極力小さくしたいわけです。当然のごとく、0.1μFのセラミックコンデンサはつけずに、チップコンデンサをつけておきました。入力にはRCサーボ駆動用の電源から引っ張ってきています。
あとは、熱収縮チューブで半田面を隠し、両面テープで冷却ファンの横に取り付けています。
ファンの回転を保護
冷却ファンが回転中にどこかが接触すると回転が止まってしまうので、保護する必要がありました。最初は片面基板を使おうと思いましたが、イマイチ見た目がよくない。
仕方ないので、100円ショップダイソーで金属メッシュがないかあさりにいく。探し物はあっさりと見つかる。銅製、真鍮製、ステンレス製の3種類があったので、その中のステンレス製を選んで購入。
コイツを金切りバサミで正方形に加工し、写真のように取り付けた。なかなかそれっぽいでしょ?まぁ、コイツの効果がどの程度あるかはまだ分かりませんが、ないよりはマシかな。ケースに穴空けたり、ヒートシンクを増設したらさらに効果が上がりそうだけど、今のところはこれで。
配線
角度調整も合わせて行うため、左足をばらす。ばらすといっても、サーボホーンやフリーホーンのネジのみ。しかし、その最中の新たな配線方法を思いつく。稼動範囲が広がる方法で、かつマイコンまでの信号線をすべてまとめられるというもの。
現状では、腰周りのRCサーボから伸びる信号線の長さが限界であり、それ以降は延長ケーブルを増設するか、信号線自体を取り替える必要が出てくる。腿は本来90°以上まがるのだが、途中の配線と衝突して本来の角度まで曲げられない。
また、膝の制御基板から伸びる配線は度重なる膝の動きで断線しかかってた・・・。当然、断線しかかるのはうまい配線がなされていない証拠であり、今後断線する確立はかなり高い。
そんな訳で、配線のしなおしを日付が超えそうな時点で始める。今回は、朝までにできるとこまでやってみよう。生活のリズムは完全に崩壊しとる・・・
配線は続くよどこまでも・・・
配線ルートを考えながらの作業なので、作業スピードは鈍った。1時間はあっという間に過ぎ行く。あ・・・ほとんど記憶がない・・・。ひたすら作業してただけだからなぁ・・・。
分配基板を作るのに結構時間がかかったかも。最初に作ったのが実は右足用だったので左足用を作り直したり、電源ラインがショートしてて、原因を調べたら細い銅線(配線のものと思われる)が制御基板のGNDとポテンショメータ用のVCCにくっついててショートしてたりと、まぁいろいろあったみたいです。(人事かっ!)
見よ!これが我々の戦果だ!
左足が修正後、右足が修正前です。修正前の方が綺麗な感じに見えますが、いろいろな問題が修正されてます。配線の仕方って本当に難しいです。ひとまず、左足のように修正してやっとモーションの作成に移行できそうです。
もう1週間ないし・・・やばいなぁ・・・。参加資格審査をサクッと作って、規定演技に取り組まないと・・・。無線は近藤さんの無線コントロールユニットKRR-1とKRT-1を使用する予定。
また、ここまでいけそうな気がしない・・・。この辺りは本選で必要になるので、まずは予選突破できるようにモーションを作成せい!
このプレッシャー・・・いしかわさんか!
なんか
思い立ったが吉日の日記で着々と、
Wegweiser専用頭部(首にS3103を使ってる機体限定)開発計画が進行している模様。
「久しぶりに半田ごてを握る。うふふ。」の「うふふ。」にやる気となったいしかわさんの姿を想像させる。(そこかいっ!)
写真がアップされていないので、詳細は不明だが8x8のドットマトリクスを配線しているのかも・・・。うーむ・・・早めに頭設計しないとな・・・自分も。
あんまり、寄り道しすぎると帰れなくなりますよぉー。現在自分も寄り道しすぎてるし・・・本来の目的であるモーション作成はいつできるのであろうか。(T▽T)
これからのいしかわさんの動向に注目が集まる。
サムネイルの転送し忘れ・・・
3月8日と9日のサムネイル画像の転送をし忘れてしまいました。申し訳ありません。m(_ _)m
いつも、確認してるのに今回に限って・・・。情けない限り。
24かぁ・・・何もかもみな懐かしい(ぉぃ)
3月10日と言えばっ!!トラ技の発売日!
うんうん、今回CPLDが付録なんだよねぇ・・・今までやろうとしてほったらかしにしていたのだからいよいよやれということなのだ。
ちゃうちゃう。今日は、私の24歳の誕生日なのだ。まぁ、だからと言って何もないですが・・・。そんなあなたにトラ技をプレゼント。(自分で、自分にあげるな!)
はっぴぃばーすでー・・・おめでとうっ!
おめでとう!おめでとう!おめでとう!
空しい・・・空しすぎるぞっ自分!
マイコン用USB電源
先日、100円ショップで携帯用の電源ケーブルを買ってくる。目的は、パソコンから5V電源を供給するためであるが、この電源で動くかどうか興味があるので、今回購入してきた訳だ。
分解すると、このような感じ。電源用の線が二本でているだけ。予想通りだ。コイツにDCジャックを装着する。線が細いので、熱収縮チューブで補強し完成。
マイコンに繋いでみたところ、問題なく動作した。マイコン側から大量に電流を流すわけではないので、このままでもOKかも。
Wegweiser立つ
足の配線を一通り行い、トリムやホームポジションの設定を行う。腕は通電させてないが、なんとか立つことができた。触った感触だと、今まで以上にガタつき感が少なく、がっちりした感じ。
今までのネジの削減や、必要のない軽量化が歩かなくする原因とするに十分な内容だった。今回は、剛性を上げネジも徹底的に締めることにしたのが功を奏したようだ。
相変わらず、1mm厚のアルミ板で作ってますけどね・・・。だって、つくりやすいんだもーん。\( ̄□ ̄)/
で、現在は腕の再配線を行ってます。RCサーボの制御線が届かない部分もあるし、何より腕を動かすのに邪魔。現状は、なかなか進まんです。
[BACK]
[TOP]
[NEXT]
Copyright (C) 2006 U-hirohito All rights reserved.