忍者ブログ

[PR]

2024年05月02日
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

情弱でもSTM32が使いたい! その1

2016年07月12日

こんにちは
なんだか最近ブログを書くのが流行っているようですね。

乗るしかない、このビッグウェーブに! ということで僕もブログを書くことにします。




さて、今回はSTM32の開発環境についてです。

なんやかんやあってSTM32を使うこととなった僕ですが、肝心の開発環境がちんぷんかんぷんです。
そこで、いつものように部長に泣きついて教えてもらったことを残しておきます。

なぜかSTM32を使ってる人はWindows から離れてバリバリやってる方が多い気がします。
ネットで調べても強い人向けの記事が多い気がします。
情弱にはつらい世の中です…。
これを機に僕のようなWindows から離れられない情報弱者でもSTM32を使うようになったらいいなあ…。




どの開発環境を選ぶか?

開発環境と一口に言っても、選択肢はさまざまです。
Miceの人ならわかると思いますが、ルネサスマイコンでも e2studio と CS+ がありましたね。
とりあえず選択肢として挙げられそうなものは、有償無償含めココにまとまっているようです。
http://qiita.com/Ted-HM/items/9f1cca2590ada522c021

とはいえ、
リンク先を見て
「ほうほう…。じゃあ、これが良さそうだな」
とか言える人(選べる人)は情弱ではありません。

情弱は自分で調べられないから弱者なのです。

じゃあ、どれを選ぶのかって話なんですけど
http://yuqlid.hatenablog.com/entry/2016/06/13/004001
これを参考にしました。


Sytem Workbench for STM32というEclipseをベースとしたマルチプラットフォームの開発環境だそうです。
いかにも良さそうじゃないですか? 比較的簡単にとか書いてありますし。
あと部長におすすめされましたし。

なんとありがたいことに、丁寧に記事を書かれています。マジ助かります。
基本的にリンク先を見ていただければ大丈夫なはず。


ただし、注意するべきことが1つあります。
実行していざビルドだ、といくとエラーが出る人がいるんじゃないでしょうか?
僕は出ました。

"arm-none-eabi-gcc" not found in PATH

↑こんなのです。
これは「arm none eabi」が入ってないためにおこる問題だそうです。そんなん知らねぇよ。



というわけで、インストールしなければなりません。
検索するとダウンロードページへたどり着くと思います、ココとか。
このサイトの更新日の新しい(上のほうにある)「gcc-arm-none-eabi-5_4-2016q2-20160622-win32.exe (md5)」を選べばよいと思います。



しかし、インストールしたからといってそれで終わりではありません。
「not found in PATH」です。
そう、環境変数であるPATHを追加しなくてはなりません。(PATHって何って方はこのへん参照)
PATHに先ほどインストールした中のbinフォルダのディレクトリを追加してください。



これで晴れてビルドエラーはなくなったはずです!

ようやく開発を始めるスタートラインに立つことができました。

次回「書き込み編」こうご期待!

→書き込み編

PR

ようやく新作発注しました

2016年06月02日
研究やら何やらに追われている間に気が付けば前の更新から半年が経過しておりました。
いい加減、部長に怒られるので更新します。目指せ月2回更新!

ようやく新作発注しました

新作発注しました。周りの人に比べてだいぶ遅れていて焦りが募っております。
以下、回路およびアートワークです




今回のマウスは部長さんの強い勧めにより、Miceで流行りのルネサスマイコンではなくSTM32F405RGを載せております。ちゃんと使えるかドキドキですね。

また、前回のマウスはハーフサイズ基準では大き目&角ばった外形だったので、今回は丸みを重視した通常ハーフマウスサイズ(39mm × 58.1mm)にしてみました。

26日のプチ大会に間に合わせるのは厳しそうな状況ですが、今年は機体ぐらい置きたいものです。


―――隣のひふみんの進捗に焦る11時間際の部室より


スラロームができない……

2015年11月11日

最近悩んでることの1つにスラロームの角度がおかしいというものがあります。

角度がおかしいと言っても90°が91°になるとかいう可愛いものではなく90°が130°くらいになったりします。しかも、再現性がありません。

何度か試したようやくとれたログがこちらです。




赤が理想の角速度[rad/s]
青がジャイロから取った現在角速度[rad/s]
緑は角度[° ]
で2回連続でスラロームをさせてみました。

これを明らかに2回目のスラロームで制御が発散しております。
この原因がわからない……

せめて発散が起きる条件とかがわかればなぁ

誰か心当たりあったら教えてください

磁気式エンコーダーAS5145B の攻撃。痛恨の一撃だ!

2015年09月10日
こんにちは、お久しぶりです。

時間が経つのは早いものですね。
きちんと記事を公開するのは久しぶりのこととなってしまいました。

今回は散々苦しめられた磁気式エンコーダーについて書きたいと思います。

まえがき


現在自分はハーフマウスを鋭意製作中なのですが、その途中で件の磁気式エンコーダーAS5145Bに苦しめられることとなったわけです。
制作にあたって、モーターはmk06-4.5を使用し、磁石はΦ2のネオジウム磁石、エンコーダーの固定方法等においてはこちらの記事(全3記事)を参考にさせていただきました。



事の起こり


で、結局何が起こったのかというわけなのですが、Duty一定でモーターを回したところエンコーダーの値が振動しました。コレがそのログです。

  
縦軸が速度[mm/s]、横軸が時間[msec]です。
ご覧の通り、周期的な振動が発生してることがわかります。
このズレが小さい物であればよかったのですが、こんなにズレるのでは到底無視できるものではありません。
ちなみに速度を上げると周期が小さくなり、ズレ幅は大きくなります。

というわけで、原因究明への旅が始まりました……。



原因は何?


では、何が原因となっているのでしょうか?
幸いにしてツイッタ―上には心優しい先達がたくさんおり、デバックの手助けをしてくれました。
この場を借りて感謝させていただきます。本当にありがとうございました。1人では間違いなく心が折れていたと思います。

話を戻しましょう。
結局、原因として考えられるのではないか、という候補に挙がったのは以下のようなことです。

・位相計数モードが上手く使えてない
・エンコーダーが壊れている
・エンコーダーのはんだ不良
・足回りにシコリ(かみ合わせの悪い場所)がある
・磁石の回転軸が、磁石の中心とずれている
・磁石の軸とエンコーダーの軸がずれている
・磁石の磁力が足りてない(磁石が小さい
・モーターの磁力と磁石が引き合っている



検証してみると


さて、上記の原因を検証した結果を軽くまとめてみます。

・位相計数モードが上手く使えてない
  →間違ってなさそう。ダメならもっとめちゃくちゃな値になるはず?

・エンコーダーが壊れている
  →オシロでICの足を見ると半波長ずれた区形波が出てるので、大丈夫そう。

・エンコーダーのはんだ不良
  →何度もやり直しても出力に変化がないので、これではなさそう。オシロでもノイズはなし。

・足回りにシコリ(かみ合わせの悪い場所)がある
  →モーターを外して外部動力(ステッパー)で回しても変化なし。車軸に問題がある可能性はあるが、左右どちらでも、作り直しても、ズレは対して変化しないので考えづらい。

・磁石の回転軸が、磁石の中心とずれている
  →回転軸と中心が明らかにずれたものと、あまりずれていないもので比べても、結果に大した変化はないので、主要な原因ではなさそう。

・磁石の軸とエンコーダーの軸がずれている
  →可能性大。モーターマウントごと手で傾けたりして位置を変えると周期的なズレが大きく変化する。

・磁石の磁力が足りてない(磁石が小さい
  →可能性ありΦ4の磁石に変えたところズレが少し小さくなった。

・モーターの磁力と磁石が引き合っている
  →モーターをエンコーダーから離してみても、モーターを外して外部動力(ステッパー)で動かしても、結果にあまり変化が見られないので関係なさそう。


赤字になっている、磁石とエンコーダーの位置関係の問題が大事そうです。その時のログが残っていたので載せておきます。



青色のプロットがモーターマウントを固定した場合、赤色のプロットが手で傾けたうちズレの小さいものです。
上記した原因候補の中ではコレが圧倒的に値が変化する要因であったので、個人的にはコレで決まりじゃないかと考えています。



それで、どうした?


というわけで、磁石とエンコーダーの軸を合わせるために、頑張ってICをパッドギリギリにつけたり、磁石を大きい物に変更したりと頑張った結果が以下のログです。



上の方であげたログと比べれば格段にズレが小さくなっています! やったぜ
ただし、ズレ自体はまだ存在しているわけですが……。



残ったズレについて


少し――と呼べるかわかりませんが――ズレはまだ残っています。これに関してですが、ある程度のズレは素子の特性上仕方ないのではないか、というのが現在の見解です。というのも、まわりの磁気式エンコーダー使っている方々もズレは生じているというのが理由です。
このズレの補正の仕方はこちらを参照すると良いのではないかと。

あるいは、もっとズレを小さくする方法はあるかもしれませんが、ずいぶんと心が削られてしまったので必要に迫られるまではこのままでいきます。



最後に


ここまで読んでくれてありがとうございます。
もし、何か助けとなったのなら幸いです。

最後にこの一件の教訓を載せて締めとさせていただきます。
それは、




磁気式エンコーダーなんか使うべきではない!






ということではもちろんなく、


設計はしっかりとやるべし!!


です。
(今回の件も、きちんと磁石がエンコーダーの中心に来るように設計できていれば問題なかったわけですし。)

[メモ]はまりかけたこと

2015年08月26日
自分用メモです。あしからず

以下にDCを作って躓いた点をまとめて置く。いつか記事にできたらいいですね。


・C++コンパイラにおいて、Cで記述すると関数の引き渡し(extern)でマングリングに引っかかる⇒extern "C"を追加
extern "C" void interrupt_cmt0();
詳しくは後輩の記事参照(http://hantasmouse.hatenablog.jp/entry/2014/12/15/094046)

・RX62Tのピンの入力はDRじゃなくてPORT
⇒PORT7.PORT.BIT.B5みたいに書く。SHとは違う
データシートは読み込みましょう

・デフォルトでRXは多重割り込みできない
⇒enableをつけて多重割り込み許可
cmt1の割り込みを例に説明
vect.hの #pragma interrupt (Excep_CMT1_CMI1(enable,vect=29))に下線部を追加。
更にinterrupt_handlers.hの関数の直前に以下を追加
#pragma interrupt (Excep_CMT1_CMI1(enable,vect=29))

モーターマウント
⇒配線する段階からきちんと何処に置くかなどを考えておいた方がよい

リポを載せる位置
⇒だいたい大丈夫じゃね? とかじゃなくしっかりサイズを調べ余裕を持った設計をすること!

ピニオンの圧入
⇒RTがきちんとしたの作ってくれたので大丈夫

そもそもピニオンの入手性
⇒売り切れに注意しましょうね


磁気式エンコーダが謎の周期を持って値がズレる
⇒そもそも磁気式エンコーダ自体の仕様


制御のゲイン調整が難しい
⇒よくわからないですよね。


STMマイコンが使えない←今ここ