• 締切済み

ジャイロセンサの出力について

現在、ジャイロセンサを用いた実験を行っているのですが、 ジャイロセンサをプラス方向に運動させ、 運動を急に止めるとマイナスの値が出力されてしまいます。 このマイナス成分をなくすためにはどのようにしたら良いでしょうか。 実験ではMATLAB/Simulink、dSPACEを使用しています。 ジャイロセンサは、KYOHRITSUのSK-GYRO(村田製作所製の 圧電振動ジャイロ「ENC03J」にローパス、ハイパスフィルタが ついています)です。 また、急停止してもマイナスの値が出力されないようなジャイロセンサ をご存知の方はご教授お願いします。 宜しくお願いします。

  • 科学
  • 回答数4
  • ありがとう数3

みんなの回答

回答No.4

昨日の,回答はちょっと不親切でした。もう一度,順序立てて説明します。 まず 貴殿の使用している回路は,微分回路と積分回路からなるバンドパスフィルター回路です。 今,お悩みの現象は,微分回路としての特性をどうしたものかと質問であることを認識してください。 従って,対処方法の一つは、微分回路のC1とR1を取り除くことです。センサ出力信号をOPの+へ結ぶことで, お悩みの現象は消えます。 どうしても,DC成分のドリフトを除去したいのでしたら,今回の回路としては,角速度信号ではなくて,加角速度信号になっているということで、微分信号を積算して,角速度信号にしてください。 すなわち,角度にするには,時間の2重積分です。積分定数を調整する必要があります。 私は,1番目の,微分回路部分を除去することをお勧めします。 それでもドリフトが気になるようでしたら,エプソントヨコムの素子を使用してみたら如何ですか? 村田さんの素子でも,短時間の角度変化の測定でしたら、ドリフト量は,あまり気になりません。 温度変化によるDC成分の変化はどうしても気になるでしょうから, AD変換後の温度補正による,処置をする手もあります。  頑張ってください。

回答No.3

村田さんの推奨回路を使用している思います。 この回路は,ゼロ点ドリフトを除去するために,ハイパスフィルターが入っています。 私は,エプソントヨコム製のXV-3500BCを利用しました。DC成分をカットする部分をやめて,利用しています。 元々、センサの温度特性も良いので,DC成分のドリフトは無視できます。 基本的に,この問題を解決するには,DC成分をカットしないことです。(私は,センサ出力の最初のコンデンサーを取り外して、ショートする回路にして,そのような応答特性を回避しています。)

参考URL:
http://rugbysensor.com/~ohata/
  • inara1
  • ベストアンサー率78% (652/834)
回答No.2

>ハイパスフィルタの4.7[μF]をショートしてみたのですが、それでも急減速したときマイナスの値がでてしまいました そうですか。ショートしてもマイナスになるのなら、コンデンサに溜まった電荷によるものではないのですね。4.7μFのコンデンサをショートした状態で急減速したとき、CN2 の出力でなく、ジャイロセンサの出力端子にもマイナスの信号が出ますか?

  • inara1
  • ベストアンサー率78% (652/834)
回答No.1

ジャイロモジュールはこれ(http://www.kyohritsu.com/CATALOG/SENSOR/PHOTO/skgyro.jpeg)ですね。マイナスの値が出力されるというのはコネクタ2(CN2)のところですね。 ジャイロモジュールの内部回路(http://www.kyohritsu.com/CATALOG/SENSOR/PICTURE/skgyro.gif)を見ると、CN2 の出力は、1.2V(静止時)を中心に振れますが、OPアンプの負側の電源電圧が 0V なので、マイナスの出力が出ることはないと思います。 ただ、ハイパスフィルタに使われているコンデンサの容量が大きいので、急減速したとき、過渡的にハイパスフィルタの出力がマイナスになるのかもしれません。その場合はコンデンサの容量を 1μF などに落とせばよくなるかもしれませんが、同時に、ゆっくりした動きにに対する感度が落ちます。ゆっくりした動きにに対する感度を落とさないようにするには、ハイパスフィルタに使われているコンデンサの容量と抵抗の積を一定にすることです( コンデンサを 1μF にしたら、抵抗を 470kΩ にする)。 全体の感度を落としてもいいのなら、10kΩの抵抗を 22kΩとか 33kΩ とかに変更すれば、出力信号は小さくなりますが、マイナス側に振れにくくなると思います。

kinumaru
質問者

お礼

早速のご回答ありがとうございます。 回路のことはよく分からないのでとても参考になりました。 SK-GYROの説明書に、「ハイパスフィルタの4.7[μF]で、 DCカットする回路となっていますが、0.3[Hz]以下の場合、 微分された出力となり、データの取り扱いが面倒となります。 これを避けるため、動作確認後は、4.7[μF]をショートして ご使用されたほうが計測用途としてデータの扱い及び意味合いが 明確となります(∵一般に角速度はDC成分が重要となるため)。」 とあったため、ハイパスフィルタの4.7[μF]をショートしてみたの ですが、それでも急減速したときマイナスの値がでてしまいました。 inara1さんからご教授していただいた方法は、ハイパスフィルタの 4.7[μF]をショートする方法とは全く別の感じなのでしょうか。

関連するQ&A

  • ジャイロセンサを用いた角度の算出について

    現在二足歩行ロボットを製作しているのですが、ボディ剛性が低いのとモーターを増やしすぎた(RC用のサーボを26個使用しています)ためか、直立状態でも姿勢が安定しないことから、姿勢の安定化のためのフィードバック用にジャイロセンサを利用しようとしたのですが、多々の問題から上手く角度が算出できずに困っています。ジャイロセンサを扱った経験のある方がいらっしゃいましたら御指導願います。 マナーが悪くて恐縮なのですが、同様の質問を下記のURLでしています。 http://oshiete1.goo.ne.jp/qa4561017.html 上記のURLでいただいたアドバイスを元に、現在はサーボ1個をジャイロを動かすために使用し、マイコンのA/Dで値を取得してexcelで計算という作業を繰り返しています。 開発環境は下記の様になります。 ・ジャイロセンサ →村田製作所製圧電振動ジャイロENC-03R(秋月電子製圧電振動ジャイロキットをそのまま使用し、オペアンプの出力をマイコンのA/Dに直結) 印加電圧:3.38V(マイコンに印加している電圧をそのままセンサに分岐) 静止時出力:約1.41V(たまたまかもしれませんが手元にある2個のジャイロキットは大体これ位出力しています) ・マイコン →SH7144F(秋月電子製SH7144Fマイコンボード(12.5MHz)) クロック設定PΦ=25MHzシングルチップモード ・コンパイラ →GCC ・現在行っていること (1)SH7144のA/Dを10bit、PΦ/8で連続スキャンモードにし、CMTを8msec(センサの応答20msecの2.5倍でサンプリング)で割り込みさせてA/Dの結果をUARTでPCに出力。 (2)UART割り込みでサーボを90°回転。このときサーボ回転開始時と停止時に"S"と"E"をPCに出力し、サーボの回転時間を計算できるようにしておく。 (3)SH7144からのUART出力をPCのハイパーターミナルでテキストキャプチャして結果をexcelに入力。 (4)excelにてA/Dの結果→電圧→角速度→角度を計算。同時にサーボの回転時間と角度から平均角速度を算出して比較。 現在抱えている問題 (1)角速度計算結果について 今回使用しているジャイロキットの場合、角速度を求める式は下記の式であっているでしょうか?キットの回路は村田製作所から出ている増幅回路例と同じです。 ENC-03Rのカタログ http://​www.murata.co.jp/catalog/s42.pdf​ 角速度=(A/D出力-静止時出力)*(3.38/1024)/(感度*ローパスフィルタの増幅度) ※静止時出力=静止時のA/D出力をあらかじめメモして代入  感度=0.00067[V/deg/sec]  ローパスフィルタの増幅度=10[倍](カタログの回路図より直流増幅度) 参考URL http://okwave.jp/qa3523603.html?ans_count_asc=0 http://www.hokutodenshi.co.jp/PUPPYSupportPage/soft/status/status.html (2)センサーからの出力について ・他の人のホームページを見た感じのセンサの出力                          /\               /    \ ↑センサ出力    /       \ 静止電圧___/           \                          \/ ̄ ̄ ̄     →時間 参考URL http://tkstechnology.web.fc2.com/robot/system/enc_03.html ・私の持っているジャイロキットの出力                          /\               /    \ ↑センサ出力    /       \ 静止電圧___/           \                          \       / ̄ ̄ ̄                            \    /                             \  /                              \/     →時間 上記のような出力のせいか、積分の式が間違っているのか、または別の問題か積算していくうちに角度の計算結果が0付近に戻ってしまいます 。 (3)積分について 数値積分の表記は下記のようであっているでしょうか。 C風表記 kakudo = kakudo + (kakusokudo_s + kakusokudo) * (t / 2); kakusokudo_s = kakusokudo; (上記をタイマで繰り返す) ※kakudo:角度(初期値0)[deg]  kakusokudo_s:一回前のサンプリング時の角速度(初期値0)[deg/sec]  kakusokudo:サンプリングした角速度(初期値0)[deg/sec]  t:サンプリングタイム[sec] excel風表記 角度 = 1セル前の角度 + (1セル前の角速度 + 角速度) * (サンプリングタイム / 2) (2)の問題で、時間がたつにつれて計算結果が0付近になってしまうのも問題なのですが、サンプリングタイムに0.008[sec]を代入しても、角度の値が出てこなくて困っています。

  • ジャイロセンサは加速度の影響を受ける?

    ジャイロセンサで傾斜角を測ろうとしています。 使用しているのはSTMicro製のLPR5150ALを載せたSparkfun製の ブレイクアウトで、ブレッドボード上でマイコン(Arduino nano) に接続してシリアル経由で値を読んでいます。 ジャイロを使うと加速度の影響を受けずに角速度を得られると思って いたのですが、例えば平らな机の上に置いたブレッドボードを 「すーっ」と平行に移動した場合、ジャイロからしっかりと出力が 得られてしまいます。 これは「ジャイロは加速度に影響されない」という理解が間違って いるのでしょうか?それともMEMSジャイロ固有の問題なのでしょうか?

  • ジャイロセンサーの繰り返し誤差の補正について

    マイコン初心者です。 SH7144のA/Dコンバーターにジャイロセンサーを接続し、ジャイロの出力を積分して、角度を求めようとしました。下記のコードで、積分値は出せたのですが、ジャイロを一度傾けて元に戻しても初期値に戻らず、オフセットが残ってしまいます。積分前の出力を見ると、CW側にジャイロを回すと、CW側に値が振れた後にCCW側へ少し値が振れているようなので、角速度のデータから来る誤差じゃないかと自分では仮説を立ててみたものの、その補正のところでつまづいてしまいました。 質問はCだけの問題ではないかもしれませんが、組み込みでジャイロセンサーを扱った経験のある方がいましたら、ご教授をお願いいたします。 ジャイロセンサーは村田製作所製圧電振動ジャイロ、ジャイロスターを使用し、カタログに載っているハイパスフィルタとローパスフィルタを通して、SH7144のA/Dコンバーターへ接続しています。 ・ジャイロスターのカタログ ttp://www.murata.co.jp/catalog/s42.pdf 角速度はコンペアマッチタイマを使用し、ノイズ対策のためにCMT0で角速度の平均値を計算しています。CMT0は0.8msecごとにで割り込みが発生するように設定し、main()ではタイマのカウンタを開始するコードのみを書いています。下記にCMT0割り込みのコードを示します。 void int_cmi0(void) { unsigned static int t_ave = 0; static short int adc0_buffer[3] = {0, 0, 0}; unsigned short int i; unsigned static short int count0 = 1; adc0_buffer[0] = adc0_buffer[0] + AD0.ADDR0.BYTE; adc0_buffer[1] = adc0_buffer[1] + AD0.ADDR1.BYTE; adc0_buffer[2] = adc0_buffer[2] + AD0.ADDR2.BYTE; t_ave++; if( t_ave > 100) //AD0のADDR0~2の100回平均を求めています { for(i = 0; i < 3; i ++) { data_adc0[i] = (adc0_buffer[i] / t_ave) - 109; //"109"は静止時の出力電圧を示しています if(-3 <= data_adc0[i] && data_adc0[i] <= 3) //平均しても振れてしまう値の分をカットしています { data_adc0[i] = 0; } adc0_buffer[i] = 0; if(count0 > 89) //電源投入時にdata_adc0[]の値が安定しないため、最初の10個のデータを捨てています。 { count0 = 100; } else { count0++; data_adc0[i] = 0; } } t_ave = 0; } CMT0.CMCSR.BIT.CMF = 0; //コンペアマッチフラグをクリア } 角度は、CMT1を使用し、8msecの間隔で割り込みを発生させ計算しています。最終的な計算結果は、SH7144のSCIを使用して、PCのハイパーターミナルに表示しています。 void int_cmi1(void) { static short int adc0_buffer_s[3] = {0, 0, 0}; //角速度の初期値を入れるバッファです  unsigned static short int count1 = 1;  short int i; for(i = 0; i < 3; i ++) { data_adc0i[i] =data_adc0i[i] + ((adc0_buffer_s[i] + data_adc0[i]) / 2); //積分を行う部分です。最終的に制御用のゲインにしようと考えているので、時間項8msecは明記していないです。 adc0_buffer_s[i] = data_adc0[i]; if(count1 > 89) //角速度と同様最初の10個のデータは0にしています { count1 = 100; } else { count1++; data_adc0i[i] = 0; } } CMT1.CMCSR.BIT.CMF = 0; //コンペアマッチフラグをクリア } main()では、各機能のイニシャライズと各CMTのカウンタ動作を開始するコードのみを書いています。ハイパーターミナルで動作が見れているので、各機能は動作していると思います。 void main(void) { initIO(); //各機能のイニシャライズです。 initINT(); initSCI(); initADC(); initCMT(); CMT.CMSTR.BIT.STR0 = 1; //CMT0カウント開始 CMT.CMSTR.BIT.STR1 = 1; //CMT1カウント開始 while(1); }

  • トランジスタ1石を用いた簡易的なインピーダンス変換について

    センサーのオフセット電圧を調整する回路を書いてみたのですが、設計方針が正しいか分らないため、御指導願います。 対象のセンサーは村田製作所製ジャイロスターで、具体的には秋月電子より販売しているジャイロキットになります。 http://www.murata.co.jp/products/catalog/pdf/s42.pdf キットの内容は上記URLのカタログに載っている増幅回路例とほぼ同一です。ハイパスフィルタが微分回路として働き出力波形が下記のようになってしまうため、ハイパスフィルタをはずした結果、センサー停止時のオフセット電圧が1.2V~1.6Vとばらつくためセンサー出力のオフセット電圧を調整する回路を作る必要が出てきた次第です。                          /\               /    \ ↑センサ出力    /       \ 静止電圧___/           \                          \       / ̄ ̄ ̄                            \    /                             \  /                              \/     →時間 ・回路のVccは3.3V単一電源になります。 ・センサー出力は回路図のV2になります。 ・使用するオペアンプはLM324を考えています。 ・U1周りの回路は、センサー出力を1.35Vにしたいのですが、センサー出力が1.2Vの場合、後段の差動増幅が上手く働かない為、1.3倍の非反転増幅をとっています。 ・U2周りの回路は増幅度1倍の差動増幅をとっています。 ・R8、R11(R11はVRと仮定)、R9を使ってVccを分圧してオフセット調整用の電圧を作っています。 ※質問 差動増幅を取るに当り、R11から直接R4に接続した場合、R4の抵抗値が変動してしまい、R4=R3の条件が崩れてしまうことから"センサー出力 - オフセット調整電圧"という単純な式が崩れてしまいます。このことからインピーダンス変換の意味合いを込めて分圧器と差動増幅器の間に2SC1815を用いたエミッタフォロワを挿入しました。この場合、エミッタフォロワの出力インピーダンスはR10(120Ω)となり、R4に対して十分小さいため、R4=R3とみなすことができる。 上記の考え方は正しいでしょうか。 御指導願います。

  • 照度センサー

    下記の照度センサを使用しマイコンのADポートへ入力したいのですが、 http://www.rohm.co.jp/products/databook/sensor/pdf/bh1600fvc-j.pdf 電流出力タイプというやつなんですが、 このセンサーの出力とマイコンとの間に 電流-電圧変換回路とか必要なんでしょうか? 4ページ目の図をそのまま組み、実験してみましたが、 蛍光灯の光と、手でふさいだ時の電圧に変化がありません。 H-Gainモードで、R1,C1の値を色々変えても 電圧の変化は見られません。 なにかヒントでもいただければ幸いです。 よろしくお願いします。

  • ジャイロセンサーとは

    スマホに使われてるジャイロセンサーとは、どんな見た目で、スマホのどこに付いているものなんですか?

  • ジャイロセンサについて

    ジャイロセンサとはどのようなものですか? いくつかネットで見つけましたが、いまいちよくわかりません。 どこに設置していても、XYZの移動量、YPRの回転角ともに検出できるのでしょうか? たとえば、手で持って左右に動かすと、その移動量と、根元である肩の移動角も検出できるのでしょうか?現在、簡易ロボットを作っていて、それに応用できればと思っています。 0.1度(deg)/秒のような遅い速度でも検出可能なものもあるのでしょうか? 教えてくださいm(__)m

  • ジャイロセンサーについて教えてください。

    3軸ジャイロセンサーを使おうと思っていますが、色々と疑問出てきましたので、お教えください。 (ジャイロセンサーを使うのは今回が初めてです。) ジャイロセンサーは角速度を検出しているので、傾いた状態で静止しているときは、 何も検出しないと理解しています。 1.電源を入れる時点で既に傾いていた場合、その初期の傾きは検出できないと思います。   初期の傾きはどのように補整または検出するのでしょうか? 2.今度は動作中についてですが、傾いた状態がしばらく続いた後、傾き角度が変わっても、   正確に検出しますでしょうか? ※この場合の傾きは、地面に対しての傾きです。 的外れな質問かも知れませんが、お教えください。 よろしくお願い致します。

  • ジャイロセンサー

    ジャイロセンサー付の機種は扱っていますか?KC-01にはついていません。 ※OKWaveより補足:「UQ WiMAX」についての質問です。

  • ジャイロセンサについて

    ジャイロセンサとはどのようなものですか? いくつかネットで見つけましたが、いまいちよくわかりません。 どこに設置していても、XYZの移動量、YPRの回転角ともに検出できるのでしょうか? たとえば、手で持って左右に動かすと、その移動量と、根元である肩の移動角も検出できるのでしょうか?現在、簡易ロボットを作っていて、それに応用できればと思っています。。 0.1度(deg)/秒のような遅い速度でも検出可能なものもあるのでしょうか? 教えてくださいm(__)m