IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社シグマの特許一覧

<>
  • 特許-ロータリーエンコーダーの回転検出方法 図1
  • 特許-ロータリーエンコーダーの回転検出方法 図2
  • 特許-ロータリーエンコーダーの回転検出方法 図3
  • 特許-ロータリーエンコーダーの回転検出方法 図4
  • 特許-ロータリーエンコーダーの回転検出方法 図5
  • 特許-ロータリーエンコーダーの回転検出方法 図6
  • 特許-ロータリーエンコーダーの回転検出方法 図7
  • 特許-ロータリーエンコーダーの回転検出方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-08
(45)【発行日】2024-04-16
(54)【発明の名称】ロータリーエンコーダーの回転検出方法
(51)【国際特許分類】
   G01D 5/244 20060101AFI20240409BHJP
【FI】
G01D5/244 C
【請求項の数】 3
(21)【出願番号】P 2020173490
(22)【出願日】2020-10-14
(65)【公開番号】P2022064701
(43)【公開日】2022-04-26
【審査請求日】2023-05-17
(73)【特許権者】
【識別番号】000131326
【氏名又は名称】株式会社シグマ
(72)【発明者】
【氏名】齋藤 新平
(72)【発明者】
【氏名】中村 仁宏
【審査官】吉田 久
(56)【参考文献】
【文献】特開平1-101415(JP,A)
【文献】特開2012-132722(JP,A)
【文献】実開平3-60017(JP,U)
【文献】特開2016-80547(JP,A)
【文献】特開2019-45420(JP,A)
【文献】実開平6-30706(JP,U)
(58)【調査した分野】(Int.Cl.,DB名)
G01D 5/12-5/38
G01P 3/00-3/80
(57)【特許請求の範囲】
【請求項1】
互いに位相がずれたA相・B相の二つの信号レベルに基づいて回転検出を行うロータリーエンコーダーの回転検出方法において、
A相又はB相の信号レベルの変化により割り込みを検知し、前記割り込みを検知した一方の相についての割り込み処理を開始し、
前記一方の相について開始した前記割り込み処理は、
前記一方の相とは異なる他方の相の信号レベルを取得する信号レベル取得ステップと、
前記他方の相の割り込み検知フラグの有無を取得する割り込み検知フラグ取得ステップと、
A相の信号レベルとB相の信号レベルが同一であり、かつ、前記他方の相の前記割り込み検知フラグが有りである場合に、ロータリーエンコーダーの回転検出を行う回転検出ステップと
前記割り込み検知フラグ取得ステップで取得した前記一方の相とは異なる他方の相の割り込み検知フラグが有りである場合には、前記他方の相の前記割り込み検知フラグをクリアする割り込み検知フラグクリアステップとを有することを特徴とするロータリーエンコーダーの回転検出方法。
【請求項2】
A相又はB相の信号レベルの変化により割り込みを検知し、開始された前記割り込みを検知した一方の相についての割り込み処理において、
前記割り込みを検知した前記一方の相の信号レベルと前記信号レベル取得ステップにおいて取得した前記一方の相とは異なる他方の相の信号レベルとが異なる場合には、前記一方の相の割り込み検知フラグを有りとする割り込み検知フラグセットステップをさらに有することを特徴とする請求項1に記載のロータリーエンコーダーの回転検出方法。
【請求項3】
A相又はB相の信号レベルの変化により割り込みを検知し、開始された前記割り込みを検知した一方の相についての割り込み処理において、
前記回転検出ステップで回転検出される回転方向は前記一方の相とは異なる他方の相の割り込み処理の回転検出ステップで回転検出される回転方向と互いに反対向きであることを特徴とする請求項1又は請求項2のいずれかに記載のロータリーエンコーダーの回転検出方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はロータリーエンコーダーの回転検出方法に関する。特に、チャタリングなどによるロータリーエンコーダーの回転方向の誤検出を防止し、回転検出のためのCPUの演算負荷を抑制することができるロータリーエンコーダーの回転検出方法に関する。
【背景技術】
【0002】
従来、ダイヤルやモーターなどの回転検出を行うことを目的としてロータリーエンコーダーが採用されている。
【0003】
ロータリーエンコーダーの回転検出の方式には光学式や磁気・電気誘導式などがあり、ロータリーエンコーダを搭載する機器の用途や使用環境により適切なものが採用されている。
【0004】
例えば光学式ロータリーエンコーダは、LEDなどの発光素子、フォトダイオードなどの受光素子、円周方向に等ピッチでスリットが設けられた回転スリット円板から構成される。
【0005】
光学式ロータリーエンコーダにおいて、発光素子と受光素子は対面して配置されており、発光素子からの光は受光素子で受光されるように配置されている。回転スリット円板は発光素子と受光素子との間に挟まれるように配置され、回転する機械要素の回転に応じて回転する。
【0006】
発光素子からの光は、回転する回転スリット円板の回転位置により、回転スリット円板に設けられたスリットを透過したり遮断されたりする。これにより受光素子は発光素子からの光を受光し、受光素子から出力される信号レベルはスリットの位置により変化する。受光素子から出力された信号レベルは周辺回路により処理されて矩形波として出力される。
【0007】
光学式ロータリーエンコーダからは回転方向を識別するための2つの相(A相・B相)の矩形波が出力される。A相・B相の矩形波は互いに所定の位相(例えば1/4周期)だけずらして出力される。互いに所定の位相だけずれたA相・B相の矩形波を出力するには、例えばA相・B相の受光素子をそれぞれ設け、これらを互いにずらして配置するように構成すればよい。
【0008】
図1は、光学式ロータリーエンコーダから出力される互いに1/4周期だけずれたA相・B相の矩形波の例を示す。ロータリーエンコーダの回転方向の識別は、識別を行う時点におけるA相・B相の矩形波の関係性に基づいて行われる。
【0009】
例えば、図1のA相・B相の矩形波の関係性に基づく回転方向の識別方法では、B相の信号レベルがH(ハイレベル)からL(ローレベル)に立ち下がった時点においてA相の信号レベルがHである場合には時計回りに1段回転したと識別し、反対に、A相の信号レベルがHからLに立ち下がった時点においてB相の信号レベルがHである場合には反時計回りに1段回転したと識別する。
【0010】
ところで、光学式ロータリーエンコーダの回転方向を識別する時点を判断するA相・B相の信号レベルの変化(立ち下がり又は立ち上がり)は、光学式ロータリーエンコーダから出力される信号レベルに伝わるノイズによっても発生するおそれがある。ノイズが複数の電気的パルスである場合には、A相・B相の信号レベルが短時間に激しく振動するチャタリングという現象が発生する。これらのノイズは光学式ロータリーエンコーダの回転方向の識別の誤作動につながるおそれがある。
【0011】
特許文献1(特開平6-137892号公報)には、A相・B相の信号レベルにチャタリングが発生したとしても、回転方向の読取りの誤動作を防止することができるロータリエンコーダの読取り方法が開示されている。
【0012】
特許文献1のロータリエンコーダの読取り方法では、所定のサンプリング周期で読み取ったA相・B相の信号のレベル状態を、1サンプリング周期前に読み取ったA相・B相の信号のレベル状態と比較してカウント値を増減するサブカウンタを設け、A相・B相の信号のレベル状態の遷移が正常なロータリーエンコーダの回転によるものである場合には回転方向に応じてサブカウンタのカウント値を増減させ、A相・B相の信号のレベル状態が所定の状態にある時点においてサブカウンタのカウント値に基づいてロータリーエンコーダの回転方向を識別している。
【先行技術文献】
【特許文献】
【0013】
【文献】特開平6-137892号公報
【発明の概要】
【発明が解決しようとする課題】
【0014】
しかしながら、特許文献1に開示されたロータリエンコーダの読取り方法は、チャタリングによる回転方向の読取りの誤動作を防止することはできるものの次の課題がある。
【0015】
特許文献1において、高速回転するロータリーエンコーダの回転検出をチャタリングの影響を受けることなく行うためには、サブカウンタを監視する所定のサンプリング周期をより短くしなければならない。また、実際にロータリーエンコーダが回転していない時間であっても、高速回転するロータリーエンコーダの回転検出に対応するために、より短いサンプリング周期で常にサブカウンタを監視しなければならない。したがって、特許文献1に開示されたロータリエンコーダの読取り方法では、CPUなどの制御装置に大きな演算負荷がかかってしまう。
【0016】
さらに、ロータリーエンコーダが所定のサンプリング周期以上で高速回転した場合には、サブカウンタによる所定のサンプリング周期での監視がA相・B相の信号のレベルの変化のスピードに追いつかず、サブカウンタがカウント値の増減を正しく行うことができなくなることによりロータリーエンコーダの回転方向の識別を誤ってしまうおそれがある。
【課題を解決するための手段】
【0017】
上記課題を解決するために、本発明に係る第1の発明のロータリーエンコーダーの回転検出方法は、互いに位相がずれたA相・B相の二つの信号レベルに基づいて回転検出を行うロータリーエンコーダーの回転検出方法において、A相又はB相の信号レベルの変化により割り込みを検知し、前記割り込みを検知した一方の相についての割り込み処理を開始し、前記一方の相について開始した前記割り込み処理は、前記一方の相とは異なる他方の相の信号レベルを取得する信号レベル取得ステップと、前記他方の相の割り込み検知フラグの有無を取得する割り込み検知フラグ取得ステップと、A相の信号レベルとB相の信号レベルが同一であり、かつ、前記他方の相の前記割り込み検知フラグが有りである場合に、ロータリーエンコーダーの回転検出を行う回転検出ステップと、前記割り込み検知フラグ取得ステップで取得した前記一方の相とは異なる他方の相の割り込み検知フラグが有りである場合には、前記他方の相の前記割り込み検知フラグをクリアする割り込み検知フラグクリアステップとを有することを特徴とする。
【0019】
本発明に係る第の発明のロータリーエンコーダーの回転検出方法は、A相又はB相の信号レベルの変化により割り込みを検知し、開始された前記割り込みを検知した一方の相についての割り込み処理において、前記割り込みを検知した前記一方の相の信号レベルと前記信号レベル取得ステップにおいて取得した前記一方の相とは異なる他方の相の信号レベルとが異なる場合には、前記一方の相の割り込み検知フラグを有りとする割り込み検知フラグセットステップをさらに有することを特徴とする。
【0020】
本発明に係る第の発明のロータリーエンコーダーの回転検出方法は、A相又はB相の信号レベルの変化により割り込みを検知し、開始された前記割り込みを検知した一方の相についての割り込み処理において、前記回転検出ステップで回転検出される回転方向は前記一方の相とは異なる他方の相の割り込み処理の回転検出ステップで回転検出される回転方向と互いに反対向きであることを特徴とする。
【発明の効果】
【0021】
本発明に係るロータリーエンコーダーの回転検出方法は、チャタリングなどにより回転検出の誤動作が発生することを防止した上で、高速回転時においてもCPUなどの制御装置の演算負荷を抑え、回転検出の誤動作を防止することができる。
【図面の簡単な説明】
【0022】
図1】ロータリーエンコーダから出力されるA相・B相の矩形波を示す図である。
図2】本実施例のデジタルカメラにおけるロータリーエンコーダを示す構成図である。
図3】ロータリーエンコーダから出力されるA相・B相の矩形波を示す図である。
図4】本実施例のロータリーエンコーダの回転検出方法の原則を説明する図である。
図5】ロータリーエンコーダの回転検出方法を示すフローチャートである。
図6】A相割り込み処理を示すフローチャートである。
図7】B相割り込み処理を示すフローチャートである。
図8】A相の信号レベルにノイズが発生した場合を示す図である。
【発明を実施するための形態】
【0023】
以下、本発明に係るロータリーエンコーダの回転検出方法を採用するデジタルカメラの実施例について説明する。
【0024】
従来、デジタルカメラには、撮影条件やメニュー項目などを設定するための操作ダイヤルが搭載されている。ユーザは操作ダイヤルを操作することにより、例えば、オート・絞り優先・シャッター速度優先などの撮影モードや、絞り値・シャッター速度・露出補正などの設定値を設定することができ、また、メニューや再生画像を操作することができる。
【0025】
操作ダイヤルがユーザにより操作された場合には、デジタルカメラは正確に操作ダイヤルの回転検出を行い、ユーザの意図通りに動作しなければならない。また、操作ダイヤルがユーザにより操作されない場合にも、いつでも回転検出を行えるようにスタンバイしておかなければならない。操作ダイヤルの回転検出にはロータリーエンコーダが用いられる。
【0026】
図2は本実施例のデジタルカメラにおけるロータリーエンコーダを示す構成図である。図2において、10は操作ダイヤル、20はロータリーエンコーダ、30は周辺回路、40は制御装置、41は割り込み検知部、42はA相割り込み処理部、43はB相割り込み処理部、44は記憶部を示す。
【0027】
操作ダイヤル10は、撮影条件の設定値やメニューの操作などを設定を意図するユーザにより回転操作される。
【0028】
ロータリーエンコーダ20は、回転軸と、回転スリット円板と、LEDなどの発光素子と、フォトダイオードなどの受光素子から構成される。
【0029】
回転軸は、操作ダイヤルに連結されており、操作ダイヤルの回転に従って回転する。回転スリット円板は、回転軸に固定されており、回転軸の回転に従って回転する。回転スリット円板には円周方向に等ピッチのスリットが設けられている。発光素子と受光素子は回転スリット円板を挟むように配置されて、回転スリット円板のスリットを透過した発光素子からの光は受光素子により受光される。発光素子からの光は回転スリット円板の回転に応じてスリットを透過したり遮られたりする。受光素子は受光した発光素子からの光を回転スリット円板のスリットの有無に応じて出力信号を出力する。受光素子は、互いに1/4周期だけ位相がずれたA相・B相の出力信号を取得できるように2つ設けられている。
【0030】
周辺回路30は、ロータリーエンコーダ20から出力されたA相・B相の出力信号を増幅したり、ハイレベル(H)・ローレベル(L)に2値化された信号レベルからなる矩形波に変換したりする。
【0031】
周辺回路30から出力された出力信号は、図3に示すように互いに1/4周期だけ位相がずれたA相・B相の矩形波となる。ロータリーエンコーダ20の回転により正常に出力された矩形波にはH・Lの信号レベルが交互に現れる。
【0032】
周辺回路30から出力されたA相・B相の矩形波に基づいてロータリーエンコーダ20の回転方向を識別することができる。例えば、A相・B相の矩形波を常に監視しておき、A相の信号レベルの立ち下がりがあった時点で、B相の信号レベルがHである場合には正転(CW)方向の回転方向であると識別し、B相の信号レベルがLである場合には反転(CCW)方向の回転方向であると識別することができる。
【0033】
制御装置40は、周辺回路30から出力されたA相・B相の出力信号からロータリーエンコーダ20の回転検出を行う。制御装置40は、例えばCPUやその一部の制御ブロックである。
【0034】
制御装置40は、割り込み検知部41、A相割り込み処理部42、B相割り込み処理部43、記憶部44から構成される。
【0035】
割り込み検知部41は、周辺回路30から出力されたA相・B相の矩形波のいずれかに信号レベルの変化があったことを検知して、A相又はB相の割り込みを検知する。本実施例では、A相・B相の出力信号のいずれかに立ち下がりがあったことを検知することにより割り込みを検知する。
【0036】
A相割り込み処理部42及びB相割り込み処理部43は、割り込み検知部41により割り込みが検知されたA相又はB相についての割り込み処理を行いロータリーエンコーダ20の回転検出を行う。A相又はB相についての割り込み処理の内容については後述する。
【0037】
記憶部44は、割り込み検知部41により検知されたA相・B相の割り込みの有無を示す割り込み検知フラグなどを制御装置40の内部で一時的に保持する。割り込み検知フラグの割り込み処理における役割については後述する。
【0038】
次に、本実施例のデジタルカメラにおけるロータリーエンコーダの回転検出方法の流れについて説明する。図4に示すように、本実施例のロータリーエンコーダの回転検出方法では、A相・B相の割り込みを検知して割り込みを検知した一方の相について割り込み処理を行い、A相・B相の両方に割り込みが発生し、かつ、他方の相の信号レベルが一方の相の信号レベルと同一である場合に回転検出を行う。これにより、ロータリーエンコーダの回転検出の際に、A相・B相の両方について割り込みの発生を確認することとで、チャタリングなどによるノイズの影響を受けることのないより確実な回転検出を行うことができる。
【0039】
図5は本実施例のデジタルカメラにおけるロータリーエンコーダの回転検出方法を示すフローチャートである。図5のフローチャートの各ステップについて説明する。
【0040】
まず、制御装置40の割り込み検知部41がA相・B相のいずれかについて割り込みを検知した場合には、割り込み処理開始ステップS101において、A相・B相のうち割り込みのあった一方について割り込み処理を開始する。割り込みは、周辺回路30から出力された出力信号においてA相・B相の信号レベルのいずれかに立ち下がりがあったことににより検知される。信号レベルの立ち下がりは、矩形波として出力された出力信号における信号レベルのHからLへの変化とする。
【0041】
そして、割り込み処理開始ステップS101において開始されたA相割り込み処理S102又はB相割り込み処理S103のいずれかを行う。A相割り込み処理S102又はB相割り込み処理S103が終了した場合には図5のフローチャートを終了する。
【0042】
次に、A相割り込み処理S102について、図6のフローチャートを用いて説明する。
【0043】
まず、B相信号レベル取得ステップS201において、A相の他方の相であるB相の信号レベルを取得する。本実施例では、A相の信号レベルに立ち下がりがあった割り込み直後の時点におけるB相の信号レベルを取得する。これにより、A相割り込み処理S102の間にB相にノイズが発生して回転検出を誤ってしまうことを回避することができる。
【0044】
次に、B相割り込み検知フラグ取得ステップS202において、制御装置40の記憶部44に一時保持されているB相割り込み検知フラグを取得し、B相の割り込みの有無を判別する。B相割り込み検知フラグは、A相割り込み処理の前のB相の割り込みの有無を示すためのフラグである。
【0045】
B相割り込み検知フラグ取得ステップS202においてB相の割り込みが有りと判別された場合には、B相検知フラグクリアステップS203においてB相検知フラグをクリアする。すなわち、B相検知フラグをクリアしてB相の割り込みを無しとする。これにより、A相割り込み処理S102の後にこれより前のB相の割り込みの履歴を持ち越さないようにすることができる。
【0046】
A相割り込み処理S102の後にこれより前のB相の割り込みの履歴を持ち越してしまうと、チャタリングなどによりA相の信号レベルに連続して立ち下がりが発生した場合に、すべての立ち下がりについてA相割り込み処理S102における回転検出を行ってしまうおそれがある。B相割り込み検知フラグが有りの場合にこれをクリアすることで、A相割り込み処理S102の後に連続してA相の信号レベルに立ち下がりが発生したとしても、A相の割り込み処理S102における回転検出を1回のみとすることができる。
【0047】
次に、B相信号レベル判別ステップS204において、B相信号レベル取得ステップS201で取得したB相の信号レベルがHであるか否かを判別する。ここで、A相割り込み処理S102はA相の信号レベルの立ち下がりをA相の割り込みとして検知して開始されているので、A相割り込み処理S102におけるA相の信号レベルはLである。すなわち、B相信号レベル判別ステップS204において、B相の信号レベルがHであると判別された場合はA相とB相の信号レベルは異なるということと同等であり、B相の信号レベルがLであると判別された場合はA相とB相の信号レベルは同じであるということと同等である。
【0048】
B相信号レベル判別ステップS204においてB相の信号レベルがLであると判別された場合には、CW回転検出ステップS205において正転(CW)方向に1段回転されたとして回転検出を行う。1段あたりの操作ダイヤル10の回転量(回転角度)はあらかじめ制御装置40に設定されており、これに回転検出された段数をかけ合わせることにより実際の操作ダイヤル10の回転量(回転角度)を求めることができる。
【0049】
A相割り込み処理S102では、これより前にB相の割り込みがあった場合にのみ回転検出を行うこととしているため、ロータリーエンコーダ20の回転検出は正転(CW)方向についてのみとしている。
【0050】
A相割り込み処理S102において回転検出を行わない場合には、A相割り込み検知フラグセットステップS206及びS208においてA相割り込み検知フラグをセットする。すなわち、A相検知フラグをセットしてA相の割り込みを有りとする。A相割り込み検知フラグは制御装置40の記憶部44に一時保持される。
【0051】
B相割り込み検知フラグ取得ステップS202でB相割り込み検知フラグが有りと判定され、B相信号レベル判別ステップS204でB相の信号レベルがHであると判定された場合には、A相割り込み検知フラグセットステップS206においてA相割り込み検知フラグをセットする。これは主に、ロータリーエンコーダ20の正転(CW)方向の回転時にB相割り込み処理S103においてB相割り込み検知フラグがセットされ、その後に反転(CCW)方向に回転した場合において、即座に反転(CCW)方向の回転検出を行うことができるようにするためである。
【0052】
B相割り込み検知フラグ取得ステップS202でB相割り込み検知フラグが無しと判定され、B相信号レベル判別ステップS207でB相の信号レベルがHであると判定された場合には、A相割り込み検知フラグセットステップS208において、A相割り込み検知フラグをセットする。これは主に、ロータリーエンコーダ20の反転(CCW)方向の回転時にA相割り込み検知フラグをセットしてA相の割り込みの履歴を残して反転(CCW)方向の回転検出を行うことができるようにするためである。
【0053】
また、B相割り込み検知フラグ取得ステップS202でB相割り込み検知フラグが無しと判定され、B相信号レベル判別ステップS207でB相の信号レベルがLであると判定された場合には、A相割り込み処理S102が開始されたきっかけとなったA相の信号レベルの立ち下がりは例えばノイズによるものであると判断してA相割り込み検知フラグをセットしない。B相割り込み検知フラグは無しと判定されているので、当然、ロータリーエンコーダ20の正転(CW)方向の回転検出も行わない。
【0054】
A相割り込み処理S102が終了した後は、制御装置40の割り込み検知部41はA相・B相いずれかについて割り込みを検知するまで待機する。
【0055】
次に、B相割り込み処理S103について、図7のフローチャートを用いて説明する。
【0056】
まず、A相信号レベル取得ステップS301において、B相の他方の相であるA相の信号レベルを取得する。本実施例では、B相の信号レベルに立ち下がりがあった割り込み直後の時点におけるA相の信号レベルを取得する。これにより、B相割り込み処理S103の間にA相にノイズが発生して回転検出を誤ってしまうことを回避することができる。
【0057】
次に、A相割り込み検知フラグ取得ステップS302において、制御装置40の記憶部44に一時保持されているA相割り込み検知フラグを取得し、A相の割り込みの有無を判別する。A相割り込み検知フラグは、B相割り込み処理の前のA相の割り込みの有無を示すためのフラグである。
【0058】
A相割り込み検知フラグ取得ステップS302においてA相の割り込みが有りと判別された場合には、A相検知フラグクリアステップS303においてA相検知フラグをクリアする。すなわち、A相検知フラグをクリアしてA相の割り込みを無しとする。これにより、B相割り込み処理S103の後にこれより前のA相の割り込みの履歴を持ち越さないようにすることができる。
【0059】
B相割り込み処理S103の後にこれより前のA相の割り込みの履歴を持ち越してしまうと、チャタリングなどによりB相の信号レベルに連続して立ち下がりが発生した場合に、すべての立ち下がりについてB相割り込み処理S103における回転検出を行ってしまうおそれがある。A相割り込み検知フラグが有りの場合にこれをクリアすることで、B相割り込み処理S103の後に連続してB相の信号レベルに立ち下がりが発生したとしても、B相の割り込み処理S103における回転検出を1回のみとすることができる。
【0060】
次に、A相信号レベル判別ステップS304において、A相信号レベル取得ステップS301で取得したA相の信号レベルがHであるか否かを判別する。ここで、B相割り込み処理S103はB相の信号レベルの立ち下がりをB相の割り込みとして検知して開始されているので、B相割り込み処理S103におけるB相の信号レベルはLである。すなわち、A相信号レベル判別ステップS304において、A相の信号レベルがHであると判別された場合はB相とA相の信号レベルは異なるということと同等であり、A相の信号レベルがLであると判別された場合はB相とA相の信号レベルは同じであるということと同等である。
【0061】
A相信号レベル判別ステップS304においてA相の信号レベルがLであると判別された場合には、CCW回転検出ステップS305において反転(CCW)方向に1段回転されたとして回転検出を行う。1段あたりの操作ダイヤル10の回転量(回転角度)はあらかじめ制御装置40に設定されており、これに回転検出された段数をかけ合わせることにより実際の操作ダイヤル10の回転量(回転角度)を求めることができる。
【0062】
B相割り込み処理S103では、これより前にA相の割り込みがあった場合にのみ回転検出を行うこととしているため、ロータリーエンコーダ20の回転検出は反転(CCW)方向についてのみとしている。
【0063】
B相割り込み処理S103において回転検出を行わない場合には、B相割り込み検知フラグセットステップS306及びS308においてB相割り込み検知フラグをセットする。すなわち、B相検知フラグをセットしてB相の割り込みを有りとする。B相割り込み検知フラグは制御装置40の記憶部44に一時保持される。
【0064】
A相割り込み検知フラグ取得ステップS302でA相割り込み検知フラグが有りと判定され、A相信号レベル判別ステップS304でA相の信号レベルがHであると判定された場合には、B相割り込み検知フラグセットステップS306においてB相割り込み検知フラグをセットする。これは主に、ロータリーエンコーダ20の反転(CCW)方向の回転時にA相割り込み処理S103においてA相割り込み検知フラグがセットされ、その後に正転(CW)方向に回転した場合において、即座に正転(CW)方向の回転検出を行うことができるようにするためである。
【0065】
A相割り込み検知フラグ取得ステップS302でA相割り込み検知フラグが無しと判定され、A相信号レベル判別ステップS307でA相の信号レベルがHであると判定された場合には、B相割り込み検知フラグセットステップS308において、B相割り込み検知フラグをセットする。これは主に、ロータリーエンコーダ20の正転(CW)方向の回転時にB相割り込み検知フラグをセットしてB相の割り込みの履歴を残して正転(CW)方向の回転検出を行うことができるようにするためである。
【0066】
また、A相割り込み検知フラグ取得ステップS302でA相割り込み検知フラグが無しと判定され、A相信号レベル判別ステップS307でA相の信号レベルがLであると判定された場合には、B相割り込み処理S103が開始されたきっかけとなったB相の信号レベルの立ち下がりは例えばノイズによるものであると判断してB相割り込み検知フラグをセットしない。A相割り込み検知フラグは無しと判定されているので、当然、ロータリーエンコーダ20の反転(CCW)方向の回転検出も行わない。
【0067】
B相割り込み処理S103が終了した後は、制御装置40の割り込み検知部41はB相・A相いずれかについて割り込みを検知するまで待機する。
【0068】
次に、本実施例のロータリーエンコーダの回転検出方法において、チャタリングなどによる回転検出の誤検出を防止する様子について説明する。
【0069】
図8は、操作ダイヤル10の正転(CW)方向の回転時に、A相の信号レベルにチャタリングなどによるノイズが発生した例を示す。本実施例のデジタルカメラにおけるロータリーエンコーダの回転検出方法の流れで説明したとおり、A相の信号レベルの立ち下がりは正転(CW)方向の回転検出を行うためのA相割り込み処理S102を開始するきっかけとなる。
【0070】
図8において、B相の信号レベルの立ち下がりD1の後にA相の信号レベルの立ち下がりD2が発生して正転(CW)方向の回転検出が行われた後に、ノイズN1がA相の信号レベルに発生した場合、B相割り込み検知フラグはクリアされており、B相の信号レベルはLであるので、ノイズN1はノイズとして判断されてA相割り込み検知フラグのセットも回転検出も行われない。
【0071】
また、図8において、ノイズN2又はノイズN3がA相の信号レベルに発生した場合、B相割り込み検知フラグはクリアされており、B相の信号レベルはHであるので、A相割り込み検知フラグがセットされるが、正転(CW)方向の回転検出は行われない。A相割り込み検知フラグは、反転(CCW)方向の回転検出に用いられるものなので、正転(CW)方向の回転検出に影響を与えない。
【0072】
また、図8において、ノイズN4がA相の信号レベルに発生した場合、ノイズN4はA相の信号レベルの立ち下がりD2の前に発生するため、ノイズN4によるA相の信号レベルの立ち下がりを割り込みとして正転(CW)方向の回転検出が行われてしまう。しかしながら、その際にB相割り込み検知フラグはクリアされるため、ノイズN4の後に立ち下がりD2が発生しても、回転検出は1回のみ行われるので、正転(CW)方向の回転検出に影響を与えない。さらに、ノイズN4が連続して複数回発生した場合も、最初のノイズN4が発生した際にB相割り込み検知フラグはクリアされるため、正転(CW)方向の回転検出に影響を与えない。
【0073】
なお、本実施例では、A相・B相の信号レベルの立ち下がりをそれぞれの割り込みとしてA相・B相の割り込み処理を開始するきっかけとしていたが、これをA相・B相の信号レベルの立ち上がりとしても本発明と同じ効果を得ることができる。
【0074】
以上説明したように、本発明のロータリーエンコーダの回転検出方法によれば、高速回転するロータリーエンコーダの回転検出に対応するためにCPUなどの制御装置のサンプリング周波数を上げる必要がない。また、ロータリーエンコーダの非回転時においてもCPUなどの制御装置により常に所定の周期でA相・B相の信号レベルを監視する必要がない。これによりCPUなどの制御装置の演算負荷を抑えることができる。
【0075】
また、チャタリングなどによりA相・B相の信号レベルにノイズが発生したとしても、A相・B相の両方に割り込みが有り、かつ、A相・B相の信号レベルが同一の場合にのみ回転検出を行うため、ロータリーエンコーダの回転検出に誤作動が発生するおそれがない。
【符号の説明】
【0076】
10 操作ダイヤル
20 ロータリーエンコーダ
30 周辺回路
40 制御装置
41 割り込み検知部
42 A相割り込み処理部
43 B相割り込み処理部
44 記憶部
図1
図2
図3
図4
図5
図6
図7
図8