紙式エンコーダの紹介
この記事はマイクロマウス Advent Calendar 2021の5日目の記事です。
昨日の記事は、らしゃ氏の「ロボコンに興味を持った中学生はどうなったか」です。
私も父親も、家電の調子が悪くなれば蓋をあけて...の人で、ごくごく普通のご家庭には"はんだごて"があるものだと思っていました。誤家庭であったようです。
■1.今年のテーマ
さて、このブログは年1回のAdvent Calendarを書くことが存在意義のようになっていますが...その話は置いておくとして、
今年は、新たに自作した”紙”式エンコーダを紹介しようと思います。推敲不足はご容赦ください。
■2.なぜエンコーダーを自作するのか?
マイクロマウサー(旧ハーフマウサー)は大抵の場合、完成品ではなくエンコーダを自作します。
その理由を明らかにし、紙式エンコーダを作るに至った背景を説明します。
マイクロマウスは壁に沿って走行しないタイミングがあります。
壁に追従しているだけでは走れないため、オドメトリをとって走行します。
オドメトリを求める際、機体のヨー角とタイヤの角速度を下記2つのセンサで測定することが主流です。
・機体のヨー角速度:MEMSジャイロ
・タイヤの角速度:ロータリーエンコーダーの微分
MEMSジャイロは4mm×4mmなど小さく軽いものが市販されていますが、
ロータリーエンコーダーの完成品は重く、大きいです。
そのため、マイクロマウス(旧:ハーフマウス)は小さく軽いエンコーダーを求め、自作することになります。
■3.主流のエンコーダー
主流のエンコーダーは2種類。(ほぼ1種類といっていいかもしれません)
方式①:磁気式エンコーダー
ほとんどの人が使っている手法
長所①:必要な精度を出すための知見がすでにある
短所①:磁石を使うため、モーターと磁気が干渉する※
短所②:磁石と磁気シールドが重い(左右両方で1.5gくらい)
参考:http://maimaimouse.blog.fc2.com/blog-entry-46.html
方式②:光学式エンコーダー
長所①:磁気式よりもさらにコンパクト、軽量に作れる
短所①:自作ではパルス数が分解能が高くなく、速度を得るには工夫が必要
参考:https://kojimousenote.blogspot.com/2015/11/blog-post.html
※エンコーダーにしようする磁石がモータの金属に引き寄せられる
磁気式で走れることはわかっていますが、磁石と磁気シールドのセット2つで1.5g程度あります。
システム全体で10g程度を狙うマイクロマウスでは大きな値ですよね?もっと軽くしたいと思いませんか?
磁気の干渉もいやですよね?
しかし、光学式は分解能が高くないため、速度を得るのに苦労しそうですよね?
⇒ということで、分解能が磁気式と光学式の間で、光学式レベルに軽量なエンコーダーを自作しようと思います。
■4.紙式エンコーダーの原理
発想は、こじまうすの光学式エンコーダーと似ています。
こじまうすの光学式は1回転のうちに何回か白と黒が切り替わるように歯をホイールに取り付けており、歯=白黒の切り替わりをフォトリフレクタで読み取ります。
紙式は(紙式も光学式といえるかもですが)、1回転で白から黒、またはその逆の変化となるように、グラデーションを印刷した紙をホイールに張り付けます。フォトリフレクタで紙から跳ね返る光量をはかることで絶対角を読み取ります。グラデーションを使うので、分解能を上げやすいです。(精度?知らない子ですね。何とかなるでしょう。きっと)
[Fig.1 ホイールに張り付けたグラデーション紙]

さて、角度ごとにどんなAD値が検知さえるか見てみましょう。
測定方法はアナログです。(分度器やプリンタが無かったので、養生テープの芯と定規で頑張りましたが、それは別の話)
[Fig.2 タイヤの回転角度-AD値の取得風景]

タイヤの回転角度ごとのAD値はこちら
[Fig.3 タイヤ回転角度-AD値]

理想は|\|\|\|\ですが、/\/\/\となってしまいました。
グラデーション部分は単調減少で変化することがわかります。角度が読み取れそうですね。最も黒から最も白に切り替わる部分はなまされてAD値が変化することがわかります。問題になりそうです。この問題について次の章で対処していきたいと思います。
■5.紙式エンコーダは2つのフォトリフレクタが必要
AD値を角度に変換する際、AD値が○○の時は○degのようにテーブルを作り、AD値からテーブルを参照することで角度を得る手法がリーズナブルです。
前の章に角度ごとにAD値がどのように出るか調べました。
紙の色は最も黒から最も白に切り替わる部分(グラデーションでない部分)でなまされて変化するため、タイヤ1回転で2回同じAD値が存在することになり、AD値-角度のテーブルを作ることができません。テーブルを作成するのは、AD値と角度が一対一で紐づく必要があります。
そこで、最も黒から最も白へ切り替わる(またはその逆の切り替わる)側のフォトリフレクタを使わないようにします。つまり、Fig.3の赤で囲った部分は使わないようにします。そうすることで、AD値と角度が一対一の関係となるため、テーブルを参照し、角度を推定することができます。
しかし、最も黒から最も白へ切り替わる(またはその逆の切り替わる)タイミングで角度を推定できないくなります。そこで、半周ごとにフォトリフレクタでAD値を取得することを考えます。
タイヤ回転時の半周ごとにつけたフォトリフレクタ(以後、0位相とπ位相と呼ぶ)のAD値の変化と関係性を見ていきましょう。
タイヤをおおよそπ/2ずつ回しながらフォトリフレクタフードの写真を撮りました。少なくとも1個のセンサはグラデーション部分であり、最も白(または最も黒)から最も黒(または最も白)への切り替わりタイミングではないことがわかります。つまり、どの角度でもどちらか一方のフォトリフレクタのAD値で角度を推定できることが確かめられました。
[Fig.4 フォトリフレクタフードの様子]

■6.2つのフォトリフレクタからタイヤの絶対角度を推定する
今までの章より、2つのフォトリフレクタをのうち、どちらか一方はグラデーション部分(最も黒(または白)から最も白(または黒)へ切り替わらない部分)となり、交互に2つのAD値を使い、テーブルから角度を参照することで、角度を推定できることがわかりました。
具体的なソフトに落とし込んでいくため、次はAD値ベースで細かくみていきましょう。
タイヤの回転角毎の0位相とπ位相のAD値はθ-ADグラフを見ます。当たり前ですが、πだけ位相がずれて変化していることがわかります。また、写真で見たのと同様に、最低どちらか一方はグラデーション部分となっていることがAD値を見てもわかります。
※θ-ADグラフはわかりやすさのため、最も黒(または白)から最も白(または黒)へ切り替わるする部分はすでに削ってあります。
[Fig.5 0位相とπ位相のAD値の関係]

0位相のAD値を横軸に、π位相のAD値を縦軸にプロットしたグラフがAD-ADグラフであり、このグラフを見ると、2つのフォトリフレクタのAD値の関係がより見やすいです。θ-ADグラフから角度ごとに0位相とπ位相の値を見てAD-ADグラフで追うと、タイヤが1回転するとAD-ADグラフでプロットが1周することがわかります。グラフ上の赤○と数字はその点におけるタイヤの角度を示します。
AD-ADグラフとθ-ADグラフのグラフは一部は薄赤、薄緑、薄黄で塗りつぶされています。それぞれの意味合いは下記となります。つまり、AD-ADグラフを見れば、どちらの位相のAD値を使えば良いか判断できることになります。
薄赤:位相πがグラデーション部分⇒位相πで角度推定
薄黄:位相0がグラデーション部分⇒位相0で角度推定
薄緑:位相0、πともにグラデーション部分⇒位相0、π両方で角度推定
プロットがあるにも関わらず、塗りつぶされていない領域があります。この領域は、角度が0.25~0.35と、0.75~0.85のどちらの範囲にいるかで薄赤か薄黄かが決まります。したがって、AD-ADグラフだけではどちらの位相を使えば良いか判断できない領域となります。直前の絶対角からどちらの範囲にいるか推定することで判断できます。しかし、電源ON時にこの領域にいると角度推定不可のため、角度が推定できるようになるまでタイヤを回すなど工夫が必要です。マイクロマウスはタイヤをモード選択のUIとしていることが多いので、どちらにせよ電源ON時にタイヤを回すことになるので問題にはならなそうですね。
・0.25~0.35の間の場合:薄赤相当で位相πで角度推定
・0.75~0.85の間の場合:薄黄相当で位相0で角度推定
[Fig.5(再掲) 0位相とπ位相のAD値の関係]

直前の絶対角からどちらの角度の範囲か推定できるか検討してみましょう。検討パラメータは下記。
・最高速度:5m/s
・タイヤ直径:12mm
・制御周期:1ms
1周期あたりのタイヤの回転角度は、5m/s*1000/(12*pi)/1000=0.1326[rad/2π]
どちらの位相を使えば良いかその時の値のみではわからない角度は0.25~0.35と0.75~0.85であり、2つの期間の間の角度は0.4[rad/2π]。5m/sの速度で走っても問題なさそうです。
最後のグラフ"AD-θグラフ"を説明しておきます。このグラフは単純にθ-ADグラフの横軸と縦軸を入れ替えただけです。AD-θグラフからテーブルを作成し、AD値から角度を推定することになります。
役者はそろいました。
マイコンに実装する際はAD-ADグラフとAD-θグラフを使います。AD-ADグラフから、どちらの位相のAD値を使えば良いか判断し、判断した位相のAD値から、AD-θグラフをもとに、角度を推定します。両方の位相のAD値が使える場合は、どちらの位相から角度を推定しても同じような角度が推定されるはずです。適当に重みをつけて混ぜましょう。使う位相を切り替える際の値の飛びを防げるはずです。
[Fig.5(再掲) 0位相とπ位相のAD値の関係]

長くなりましたが、紙式エンコーダの絶対角度の推定方法の説明は以上となります。
■7.紙式エンコーダの検知具合
紙式エンコーダで測定した結果を下記に示します。比較対象として前作の磁気式エンコーダの結果を乗せます。比較する量としては、今回と前回の角度から単純に差分をとって求めた速度を用いています。
式:速度[mm/s]=(今回角度[rad]-前回角度[rad])*6[mm]*1000[1/s]
Φ2[mm]を使ったノウハウがないころに作成した磁気式エンコーダとの比較なので、"まともな自作磁気式エンコーダ"と比較はできておりませんが、前作の磁気式エンコーダで走っていることから、今作の紙式エンコーダは問題なく走れると思われます。ただし、ブレは小さい方が良いわけで、加速度センサと相補フィルタをするなど、ブレの低減をしたほうが良いのかもしれません。
[Fig.6 紙式エンコーダと磁気式エンコーダの比較]

■8.紙式エンコーダに使った素子
紙式エンコーダには小さいスペースにフォトリフレクタを収める必要があります。ちょうどよいセンサーがありますので、紹介します。
サイズは3.2mm*1.7mm*1.1mmで表面実装のフォトリフレクタのモジュールです。
https://www.digikey.jp/ja/products/detail/sharp-socle-technology/GP2S60B/1642454
応答速度は1kΩをフォトトランジスタに直列につないだ場合で10μsといったところ。5m/sで走っているときの10μsでの角度変化は、
5[m/s]*1000[mm]/12[mm]/pi*(1/1000)*(1/1000)*10[μs]=0.0013[rad/2π]
フォトトランジスタの応答速度だけを考えた場合、5m/sで走った場合に10bit程度の分解能が得られることがわかりました。
応答としては十分そうですね。
[Fig.7 フォトリフレクタ応答速度]

ピンボケで申し訳ありませんが、メイン基板に立てた基板に実装しています。
[Fig.8 紙式エンコーダ用フォトリフレクタモジュール]

簡単ですが、回路図も公開します。電流制限抵抗は33.3Ωにしています。(なぜこんな抵抗値?と思うかもしれません。最初は100Ωで、弱かったので、1個並列でついかして、さらにもう一個並列に...の結果です)
[Fig.9 紙式エンコーダ用フォトリフレクタ回路図]

■9.Matlabのススメ
Matlab芸人まではいかないですが、マイクロマウス界のMatlab伝道師となりつつあるため、今回もMatlab活用を紹介しようと思います。
その①:エンコーダキャリブレーション
2つのAD値からどちらの位相のセンサーを使うのか、またAD値から角度を参照するテーブルをマイコンに書き込む必要があります。タイヤを空転させたときのAD値の時系列変化から、マイコンに囲む値やテーブルの自動生成をMatlabで行っています。
[Fig.10 Matlabによる紙式エンコーダーキャリブレーションの様子]

その②:絶対角推定Cコードの動作確認
ソフトをマイコン上で直接デバックするのは大変です。そこで、作成したCコードをS-Function Builderを使ってSimulinkに組み込み、AD値の時系列データを流し込むことで正しく推定できているか確認しました。角度から速度を演算するアルゴもSimulinkでサクッと組み確認できました。
[Fig.11 Matlabによる絶対角推定Cコードの動作確認]

■10.まとめ
長文になってしまいましたが、大きく分けると
①紙式エンコーダを作るに至った背景
②紙式エンコーダの角度推定方法
③検知具合の確認
④使った部品
⑤MATLAB活用事例
を紹介させていただきました。みなさんも紙式エンコーダにトライしてみましょう!
また、最後にですが、3月に2年ぶりの全日本大会が開催されます。
この前関西リアル大会に参加してリアルは良いものだなと思いました。
皆さん新作間に合わせましょう!楽しみにしています。
■11.明日は...
次の日はPIDream.net氏の「真上から迷路を撮影しよう」です。経路検知とか、トレーサーの判定とかいろいろ参考になりそうな記事です。楽しみにしています。
昨日の記事は、らしゃ氏の「ロボコンに興味を持った中学生はどうなったか」です。
私も父親も、家電の調子が悪くなれば蓋をあけて...の人で、ごくごく普通のご家庭には"はんだごて"があるものだと思っていました。誤家庭であったようです。
■1.今年のテーマ
さて、このブログは年1回のAdvent Calendarを書くことが存在意義のようになっていますが...その話は置いておくとして、
今年は、新たに自作した”紙”式エンコーダを紹介しようと思います。推敲不足はご容赦ください。
■2.なぜエンコーダーを自作するのか?
マイクロマウサー(旧ハーフマウサー)は大抵の場合、完成品ではなくエンコーダを自作します。
その理由を明らかにし、紙式エンコーダを作るに至った背景を説明します。
マイクロマウスは壁に沿って走行しないタイミングがあります。
壁に追従しているだけでは走れないため、オドメトリをとって走行します。
オドメトリを求める際、機体のヨー角とタイヤの角速度を下記2つのセンサで測定することが主流です。
・機体のヨー角速度:MEMSジャイロ
・タイヤの角速度:ロータリーエンコーダーの微分
MEMSジャイロは4mm×4mmなど小さく軽いものが市販されていますが、
ロータリーエンコーダーの完成品は重く、大きいです。
そのため、マイクロマウス(旧:ハーフマウス)は小さく軽いエンコーダーを求め、自作することになります。
■3.主流のエンコーダー
主流のエンコーダーは2種類。(ほぼ1種類といっていいかもしれません)
方式①:磁気式エンコーダー
ほとんどの人が使っている手法
長所①:必要な精度を出すための知見がすでにある
短所①:磁石を使うため、モーターと磁気が干渉する※
短所②:磁石と磁気シールドが重い(左右両方で1.5gくらい)
参考:http://maimaimouse.blog.fc2.com/blog-entry-46.html
方式②:光学式エンコーダー
長所①:磁気式よりもさらにコンパクト、軽量に作れる
短所①:自作ではパルス数が分解能が高くなく、速度を得るには工夫が必要
参考:https://kojimousenote.blogspot.com/2015/11/blog-post.html
※エンコーダーにしようする磁石がモータの金属に引き寄せられる
磁気式で走れることはわかっていますが、磁石と磁気シールドのセット2つで1.5g程度あります。
システム全体で10g程度を狙うマイクロマウスでは大きな値ですよね?もっと軽くしたいと思いませんか?
磁気の干渉もいやですよね?
しかし、光学式は分解能が高くないため、速度を得るのに苦労しそうですよね?
⇒ということで、分解能が磁気式と光学式の間で、光学式レベルに軽量なエンコーダーを自作しようと思います。
■4.紙式エンコーダーの原理
発想は、こじまうすの光学式エンコーダーと似ています。
こじまうすの光学式は1回転のうちに何回か白と黒が切り替わるように歯をホイールに取り付けており、歯=白黒の切り替わりをフォトリフレクタで読み取ります。
紙式は(紙式も光学式といえるかもですが)、1回転で白から黒、またはその逆の変化となるように、グラデーションを印刷した紙をホイールに張り付けます。フォトリフレクタで紙から跳ね返る光量をはかることで絶対角を読み取ります。グラデーションを使うので、分解能を上げやすいです。(精度?知らない子ですね。何とかなるでしょう。きっと)
[Fig.1 ホイールに張り付けたグラデーション紙]

さて、角度ごとにどんなAD値が検知さえるか見てみましょう。
測定方法はアナログです。(分度器やプリンタが無かったので、養生テープの芯と定規で頑張りましたが、それは別の話)
[Fig.2 タイヤの回転角度-AD値の取得風景]

タイヤの回転角度ごとのAD値はこちら
[Fig.3 タイヤ回転角度-AD値]

理想は|\|\|\|\ですが、/\/\/\となってしまいました。
グラデーション部分は単調減少で変化することがわかります。角度が読み取れそうですね。最も黒から最も白に切り替わる部分はなまされてAD値が変化することがわかります。問題になりそうです。この問題について次の章で対処していきたいと思います。
■5.紙式エンコーダは2つのフォトリフレクタが必要
AD値を角度に変換する際、AD値が○○の時は○degのようにテーブルを作り、AD値からテーブルを参照することで角度を得る手法がリーズナブルです。
前の章に角度ごとにAD値がどのように出るか調べました。
紙の色は最も黒から最も白に切り替わる部分(グラデーションでない部分)でなまされて変化するため、タイヤ1回転で2回同じAD値が存在することになり、AD値-角度のテーブルを作ることができません。テーブルを作成するのは、AD値と角度が一対一で紐づく必要があります。
そこで、最も黒から最も白へ切り替わる(またはその逆の切り替わる)側のフォトリフレクタを使わないようにします。つまり、Fig.3の赤で囲った部分は使わないようにします。そうすることで、AD値と角度が一対一の関係となるため、テーブルを参照し、角度を推定することができます。
しかし、最も黒から最も白へ切り替わる(またはその逆の切り替わる)タイミングで角度を推定できないくなります。そこで、半周ごとにフォトリフレクタでAD値を取得することを考えます。
タイヤ回転時の半周ごとにつけたフォトリフレクタ(以後、0位相とπ位相と呼ぶ)のAD値の変化と関係性を見ていきましょう。
タイヤをおおよそπ/2ずつ回しながらフォトリフレクタフードの写真を撮りました。少なくとも1個のセンサはグラデーション部分であり、最も白(または最も黒)から最も黒(または最も白)への切り替わりタイミングではないことがわかります。つまり、どの角度でもどちらか一方のフォトリフレクタのAD値で角度を推定できることが確かめられました。
[Fig.4 フォトリフレクタフードの様子]

■6.2つのフォトリフレクタからタイヤの絶対角度を推定する
今までの章より、2つのフォトリフレクタをのうち、どちらか一方はグラデーション部分(最も黒(または白)から最も白(または黒)へ切り替わらない部分)となり、交互に2つのAD値を使い、テーブルから角度を参照することで、角度を推定できることがわかりました。
具体的なソフトに落とし込んでいくため、次はAD値ベースで細かくみていきましょう。
タイヤの回転角毎の0位相とπ位相のAD値はθ-ADグラフを見ます。当たり前ですが、πだけ位相がずれて変化していることがわかります。また、写真で見たのと同様に、最低どちらか一方はグラデーション部分となっていることがAD値を見てもわかります。
※θ-ADグラフはわかりやすさのため、最も黒(または白)から最も白(または黒)へ切り替わるする部分はすでに削ってあります。
[Fig.5 0位相とπ位相のAD値の関係]

0位相のAD値を横軸に、π位相のAD値を縦軸にプロットしたグラフがAD-ADグラフであり、このグラフを見ると、2つのフォトリフレクタのAD値の関係がより見やすいです。θ-ADグラフから角度ごとに0位相とπ位相の値を見てAD-ADグラフで追うと、タイヤが1回転するとAD-ADグラフでプロットが1周することがわかります。グラフ上の赤○と数字はその点におけるタイヤの角度を示します。
AD-ADグラフとθ-ADグラフのグラフは一部は薄赤、薄緑、薄黄で塗りつぶされています。それぞれの意味合いは下記となります。つまり、AD-ADグラフを見れば、どちらの位相のAD値を使えば良いか判断できることになります。
薄赤:位相πがグラデーション部分⇒位相πで角度推定
薄黄:位相0がグラデーション部分⇒位相0で角度推定
薄緑:位相0、πともにグラデーション部分⇒位相0、π両方で角度推定
プロットがあるにも関わらず、塗りつぶされていない領域があります。この領域は、角度が0.25~0.35と、0.75~0.85のどちらの範囲にいるかで薄赤か薄黄かが決まります。したがって、AD-ADグラフだけではどちらの位相を使えば良いか判断できない領域となります。直前の絶対角からどちらの範囲にいるか推定することで判断できます。しかし、電源ON時にこの領域にいると角度推定不可のため、角度が推定できるようになるまでタイヤを回すなど工夫が必要です。マイクロマウスはタイヤをモード選択のUIとしていることが多いので、どちらにせよ電源ON時にタイヤを回すことになるので問題にはならなそうですね。
・0.25~0.35の間の場合:薄赤相当で位相πで角度推定
・0.75~0.85の間の場合:薄黄相当で位相0で角度推定
[Fig.5(再掲) 0位相とπ位相のAD値の関係]

直前の絶対角からどちらの角度の範囲か推定できるか検討してみましょう。検討パラメータは下記。
・最高速度:5m/s
・タイヤ直径:12mm
・制御周期:1ms
1周期あたりのタイヤの回転角度は、5m/s*1000/(12*pi)/1000=0.1326[rad/2π]
どちらの位相を使えば良いかその時の値のみではわからない角度は0.25~0.35と0.75~0.85であり、2つの期間の間の角度は0.4[rad/2π]。5m/sの速度で走っても問題なさそうです。
最後のグラフ"AD-θグラフ"を説明しておきます。このグラフは単純にθ-ADグラフの横軸と縦軸を入れ替えただけです。AD-θグラフからテーブルを作成し、AD値から角度を推定することになります。
役者はそろいました。
マイコンに実装する際はAD-ADグラフとAD-θグラフを使います。AD-ADグラフから、どちらの位相のAD値を使えば良いか判断し、判断した位相のAD値から、AD-θグラフをもとに、角度を推定します。両方の位相のAD値が使える場合は、どちらの位相から角度を推定しても同じような角度が推定されるはずです。適当に重みをつけて混ぜましょう。使う位相を切り替える際の値の飛びを防げるはずです。
[Fig.5(再掲) 0位相とπ位相のAD値の関係]

長くなりましたが、紙式エンコーダの絶対角度の推定方法の説明は以上となります。
■7.紙式エンコーダの検知具合
紙式エンコーダで測定した結果を下記に示します。比較対象として前作の磁気式エンコーダの結果を乗せます。比較する量としては、今回と前回の角度から単純に差分をとって求めた速度を用いています。
式:速度[mm/s]=(今回角度[rad]-前回角度[rad])*6[mm]*1000[1/s]
Φ2[mm]を使ったノウハウがないころに作成した磁気式エンコーダとの比較なので、"まともな自作磁気式エンコーダ"と比較はできておりませんが、前作の磁気式エンコーダで走っていることから、今作の紙式エンコーダは問題なく走れると思われます。ただし、ブレは小さい方が良いわけで、加速度センサと相補フィルタをするなど、ブレの低減をしたほうが良いのかもしれません。
[Fig.6 紙式エンコーダと磁気式エンコーダの比較]

■8.紙式エンコーダに使った素子
紙式エンコーダには小さいスペースにフォトリフレクタを収める必要があります。ちょうどよいセンサーがありますので、紹介します。
サイズは3.2mm*1.7mm*1.1mmで表面実装のフォトリフレクタのモジュールです。
https://www.digikey.jp/ja/products/detail/sharp-socle-technology/GP2S60B/1642454
応答速度は1kΩをフォトトランジスタに直列につないだ場合で10μsといったところ。5m/sで走っているときの10μsでの角度変化は、
5[m/s]*1000[mm]/12[mm]/pi*(1/1000)*(1/1000)*10[μs]=0.0013[rad/2π]
フォトトランジスタの応答速度だけを考えた場合、5m/sで走った場合に10bit程度の分解能が得られることがわかりました。
応答としては十分そうですね。
[Fig.7 フォトリフレクタ応答速度]

ピンボケで申し訳ありませんが、メイン基板に立てた基板に実装しています。
[Fig.8 紙式エンコーダ用フォトリフレクタモジュール]

簡単ですが、回路図も公開します。電流制限抵抗は33.3Ωにしています。(なぜこんな抵抗値?と思うかもしれません。最初は100Ωで、弱かったので、1個並列でついかして、さらにもう一個並列に...の結果です)
[Fig.9 紙式エンコーダ用フォトリフレクタ回路図]

■9.Matlabのススメ
Matlab芸人まではいかないですが、マイクロマウス界のMatlab伝道師となりつつあるため、今回もMatlab活用を紹介しようと思います。
その①:エンコーダキャリブレーション
2つのAD値からどちらの位相のセンサーを使うのか、またAD値から角度を参照するテーブルをマイコンに書き込む必要があります。タイヤを空転させたときのAD値の時系列変化から、マイコンに囲む値やテーブルの自動生成をMatlabで行っています。
[Fig.10 Matlabによる紙式エンコーダーキャリブレーションの様子]

その②:絶対角推定Cコードの動作確認
ソフトをマイコン上で直接デバックするのは大変です。そこで、作成したCコードをS-Function Builderを使ってSimulinkに組み込み、AD値の時系列データを流し込むことで正しく推定できているか確認しました。角度から速度を演算するアルゴもSimulinkでサクッと組み確認できました。
[Fig.11 Matlabによる絶対角推定Cコードの動作確認]

■10.まとめ
長文になってしまいましたが、大きく分けると
①紙式エンコーダを作るに至った背景
②紙式エンコーダの角度推定方法
③検知具合の確認
④使った部品
⑤MATLAB活用事例
を紹介させていただきました。みなさんも紙式エンコーダにトライしてみましょう!
また、最後にですが、3月に2年ぶりの全日本大会が開催されます。
この前関西リアル大会に参加してリアルは良いものだなと思いました。
皆さん新作間に合わせましょう!楽しみにしています。
■11.明日は...
次の日はPIDream.net氏の「真上から迷路を撮影しよう」です。経路検知とか、トレーサーの判定とかいろいろ参考になりそうな記事です。楽しみにしています。
スポンサーサイト