Config_ICUでのIRQの設定について

いつも大変お世話になっております。リューキィです。

現在、RX65N Envision Kitでロータリーエンコーダを使用した試作機の開発をしているのですが、

信号の入力も表示も出来ているのですが、なぜか1回転した時の数字がズレてしまう事が多々発生してしまっています。

ロータリーエンコーダの接続の方法や、接続端子の接触不良等も疑ったのですがどうやら問題なさそうで、次にマイコン側の端子の設定

を疑っている次第です。

13chのD7(IRQ1)とD6(IRQ2)ロータリーエンコーダの信号線は接続しており、

モジュールのConfig_ICUでIRQ1/2ともに立上りエッジのレベル15 フィルタ無しにしてあります。

また、メインソース上で

R_GPIO_PinDirectionSet( GPIO_PORT_D_PIN_1, GPIO_DIRECTION_INPUT );
gpio_err |=R_GPIO_PinControl (GPIO_PORT_D_PIN_1, GPIO_CMD_IN_PULL_UP_ENABLE);
R_GPIO_PinDirectionSet( GPIO_PORT_3_PIN_2, GPIO_DIRECTION_INPUT );
gpio_err |=R_GPIO_PinControl (GPIO_PORT_3_PIN_2, GPIO_CMD_IN_PULL_UP_ENABLE);

で入力端子設定とプルアップ設定も行っております。

(※もしかしたらこれが二重設定とかになっていて邪魔をしているのか??とも思い始めました)

また、ロータリーエンコーダのカウントは

IRQ1が立ち上がった際に、IRQ2の状態を見て0だったらカウントをインクリメント

IRQ2が立ち上がった際に、IRQ1の状態を見て0だったらカウントをデクリメント

としています。(それぞれの立ち上がりを見ずとも、一行目にelseでデクリメントすれば良いのもわかっているのですが、ズレが発生しているので何か問題があるのかもと思い、わざと

分けてあります)

ロータリーエンコーダの1周の分解能は40なので、非常に少ないのですが数回転回すとズレる状態です。

何かわかる方がいらっしゃいましたら、ご指導いただきたく思います。

よろしくお願い致します。

Parents
  • リューキィさん、こんにちは。NoMaYです。

    データシートのURLをありがとうございました。今までの文面から察すると、電圧出力タイプのME○-30-40-Pという型番ですかね。(なお、○の部分は、S、H、D、の何れか。)

    そして、ME○-30-40-Pには5Vを給電していて、ME○-30-40-Pの出力を分圧してから、P32(IRQ2-DS)とPD1(IRQ1-DS)に入力していて、マイコン内部でプルアップ抵抗を有効にしている、ということですね。また、IRQのノイズフィルタはOFFにしている。

    具体的に、何回転ぐらいで何カウントずれるのでしょか?(何回転ぐらいで1カウントずれる?と言うべきなのかな?) また、そもそもどうやって回しているのですか?どれぐらいの速さで回しているのですか?(40カウントのエンコーダということは、1カウント当たり360/40=9度ですかね。直角90度を10等分ですかね。)


    ちなみに、データシートを見ると、電圧出力タイプといっても、2.2KΩでプルアップしたオープンコレクタを使った回路のことのようですので、どう分圧しているのか気になりました。(エンコーダの出力端子とGNDの間に3.3KΩを入れた?)

    そして、マイコンの設定で気になったのは、マイコン内部のプルアップ抵抗は要らないのでは?というのと、ノイズフィルタはONの方が良いのでは?ということでした。

Reply
  • リューキィさん、こんにちは。NoMaYです。

    データシートのURLをありがとうございました。今までの文面から察すると、電圧出力タイプのME○-30-40-Pという型番ですかね。(なお、○の部分は、S、H、D、の何れか。)

    そして、ME○-30-40-Pには5Vを給電していて、ME○-30-40-Pの出力を分圧してから、P32(IRQ2-DS)とPD1(IRQ1-DS)に入力していて、マイコン内部でプルアップ抵抗を有効にしている、ということですね。また、IRQのノイズフィルタはOFFにしている。

    具体的に、何回転ぐらいで何カウントずれるのでしょか?(何回転ぐらいで1カウントずれる?と言うべきなのかな?) また、そもそもどうやって回しているのですか?どれぐらいの速さで回しているのですか?(40カウントのエンコーダということは、1カウント当たり360/40=9度ですかね。直角90度を10等分ですかね。)


    ちなみに、データシートを見ると、電圧出力タイプといっても、2.2KΩでプルアップしたオープンコレクタを使った回路のことのようですので、どう分圧しているのか気になりました。(エンコーダの出力端子とGNDの間に3.3KΩを入れた?)

    そして、マイコンの設定で気になったのは、マイコン内部のプルアップ抵抗は要らないのでは?というのと、ノイズフィルタはONの方が良いのでは?ということでした。

Children
  • NoMaY、こんにちは。リューキィさんです。

    ズレに関しては法則性が見つからないです。何回回してもズレない時もあれば、突然ずれたり、ゆっくり回した方がズレているような気もしますが、高速で複数回(回数にしばりなし)回してもズレる時はズレています。

    接続方法が怪しいのかと思い、メーカーにも問い合わせたんですが、デジタル入力端子に出力端子を入れて問題ないと言われたんですが、出力端子とGNDの間に抵抗がいるんですかね???(本当にそこらへんが全くわからなくて。。。独学でコンデンサとか勉強してもネットで読んでもさっぱりな状態です。プログラムなら、なんとか食らいつけるんですけど、回路は基礎知識が無さ過ぎて。。。)

    マイコン内部の設定ですが、先日投稿した後に、試しにgpioの方のインプット設定やプルアップ設定をコメントアウトしてみても、動作したので今は外しています。フィルタはいじってないので、入れて試してみます。

  • すみません!!NoMaYさん

    「さん」が抜けてました。

  • リューキィさん、こんにちは。NoMaYです。

    ロータリーエンコーダは素手で回しているのでしょうか?ステッピングモータ(?)みたいなので、正確に停止位置を制御出来るようなもので回しているのでは無くて、素手で直接回しているのでしょうか?

    ズレは1カウントなのでしょうか?それとも突然、3カウントとかズレるのでしょうか?上の問いにも関係しますが、もし素手で回しているとしたら、回している最中に、デバッグ用にprintfみたいなので表示させているカウント数が、それまで1ずつ増えていったのが、突然、3、とか、4、とか増えてしまう、ということなのでしょうか?それとも、ステッピングモータ(?)みたいなので、くるくるっと、例えば正確にぴったり4回転とかさせた時に回し終わった時、カウント数を確認してみると、想定よりも、3、とか、4、とか増えてしまっている、というような症状でしょうか?

    これまで投稿された中で、分圧して、という言い回しが実際にあったのですが、どう分圧されているのでしょうか?


    正直なところ、ロータリーエンコーダを触ったことがありませんので、(マイクロテック・ラボラトリー社のブログみたいなのから)推測でME○-30-40-Pというのは内部構造は光学式なのかな、光学式でチャッタリングは起きないと思っているけれども、素手で直接回している場合など、内部構造上の何かの境目あたりで出力信号がバタつくのは当たり前だったりするのかな、とかも疑いつつも、ごめんなさい、ちょっと分からないのが正直なところでした。(ただ、マイクロテック・ラボラトリー社に直接問い合わせてみて、チャッタリングとかバタつきとか、何の言及も無かったのでしたら、そういうものは起きないのだろうなぁ、とも思っていたりしているのですけれども。)

    私がリプライするのは、このあたりまでにして、すみません、これ以後、他の人からのリプライを待って頂くのが良いのかな、と思います。(オシロでのデバッグが出来ないとなりますと、あとはもう経験/知識しか無いだろうと思われますので、実際にロータリーエンコーダを扱っている人などからのリプライを待って頂くのが良いのかな、と思いました。)