Days for development

電子工作や3Dプリンターを使った工作などの記録です。正確な情報を書くよう気を付けますがこの記事で発生した損失には一切責任を負いません

マイコンに書き込めない?その2

お盆いかがお過ごしですか?

開発を推し進めるのもいいですよね。

前回の記事、

マイコンに書き込めない?その1 - Days for development

の続きです。読んでいない人は先にこちらを見てもらえると嬉しいです。

 1.電源電流を調べてみた

私の他にrx631マイコンで書き込めない人をブログ等で調べてみるとこのような書き込みに行きあたりました。

前回は電源周りのデバッグ(レギュレータやスイッチ等の素子を外して直接結線)したところで終わりました。
この状態で安定化電源を繋いだところ、ブートモードに設定したところ、電流が40mA近く流れました!

引用元:ハーフマウス研修 その6~プログラム書き込み~ | RT MicroMouse

なるほど、ブートモードはこのくらい電流が流れるのか。

というわけで安定化電源を借りてバッテリーがわりに繋いで電流を測りました。

f:id:days_for_development:20170811060301p:image

電源入れて10mAは流れたようですがmaekenさんのマウスの1/4程度しか流れていません。

2.書き込めないことに対する結論

端子の電位、クロック発振が正常であり、マイコンの消費電流が少ない以上マイコンが起動していない、死んでいると判断。原因究明はここで打ち切りとし、RTさんのRX631ボードを用いてプログラムの進捗を生むことにします。

3.おまけ

RT製RX631ボードで検証したところ、書き込みは成功したので回路に対する私の理解とその配線は間違っていないようでした。

f:id:days_for_development:20170812121514j:image 

マイコンに書き込めない?その1

ゆるゆると進行中のハーフマウスの進捗と問題が発生したのでそのトラブルシューティングを書き留めます。ひとまず、治っていないので途中経過になります。

1.Renesas Flash Programmerで書き込んでみた。

マウス合宿で指摘された水晶発振子のフットプリントとP-chFETの修正を終え、書き込んでみた。

”デバイスから応答がありません”

なんてこった...。

 

f:id:days_for_development:20170809015025j:plain

2.自分で確認した回路状態

2-2.回路の接続状態

f:id:days_for_development:20170809013729j:image

  • 水晶発振子は各端子がXTAL, GND, EXTALと導通。
  • マイコンの電源端子はすべて導通を確認。設計通り導通している。
  • もちろん、書き込み時はバッテリーで電源供給を行った。

2-3.回路上の各接点における電位

書き込み装置のスイッチがONの時

  • PC7端子: 0.0V
  • MD端子: 3mV
  • Battery: 4.2V
  • 3端子レギュレータVout: 3.28V
  • RES#: 3.286V

OFFの時

  • MD端子:3.28V
  • RES#: 3.286V

どうやら、配線は間違ってないらしい。

3.考えられる原因と対応策

原因1 クリスタルの故障

f:id:days_for_development:20170809013810j:image

これはオシロスコープを用いて発振しているか調べる必要がある。発振していないようであればもう一個セラロックを使う。

  • XTAL: 1.6V(一定)
  • EXTAL: 1.5V(sin波)

発振が確認できました。壊れてないようです。

原因2 マイコンの故障

f:id:days_for_development:20170809013903j:image

これはもう最悪。ヒートガンで剥がさないといけない。一度回路をショートさせてしまったときにマイコンが壊れたのかもしれない。

原因3 書き込み基板の不調

ハーフマウスの為に新しく買った書き込み基板なので動作確認が出来ていないのです。(ただ、comポートは認識してるのでこれはあまりないかな)

普段使っているクラシックマウスの書き込み装置も使えないことがわかったので原因がここじゃないことが判明しました。

 4.ここまでのまとめ

電源電圧やMD端子とPC7端子の電位、水晶発振子の発振が確認されたので残る可能性は配線ミスくらいしか思い当たらない。再度、回路とユーザーズマニュアルのにらめっこだろう。

次回、その2に続きます。

マイコンに書き込めない?その2 - Days for development

 

壁距離センサに線形近似を導入しよう

こんにちは。今回は理科大プチコンからクラシックマウスに導入した近似について記録しておこうと思います。

1.導入した経緯

 私は6月のマウス合宿に参加したのですが、その最終日にプチコンに参加しました。あまり調整をせずに本番で動かしたのですが、センサーの閾値と参考値がおかしかったようです。マウスが壁に近寄りすぎた挙句、モーターが脱調して壁にぶつかったしまいました。以前から壁センサーの数値が距離と比例していないことには気が付いていたのですが初めて大会で完走できない事態に直面した為ようやく組み込むことを決意しました。

2.近似を導入する前の問題点

 センサー値が壁に近づくにつれて値が加速度的に増えることは閾値調整の時に把握していました。このセンサーの生データをそのままP制御に持ち込むことで起こった問題は2つです。

  1. ゲインを大きくすると壁から1㎝の地点から中心まで復帰する前に脱調が起こる。
  2. センサーの参考値付近では距離の変化に対してセンサー値の変動が小さく、補正があまり効果を果たさない。

 要するに中心から左右15㎜ほどでしか、中心からずれてもまともな補正がかかるこ

とを期待できないという事態なのです。

3.近似について

3-1.センサー値の特性

 手始めに4つすべてのセンサーに対して距離とセンサー値の関係のデータを取ってみました。

f:id:days_for_development:20170802135917j:plain

点がセンサーの実測値、点線が採用した近似曲線です。横軸はセンサーの電圧(mV), 縦軸はロボットと壁の距離(mm)です。ここから導入すべき数式を算出しました。(写真中の数式)

3-2.近似関数に導入

引数にセンサー値をとる関数を作成しました。返り値は数式の計算結果です。後はこれまでセンサー値で行なっていた比例制御の引数を関数に変更すれば実装完了!

4.結果

以下の性能向上が確認できました。

  1. 壁から1cmほどの位置から走り始めても脱調が起こらなくなった。(補正量が壁付近で必要以上に大きくなりすぎないから)
  2. ゲイン調整が比較的楽に。(脱調しないので)
  3. 壁に近づいても脱調しない。(壁に近づいても比例制御のerror(差分)が急に大きくならないから。)

今度は、ステッピングモーターを使ったマウスでは壁切れ補正をしましょうかね。

以上。

新作ハーフマウスの設計および反省。

 

こんにちは。

前回の記事から随分と時間が空いてしまいました。いよいよ、いろんなことが飽和状態になってきたので整理を兼ねて記事を書きます。

1.製作過程

1-1.回路図

f:id:days_for_development:20170725074148p:plain

 この回路図では見やすさのために機能モジュールごとに区切って配線をおこなった。配線において基本的にはピン同士の距離を最小になるように回路図では設計しました。ただし、パターン図で配線しづらい場合は回路図の回路を変更してネットリストを更新してその都度調整して2層基板に収まるようにしました。

1-2.配線図

f:id:days_for_development:20170725074143p:plain

 配線図は、電源ラインの太さ→部品配置→配線→配置の変更→配線の修正の順に実行した。

1-3.実装

 セオリー通り部品は背の低いものから実装した。

2.改善点

2-1.回路図

 特に発見できず。

2-2.配線図

 水晶発振子とP-ch FETのフットプリント番号が一致していなかった。

 今後は新規で作成したフットプリントと既存の回路シンボルの組み合わせで使用するときはピン番号の確認をしっかり行う必要がある。

f:id:days_for_development:20170725074945j:plain

(中央のスリットがエンコーダーの来る位置)

 磁気式エンコーダーの取り付け基板の銅箔位置に無理がありはんだごての小手先を半田面に持っていけないことが判明した。要改善。

2-3.実装及び回路検証中の不手際

f:id:days_for_development:20170725074716j:plainf:id:days_for_development:20170725074722j:plain

(左:水晶発振子、右:爆ぜたパターンとP-ch FET)

 大まかに実装を終わらせた後、各端子の電位を確認しようと思いテスターを当てた。バッテリーを繋いだ状態でテスターのプローブでショートさせてしまい、パターンが爆ぜる事件が発生。最低でも、 GND, Vin, 3.3V, モータードライバの電源端子用にプローブを当てるための端子が必要。

3.次作について

 今回、初めてSMDを使ったプリント基板を設計しました。設計の拙さとともに実際に回路に起こる問題を想定できていなかったこともわかりました。次作は今回の反省を踏まえた改善を行うとともに機械要素の製作が全く進められなかったことの反省にモーターマウントなどは3D printで行います。

8月中には機体を完成させます。

ではまた。

<modifyed ver> Installation of KiCad

Hello.

I made much progress in March. But, I couldn't write about that progress.

So, I'm going to write about those progresses gradually.

In this page, I’m going to write about installation of KiCad.

1. Why does the foot print editor not move?

I finished to draw circuits for Micro mouse. So, I’m going to make foot print for some SMD chips.

 

f:id:days_for_development:20170423221141j:plain

But, the foot print editor didn’t work.

 

Why? Did I fix the problem?

2. Reproducibility

I tried to fix the problem by a past mean.

days-for-development.hatenablog.com

After that, it only works at once.

I found rules of reproducibility. This editor can work after changing a path. If KiCad restarted, foot print editor doesn’t work.

3.Solution

Finally, I did re-install KiCad from original web site.

kicad-pcb.org

After installation, I changed language into Japanese. 

After that, the problem was solved!

The foot print editor become to be able to work!

<修正版>KiCadのインストールについて

 こんにちは。

春休みの進捗はいかがでしたか?

私は進捗はあったものの記事にできていないので今週から春休みの進捗とかRealSenseの記事の更新を再開しようと思います。

さて、今回はそんな春休み中KiCadでまた問題を引き起こしたのでその報告と私の取った対応策です。

1.あれ、動かない?

マイクロマウスの回路設計が終わりました。

f:id:days_for_development:20170423221141j:plain

パターンの作成を始めようと思い、フットプリントエディタを押します。

 

「あれ、KiCadが落ちる…。」

 

治ってなかったか…。

2.再現性のお話

 以前の改善方法をもう一度繰り返してみました。

これを実行すると一応フットプリントエディタは起動します。

~次の日~

 もう一度フットプリントエディタで作業しようと思いパターンの作成を始めようと思い、フットプリントエディタを押します。

また落ちた…。

 繰り返すうちにわかりましたが、どうやらパスの変更後はフットプリントエディタが起動しますが一度KiCadを再起動してフットプリントエディタを選択するとKiCadが落ちるらしいことが判明しました。

3.対応策のお話

 今回はもう本家英語版ホームページにあるKiCadをダウンロードすること

で対応しました。

kicad-pcb.org

再インストールを行い、使用言語を日本語に置き換えてフットプリントエディタを選択!

 

動いた!!!

 

アプリを再起動しても動作するようなので今度はフットプリントエディタがちゃんと使えるようになりました。

days-for-development.hatenablog.com

 

RealSenseを始めよう~プログラミング編~その1

 こんにちは。

今日はサークルのRealSense講習でカメラからの画像取得まで進んだので知識の整理にもう一度プログラムを書いてみます。

1. Vidual Studio で新規プロジェクトを作る

 ファイルー>新規作成ー>プロジェクトの順に選択します。f:id:days_for_development:20170309164402p:plain

Win32コンソールアプリケーション Vidual C++を選択。

プロジェクト名を入力します。

f:id:days_for_development:20170309172153p:plain

f:id:days_for_development:20170309172156p:plain

アプリケーション設定において、不要なファイルを作りたくない場合は追加のオプションにチェックマークを入れましょう。

f:id:days_for_development:20170309172159p:plain

2.Pathを通そう

外部ライブラリを使用可能な状態にします。

今回はOpenCVとRSSDK(RealSenseSDK)の設定をします。

外部ライブラリの必須要素は

lib, include, binの3つです。

外部ライブラリを用いたプログラムの実行ファイルは2通りの方法によって実行可能になります。

  1. 実行ファイル(.exe)と同じディレクトリ内にプログラム上で必要なダイナミックライブラリ(.dll)を入れておく。
  2. OSの環境変数でPathにダイナミックライブラリ(.dll)が入っているフォルダを登録する。

今回は、ファイルを移動させることを考えてソリューションの入ったファイルに必要な要素を詰め込みます。

以下手順です。

  1. 始めにソリューションを右クリックし、プロパティを表示します。

    f:id:days_for_development:20170310132436p:plain

  2. 構成マネージャを開き、アクティブソリューション構成をDebug、今回は64bitのアプリケーションを作りたいのでアクティブソリューションプラットフォームをx86、プロジェクトのコンテキストのプラットフォームをx64にします。

    パスの設定をする際に構成ごとに設定が独立しているので注意しましょう。

    Debugで登録してもRelaeseには登録されません。

    f:id:days_for_development:20170310185411p:plain

  3. ソリューションのフォルダにOpenCV、RealSenseSDKのためにフォルダを作成しlib, include, binをコピーします。
  4. VC++ディレクトリのインクルードディレクトリの設定を行います。f:id:days_for_development:20170310222518p:plain
  5. 右上の4つのアイコンの内、左端のアイコンがファイルのパスの新規登録です。このアイコンをクリックし、必要な外部ライブラリのincludeファイルを登録します。ただし、自分で打ち込んだ以外の場合絶対パスになってしまい、ソリューションの入ったフォルダを変更してしまうと再設定する羽目になります。それを避けるには写真のように相対Pathを設定すると再設定する手間が省けます。($SolutionDirはソリューションの入ったフォルダです)

    f:id:days_for_development:20170315150450p:plain

  6.  ライブラリディレクトリもインクルードディレクトリと同様に設定します。ただし、ライブラリファイルはDebugとReleaseに分かれている場合があるので構成マネージャをよく確認してから設定しましょう。f:id:days_for_development:20170315150421p:plain

今日はここまで。

次はリンカーの設定を行います。