2019-12-22

大会に出られなかったマウスの話

この記事はMice Advent Calendar 2019の22日目の記事です。
昨日はmakoto@VrIyoeの「今年の反省と来年の話」でした。
他の人の工夫や試行錯誤を見るのって面白いですね。来年どんなマウスが見られるのか楽しみです。

はじめに

お久しぶりです。nknです。
前回の記事がいつだったか確認したら去年のアドベントカレンダーでした。
光陰矢の如しをひしひしと実感している今日この頃です。

本題へ

さて、今年のマイクロマウス活動はというとマイクロマウスを始めてから
初の大会不出場でした。
マイクロマウス(旧ハーフ)に初挑戦だというのに、色々とやってみたいものを
搭載していたら開発が遅れに遅れこの様です。

あれ、もっと前に機体出来てなかった?と思ったあなた鋭いですね。
去年の夏の段階で機体は形になってましたが、実は壁センサー用赤外線LEDが光らない、
エンコーダが読めない等々の問題があり、再設計をしていました。
少しだけ掘り下げてお話させてください。

赤外線LEDが光らない問題

今回の機体では、壁センサー用赤外線LEDを電流制御ができるドライバを用いて
光らせようと考えていました。
条件として

1. 電流制御ができる
2. パッケージが最大でも4 mm x 4 mm
3. ソフトウェア側から電流をある程度変えられる
4. 4つ以上のLEDをドライブできる
5. マイコンとの通信はI2CかSPI

といった感じで絞って、DigiKeyなどを漁っているとLTC3205というドライバに
行き着きました。
どうやらフィーチャーフォンのディスプレイ用バックライトなどに向けた製品らしく、
メインディスプレイ用LED(1~4)、サブディスプレイ用LED(1~2)、RGBLED の最大9つを
ドライブできるようになってます。

これでいける!と思ったのもつかの間、完成したマウスで動かそうとすると
RGBLEDは光るのにバックライト用端子につないだ赤外線LEDが光らない!
これを解決しようと色々やってるうちに時間が過ぎていき、モチベも削られ開発を
一時中断してました。

散々苦しんだ挙げ句、ようやくわかったのがバックライト用であるため本来は
順方向電圧の高い白色LEDに向けて設計されてること、それ故順方向電圧の低い
赤外線LEDは1つのみでは点灯せず、直列で2つ赤外線LEDをつなげることで
光るようになるということでした。

赤外線LED光らない問題は直列で2つ赤外線LEDをつなげるという方法で決着

エンコーダ読めない問題

今回の機体では光学式エンコーダを採用しました。
前回の記事で書いた反射型光学式エンコーダAEDR-8400です。
当初の計画は4輪マウスの左右それぞれの後輪に溝を彫り反射率の差をつくって
エンコーダに読み取らせようというものでした。

完成した機体でいざ確認してみると全くといっていいほど読み取らず…
データシートを確認してみると反射領域の反射率は最低60%ほどないといけないとのこと

そこで、メッキ調スプレーで塗装し、試してみるとカウントができるようになりました。
ただそんな簡単に上手くいくはずもなく、カウントしたりしなかったりと不安定な動作で、とてもこのまま使えるようなものではありませんでした。

メッキ調スプレーで塗装した旧ホイール(ちょっと剥げてる)

やはり金属を加工してエンコーダの反射板を作るしかない。
加工の候補としては
・CNCで削る
・エッチングする
・PCB用メタルマスクとして発注する
など考えましたが、お手軽にできそうなエッチングでやってみました。
方法としては、
1. レーザープリンターでOHPシートに反射板のデータを印刷
2. アイロンでトナーを真鍮板に転写
3. エッチング液につけていい感じになるまで溶かす
といった感じです。


試行錯誤はあったものの最終的にはいい感じに反射板ができました。
いざ、マウスのホイールに取り付けて試してみると、安定して読み取れるようになりました。
(速度を取得した際にどんな具合になるかは、またブログで書こうと思います)

エンコーダ読めない問題は真鍮板を加工して反射板を作ることで決着

ついに完成

 色々とあれやこれやとやっていて今年の大会には参戦できませんでしたが、
ようやく動く機体ができたので、来年の大会に向けてソフトウェアをしっかり作っていこうと思います。

せっかくなので来年の目標を

全日本大会で32x32の迷路を走るぞ!



明日のMice Advent Calendar 2019
れこさん(@_vi_o)の「無意味な人生の話」です。
興味深いタイトルですね。果たしてどんなお話なんでしょうか?

2018-12-19

なぞの光学式エンコーダ

この記事はMice Advent Calendar 2018 - Adventarの19日目の記事です。
昨日はの「"位置情報"から2018年を振り返る」でした。
出不精な自分からしたらフットワークの軽い人は尊敬の対象ですね。
ま.さん、実は仕事を辞めて放浪の旅に出てるのではと疑っています。

はじめに

まず、タイトルの内容に入る前に反省をしておこうと思います。
なんせ、去年のアドベントカレンダーぶりにブログを書くのですから。
最近、驚くほど早く1年が終わってしまうので、気を付けないといけないですね。
なんだか、このままあっという間に30代に突入しそうで怖いです(しみじみ

それはさておき本題に入りましょう。
今回はAliexpressで売っていたFAULHABERのエンコーダ付きモータを分解して、
光学式エンコーダを取り出したお話です。

今回購入したもの

Aliexpressでエンコーダ付きモータを購入しました。
Aliexpressでモータあさりしている人なら良く見かけるやつだと思います。
販売ページにはBrushlessなんて書いてますがDCコアレスモータです。

モータに印字されている刻印を見るに
FAULHABERの0816シリーズの3V仕様のようです。
ただ気になるのが、 FAULHABERのデータシートに乗っている
0816 003SRとは異なり端子間抵抗が約15Ωあります。

そのままマイクロマウスに使うには向いてなそうなモータだったので、
分解してエンコーダを利用しようと考えました。ちなみにモータについている
エンコーダは PA2-50(光学式、1回転50パルス)という型番でした。

 いざ分解

 金属と樹脂の境目をカッターでゴリゴリと切っていき
ぐいぐい引っ張るとモータとエンコーダに分解できました。

 

エンコーダの反射板はこんな感じでモータシャフトについていました。
 モータを破壊すればシャフトごと再利用できそうです。


エンコーダ側はニッパーで樹脂を取り除くとフレキにエンコーダ本体が
ついてる様子が確認できました。 裏面には抵抗330Ωが1個とコンデンサが2個
ついていました。


調べてみると、光学式エンコーダはBroadcomのAEDR-8400シリーズでした。
AEDR-8400はデジタル出力の光学式エンコーダです。エミッタとディテクタが一体と
なっていてコンパクト、A相B相を吐いてくれるのでマイコンのエンコーダモードで簡単に
カウントできる便利アイテムです。

Digikeyで光学式エンコーダを探しているときに気になっていたのですが、
最小発注数量1個の場合、2000円 以上するのでマウスに使うのをあきらめていた代物でした。
このモータからエンコーダを剥ぎ取れば1000円以下で入手できるので、これを使わない手はないでしょう。

以前から光学式のエンコーダを利用したマウスを作ろうと思っていたので、
次のマイクロマウスにはこのエンコーダを使うことに決めました。
といっても1年前のことですが…

次回へ続く

次回はこのエンコーダを使ったマウスの紹介記事を書こうと思います。
次はいつになることやら

明日のMice Advent Calendar 2018
くろくん(@ahasumc)の「助けて後輩に脅された」です。
Miceには先輩を脅す後輩がいるんですね。いったい誰なんでしょうね。怖いですねぇ…

2017-12-21

TrueSTUDIOでLチカ

この記事はMice Advent Calendar 2017 - Adventarの21日目の記事です。
昨日はnanoさんの「quadceptはいいぞ」でした。

さて,今回はSTM32マイコンのIDEの一つであるTrue STUDIOについての記事です。

来年はSystem Workbench for STM32 (SW4STM32)
開発しようかな、なんて思っていたのですが、このニュースを見て
そんな気も吹き飛びました。

STMicroelectronicsがTrueSTUDIOを開発しているatollicを買収し
有料だったTrueSTUDIO Pro が近々無償で利用できるようになるとのことです。

というわけで,とりあえずTrueSTUDIOに慣れてみようと思い
インストールからLチカまでやってみました。

ちなみに今回はNUCLEO-F446REを使い、付属のST-LinkをJ-Link OB化して
J-Linkで書き込んでみます。

インストール

まずはatollicのサイトでTrue STUDIOのインストーラをダウンロードします。
インストーラを起動したら, どんどんポチポチと進めて行きます。
コンポーネントの選択をするように言われるので、
今回はST-LinkとJ-Linkのところにチェックを入れて進みます。
さらに、ポチポチ進めてインストールを完了させましょう。

CubeMXをTrueSTUDIOに導入

 TrueSTUDIOにコードジェネレータのCubeMXプラグインを入れます。
まずは以下のリンクからEclipse用プラグインのzipを入手します (要アカウント登録)。

ダウンロードが終わったら、TrueSTUDIOのメニューバーで
ヘルプ->新規ソフトウェアのインストール...
を開き、出てきたウィンドウにある作業対象の追加ボタンを押し、
リポジトリーを追加のダイアログを出します。

ダイアログの名前入力欄に任意の名前を入力し、
ロケーション欄はアーカイブボタンを押し、先ほどインストールしたzipを選択すればOK

あとは流れで進んでいき、インストール後再起動すればTrueSTUDIO上で
CubeMXが使えるようになります。

プロジェクトをつくる

まずはCubeMXでプロジェクトを作ります。
TrueSTUDIOの右上にある「パースペクティブを開く」ボタンを押し




出てきたダイアログにある 「STM32CubeMX」をクリックしCubeMXを開きます。
CubeMXが起動したら、New Projectをクリックしデバイス選択に進みます。

今回はNUCLEO-F446REを使うので、「Board Selector」タブから選択し
ダブルクリックで進みます。

進むと下のような画面に進みます。ここでピン設定やクロック設定ができます。
今回はLチカだけなのでいじらず進みます。
まずはプロジェクトの設定を行います。メニューバーから
 Project->Settings...
と進み、以下のように、Project Nameを適当に決め
Project Locationを好きな場所に設定し、Toolchain/IDEをTrueSTUDIOにすればOK
設定が終わったら
 Project->Generate Code
でプロジェクトを生成し、「Open Project」をクリックします。
 右上のボタンを押してCubeMXからC/C++パースペクティブに戻ります。
  
一度ビルドしてみてエラーが出ないか確かめておきます。

ST-LinkのJ-Link OB化

下記のリンクからSTLinkReflashをインストールします。
Converting ST-LINK On-Board Into a J-Link
 ST-LinkをPCに接続した状態でSTLinkReflash.exeを起動し
指示に従ってJ-Link OB化します。

デバッガの設定

TrueSTUDIOのデバッガをJ-Linkに設定します。メニューバーから
実行->デバッグの構成
を選択し、出てきたダイアログの左欄にある「(プロジェクト名).elf」を選択し
デバッガタブのデバッグプローブ欄を「SEGGER J-LINK」に設定します。
適用を押したらダイアログを閉じます。



Lチカのプログラムを書く

TrueSTUDIOのプロジェクト・エクスプローラーからSrcフォルダにあるmain.cを
開きます。main.c 内にはCubeMXで生成されたコードがすでにあります。

CubeMXで再度コード生成を行ったときに、自分が書いたコードが
消えないようにするには
/* USER CODE BEGIN */
/* USER CODE END */
のようなコメントの間に書いていきます。

今回はLチカなのでコード生成で用意されているwhile(1)ループを使います。
/* USER CODE BEGIN WHILE */
/* USER CODE END WHILE*/
の間に次のようにコードを書きます。

これをビルドしてエラーが出なければOK。あとはJ-Linkで書き込むだけです。

書き込み

 ツールバーの虫アイコンをクリックすることでデバッグのパースペクティブが開き
デバッグが開始されます。
 ツールバーの再開ボタンを押してみるとNucleoボード上のLEDがチカチカと
輝き始めます。

まとめ

SW4STM32に比べて環境構築がらくちん



明日のMice Advent Calendar 2017
アブノーマルくんの「elecrowでクリスマスツリー【2年目】」です。

2017-01-01

POMを染めよう!!!

 POM(ポリアセタール,ジュラコンとも)等の樹脂を染めて
にしたい方向けの記事でございます

準備するもの
・樹脂製のパーツ
・鍋(今回は百均のボウルで代用しました)
・染料(ダイロンマルチまたは樹脂着色用染料SDN)

 以上!簡単ですね

 染料について説明しておくと

ダイロンマルチ
サイト:www.dylon.co.jp/catalog/dylonmulti.html
価格:約500円
本来衣料用染料のようですがPOMも染められるとの情報があったので使ってみました.
粉末の染料で水に溶かして使います.様々な色があり混色も可能なようです.
内容量は約5gです.小鍋に入る程度のパーツであれば3,4回は使える量です.
今回は32番スカーレットを使ってみました.
 使用済み希釈溶液をもう一度使ってみましたが色が汚くなったので
一度使ったら廃棄したほうがよさそうです

樹脂着色用染料SDN
サイト:www.osaka-kaseihin.co.jp/sdn.htm
価格:約800円
POMを染色するのにはメジャーな染料のようです.
液体の染料です.水で5%に希釈して使います.刺激的な香りがするので換気扇を回しましょう.
こちらもダイロンマルチ程ではありませんが多くの色があり混色可能です.
内容量は70gとなかなか使いきれそうにない量です.
一度使った希釈溶液は再利用可能です.
今回は黒を使ってみました.

2つの染料を紹介しましたが,基本的にやることは同じです.

染料を水で薄める

希釈した染料とパーツを鍋に入れとろ火で煮込む
(溶液の量が減ってきたら水を継ぎ足す)

ちょうどいい色になったらパーツを取り出す

これだけです.本当は指定された濃度と温度で染めた方がよいのでしょうが
面倒だったので目分量&煮込むという雑な感じでやってしまいました(おい

今回の染色では鍋ではなく百均で買ってきたボールとざるを使いました.
下の写真のような感じでぐつぐつと30分ほど煮込みました.




染色した結果,下の写真のような感じに染まりました.思ったよりもきれいに染まって満足です.


一方のSDNで染めた方もしっかりと黒に染まってます.



長くなりましたが,樹脂には塗装だけでなく染色するという選択肢があることがわかっていただけたと思います.
 ぜひ皆さんも染色にトライしてなライフを!!!

2016-12-31

全日本マイクロマウス大会2016

全日本マイクロマウス大会終わってしまいましたね...

という訳で今更ですがブログ書きます.

-大会前日-
あまりの体のだるさに試走会に行かず,家で調整(迷路板作っておいてよかった)

探索があまりに不安定なのでターンを確認してみると,かなりずれている…!?

とりあえず探索用ターンの調整後,壁制御なしでの探索をしてみると,
何故かきれいに探索できるときと,かなりずれるときの2パターンが存在する…
どうにも深刻なバグが存在する香りを感じつつ見なかったことに
最短用のターンを調整していると大会に向かう時間になっていました
-1日目-
午前に運営の手伝いがあったので,会場に入ってすぐに調整用の小さい迷路へ向かいました.
割と無難に走っていたので安心して手伝いへ.
フレッシュマンの人たちも無事予選突破できたようで安心していると,
エキスパート予選で自分の番になりました.
探索の調整が案の定甘く,1,2走ともスラロームのずれがたまり完走できませんでした.3走目で何とかギリギリ片道探索が成功し,4走目の最短走行を決めて決勝進出することができました.

-2日目-
何とか決勝に進むことができたのはいいものの,前日から一切調整せずに決勝に臨むことになりました.1走目の探索では調子よく進んでいたものの,ゴール前の櫛で前壁を読んでしまい迷路情報が壊れ,2走目も同様に櫛にやられ,3走目でタイムアップ.調整の甘さがでた結果でした.海外勢の速く正確な探索を見習いたいですね.


こうして,今年最後の大会もあっという間に終わってしましいました.
今年は部室でおしゃべりしていたらあっという間に過ぎ去っていってしまった感じがします.
今年作った機体はまだまだ性能を出し切れていないのでこのままソフトの開発を続けたいと思います.

 



2016-10-16

東北地区大会

今年も東北地区大会に行ってきたので遅ればせながらのレポート.
道すがらゴリラ村によったり, おいしいものを食べたりしながらいつもの地へ向かいました.(運転手の皆様,本当にありがとうございました)
ゴリラ村

東日本地区大会ではサーキットに出場するも壁制御未実装だったため完走することもできず不甲斐ない結果になってしまったので,東北地区大会では探索と最短の成功を目指して,通称「精神と時の部屋」でプログラムを書いていました.成果は動画でご覧ください.


精神と時の部屋では調子よく走っていたものの,いざ大会で走らせるとセンサーの閾値がずれているせいなのか5走とも同じところで壁の読み違いが発生し,探索さえ成功できずに終わってしまいました(残念!!).

大会後は懇親会で芋煮を存分に味わいました(毎年,ありがとうございます).


次回の大会では斜め入り最短走行でゴールを目標に頑張っていこうと思います.

2016-07-05

モータドライバの発熱

ああ~あつい
確かに外は暑いがそのことではない
1717とモータドライバが熱い
「ハードはほとんど出来たしモータ回してみるか」
そんな軽い気持ちで回してみたら見事に熱い(デューティ比:50%)
1717はほんのり温かい程度で済んでいるが,モータドライバは燃えだしそうなほど熱い
原因を探るべくパッドをぼろぼろにしながら隅々までいじくってみたが全く見当がつかない
新しく基板を発注しようにも熱くなっている原因が判らなければ出来ないしどうしたものか…
とりあえず,まだ使えてないジャイロとエンコーダを使えるようにしてから考えよう…
-追記-
原因はモータドライバに入力するPWMの周波数が小さ過ぎることでした.12kHzから200kHzにしたところ発熱しなくなりました.アドバイスしてくださった方々ありがとうございました.