MCR2009日記
2009/09/09(火) CNCフライス動作確認
サークルのみんなに手伝ってもらい完成しました。
完成したのですがソフトで制御が出来ず。パラレルポートの設定を見直してみたら無事に動作しました。
オリジナルマインドのページにあったサンプルデータをMACH3に読み込ませ動作させてみると、図面どおりに動作してくれました。
動作しているときに、送りネジなどをグリスアップし、駆動もスムースなことを確認し、来週には早速、試し切削したいです。

ケーブルが長く美しくないので後で綺麗に纏めます。
2009/08/31(月) CNCフライス調達
CNCフライスを入手しました。
コンパクトなオリジナルマインドのmini-CNC BLACK1520にしました。
明日組み立ててみようかと思います。
開発スピード&精度UPを狙います。
2009/08/23(日) 2009年度ルネサスマイコンカーラリー競技大会
全国大会に行ってきました。まずは結果から言いますと予選2走ともコースアウトです。
敗因のほとんどはキチンと対策していれば分かっていたことなのですが・・・。
今年からアナログセンサにしてみたものの、コースのセンターラインは38mm(ビニールテープの幅)のままで、会場コースでは何度もハーフライン処理に入っていました。
ほとんどキャンセルはされていたのですが、2本ともこれが原因でコースアウトしました。また大会のコースはしっかりしているようで適当なスポンジタイヤではジャンプしてしまうようです。私が使用しているコースはコース自体がサスペンションになっていたようで。
また大会がありましたら是非参加してみようかと思います。
今度は勝てるようなマシンを作成しようと思います。
2009/08/17(月) スポンジタイヤ
アルミホイールを作り直したのですが、スポンジタイヤを被せると外径が小さく、坂道がクリアできそうにありません。
どのサイズのスポンジを使っていたのか忘れてしまいました。
内径24mmのスポンジを使ったら径が小さくなったので、厚めの内径18mmをはめてみたら、ぴったりでした。ホイールを分解していて気づいたのですが、駆動モーターの元気がありません。
明日、予備モーターに交換します。
2009/05/12(火) マクソンモーター修理
湘南大会でサーボモーターがグラグラしていたので分解してみるとネジの頭が折れていました。試しにM2の折れたネジの頭を綺麗にして、1mmのドリルで穴を開け、ピンバイスで徐々に穴を大きくしてみたら、見事に抜けました。
久しぶりに気分がスッキリした作業でした。
2009/05/10(日) 湘南大会
湘南大会に出場しました。コースは難易度が高い約65mのコースでした。
予選は2本ともコースアウト。タイヤがエキセントリックな動きして飛んでいたようです。
決勝トーナメント1戦目ではコースアウトは免れたもののタイムで負けてしまいました。
結果は残りませんでしたがとてもアットホームな感じで楽しい大会でした。
坂道は少し安定させることができました。
4WDの安定して速いマシンが作りたくなりました。湘南工科大のロボットサークルの皆さん本当にお世話になりました。
2009/04/24(金) 湘南大会申込み
湘南大会申込みました。参加者の方々、当日はよろしくお願いします。
2009全国大会に出場したマシンの坂道対策をして出場します。
新しい検出方法を考えています。いい方法があればよいのですが・・・。ジャイロセンサーのライブラリを作成中です。予想通りドリフトの対処に梃子摺っています。
ネット検索するとカルマンフィルタというフィルタで・・・とありますが、理解不足です。タイムは上がらないのにプログラムサイズや処理は増え続け、そろそろH8/3048では限界です。
よい方法を探さないと。
2009/01/14(水) printf関数作成
通信で時々不具合がでていたので、通信部分を見直しました。
また、printfを軽量で信頼できるものにするため、自作しました。
テストが大変でしたが、実行モジュールサイズも小さくなり、良い感じです。
久しぶりに情報処理試験のような内容のコードを書きました。
簡易浮動小数点機能も付け加えました。ついでに固定小数点演算機能も搭載しようと思います。
2009/01/14(水) ログによるコース生成
ログ内の距離とポテンショメータ角度からコースを生成するソフトをダメモトで作ってみました。
誤差が大きすぎて、無理かと思っていましたが、姿を現しました。
エンコーダとポテンショメータのみでここまで出来るとは驚きでした。1980年代のカーナビの技術にも達していないかもしれません。速度0.5[m/s]毎に色を変えてみました。スタートとゴールを指定して、全体を補正すればよさそうですね。スネークによる増幅も確認できます。
またステアリング角度に-0.3度加えてコース作成すると、ストレートがよりストレートとして現れました。
ステアリング曲がっているかモーター出力か分かりませんがまっすぐ走っていないと言うことですね。クランクを判断して、90度に曲げればさらに精度が上がりそうですね。
2009/01/10(日) 全国大会
予選は最高速4.0m/s程度で走行する。しかし、坂道上り検出に失敗。まだ希望はあったようだ・・・。
しかし横Gが掛かったままの坂道下りで一瞬のセンサー浮きにより、センターラインを見失い、サイドラインをセンターラインをして捕捉しコースアウトする。
センサーアームが温度により硬化していたらしい。また今年も坂道でやられてしまいました。今年は坂道対策万全にします。
参加者のみなさん&スタッフのみなさん、今年もお世話になりました。
2009/01/09(土) 全国大会前日
朝からホテルでマシンの微調整を行う。
急に走らせたくなったので、札幌市エレクトロニクスセンターで試走させて頂くことに。
クランク6箇所、レーンチェンジ3箇所の62mくらいのコースを17.5秒で走る。これが限界。
坂道センサーがうまく動作しないが、坂道のエッジの影響を受けやすいセンサーなので諦めた。あまり走らせすぎてマシンを磨耗しないようにと充電器を持たずに出かけてしまったため、電池を殆ど使い果たし、ホテルに着いたのは23:30だった。待っていたのは充電地獄で寝たのは2:30でした。
2009/01/08(金) 全国大会2日前
忙しく、なかなかUPできませんでした。
4日にシェイクダウンしたマシンを急遽完全セッティングし、大会出場することになりまして・・・。
本日も徹夜になってしまい、高速バスの中で爆睡し、体も少し回復して来ました。
この歳の徹夜はキツイと思っていましたが、作業中は楽しんでいました。気持ちなのですかね。
今日は未明から積雪の予報が出ており、自動車のタイヤ交換する時間もなく、会社を出て、家でシャワーを浴び、高速バス駐車場に行き、少し仮眠したかな。そんな感じです。先日まで使用していたマシンと同じサーボ機構なのに、物凄い旋回性でほとんどのパラメータを作成しなおしました。
数々のマシンを制御してきた代々伝わる秘伝のソースのお陰で、パラメータを一通り設定し、半日程度で動作させることが出来ました。
軽量化などは考えていない大半がアルミで出来た車体です。
重さは最終的に計っていませんが860gくらいになったと思います。
ちなみにセンサはデジタルです。
2009/01/02(金) 今年もよろしくお願いします

あけましておめでとうございます。今年もよろしくお願いします。
今年も会社の一室を借りてコツコツと作業をしています。会社には本当に感謝です!今日は朝早くから鷲宮のスカイホビーにピロボールを求めてバイクで行った所、駐車していたバイクに車が接触し、自走不能になりました。保険屋、警察、ロードサービスなどの手配をして友人に迎えに来てもらい、会社に着きMCR作業に入ったのは16時頃になってしまいました。
それから作業を行ったのですがなかなか進みません。買ってきた部品をつけて調子はよくなりましたが・・・
明日は朝から晩まで作業をするつもりです。マシンの納得がまったくいかない状態です。明日は坂道検出をきちんとやろうと思います。去年の全国大会でも坂道検出でやられました。
全国大会は絶対予選突破したいですが努力次第になりそうです。頑張ります!!
2008/12/28(日) 遅延回路
遅延時間を生成する積分回路のCを47pFから10pFにし、理論上約10usに変更しました。
4kHzで約5%になり、基板をオシロで確認したところ、予想通りの動作となりました。
ソフトウェアの改良も行い、φ/8で45カウントはPゲートに信号が行かないことが分かったので、このカウント数をBIASとし、パーセント指定を振りなおしました。
遅延回路出力と相補PWM出力のパーセンテージが凡そ一致し、1%から同様の回転を見せてくれるようになりました。テストプログラムにも遅延時間が何カウントか測定するプログラムを用意し、計測後に係数をセットする仕組みにしました。
理論上の世界であって実際の走行には全く関係ないとは思いますが学習としてはよい内容です。もう少し掘り下げてFETを効率よく使えるように考えてみようと思います。
サーボが時々、異様な発振を起こすことがあり、原因調査中です。モーター逆転のタイミングなのかな!?
2日後になりますが調査してみます。MCRとは関係ありませんが、愛車の助手席に2台分のフライホイールとクラッチを搭載して走行したら、かなりバランスがよいコーナリングが行えました。間違いないとは思いますが勘違いかもしれません。このような人間のフィーリングを数値として証明してみたいものです。
2008/12/26(金) TypeS基板 遅延回路
TypeS基板を改良してます。改良しながら調査していますが、
相補PWM回路とFET遅延回路に同じPWMをかけても遅延回路の方が反応が鈍く調査しました。
4kHzで20%以上PWMをかけないとデジタルトランジスタの入力に波形が現れません。
Ver3基板もこんなものだったかなぁ。積分回路を構成するパーツは同じだし・・・
Ver3マニュアルには50usの遅れと書いてある。
ところで4kHzの20%って・・・ 計算してみたら50usじゃないですか(笑 良くできてるなぁ。
ソフトウェアで前後のPWMについて同じようになるよう調整してみよう。
坂検出SWとエンコーダー2相入力コネクタを増設しテストが完了しました。
明日はLCDコネクタをつけてみよう。−追記−
FETのP・Nチャネル短絡防止の積分回路の時間が大きすぎて、周波数を上げるとロスが凄いことが今頃分かりました。約20%もロスしていたのか・・・・。周波数が上がるほどロスが大きくなって・・・・
1kHzで5%と設計されていたのか。もしかして!?
積分回路を見直しすればいいのか!?素人考えですが・・・。
周波数上げればいいってわけではありませんね。とほほ。
鮫吉の方が加速する理由が分かってきました。ああ、何でもありません。上記の件も理論上ではφ/8で最大768カウントのタイマに154カウント以上の値を設定しないとFETから出力されないことも分かってきた。MCRは奥が深い。勉強になります。
相補PWMモードの説明にあるデジタルトランジスタのデッドタイムも気になってきた。
先に進まないな・・・
自己満足な世界になってきた。全国大会の調整はいつからやるのだ!?
2008/12/25(木) 最適化オプション
シリアル通信で発生しているのですが、最適化オプションをONにすると動作する。OFFにすると動作しない。
こんなトラブルが続いています。低水準入出力なのか、シリアル通信ライブラリなのか原因が分かりません。
コンパイルされたアセンブルリストともニラメッコです。
年末なのに脳みそがフル稼働で頭から煙がでそうです。
今日こそは作業するぞ・・・・。
2008/12/23(水) 理解不足・・・・
今日は理解不足による膨大な時間を失いました。
HEW自動生成コードのdbcst.cのビルドミスをして、まともに動作しないに2時間。
H8/3694Fのシリアル通信(受信のみ)が出来ないに9時間。
理由は恥ずかしいので書きませんが情報工学の理解不足です。自分への甘えです。最近、仕事でH8のプログラムを作っています。社会人でも将来H8を使えるエンジニアになりたいという希望が通じるのかも。MCRに感謝です。
H8のあらゆる機能で喜んでくれる人が増えてくれればいいなと思います。
コツコツと営業しつつこれからもH8を勉強していきます。
MATLABやdSPACEやLabVIEWなどなど学びたいことがたくさんあります。自分で学ぶには投資額が大きいですが、コツコツと出来ることをやっていこうかと思います。百万単位の投資になるのか!?明日から真面目にMCRをやろう。全国大会に間に合わなくなりそう・・・。
予選通過を目指します。
2008/12/10(水) TypeS基板にデジタルセンサ
TypeS基板にデジタルセンサVer4を取り付けました。そのときのメモです。自分用です。
アナログセンサTypeS モードラ基板 TypeS
センサ基板Ver4 1 VCC
2 デジタル左端
3 デジタル左中
4 デジタル右中
5 デジタル右端
6 アナログセンサ左
7 アナログセンサ右
8 デジタル中心
9 スタートバー
10 GND1 VCC
2 PA.B3
3 P8.B2
4 P8.B1
5 P8.B0
6 P7.B3
7 P7.B2
8 PA.B5
9 P8.B3
10 GND1 VCC
2 左左
3 左中
4 左右
5 スタートバー
6 中心
7 右左
8 右中
9 右右
10 GND
2008/12/10(水) 相補PWMモードトラブル解決!?
H8/3048Fのマニュアルを熟読して、プログラムを修正したところ、正しく動作するようになりました。
相補PWMポートのPWMを0→0以外→0などと変化させた場合、PWM動作とカウンタが逆転したりする不可解なケースがあったのですが、現時点では直ったようです。
単純にコースを走らせている場合はこの状態にはなりませんが、走行中にPWMを0を設定すると、煙が出たり、モーターが全開になったりするかもしれません。
実際に発生するケースとして距離計による走行終了時に停止したはずが暴走してしまったり・・・・
私が取った対策が正しいかはハードを含め評価をしないといけませんが、
テストする基板とプログラムが少ないので深く考えずに行きます。深読みしすぎたバッファレジスタ更新タイミングなどももしかしたらタイミング関係なく更新できるかも・・・・。
プログラムを危険な方向に戻して行って、真の原因を探る必要があるのか・・・・検証したいけど同じ状況で困っている人やH8内部動作について詳しい人に聞いて解決しないとならなそうで、自分だけでは無理そうです。
遊んでないで全国大会向けにマシンを調整していくか・・・
坂検出とセンサーアーム構造を変えないと・・・
2008/12/09(火) 相補PWMモードトラブル
今日はサークル活動でしたが相補PWMモードで泣かされFETを燃やしました。
以前、直ったと思っていた処理ですが、また同様の兆候がでています。
FETからの音ですかね!? ビーーっと唸った後、白煙が出ました。H8やそれ以外の相補PWMモードをよく読みなおすと、
・GRA3のコンペアマッチによる割込みルーチンでバッファレジスタを書き換える。
・割込みルーチン以外でのバッファレジスタ設定は×
・バッファレジスタの設定順には順序がある!?(ITU4.BRBが最後?)
・バッファレジスタからGRへの転送はGRA3コンペアマッチ時とTCNT4アンダーフロー時
いろいろとかき集めた情報なので、嘘が書いてあるかもしれません。とりあえずそろそろ寝る時間なので、明日挑戦してみます。
もうFET燃えませんように。
2008/12/09(火) I2C FRAM (FM24C256)速度計測
I2C FRAMもテストしてみました。
書込み速度が141[us]になりました。もう書込み速度ではなく、書込み可能を問合せる命令の実行で消費している時間になっていると思われます。
ByteData書込みの処理時間の遅さがさらに目立ちます。

H8/3694FのIIC2の速度計測も行ってみたいところです。
2008/12/09(火) I2C EEPROM(AT24C256B)速度計測
AT24C256を計測しました。AT24C1024より遅いと思っていたら、書込み速度が速く驚きました。スペックシートを見るとノーマルタイプは10[ms]に対し、Bタイプは5[ms]だそうです。ICをみるとBタイプのようです。2[ms]で書込みが完了しています。
今まで悩んでいたことは時代が解決してくれていました。
高速タイプのAT24C1024Bも今は秋月で取り扱っているようですね。
2008/12/08(月) I2C EEPROM(AT24C1024)速度計測
I2C EEPROM(AT24C1024)の書込み速度を計測するためにテストプログラムを作成しました。
PageWriteの時間を計測です。
桁Bが初期処理
桁Cが書込み時間
桁Dが書込み終了までの時間
桁Eが合計時間
桁Fが1バイト当たりの書込み時間
となっています。タイマはITUをφ/8で計測。単位はマイクロ秒です。
プログラムもできる限り割り込みなどを排除し、ノーウエイトにしました。
1バイト書込みにSCL9クロック必要としているので計算すると約110-117kHzで書き込んでいることになります。
AT24C1024のスペックである400kHzにはぜんぜん及んでいません。
書込み時間は安定して約5000[us]となっています。後半に来ると若干高速になりますが、
データ送信中に内部で並行し書き込んでいるからと予測します。
仕様書では Max 10[ms]となっています。
AT24C1024のPageWrite最大を活用すると256Byteではバイト当り95.8[us]となっています。
擬似的なI2Cインターフェースではソフトウェアがボトルネックになるようです。
現在16Byte毎に書き込んでいますが効率が悪そうです。リアルタイム性を犠牲にしてでも、
pagewrite最大バイトよりな転送を行ったほうがよさそうです。
ソフトI2Cは処理が重いなぁ。
H8/3694のI2Cを使うとどうなるのだろう。H8/3048から3694にパラレル転送して、
ログ処理に専念してもらうのも良いかもしれません。
次はこの評価プログラムでAT24C256のスペックでも測定してみます。
2008/12/06(土) 北関東大会当日
早朝から会社に行き、昨夜から出したままのコースで最終調整を行う。
朝は冷えてるため、コースが滑る。調整の間、電池を充電する。宇都宮工業に行き試走を開始する。
試走1本目:持病のスタートしない病が発生する。スタートしないためスイッチにて始動。クロスライン幅検出ルーチンでクロスラインをコースアウトと判断し、クランク直後で停止する。
試走2本目:コースアウト判定距離に余裕を持ち、再チャレンジ。坂道で減速しているにも関わらずジャンプする。
試走3本目:ステアリングゲインが高いためかフラフラし、コーナーでハーフラインと読み違え、コースアウトする。
試走4本目:ハーフライン判定条件のステアリング角度を狭くする。コース上に横転していたマシンに接触し、停止する。
試走5本目:坂道スイッチ誤検出で坂道からジャンプする。
試走6本目:坂減速中の最大PWM制限処理を追加する。しかし、坂道スイッチ誤検出で坂道からジャンプする。
試走7本目:坂スイッチは問題なく動作するが、坂道でセンサーアームが硬く、路面状況を拾えずジャンプする。
本番1本目:連続コーナーでテールスライドが発生し、マシン自体が発振後、コースアウトした。
本番2本目:本日1度も完走していないため、弱気のパラメータを設定する。
センサーアームも柔らかく短いものに交換する。何とか完走(泣今まで抱えていたが対策を逃げていた問題がもろに浮き出てしまいました。
坂スイッチ、センサーアーム構造、テールスライドなどなど・・・・スタート時に発進しない問題の原因は位相係数モードでエンコーダーをカウントしており、予想外にマイナス方向に進んだ際に、PID制御で弾き出した値が0となっているのが原因でした。やっつけ仕事で、エンコーダー値が一定になるまでPWMを100としました。
この辺も見直しです。坂スイッチは慣性を持たない構造にし、確実に検出できるように見直す。
センサーアームはフレキシブルにし、無駄なく追従できるように変更。
テールスライドはスライドを検出し、出力に反映できるようにする。全国大会まであと僅かですが出来る限り対策を行ってみます。
運営スタッフのみさなん、参加者の皆さんいろいろとお世話になりました。
2008/12/05(金) 北関東大会1日前
シミュレータの定義を消さないままコンパイルしたプログラムをマイコンに転送したら、暴走してパワー全開で壁に激突し、センサーアームが折れてしまった。
さらにセンサー基板の内部の配線も切れてしまったようでセンサー基板予備を作成し、装着する。
予備のセンサーアームの厚さが0.1mm薄くてフラフラしているので2枚重ねて装着。会社の簡易コースで25時まで調整しました。明日はどうなることやら・・・
2008/12/04(木) シミュレータ
HEWのデバッグ機能のHTSを使用し、IOアドレスや変数をActiveXで取得し、VB6にて簡単な物理的な味付けをすると、HEWで作成したコードがデバッグできます。
以前作ったシミュレータをちょっとブロック図に変更しフィードバックが分かりやすいようにしました。
モーターやホイールなどの慣性については省いていますが、
1.サーボモーターPWM値をポテンショメーターにフィードバック
2.左右の駆動モーターPWMの合計値をエンコーダーにフィードバック
するだけで、それなりの動作をします。
動作時間はさすがにkHzでは作れないので時定数に関しては考え直す必要がありますが、PIDもそれなりに評価でき、オーバーシュートや発振なども見られて面白いです。
時間的な概念をもう少し見直すのと(例えば1000倍遅い時間で動作させる)、モーターのスペックから物理的な動作を組み込んでみるのも学習としてはよさそうです。
2008/12/01(月) 試作マシン
試作マシンです。速いマシンというよりはずっしり重くメカメカしくも可愛いマシンを目標としました。
アナログセンサをつけて走らせて見ようかと思います。マクソンモーター後輪駆動です。
これ以上の小型化は無理だろうと思い設計してみましたが、まだかなり小さくなりそうです。
もっと可愛いマシンを作ってみようかな。
2008/11/28(金) 制御周期
MCRを始めて3年経ちますが、とても勉強になっています。微積分もPID制御も物理もMCRに関連することは感覚としてなんとなく分かってきました。論理的には分かっていませんが(笑
当時は10msという時間はあまりにも短い未知の時間でしたが、最近プログラムを書くときはマイクロ秒を意識するようになりました。
MCRとは異なりますが、先日、仮想エンジンをH8で作った時、20000rpm回ってる仮想エンジンのクランク角の0.1°って何秒?と考えていたところ、割込みでも制御が不可能でITUカウンタを利用した演算で算出しました。
この考え方がかなり勉強になったようで、物事を考えるときはナノ秒やマイクロ秒を意識しています。先日、速度算出ルーチンを3msから1ms周期に変え、速度制御をしたところ良い結果が出ています。200カウントエンコーダーを2相で分析しているで1回転あたり800カウントと凄まじいカウント数ですが、1msにすると数十カウントとなります。
これ以上の制御周期が必要なのかわかりませんが、ITUカウンタなどを利用すると、1カウント間の時間をナノ秒の精度で測定することも可能ですね。シミュレーションしていないので使える値か分かりませんが、ITUカウンタやCPUクロックを意識してプログラムを書くとプログラムがシンプルになります。使える概念か微妙ですがそのような考えかたをすると割込みルーチンが簡素化したり、処理も楽になります。時間に変換した時の精度も気になりますね。
EEPROMではログが取れない速度になってくると高速な記憶装置の実装が欲しくなりますね。特にPID制御などの制御周期でどんなパラメータが生成されているか不安になります。
I2CのFeRAMが身近にあれば一番楽ですが・・・。SDカードも高速書込みできるようですがすぐに実装は難しそうです。そろそろ本格的な物理シミュレーションを学びたいと思いますがどのように学べばよいかで行き詰っています。
世の中の研究開発はほとんどシミュレーションになってそうですが、感覚で理解できる人が減っているような気もします。現実と仮想の理解は並行してが良いのでしょうね。
今日のコースは坂道を含めた複合コースです。坂道検出の検出がうまくいきません。
2008/11/16(日) 山形大会当日
10:00 ホテルをチェックアウトし、近所の100円ショップで買い物を・・・
11:30頃、会場に到着し、荷物の搬入を始める。マシンセッティングが完了し、高校生の競技を見ました。
12:30から受付が開始され、MCRキャラクタのボールペンを頂く。
13:30から試走が始まりました。試走1本目 14秒70前後 坂道検出機構が働かない。想定している斜度まで達していないのかな!?
試走2本目 14秒60前後 坂道検出が働かない・・・。路面グリップは非常に良い。本番1本目 14秒60前後 坂道検出が働かないが完走。心臓に悪い・・・
本番2本目 14秒39 コースアウト覚悟で速度をあげるが坂道検出が働き、ブレーキが掛かる。恐れていたコースアウトも無く、全国大会へのキップを手にしました。
坂道検出の仕組みには問題があるようです。2008全国大会でもこの問題によってコースアウトしました。山形を離れ、仙台に寄り道し、牛タン定食を食べました。
今回のMCR山形旅行では、福島、山形、宮城の美味しいものをたらふく食べました。
全国大会に向けてマシンの調整を行おうと思います。4WDにしたいところですが、後輪駆動のままかなぁ。
環境も限られているので、もう少し論理的に開発を進めたいところですが、本を読んでも難しくてわかりません。
どうしようか・・・。山形大会の運営スタッフの方々、お世話になりました。
2008/11/15(土) 山形大会1日前
旅行を兼ねて山形へ。アサヒビール福島工場で工場見学をしました。
缶への充填処理のスピードに驚く。一瞬にして、賞味期限印刷や洗浄を行っていました。
缶は傷をつけないように空気の圧力で搬送していたりいろいろと驚きです。

最後にビールの試飲をしました。黒ビールとハーフ&ハーフを頂きました。
おつまみなどもたくさん頂きました。アイガモがこってりとしていてビールに合い、美味しかった。

夜はホテル近くの食堂でウニトロ丼を食べました。美味しかった。
海鮮丼も美味しそうでした。
ホテルに着いたら、MCR最終チェックです。ねじの緩みやシリコンシート張替えなど。
電池の充電も行っておきます。
明日、完走できますように。
最近、完走率が低いので不安です。
明日、大会に出場される方よろしくお願いします。頑張りましょう。
2008/11/14(金) 山形大会2日前
簡易コースで山形大会用プログラムの最終確認しています。
今回はeneloopでチャレンジします。
完走できますように...今回の大会には関係ありませんが次の大会に出場するかもしれないマシンです。
後輪駆動です。名前はまだ決めていません。
2008/11/13(木) 山形大会3日前
山形大会参加します。前日から会場近くのホテルに宿泊しています。
マシンは去年と同じ後輪駆動マシンです。15秒台目指します。
完走できますように...
2008/10/31(金) モータードライブ基板TypeS正常動作

モータードライブ基板TypeSがついに動作しました。3つの問題を抱えていたことが分かりました。
1.プログラムITU使用方法の問題
相補PWMモードではITU3,4を使用する。ITU3,4のタイマ開始と割込みルーチンの同期を意識せずに、ITU0割込みを使用していた。
誤った記述
ITU.TSTR.BIT.STR3 = 1;
ITU.TSTR.BIT.STR4 = 1;
正しい記述
ITU.TSTR.BYTE |= 0x1f;2.前左右のモーター回転数の違い
オシロスコープで確認したところ、右前モーターの出力がおかしい。症状から積分回路周辺を疑い、関連部品を一度外して、取り付けた。
詳細な原因は結局分からなかったが、前輪は左右とも同じ動作をするようになった。3.後左右モーターの回転数違い
後輪が右よりも左のほうがモーター回転が速い。回路を見ながら原因を探っていったところ、PWMの歯切れが悪いことが判明。若干のベース電圧が印加されており原因を探ると、どうもフリー(P10)の信号が出ていないらしい。さらに調査を行ったところCPUボードというかCPUから出力が行われていないことが判明。CPU基板をジャンパー線でP36と接続し、後左のフリー信号とした。
オシロで確認したら歯切れの良い右と同様のPWMが出力され、モーター接続テストでも左右差は収まった。Type−S基板はあきらめていただけに今回のトラブル解消はマシン軽量化&シンプル化のチャンスになりそう。
やる気も復活!北関東大会ではType−S基板でチャレンジできればいいな。
2008/10/09(木) 相補PWMモード断念か・・・
現在のプログラムにモータードライブ基板TypeSが動作するようにしているが、時々はきちんと動作するものの、コンパイルするたびに動作しなかったりPWMを徐々に上げていくと急に100%かかってしまったりして正常に動作しません。理論的には合っていると思うのですが・・・・
以前問題になっていたタイマーのバッファレジスタについても、正しい解決ではなく、処理をそのように変更したらたまたま動いただけのようで実は不安定な状態だったようです。
また気分がすっきりした頃に見直してみようとは思いいますが、現在のプログラムにTypeSを対応させるのは無駄な労力になる可能性が高く、位置から作り直したほうが良いような気がしてきました。次回出場する大会(未定)にはTypeS基板で挑もうと思いましたが現時点で以前のモータードライブ基板で出場予定です。
悔しいなぁ・・・ 情けないな・・・
2008/10/06(月) サーボPID制御
最近は走らせていません。理論を楽しんでいます。PID制御に関して理解を深めて、サーボ機構に最適なパラメータを探しています。あと数年間は楽しめると思っています。
以前からサーボ動作分析を行って見たかったのですが、理解不足のためなかなか踏み切れず、先日近所の大学で行っていた講座を受講し、若干理解が深まったようで分析に至りました。サーボ出力軸上のポテンショメータの偏差(角度)とPWM(P,I,D)を0.5[ms]毎にRAMにログ採取し、目標値に達したら分析結果をシリアル通信で転送するテストプログラムを作成しました。
下のグラフはその結果をExcelでグラフ化したものです。
ステアリングを20度切るまでの値です。0-2.5[ms]でのD要素がモータの瞬発力を発揮し、むだ時間が6->2.5[ms]に現象しました。目標値達成までに10[deg.]->24[ms] , 20[deg]->28[ms]とかなり優秀な値を示しています。
積分時間(周期)と微分時間が非常にポイントとなるようで、微分時間については0.5[ms]という早い周期では、値がうまく活かせないようです。
PWM周波数4[kHz] ログ周波数[2kHz]の世界ですが、まさかパラメータ操作やアルゴリズムで目に見えてしまうこの時間差に感動しています。0.00025[s]の変化を今、感じているのか。と思うとかなり不思議な気持ちです。今後、0->40[deg.]のテストを今後行う予定です。今までの走行ログから60[ms]位と予想していますが、タイヤを接地させた状態でダンパー分(負荷)を与えるとPゲインを相当あげられるような気がします。
広範囲な負荷に対応したパラメータ及びアルゴリズムは難しいような気がするので接地前提としてパラメータを決めようと思います。
PID制御恐るべし・・・・
2008/09/16(火) ソフトウェア機能追加(相補PWMモード) その2
相補PWMモードを追加したのですが、PWMが0の時にモーターがフルパワーで動作してしまい悩んでいました。2週間は悩んだでしょう。
あらゆる可能性を考えてテストしてみたが直らす・・・
3048ハードウェアマニュアルとにらめっこし、ITUについて理解を深めるが全くなる気配がしない。
そして今日、ITUのバッファレジスタに書き込むタイミングを相補PWMモードの割り込みと同期させてみた。私のプログラムでは別タイマを使用していた為、相補PWMモードのタイマと連動している割り込みがありませんでした。
モーター制御関数で、外部変数に値をセットし、相補PWMと連動したタイマITU3でバッファレジスタにセットしてみたら、なんと動きました。原因はわかりません。
割り込みと同期してレジスタにセットするのが正解であればなぜバッファレジスタが必要なのかもわかりません。
少し理解不足な部分があるようです。もう少し勉強が必要そうですが、Type−S基板が動作しそうなので4WDマシンの設計に移ろうと思います。果たして完成するのでしょうか。
でも、これで頭のモヤモヤが1つ消えます。今日は気分欲眠れることでしょう。
2008/09/09(火) ソフトウェア機能追加(相補PWMモード)
現在使用している制御ソフトに相補PWMモードを追加しています。
ソースコード上やH8の仕様上、問題はないはずなのですが、ソフト的(ITU的)にPWMを0にした時にH8からの出力がPWM100%になってしまうようです。タイマーも0にしていないはずなのでありえませんが何が起きているのか分かりません。
もう少し、頭の中で相補PWMモードを理解し、ソースコードとにらめっこしてみて、オシロをつないで原因探索してみます。こんな時って頭がすっきりしませんね。
2008/08/24(日) 横須賀大会
横須賀大会に参戦しました。
結果は9位でした。全国大会枠獲得まで一歩及ばず。
MCRシーズン始動するためのテンションを上げるため出場したという気持ちが間違いでした。
モーターも1年使ったもので電池も去年の夏に作ったものでした。
新品モーターに交換していけばと若干悔いが残る大会でした。今年は南関東大会がこれで終わりなので、北関東大会+αに出場しようと思います。
マシンも新設計する予定です。やはり4WDでないと減速&加速性能で相当な差が出るようです。
軽量RRにするか、4WDにするか悩みどころです。今シーズンもよろしくお願いします。
大会結果はこちら
http://www.mcr.gr.jp/current/2009/09_minamikanto2.html
2008/04/26(土) Hew Target Server
HEW Target Server (HTS)でシミュレーターを作成してデバッグしていますが、グラフ表示を付けてみました。
デバッグ用なのでGUIは適当です。ところでHTS Design Contest 2008が行われているようです。
http://contest.renesasinteractive.com/
面白そうですね。VC++2005の学習も兼ねてシミュレーターを移植してみようと思います。
2008/03/29(土) TypeS基板 プログラム解説マニュアル
今日は久しぶりに休みなので会社へTypeS基板を作りに行きました。
と思ったら仕事が入ってしまいました。仕事を終わらせて昨日UPされた「TypeS基板 プログラム解説マニュアル」を読みました。軽く流してみただけなので内容は理解していませんが、興奮するほど内容が濃いことは確かです。
世の中に書物がたくさんあると思いますが、もっと簡潔に伝えられるのではといつも思っています。
事務局から配られるマニュアルは無駄がなく、引き込まれるほど熱い内容なので非常に感謝しています。
こんなマニュアルが寝床にあると夜は眠れませんね。いろいろなところでコピーマシン論争で騒がれていますが、ソフト屋の私としてはソフトも一から作成して頂きたいと思います(笑)
大きく分けて、マシン、電子回路、ソフトの3本立てと思いますが、この中で一番簡単にコピーできるものはソフトです。見た目が同じハードよりも明らかにソフトウェアのコピーは簡単です。このことは誰も指摘していないようですね。
無形のものだけど作り出すのは膨大な労力がかかります。でもデジタル時代はコピーが前提なので大変さが伝わりません(泣TypeS基板の解説マニュアルを読んで、一つ一つ理解しながら現在使用しているソフトに組み込もうと思います。
しかし、プログラムがもう64KBを超えており、条件付コンパイルで何とか組み込んでいます。
外部に大きなROMを用意して、プログラムをRAMにロードさせて動かさない日が来そうで怖いです。チップ抵抗とトランジスタが完了しました。手と目が疲れました。続きは後ほど。
モータードライブ基板 TypeS
2008/03/25(火) タミヤ 3速ミッション組立て
最近は違う形のマイコンカーを作っています。MCRではないかもしれません。
今日はサークル活動で3速ミッションを組み立てました。
シンクロ機構はドグを使用しています。ドラッグカーやWRCなどで使用されているシンクロ機構です。
身近なところではバイクが同じ構造ですね。
金属製のシフトフォークまであって、かなり本物に近い仕組みになっています。

もちろん、シフトチェンジにはマイコン制御のサーボを使用します。
理想はインプットシャフトとアウトプットシャフトの回転差を把握しながらシフトフォークを動作させる、ドグを磨耗させないシステムです。
自転車のシフト機構デュアルコントロールレバーを開発した人たちも感心しますが思いますが、このミッションを模型にしてしまった人たちも感心します。残業続きで頭が一杯なのでMCRから反れています。あと1ヶ月したら仕事にゆとりがでるのでMCR復帰します。
2008/02/10(日) マクソンモーター駆動ユニット
マクソンモーターにアルミ丸棒から作成したディスクにアルミパイプを被せて、ホイールとしました。
モーター自体の固定はアルミチャンネルに差込み、インシュロックタイで固定してみました。
チャンネルにはねじ穴が開いているのでフレームに取り付け可能です。
見た目は格好悪いですが性能には問題がなさそうです。
この構造では内側ホイールに穴を開けることにより車輪速が計れそうです。またブレーキの可能性もあります
試作でコンパクトなマイコンカーを作ってみようと思います。
2008/02/10(日) MCRシミュレーター1
HEWには便利なデバッグ機能があります。HEW Target Serverという機能です。
COMでHEWデバッガのメモリなどとアクセスできる機能です。変数のアドレスなども取得できてしまいます。
その機能を利用してマイコンカーのシミュレーターを作成しました。
HEWのデバック機能を利用してI/Oにアクセスすると仮想のマイコンカーが値を読み取り、HEWに返します。
例えばHEWでモーターPWMを100%に出力するとシミュレーターが検出して、速度を上げていきます。
速度を上げると共にHEWの速度変数を書き換えて、モーターPWMが可変し、フィードバックにより収束します。
↑ ↓
タイマー割り込みも発生させられて以外にデバッグできます。
詳細はこちら
Target Server (COM拡張機能)