ブログパーツUL5

PG-03相当のジャイロモジュールを試作(10)

 試作したジャイロモジュールをさらに小型化してみました。専用のプリント基板を製作して、マイコンは8ピンのSOPのPIC12F675Tにして、LEDなどほかの部品は全てチップ部品にしました。マイコンはライターのアダプタを製作しておいたので、SOPパッケージでもうまく書き込むことが出来ました。
ライターアダプタ
 従来のPICライターでも、SOPのフラットパッケージに書き込めるようにアダプターを製作して、PIC12F675Tにうまく書き込めました。


 チップ部品の半田付けに慣れていないので、悪戦苦闘しました。特に、LEDの裏側のパッドを半田付けには苦労しましたが、点灯の確認が出来るので何度かやり直してなんとか半田付けできました。半田のヤニが残っていますがそのままにしました。

 左の写真で左側が試作してテストしていたジャイロ基板、真ん中が今回製作したチップ部品搭載の小型基板、右側が秋月電子のジャイロモジュール。

 2色LEDチップは予定のものでなく、代用品にしたのでサイズが大きなり半田付けに苦労しました。小型基板にジャイロモジュールに接続した出来上がりです。


 これでジャイロモジュール製作は終了します。
0

    PG-03相当のジャイロモジュールを試作(9)

     RZ-1ジュニアに仮に取り付けて様子を見ていますが、揺れもPG-03レベルのようで、温度特性はPG-03よりも優れているようです。miconoさんのRZ1Peekというツールを使って,MR-C3024に読み込まれたジャイロの値(SRAMの&H530の値)を調べてみました。

    (1)ロール軸(RZ-1の左右方向)のジャイロ値(MR-C3024の&H530の値)
       少し揺れていたのが分布でもわかる。異常値を除くとσ=0.1と優秀な値である。
    ジャイロ値 RZ1Peekで500ポイント測定

    (2)ピッチ軸(RZ-1の前後方向)のジャイロ値(MR-C3024の&H530の値)
       全く揺れなかったことがわかる。一瞬、壊れたかと疑い、ゆすったらジャイロがちゃんと働きました。
    ジャイロ値 RZ1Peekで500ポイント測定。なお、コネクターを差し替えて測定したので同じアドレス。

     このぐらいの値でないとジャイロも安定動作しないということなります。急激な動きに対しての俊敏性はジャイロ本体の特性に依存することによる。安定化のために積分したことによる影響は小さく、デメリットにはなっていないようである。

     プリント基板を設計中で、インクジェットプリンタでOHPシートに2重印刷して、ずれていないかチェックして原版が出来上がりである。今後、プリント基板の製作とチップ部品の半田付けがうまくいくかが問題となる。

    0

      PG-03相当のジャイロモジュールを試作(8)

       PG-03相当のジャイロモジュールを試作したところ、ノイズかジッタでドリフトが大きくてRZ-1の揺れがひどく、PG-03の置き換え迄には至りませんでした。PG-03相当としてはある程度までうまく動作したので、ちょっとチューニングと改良をしてみました。自作では少しづつ思いついたアイデアで改良できるのが、いいですね。
       ムラタの推奨回路のままのジャイロモジュール(AE-GYRO-SMD)のドリフトを解析したところ、GNDのノイズではなくて、モジュールのアナログ値自体がドリフトしているので、ハードとソフトの両面で積分するように対策してみました。

      【対策】
      ・ソフトではアナログ値を読み取るのを1回から時間差を設定して2回読み取り、移動平均とする。
       (AD読み取りができるようにサンプリング時間の間隔をあけて時間差を設定する)
      ・ハードではジャイロのアナログ出力に容量を入れる。
       (暫定的に、100µFの電解コンデンサーをアナログ出力とGNDに入れる)

       2軸ジャイロモジュールの全体回路図
      全体回路図
       ジャイロモジュールをRZ-1ジュニアの肩に乗せて揺れを確認してみる。
      ジャイロのテスト
       ソフトは12F675に書き込み、中点(静止点)を読み込んで、赤と緑のLEDが同時に点灯する電圧調整のチューニングを行い、ハードは電解コンデンサーをモジュールに半田付けした。予備のMR-C3024はRZ-1ジュニアに搭載したので、早速、実験台になりました。ほとんどゆれなくなり、PG-03と同じレベルにまでになったようです。
       本番のモジュールにするには小型化にするため、12F675のSOP、チップ電解コンデンサ、チップLEDなどが必要である。部品はまったく手持ちになく、チップ部品なのでプリント基板も製作しないととてもPG-03と同じ大きさにならない。しばらくはどうするか検討することにする。

      【追記】
       対策で追加した電解コンデンサーは大きいため、試作モジュールの搭載が難しかった。手持ちに100μFのチップコンデンサーがあるのを見つけたので、ノイズ対策にはチップコンデンサーの方が特性的にも良さそうで、早速、交換しました。現在は、時間経過で簡易的に温度特性の良し悪しを見ています。
      0

        PG-03相当のジャイロモジュールを試作(7)

         まず、ジャイロセンサーを繋がないでPICマイコン単独での測定データをまとめてみました。まだ、改良の余地があり、アナログ電圧が大きい時にオーバーフローしているのがわかりました。この現象が実際に何が起こりうるか判らないので、センサーを繋いで確認する必要がある。
        単体でのデータ表

        試作品+センサー
         次に、ジャイロセンサーを取り外しが可能なようにコネクターで繋いでテストしてみました。バラツキが大きく、ノイズも多くありそうで、実際にRZ-1に繋いで動作tさせてみましたところ、貧乏ゆすりのような振動が多く、今すぐにPG-03を置き換えられる状態ではなかった。
         データを採る場合には、センサーを抜いて、半固定抵抗を接続すれば可動範囲で動作を見ることが出来るようにしたので便利です。

        ジャイロセンサーのアナログ出力電圧が予想に反してバラツキが大きいことがわかった。そのため、マイコンのプログラムもそれぞれのセンサー出力に合わせて微調をおこない、1つはジャイロ静止時の中点電位でバランスするようにしました。さらに、ジャイロ出力のAD値はそのままの値で使用して、補正値は揺れを抑えるために1/2にしました。センサー回路 この回路はムラタの推奨回路ですが、PG-03のようにパルス幅の変換方式ではそのまま使うことは出来ないようです。MR-C3024のアナログポートにジャイロセンサーのアナログ出力をそのまま入力してジャイロ補正ができるといいのですが、流石にMR-C3024のファームウェアなので期待できそうにない。今回の試作はこれで一応終了として、今後は地道にチューニングしてみます。
        0

          PG-03相当のジャイロモジュールを試作(6)

           今までPG-03相当のジャイロモジュールができないか、いろいろ調べながら試作をしてきたました。しかし、汎用性を重視してきたため、試作のPICでは無理なことがわかった。そこで、諦めないのが技術屋根性というべきでしょうか、RZ-1専用のPG-03相当に仕様をスペックダウンさせれば、できるのではと考えて閃きました。
           即ち、MR-C3024マイコンのジャイロへの入力パルスは一定で1msec(周期16msec)ということなので、PICマイコンでは入力パルスの計測はしないで、同期を取るために入力パルスの立上りを検出するだけにして、出力パルスは設定した遅延時間の後に1msecにジャイロ補正した出力パルスを出すようにプログラムすれば、PIC12F675のマイコンでも処理できそうである。

           当然、ハードウェアはそのままで修正しません。今まで作成していたプログラムもフローチャートの一部を手直して出来そうである。
          フローチャート改
           問題は、各パラメータをいくつにするかは実験を行なわないとわからないが、諦めていた野望に希望の光が見えてきました。まず、遅延時間をいくつに設定すれば、MR-C3024は認識してくれるかを調べてみました。    
          マイコン実験
           1000µsec、900µsec、700µsecでは認識せず、下から200µsecで初めて認識しました。予想的中で遅延時間の設定が必要だったことがわかりました。実測データを採り試行錯誤しながら、結局、450µsecに設定することにしました。仕様もわからず長いトンネルの出口が見えた思いです。

           まだ、ジャイロ素子は繋いでいません。その代わりPIC12F675のアナログ入力には、VR10KΩを繋いで可変できるようして実験しています。見事に、MR-C3024のアナログポート(ジャイロ接続)に繋いでもRZ-1が凛々しく立ってくれました。PCの画面には、そのマイコンからの出力波形(1msec)をモニターしています。

          RZ-1に搭載実験

           残る課題は、ジャイロ基板との接続とPIC12F675マイコンの小型化(SOP)で、プリント基板を製作しなければならないのと、厄介な問題がMR-C3024からのGNDにノイズが載っているのでその対策をどのようにするかがあります。マイコンの小型化を考慮しながらジャイロを早く繋ぎたいです。
          0

            PG-03相当のジャイロモジュールを試作(5)

             PG-03相当のジャイロモジュールの試作に取り組んできました。PG-03の仕様もまったくわからず、単純にパルス幅をジャイロ補正すればいいだろうというぐらいの発想で試作をしてみました。
             しかし、ここに来ていきずまり、もう一度PG-03をいろいろインターネットで調べてみたところ、PG-03では基準パルスを入力した後、PG-03からは基準パルスの入力が終わる前から、ある程度の遅延があってから補正パルスの出力が始まるということがわかりました。MR-C3024ではパルス幅だけでなく、どうもこの遅延も計測している可能性があると推測されます。以下に、判り易くPG-03の出力波形を図にしてみました。

            PG-03の出力波形 パルス幅が100μsec長くなると遅延が50μsec短くなっているようです。この遅延時間がどうも影響していて、試作ではこのことを考慮しておらず、パルス幅と周期だけを合わせ込んだだけだったので、MR-C3024で認識してもらえなかったかと思います。

             従って、PIC12F675で試作したものはパルス波形を計測してからその計測値にジャイロの補正をかけているようにしたため、計測途中で出力波形を出すことは出来ないことがわかりました。これで暗中模索でしたが原因がわかりました。結論として簡単なデジタル処理では対処できず、アナログ回路特有の同時処理をしているのでPG-03と同じタイミングで出力波形を出すことが出来ない。今回の試作はこれにて終了とします。 


            0

              PG-03相当のジャイロモジュールを試作(4)

               RZ-1のMR-C3024のSRAMに書き込まれているパルス幅の値を読み出します。ジャイロの入力にAD(0)とAD(1)、ジャイロの出力からAD(4)とAD(5)に繋いでおいて、roboBASICのPEEKコマンドを使ってRZ-1に取り込まれたパルス幅の値を調べてみました。

              モーションプログラムに次の2行を追加して
              '---- PULSE VALUE ----
              A=PEEK(&H530)
              B=PEEK(&H531)
              '--------------------
              それぞれをRZ-1に内蔵させたLCDに表示させました。

              PEEK初期 ジャイロを繋がない時の初期値。
              X方向:44
              Y方向:56


              PEEK_GP-03 ジャイロを繋いだ時の測定値。
              X方向:41
              Y方向:43


               試作品を繋いでも初期設定のままですから、パルスを認識できていないことが判ります。PG-03に合わせて出力波形に約0.5msecの遅延をかけてみましたが、値は変化しませんでした。何が違うのか悩みますね。
               ちゃんとしたオシロスコープがないのですが、フリーソフトでMR-C3024の出力波形を見てるとどうも周期を可変させているようにも見えますが、詳細はわかりません。それでも試作品は入力波形に同期させていますので、問題ないのですが。。。。

              【追記】
               roboBASICのPOKEコマンドは0〜255までしかSRAMに書き込めないようなのでパルス幅を直接書き込めないようです。
              RZ-1 PEEK表示
               RZ-1のプログラムでGYROをOFFにした場合には、SRAMのパルス幅の初期値『044』が表示されました。

               また、プログラムではGYROをONにして未接続にしたり、異常があるとSRAMのパルス幅は『112』と表示されました。


              0

                PG-03相当のジャイロモジュールを試作(3)

                 ジャイロモジュールはやはり小型/軽量が重要ということで、小型のPICマイコンで8ピンの12F675を使用しています。最終的には、SOPにしさらに小型化ができますが、試作はDIPで製作しており、単体での製作は一応完成しました。
                回路図 今回のジャイロ用マイコンの回路図で、独立してX軸とY軸の2チャンネル分必要ですが、回路図は1チャネル分のみです。7ピンにジャイロモジュール(AE-GYRO-SMD)からの出力を入力します。波形入力にはサーボへの信号入力又はMR-C3024のアナログポートの出力側を、波形出力にはサーボへの信号出力又は同じくアナログポートの入力側を接続します。

                 6ピンは予備で、温度補償が必要になった時に入力端子として空けてあります。

                 PIC12F675のアセンブラ言語で開発することを念頭に入れてフローチャートを作成しました。
                フローチャート

                 試作した回路で計測した結果をグラフにして見ました。本来のPG-03のデータがなく測定も簡単に出来ないので、正しく動作するかわからずどうでしょうかね?
                計測グラフ
                 PG-03相当のジャイロモジュールでしたが、AE-GYRO-SMDのジャイロ出力が静止時に1.35Vという制限のため、上記のグラフで判るようにかなり低電圧側に偏っています(ジャイロ素子の電源電圧に依存?)。基本的にRZ-1の動作範囲はカバーしているようですが、まだ、RZ-1に搭載して試験はしていません。

                 【2011/2/27追記】
                 RZ-1に接続して簡単なチェックをしてみましたが、パルス幅だけではないようでMR-C3024内でどのようにしてパスル幅を計測しているのかがわかりません。作成したプログラムでは入力波形に同期しているのですが、ほかにもMR-C3024に入力する条件があるようです。当分は解析できるのはここまでで、RZ-1での動作確認はできていません。
                0

                  PG-03相当のジャイロモジュールを試作(2)

                   PG-03の仕様が判らないので、フリーソフトのオシロで波形を見ながらRZ-1での使用状態を調べてみました。(ちゃんとしたオシロスコープがあれば良いのですが、いまだ購入できていません。)

                  (1)MR-C3024のアナログポート出力(GYRO指定)の波形
                    ・周期  =16.057msec
                    ・パルス幅=1.057msec(固定)
                  (2)PG-03の出力、即ちMR-C3024のアナログポート入力(GYRO指定)の波形
                    ・周期  =16.057msec
                    ・パルス幅=1.057msec±0.1msec(変動)
                    なお、変動幅はRZ-1の固体差があるので絶対値ではありません。
                  (3)ジャイロモジュール(AE-GYRO-SMD)の出力電圧(VDD=5V時)
                    ・静止状態での電圧(カタログ値=1.350V)
                     X軸=1.440V(ENC-03Rの出力=1.432V)
                     Y軸=1.424V(ENC-03Rの出力=1.114V)
                     意外とジャイロ素子のばらつきは大きいようです。
                    ・変化電圧
                     モジュールを振ってみて大雑把に調べてみたところ、0.5〜2.4Vの範囲で出力電圧が変化。
                     電源電圧(5V)までは振れることはない。

                   PG-03相当の試作のためパルス幅の検出をしていますが、RZ-1ではMR-C3024から固定の連続波形が出力されているので、パルス幅の検出は不要で同じ波形を内部で作るのも有りかもしれません。しかし、内部でどんな演算をしているかわからないので、波形の入力と出力の同期を取るためにはパルス検出があったほうが良いかもしれません。
                   左側はパソコンでのオシロスコープ画面(波形が負に振れているのはPC側が単電源のカプリング容量のためで、実際は負にはなっていない)

                   やっと、PIC12F675のプログラムのバグも大体取れて、AD入力でパルス幅が変化するところまで試作品ができました。そのパルス幅の状況はつぎのようになっています。
                    AD値:パルス幅
                   1.00V:0.943msec
                   1.35V:1.000msec
                   1.50V:1.257msec
                   2.50v:1.429msec

                  【結論】
                  ■パルス幅検出はそのままとする
                   波形の同期性を確保するため
                  ■静止電圧はジャイロモジュール(AE-GYRO-SMD)に合せる
                   現在の試作品では、静止電圧を1.350Vに合わせたので、それぞれに合わせ込むことが必要である。
                  ■試作品のパルス幅
                   PG-03の可変するパルス幅は意外と小さいことがわかり、ジャイロモジュール出力に対する補正量が大きすぎるようなので、少し感度を落とす必要がある。また、変化量の挙動がおかしい所があるので、下限側に補正量のオーバーフロー対策を盛込む必要がありそうである。

                  【2011/2/21追記】
                   J0-ZEROには秋月電子のジャイロモジュール(AE-GYRO-SMD)をそのまま搭載できるようですが、ロボゼロ(ROBO XERO)には搭載できるのだろうか? 提供されるマイコンボードにもよるが写真ではHSWB-03Fと同じようにジャイロのアナログ入力の端子があるように見える。但し、プログラムは簡単にできるかはわからなし、保証対象外となるかもしれない。

                  J0-ZEROのジャイロ搭載の資料
                  http://www.jo-zero.com/JO-ZEROGYRO.pdf
                  0

                    PG-03相当のジャイロモジュールを試作(1)

                     ROBOZAKで提供されたHG-R001ジャイロモジュールや相当品のPG-03ジャイロモジュールの温度特性が悪く気温によってドリフトが生じます。なんとかその対策をしたくPG-03の回路解析や秋月電子でENC-03R単体とENC-03R小型モジュール購入などしておりましたが、先に進まずそのままでした。インターネットで検索してもPG-03相当の製作をしている情報がなく、迷っていました。

                    ブレッドボードで動作確認 そこで、ENC-03R小型モジュールを使って、PG-03の置換えが出来ないかいろいろ検討しておりましたが、決定的な方法がなく試しにPICマイコンを利用して試作してみることにしました。PICマイコンは手元にあり、ADC機能を内蔵されていて一番小型のPIC12F675を使うことにしました。PICのアセンブラ言語を利用して、プログラムしてブレッドボードで動作確認してみました。

                     PIC12F765のプログラムは、ラジコンサーボ「低速変化」コントローラを参照させてもらいました。

                     とり合えず、ENC-03R小型モジュールの温度特性そのままで使用して、後に温度補正を追加できるように空きピンはアナログ入力できるようにしておきました。プログラムではジャイロのアナログ値をAD変換しておき、パルス入力に同期してパルス幅を検出して、ジャイロ補正したパルス幅を出力するようにしました。AD変換はパルス出力後20msecで次のパルスがくるので、出力後1msec立ってから安定してアナログ計測(AD変換)をするようにしました。

                    製作した基板 製作した基板で、2軸を1枚にまとめる。ENC-03R小型モジュールの中点1.35Vでジャイロが中立になったら、PG-03のように赤と緑のLEDが両方点灯するように動作します。

                     モジュールの中点である1.35Vに対して、感度は1.345〜1.355Vの範囲で中立となるように調整できました。結果としては、中点のAD値をD'56'になりました。


                     現在はここまでで、今後、AD値でどれだけ補正するかを検討します。現在は単純に直線的にほせいしていますが、補正カーブを別の2次曲線的にするか比例級数的にするかなどを決めていきます。いづれにしてもプログラミングで試行できるので、いろいろと試してみたいと思います。このプログラミングが完成すれば、ジャイロモジュールと試作した基板を重ねて、電気的には4ピンで接続する予定です。

                     ジャイロの温度ドリフト対策としてもう1つ考えていることは、ENC-03R小型モジュールのアナログ出力をRZ-1のMR-C3024のアナログポートに入力して、MR-C3024のSRAMのパルス幅を格納しているアドレスに直接書き込むという荒業が残っています。ROBOMIC(ブログ)でちょうど「ジャイロの入力パルス値を計測してみた」というのをヒントに考えてみました。ちょっと怖いですがやってみるのも面白そうです。ただし、アナログ電圧からパルス幅を計算するのはroboBASICで行なうので、整数しか扱えないため精度がでないという問題が出るかもしれません。これがうまくできたら、報告します。
                    0


                      カレンダ

                           12
                      3456789
                      10111213141516
                      17181920212223
                      24252627282930
                      31      
                      << March 2024 >>