SSブログ

GYROとGR-SAKURAとスマートアナログで電子分度器の製作 [RX&SH&H8]

gyro_05.png
β版のスマートアナログシールドには2軸のGYROセンサーが搭載されており、これを使って
分度器を作ってみよう!と言うのが今回の企画です。


1.スマートアナログICの利用

まずジャイロ(ENC03)の出力は結構小さいです。最大検出範囲が±300deg/secであり、
感度が0.67mV/deg/secである事から、出力の最大振幅は201mVpとなります。
gyro_01.png


一方RXマイコンのADCの入力範囲はVrefで決まってしまいますが、電源電圧をVrefとした
場合は3.3Vのダイナミックレンジ。つまり最大3.3V入力できるところに402mVしか
入れないのは実に勿体無い。
※402mV/3.3Vで約1/8では、12bitの分解能が有っても実質9bit相当で使う事になる。

そこでスマートアナログICのコンフィギュレーションアンプの設定でこれを最適化します。

まずはSA Designerで回路構成を見てみます。ブロック図から直接設定を行う事で、反転、
非反転、差動、計装アンプの組み合わせを行う事ができ、またゲインやオフセットを
調整できます。
gyro_02.png
例えばゲイン設定はマウスオーバーすれば番号とゲイン(dBまたは帰還抵抗の値)の対応
が表示されますので、その中から適切な値を選択します。
図では4を選択していますが、非反転アンプの場合は16dBとなります。

オフセットはDACの出力を設定します。表示の1.9Vは実は5V基準で計算した値で、この辺
は直して欲しいのですが、3.3Vなら1.25V辺りとなります。
なおDACの上限、下限の基準電圧は4つのパターンから選ぶ事ができ、DAC自体は8bitの分
解能ですが、上限、下限の設定で調整範囲をもっと狭くすればより精度を上げる事ができ
ます。


スマートアナログIC(SA500)にはこれ以外にフィルター回路やレギュレーター、汎用アンプ
等がICの中に組み込まれていますが、今回は初段のアンプのみ使用しています。

2つのジャイロセンサーの出力をそれぞれ初段のAMP1、AMP2に入力し、ゲインとオフセッ
トを設定して可能な限りADCのダイナミックレンジを有効に使うようにスマートアナログ
ICを設定します。

スマートアナログICを使った設計の支援としてWEB上で実行できるシミュレーターをルネサス
は用意していますが、この位の回路なら手元でやってしまうのも手ですね。
NI Multisim アナデバ版で動作確認してみました。
gyro_03.png


まあ大体良いんじゃないでしょうか。もう少しオフセットを大きくすれば動作点が下がり
ます。振幅が最大、最小を超えなければ、後はソフトウエアで対応可能ですので。

2.角度を計算する為には
ジャイロセンサーは軸を中心とした回転運動の角速度を出力する物らしい。なので角速度
を時間で積分すれば角度になる筈。ADCで定周期にサンプリングを行い、それを足し算して
行けば良いのか!。
※実際には先の0.67mV/deg/secの係数とか、ゲインとかから実際の加速度を求める

ENC03についてぐぐる先生に聞いてみました。他力本願ですいません。温度ドリフトが結
構有るみたいで、その分の補正が必要みたいです。そうしないとドリフト分を全部積分し
て謎の角度を出してしまいます。

このドリフトをキャンセルする方法として良さそうなのが最小二乗法でした。最小二乗法
を使って温度ドリフトの予測値を算出し、それで補正を掛けます。

もう少し詳しく書くと、静止状態の時に予測する為のデータを収集し、動作中にこのデータ
を基にした予測値で補正を入れます。

こうして定周期でサンプリングしたADCの値からオフセット分をキャンセルした値を加算
して行けば、変化した角度を算出する事ができます。

3.GR-SAKURAのADCの使い方
タイマーと12bit ADCを連動させて定周期でアナログデータの変換を掛け、変換完了後の
ADCの割込みでバッファに取り込んでいます。

定周期を発生するタイマーは8bitタイマーをカスケードに使用して16bitのタイマーとして
構成しています。このサンプルでは10ms周期でやっています。

12bit ADC自体も、機能として最大4回のサンプリングを加算してレジスタに保存する事が
できる加算機能を使ってサンプリングの精度を良くしています。まあ使ってみたかった
だけですが。

変換結果はADCの割込みでハンドラーを起動し、その中でリングバッファに保存しています。
その為、WEBコンパイラのgr_common下に有るintvect.cの内容を修正する必要があります。
※通常のanalogReadは割込みを使用していない。

※ちょっと訳有で本来はAN001とAN002に入る入力ですが、AMP1の出力をAN004、AMP2の出力
をAN005に繋ぎ直しています。

4.実際に角度を計ってみよう
gyro_05.png
写真の様に基板を置きます。スマートアナログシールド上のGYROセンサーには、基板を平
たく置いた時に検出する軸が無いので、この様な置き方になります。ちょっとやり難いです。

紙に30度刻みで直線を引き、その上に基板を置いて回転させてみて、モニター出力の角度を
見てみました。


gyro_04.png
この様にUSB(シリアル)に接続したPC上のTeratermで現在の角度とADC出力の積分値を見る事
ができます。
※この写真を撮影した後に表示はsen1だけにしてしまいました。

本当はGR-SAKURA上の青ボタンを押すと表示上の角度を0クリアするのですが、とてもじゃな
いけれどまともに触れないので、一定時間出力が安定すると自動的に0クリアしています。

※たまに発散する様な現象が見れるのだが、なんだろう?あれは。


以下のリンク先にサンプルのプロジェクトを置いて置きます。

https://dl.dropbox.com/u/60463387/grsakura/gyroProtractor.zip

XBeeで作るワイヤレスセンサーネットワーク (Make: PROJECTS)

XBeeで作るワイヤレスセンサーネットワーク (Make: PROJECTS)

  • 作者: Robert Faludi
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2011/12/09
  • メディア: 大型本






nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。