(57)【特許請求の範囲】
【請求項１】
駆動源と機械的に接続され、または駆動源と一体に構成され、駆動源の変位量に応じて、複数相の信号を出力するエンコーダと、前記複数相の出力信号に対してエッジを検出する検出手段と、時系列に隣接するエッジ間隔を測定する測定手段を有し、駆動源を第1の駆動速度で駆動して前記測定手段で得た値に基づいて制御目標値を取得する第１行程と、前記測定手段で得た値と前記制御目標値を比較した結果に基づいて、駆動源を前記第１の駆動速度よりも低速の第２の駆動速度で制御する第２行程とを有することを特徴とする駆動源制御方法。
【請求項２】
前記第１行程において、前記検出手段は、エンコーダのＡ相とＢ相の立ち上がりエッジと立ち下がりエッジを検出し、前記測定手段は、Ａ相立ち上がりエッジとＢ相立ち上がりエッジの区間と、Ｂ相立ち上がりエッジとＡ相立ち下がりエッジの区間と、Ａ相立ち下がりエッジとＢ相立ち下がりエッジの区間と、Ｂ相立ち下がりエッジとＡ相立ち上がりエッジの区間の、４区間についてエッジ間隔を測定すると共に、４区間を１周期として１周期につき１回の割合で、駆動源に対する制御指令を更新し駆動源を前記第１の駆動速度で駆動することを特徴とする請求項１に記載の駆動源制御方法。
【請求項３】
前記複数相の出力信号に対して特定相の特定エッジを検出する第１特定状態検出手段を有し、前記第１特定状態の検出タイミングに基づき、前記第１行程のシーケンスを制御することを特徴とする請求項１に記載の駆動源制御方法。
【請求項４】
前記第１特定状態の検出タイミングに基づき、前記第２行程のシーケンスを制御することを特徴とする請求項３に記載の駆動源制御方法。
【請求項５】
前記第１行程において、前記検出手段は、前記複数相の出力信号のうちの１つに対して立ち上がりエッジと立ち下がりエッジを検出し、前記測定手段は、立ち上がりエッジと立ち下がりエッジの区間と、立ち下がりエッジと立ち上がりエッジの区間の、２区間についてエッジ間隔を測定すると共に、２区間を１周期として１周期につき１回、駆動源に対する制御指令を更新し駆動源を前記第１の駆動速度で駆動することを特徴とする請求項１に記載の駆動源制御方法。
【請求項６】
前記複数相の出力信号の一方に対して、特定エッジ（例えば立ち上がりエッジ）を検出する第２特定状態検出手段を有し、前記第２特定状態の検出タイミングに基づき、前記第１行程のシーケンスを制御することを特徴とする請求項１に記載の駆動源制御方法。
【請求項７】
前記第２特定状態の検出タイミングに基づき、前記第２行程のシーケンスを制御することを特徴とする請求項６に記載の駆動源制御方法。
【請求項８】
駆動源と機械的に接続され、または駆動源と一体に構成され、駆動源の変位量に応じて、１相の信号を出力するエンコーダと、１相の出力信号に対してエッジを検出する検出手段と、時系列に隣接するエッジ間隔を測定する測定手段を有し、駆動源を第１の駆動速度で駆動して前記測定手段で得た値に基づいて制御目標値を取得する第１行程と、前記測定手段で得た値と前記制御目標値を比較した結果に基づいて、駆動源を前記第１の駆動速度よりも低速の第２の駆動速度で制御する第２行程とを有することを特徴とする駆動源制御方法。
【請求項９】
前記第１行程において、前記検出手段は、前記１相の出力信号に対して立ち上がりエッジと立ち下がりエッジを検出し、前記測定手段は、立ち上がりエッジから立ち下がりエッジまでの区間と、立ち下がりエッジから立ち上がりエッジまでの区間の、２区間についてエッジ間隔を測定すると共に、２区間を１周期として１周期につき１回、駆動源に対する制御指令を更新し駆動源を前記第１の駆動速度で駆動することを特徴とする請求項８に記載の駆動源制御方法。
【請求項１０】
前記１相の出力信号に対して、特定エッジ（例えば立ち上がりエッジ）を検出する特定状態検出手段を有し、前記特定状態の検出タイミングに基づき、前記第１行程のシーケンスを制御することを特徴とする請求項８に記載の駆動源制御方法。
【請求項１１】
前記特定状態の検出タイミングに基づき、前記第２行程のシーケンスを制御することを特徴とする請求項１０に記載の駆動源制御方法。
【請求項１２】
前記制御目標値を記憶するための記憶手段を有し、駆動源を含む装置の電源が投入された直後に前記第１行程を実施して、前記制御目標値を前記記憶手段に格納すると共に、以降は前記記憶手段に格納された制御目標値を用いて、駆動源を制御することを特徴とする請求項１又は請求項８に記載の駆動源制御方法。
【請求項１３】
前記制御目標値を記憶するための記憶手段を有し、前記第２行程実行中に前記エッジ間隔を測定し、測定結果に応じて前記制御目標値を更新することを特徴とする請求項１又は請求項８に記載の駆動源制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はモータ等の駆動源に結合、あるいは一体的に装備されるエンコーダ出力を用いて駆動源を制御する方法に関し、特に駆動源を一定速度に駆動する駆動源制御方法に関するものである。
【０００２】
【従来の技術】
図１４を用いて従来の駆動源制御方法を説明する。
【０００３】
図１４は従来の駆動源制御方法の概要を示すブロック図である。図１４において、１はＤＣモータ等の駆動源である。２は駆動源１の同軸上に配置されたエンコーダであり、駆動源１が所定角度だけ回転する毎に、パルスを発生する。３ａはエンコーダのＡ相信号、３ｂはエンコーダのＢ相信号である。一般にＡ相とＢ相の位相は９０゜ずらして設計されるが、１０数％程度の誤差を持つものもある。また各相信号のデューティ比は５０％となるよう設計されているが、１０数％程度の誤差を持つものもある。４ａ、４ｂはエッジ検出部であり、Ａ相とＢ相各々の立ち上がりエッジと立ち下がりエッジを検出し、パルスとして出力する。５は回転方向検出部であり、例えばＡ相の立ち上がりエッジ検出時のＢ相のステート（ＬｏｗかＨｉか）に応じて駆動源１の回転方向を検出する。
【０００４】
６は合成回路部であり、エッジ検出部４ａ、４ｂの出力をＯＲ演算し、Ａ相とＢ相の立ち上がりと立ち下がりエッジを全てパルスとして出力する。７はアップダウンカウンタであり、回転方向検出部５の出力に応じて、合成回路６から出力されたパルスをアップダウンカウントする。アップダウンカウンタ７の出力を参照することで、駆動源１で駆動される対象がどの位置にあるかを検出することができる。８はプリスケーラであり入力信号を所望の率で分周する。９はセレクタであり、プリスケーラ８の出力とエンコーダ出力のいずれかを選択できる。１０は演算部（以降ＣＰＵと略称する）であり、１１はＣＰＵ１０に供給されるクロック信号を発生するクロック発生器である。１２はモータドライバであり、ＣＰＵ１０が出力する制御信号に基づき、駆動源１の回転速度を制御する。
【０００５】
次に図１５を併用してＣＰＵ１０が駆動源１の速度情報を取得０するまでの過程を詳細に説明する。図１５において１３はセレクタ９の出力信号であり、１４ａ、１４ｂ、１４ｃ、１４ｄはセレクタ出力信号１３の立ち上がりエッジを示している。１５ａｂ、１５ｂｃ、１５ｃｄは、それぞれ立ち上がりエッジ１４ａ〜１４ｂ、１４ｂ〜１４ｃ、１４ｃ〜１４ｄの時間間隔に相当する。１６ａｂ、１６ｂｃ、１６ｃｄはそれぞれ時間間隔１５ａｂ、１５ｂｃ、１５ｃｄにおいて後述するクロック信号のカウンタ値を示している。また１７ｂ、１７ｃ、１７ｄはＣＰＵに対する割り込み要求を意味している。
【０００６】
ＣＰＵ１０はセレクタ出力信号１３の立ち上がりエッジ間隔、即ち１５ａｂ、１５ｂｃ、１５ｃｄを、クロック発生器１１が出力するクロック信号をカウントして計測する。ＣＰＵ１０にはこのための図示しない内蔵カウンタと、内蔵カウンタの値を保持する図示しない内蔵レジスタ装備している。
【０００７】
図示しない内蔵カウンタはフリーランカウンタであり、クロック発生器１１が発生するクロックパルスが入力する度に値がインクリメントされ、時間経過と共にカウンタ値は増加する。
【０００８】
ＣＰＵ１０にセレクタ出力信号１３の立ち上がりエッジが入力されると、それまでクロック数を計数してきたカウンタの値は、図示しない内蔵レジスタにコピーされると共に、カウンタの値は０にリセットされる。例えばエッジ間隔１５ａｂ期間中のクロック信号を計数したカウント値１６ａｂは図示しない内蔵レジスタに保持され、内蔵カウンタはただちに０にリセットされる。リセット後もクロック信号が入力される度にカウンタ値は増加するが、カウンタ値１６ａｂは内蔵レジスタにコピーされている。
【０００９】
一方立ち上がりエッジによってＣＰＵ１０には割り込み要求が発生する。例えば立ち上がりエッジ１４ｂによってＣＰＵ１０に割り込み要求１７ｂが発生すると、ＣＰＵ１０は内蔵レジスタに保持された値を読み取る。このときのカウント値は間隔１５ａｂを計測した、カウント値１６ａｂである。カウンタ値１６ａｂは次の立ち上がりエッジ１４ｃが発生するまで内蔵レジスタに保持されるため、ソフトウェアによる比較的低速な割り込み処理でも、カウンタ値１６ａｂを容易に取得することができる。同様にしてＣＰＵ１０は、立ち上がりエッジ１４ｃによる割り込み要求１７ｃにより、間隔１５ｂｃに対応したカウント値１６ｂｃを、また立ち上がりエッジ１４ｄによる割り込み要求１７ｄにより、間隔１５ｃｄに対応したカウント値１６ｃｄを入手することができる。
【００１０】
本来駆動源１が等速度に回転していれば、出力信号１３の各立ち上がりエッジ１４ａ、１４ｂ、１４ｃ、１４ｄは等間隔になるため、時間間隔１５ａｂ、１５ｂｃ、１５ｃｄは等しく、従ってカウンタ値１６ａｂ、１６ｂｃ、１６ｃｄも全て等しくなる。しかし駆動源１に速度変動が発生すると、図示するように、クロック信号のカウンタ値１６ａｂ、１６ｂｃ、１６ｃｄは、駆動源１の速度に応じて変化する。例えば駆動源１の速度が低下すると、セレクタ出力信号１３の立ち上がりエッジの間隔が広がり、カウンタ値は大きくなる。逆に駆動源１の速度が増加すると、出力信号１３の立ち上がりエッジの間隔が狭まり、カウンタ値は小さくなる。従ってカウンタ値によって駆動源１の速度が計測できることになる。
【００１１】
次に計測したカウンタ値を速度情報に変換する過程を詳細に説明する。
エンコーダ信号は駆動源、例えばモータが所定の角度回転する毎に発生する「距離」を示す信号である。またクロック信号を計数したカウンタ値は「時間」を表わすから、ＣＰＵ１０は距離÷時間を演算することで、駆動源１の速度情報を入手することができる。エンコーダの性質上、「距離」は一定値とみなせるから、適当な数値を速度変換定数として定義し、速度変換定数÷カウンタ値を計算して、速度情報とする。
【００１２】
次に得られた速度情報に基づいて、制御信号を生成するまでの過程を詳細に説明する。
【００１３】
最終的な制御信号を得るためには、制御対象をどのように制御するのか、その指針となる制御目標が必要である。速度制御では駆動源が所定の一定速度で動作している状態が理想状態であるが、このときのセレクタ出力１３のエッジ周期は、駆動系の設計により決定される事項である。またエッジ周期を計測するクロック信号の周波数も同様に、設計次第である。従って理想的な状態における内蔵カウンタの計測値（理論カウンタ値）も、駆動系の設計時点で決定されており、前述のごとく速度変換定数は一定であるから、理想的な速度情報（目標速度）＝速度変換定数÷理論カウンタ値と定まり、これも当然一定の値となる。そして制御の目的は、計測された速度情報と理論速度を等しくすることである。この状態が確保できているならば、系は理想的に駆動されていることになる。
【００１４】
図１６は従来例における制御信号生成過程を示すフローを示す図である。従来例ではＰＩ制御を採用している。ＰＩ制御とはＰ（Ｐｒｏｐｏｒｔｉｏｎａｌ：比例）項とＩ（Ｉｎｔｅｇｒａｌ：積分）項を用いた手法であり、比例積分制御とも呼ばれ、非常にポピュラーなフィードバック制御手法である。
【００１５】
まずステップ１で速度偏差を（数１）に従って計算する。
（数１）  速度偏差ｅ＝目標速度−速度情報
次にステップ２で、（数２）に示すようにステップＳ１で得られた速度偏差ｅを累積（積分）して距離の偏差を求める。
【００１６】
（数２）  距離偏差＝Σｅ
次にステップ３で速度偏差と距離偏差を用いて速度指令値を（数３）に従って計算する。
【００１７】
（数３）  速度指令値＝Ｋ｛速度偏差＋距離偏差／Ｔ｝
比例積分制御にはＫとＴの２つの係数があり、Ｋを比例係数、Ｔを積分係数と呼称する。これらの係数は、駆動系を構成するハードウェア（モータ、モータドライバ等）に依存しており、例えばＳＰＩＣＥ等によるアナログシミュレーションや限界感度法などの方法によって定めることができる。
【００１８】
次に従来例において駆動対象の速度を変更する方法について図１４を用いて説明する。簡単のためにＣＰＵ１０がエンコーダの直接出力を、セレクタ出力１３として選択した時の駆動系の速度を基準速度Ｖとする。
【００１９】
まず駆動速度を２×Ｖに変更する場合を説明する。ＣＰＵ１０はプリスケーラ８に対して入力信号を２分周するように設定し、セレクタ９に対してプリスケーラ８の出力を選択するよう指定する。これらによってＣＰＵ１０には駆動系の速度がＶのときの２倍周期（周波数＝１／２）で立ち上がりエッジが入力される。
もし速度が基準速度ＶのままならＣＰＵの内蔵カウンタの値は基準速度Ｖのときの２倍になるが、ＣＰＵ１０は内蔵カウンタの値が一定となるように駆動源を制御するから、結果的に駆動源の駆動速度は２×Ｖとなる。即ち基準速度Ｖと２×Ｖときでセレクタ出力１３のエッジ周期は変わらない。より端的に言えば、速度×プリスケーラ分周比＝一定となるのである。ただし駆動系の時間当たりの変異量は速度が大きくなれば増加するため、制御系のループゲインは速度に応じて変更せねばならない。具体的には、図１６を用いて説明した比例係数Ｋを速度に応じて増減させる。例えば速度が２×Ｖであれば、Ｋも２×Ｋという具合に速度倍率と同じ倍率を乗じることでループゲインを補償する。
【００２０】
次に図１７（ａ）〜（ｅ）を用いて駆動速度とエンコーダ出力の関係について説明する。図１７（ａ）〜（ｅ）において○はＣＰＵ１０による駆動源の制御点を示す。
【００２１】
上述の手法を用いれば、基準速度Ｖ（図１７（ｃ））に対して高速に制御する場合は、プリスケーラでエンコーダ信号を間引くことで簡単に対応できる。例えば基準速度Ｖの２倍の速度はエンコーダ出力を１／２に（図１７（ｂ））、基準速度Ｖの４倍の速度はエンコーダ出力を１／４に（図１７（ａ））間引き、○で示すＣＰＵ１０のサービス周期を一定にできる。
【００２２】
しかしエンコーダ信号を増倍することはできないため、基準速度Ｖより低速に制御するのは簡単ではない。図１７（ｄ）と図１７（ｅ）における□はＣＰＵ１０がサービスを実行できない制御点を示しており、例えば１／２×ＶのときはＣＰＵ１０が制御演算を実施するサービス回数は基準速度Ｖ時の１／２倍（図１７（ｄ））となり、１／４×Ｖのときは同１／４倍（図１７（ｅ））となる。サービス回数の低下はそのまま制御性能、特にサーボ帯域の低下となって現われる。
【００２３】
この対策として、例えば図１８の方法がある。図１８はＣＰＵ１０のサービス回数を単純に増加する方法を示す図である。図１８において○はＣＰＵ１０のサービス実施の対象となるエッジを示している。まず駆動速度が基準速度Ｖのとき、ＣＰＵ１０はエンコーダの単相信号（例えばＡ相）の単エッジを用いて制御を実施するが、駆動速度が１／２倍の時はエンコーダの単相信号（例えばＡ相）の両エッジ、駆動速度が１／４倍の時はエンコーダの両相信号（Ａ相とＢ相）の両エッジを用いて制御を実施するものである。
【００２４】
この方法なら非常に簡単にＣＰＵのサービス回数を確保できる。しかし本来エンコーダのエッジ間隔（＝距離）は常に等しいという前提でサーボ演算はなされるが、上述の手法では、この前提が成立しない場合がある。
【００２５】
次に図１９を用いてエッジ間隔が等しくならない場合について説明する。
図１９（ａ）はエンコーダの各相信号のデューティが５０％で、相間の位相差が９０゜の状態を示す図であり、一方図１９（ｂ）は、例えばエンコーダの精度が低く、図１９（ａ）の状態が崩れた場合を示す図である。図１９（ａ）では、駆動源が理想的に駆動された場合は、２つの相信号によって形成される４つの区間（区間Ａ：Ａ相立ち上がりエッジ〜Ｂ相立ち上がりエッジ、区間Ｂ：Ｂ相立ち上がりエッジ〜Ａ相立ち下がりエッジ、区間Ｃ：Ａ相立ち下がりエッジ〜Ｂ相立ち下がりエッジ、区間Ｄ：Ｂ相立ち下がりエッジ〜Ａ相立ち上がりエッジ）の全ての区間距離が等しくなる。よって２つの相信号の全エッジを取得すれば、エッジ間隔も等しくなる。
【００２６】
ところが図１９（ｂ）ではデューティが５０％でなく、また相間の位相差も９０゜ではないため、Ａ相、Ｂ相の２つの相信号によって形成される４つの区間距離Ａ’、Ｂ’、Ｃ’、Ｄ’はまちまちであり、駆動源が理想的に駆動されていても、各相の変化点で生成されるエッジ間隔は等しくならない。
【００２７】
前述のように、サーボ演算はエンコーダのエッジ間隔（＝距離）は常に等しいという前提でなされるため、図１９（ｂ）の状態では演算の結果、出力される制御信号は区間Ａ、区間Ｂ、区間Ｃ、区間Ｄを一周期として振動する。このため駆動源から振動周期と一致する異音が生じたり、制御系全体の挙動が不安定になったりする。
【００２８】
一般に市販されているエンコーダの大半は図１９（ｂ）のような特性を示し、中にはデューティ、相間の位相差とも１０数％ばらつくものさえ存在する。
【００２９】
【発明が解決しようとする課題】
上述してきたように従来の駆動源制御方法では、次の課題がある。まず駆動源の速度を基準速度Ｖより低速に制御しようとする場合、相対的にエンコーダの分解能が低くなるため制御帯域を確保することが困難となる。図１８で示したようにエンコーダのエッジ間隔は駆動源が低速になるほど広がるため、系の速度変化に対して素早く反応できなくなる。一般的には、この立ち上がりエッジの周期の逆数（周波数）がサンプリングレートであり、サーボ系はサンプリングレートが低下するとサービス回数が低下し、制御性能が劣化する。
【００３０】
高分解能のエンコーダを使用することも可能であるが、一般に分解能の高いエンコーダは非常に高価であり、コストのかかるものになってしまう。
【００３１】
またエンコーダにはＡ相とＢ相があるので、例えばＡ相とＢ相の両相の両方のエッジを検出し、この検出タイミングに基づき上述した方法で速度情報を得て制御を行えば、原理的には従来例の４倍のサンプリングレートを確保できることになる。しかし図１９（ａ）、図１９（ｂ）を用いて詳細に説明したように、エンコーダ各相のデューティ比や相間の位相差は１０数％ばらつくこともあるため、もともと一定の距離を示すはずの情報を信頼できなくなる。これを無視して制御を行うと、駆動源から異音が発生したり制御系の挙動が不安定となる。
【００３２】
本発明は上述した課題を解決し、駆動源を低速に駆動したときもサンプリングレートを低下させず帯域を確保でき、更に両相・両エッジを検出し単純にサンプリングレートを確保した場合に見られるような、異音や制御系の挙動不安定のない駆動源制御方法を提供することを目的とする。
【００３３】
【課題を解決するための手段】
本発明に係る駆動源制御方法は、Ａ相、Ｂ相の複数相信号を出力するエンコーダと、複数相の出力信号に対して立ち上がりエッジと立ち下がりエッジを検出する検出手段と、時系列に隣接するエッジ間隔を測定する測定手段を有し、駆動源を第１の駆動速度で駆動して測定手段で得た値に基づいて制御目標値を取得する第１行程と、測定手段で得た値と制御目標値を比較した結果に基づいて駆動源を第１の駆動速度よりも低速の第２の駆動速度で制御する第２行程とを有する。これにより第１行程でエンコーダのバラつきに対応する制御目標値を得ることができる。また第２行程では第１行程で得た制御目標値を用いて駆動源を制御することができる。
【００３４】
更に第１行程において、検出手段は、エンコーダのＡ相とＢ相の立ち上がりエッジと立ち下がりエッジを検出し、測定手段は、Ａ相立ち上がりエッジとＢ相立ち上がりエッジの区間と、Ｂ相立ち上がりエッジとＡ相立ち下がりエッジの区間と、Ａ相立ち下がりエッジとＢ相立ち下がりエッジの区間と、Ｂ相立ち下がりエッジとＡ相立ち上がりエッジの区間の、４区間についてエッジ間隔を測定すると共に、４区間を１周期として１周期につき１回の割合で、駆動源に対する制御指令を更新し駆動源を第１の駆動速度で駆動する。これにより安定した駆動条件のもとで上記各区間単位で制御目標値を入手することができる。
【００３５】
更に複数相の出力信号に対して特定相の特定エッジ（例えばＡ相の立ち上がりエッジ）を検出する第１特定状態検出手段を有し、第１特定状態の検出タイミングに基づき、第１行程のシーケンスを制御する。これにより上述の４区間を特定することができる。
【００３６】
更に第１特定状態の検出タイミングに基づき、第２行程のシーケンスを制御する。これにより上述の４区間を特定し、各区間に対して計測された制御目標値を選択して、制御を実行できる。
【００３７】
また第１行程において、検出手段は、複数相の出力信号のうちの１つに対して立ち上がりエッジと立ち下がりエッジを検出し、測定手段は、立ち上がりエッジと立ち下がりエッジの区間と、立ち下がりエッジと立ち上がりエッジの区間の、２区間についてエッジ間隔を測定すると共に、２区間を１周期として１周期につき１回、駆動源に対する制御指令を更新し駆動源を第１の駆動速度で駆動する。これにより測定手段に時間的な余裕がない場合でも、上記各区間単位で制御目標値を入手することができる。
【００３８】
更に複数相の出力信号の一方に対して、特定エッジ（例えば立ち上がりエッジ）を検出する第２特定状態検出手段を有し、第２特定状態の検出タイミングに基づき、第１行程のシーケンスを制御する。これにより上述の２区間を特定することができる。
【００３９】
更に第２特定状態の検出タイミングに基づき、第２行程のシーケンスを制御する。これにより上述の２区間を特定し、各区間に対して計測された制御目標値を選択して、制御を実行できる。
【００４０】
また１相の信号を出力するエンコーダと、１相の出力信号に対してエッジを検出する検出手段と、時系列に隣接するエッジ間隔を測定する測定手段を有し、駆動源を第１の駆動速度で駆動して測定手段で得た値に基づいて制御目標値を取得する第１行程と、測定手段で得た値と制御目標値を比較した結果に基づいて、駆動源を第１の駆動速度よりも低速の第２の駆動速度で制御する第２行程とを有する。これにより第１行程でエンコーダのバラつきに対応する制御目標値を得、第２行程では第１行程で得た制御目標値を用いて駆動源を制御することができる。
【００４１】
更に第１行程において、検出手段は、１相の出力信号に対して立ち上がりエッジと立ち下がりエッジを検出し、測定手段は、立ち上がりエッジと立ち下がりエッジの区間と、立ち下がりエッジと立ち上がりエッジの区間の、２区間についてエッジ間隔を測定すると共に、２区間を１周期として１周期につき１回、駆動源に対する制御指令を更新し駆動源を第１の駆動速度で駆動する。これにより安定した駆動条件のもとで上述の２区間を特定することができる。
【００４２】
更に１相の出力信号に対して、特定エッジ（例えば立ち上がりエッジ）を検出する特定状態検出手段を有し、特定状態の検出タイミングに基づき、第１行程のシーケンスを制御する。これにより上述の２区間を特定することができる。
【００４３】
更に特定状態の検出タイミングに基づき、前記第２行程のシーケンスを制御する。これにより上述の２区間を特定し、各区間に対して計測された制御目標値を選択して、制御を実行できる。
【００４４】
また制御目標値を記憶するための記憶手段を有し、駆動源を含む装置の電源が投入された直後に第１行程を実施して、制御目標値を記憶手段に格納すると共に、以降は記憶手段に格納された制御目標値を用いて、駆動源を制御する。これにより頻繁に駆動源のスタート・ストップが発生する場合でも時間的な無駄を省くことができる。
【００４５】
また制御目標値を記憶するための記憶手段を有し、第２行程実行中に前記エッジ間隔を測定し、測定結果に応じて制御目標値を更新する。これにより駆動源を常に安定して制御できる。
【００４６】
【発明の実施の形態】
本発明の請求項１に記載の発明は、駆動源と機械的に接続され、または駆動源と一体に構成され、駆動源の変位量に応じて、複数相の信号を出力するエンコーダと、前記複数相の出力信号に対してエッジを検出する検出手段と、時系列に隣接するエッジ間隔を測定する測定手段を有し、駆動源を第１の駆動速度で駆動して前記測定手段で得た値に基づいて制御目標値を取得する第１行程と、前記測定手段で得た値と制御目標値を比較した結果に基づいて、駆動源を前記第１の駆動速度よりも低速の第２の駆動速度で制御する第２行程とを有することを特徴とする駆動源制御方法であり、これにより第１行程でエンコーダのバラつきに対応する制御目標値を得ることができる。また第２行程では第１行程で得た制御目標値を用いて駆動源を制御することができる。
【００４７】
本発明の請求項２に記載の発明は、前記第１行程において、前記検出手段は、エンコーダのＡ相とＢ相の立ち上がりエッジと立ち下がりエッジを検出し、前記測定手段は、Ａ相立ち上がりエッジとＢ相立ち上がりエッジの区間と、Ｂ相立ち上がりエッジとＡ相立ち下がりエッジの区間と、Ａ相立ち下がりエッジとＢ相立ち下がりエッジの区間と、Ｂ相立ち下がりエッジとＡ相立ち上がりエッジの区間の、４区間についてエッジ間隔を測定すると共に、４区間を１周期として１周期につき１回の割合で、駆動源に対する制御指令を更新し駆動源を前記第１の駆動速度で駆動することを特徴とする請求項１に記載の駆動源制御方式であり、これにより上記各区間単位で制御目標値を入手することができる。
【００４８】
本発明の請求項３に記載の発明は、前記複数相の出力信号に対して特定相の特定エッジ（例えばＡ相の立ち上がりエッジ）を検出する第１特定状態検出手段を有し、前記第１特定状態の検出タイミングに基づき、前記第１行程のシーケンスを制御することを特徴とする請求項１に記載の駆動源制御方式であり、これにより上述の４区間を特定することができる。
【００４９】
本発明の請求項４に記載の発明は、前記第１特定状態の検出タイミングに基づき、前記第２行程のシーケンスを制御することを特徴とする請求項３に記載の駆動源制御方式であり、これにより上述の４区間を特定し、各区間に対して計測された制御目標値を選択して、制御を実行できる。
【００５０】
本発明の請求項５に記載の発明は、前記第１行程において、前記検出手段は、前記複数相の出力信号のうちの１つに対して立ち上がりエッジと立ち下がりエッジを検出し、前記測定手段は、立ち上がりエッジと立ち下がりエッジの区間と、立ち下がりエッジと立ち上がりエッジの区間の、２区間についてエッジ間隔を測定すると共に、２区間を１周期として１周期につき１回、駆動源に対する制御指令を更新し駆動源を第１の駆動速度で駆動することを特徴とする請求項１に記載の駆動源制御方式であり、これにより測定手段に時間的な余裕がない場合でも、上記各区間単位で制御目標値を入手することができる。
【００５１】
本発明の請求項６に記載の発明は、前記複数相の出力信号の一方に対して、特定エッジ（例えば立ち上がりエッジ）を検出する第２特定状態検出手段を有し、前記第２特定状態の検出タイミングに基づき、前記第１行程のシーケンスを制御することを特徴とする請求項１に記載の駆動源制御方式であり、これにより上述の２区間を特定することができる。
【００５２】
本発明の請求項７に記載の発明は、前記第２特定状態の検出タイミングに基づき、前記第２行程のシーケンスを制御することを特徴とする請求項６に記載の駆動源制御方式であり、これにより上述の２区間を特定し、各区間に対して計測された制御目標値を選択して、制御を実行できる。
【００５３】
本発明の請求項８に記載の発明は、駆動源と機械的に接続され、または駆動源と一体に構成され、駆動源の変位量に応じて、１相の信号を出力するエンコーダと、１相の出力信号に対してエッジを検出する検出手段と、時系列に隣接するエッジ間隔を測定する測定手段を有し、駆動源を第１の駆動速度で駆動して前記測定手段で得た値に基づいて制御目標値を取得する第１行程と、前記測定手段で得た値と制御目標値を比較した結果に基づいて、駆動源を前記第１の駆動速度よりも低速の第２の駆動速度で制御する第２行程とを有することを特徴とする駆動源制御方法であり、これにより第１行程でエンコーダのバラつきに対応する制御目標値を得、第２行程では第１行程で得た制御目標値を用いて駆動源を制御することができる。
【００５４】
本発明の請求項９に記載の発明は、前記第１行程において、前記検出手段は、前記１相の出力信号に対して立ち上がりエッジと立ち下がりエッジを検出し、前記測定手段は、立ち上がりエッジと立ち下がりエッジの区間と、立ち下がりエッジと立ち上がりエッジの区間の、２区間についてエッジ間隔を測定すると共に、２区間を１周期として１周期につき１回、駆動源に対する制御指令を更新し駆動源を前記第１の駆動速度で駆動することを特徴とする請求項８に記載の駆動源制御方式であり、これにより上述の２区間を特定することができる。
【００５５】
本発明の請求項１０に記載の発明は、前記１相の出力信号に対して、特定エッジ（例えば立ち上がりエッジ）を検出する特定状態検出手段を有し、前記特定状態の検出タイミングに基づき、前記第１行程のシーケンスを制御することを特徴とする請求項８に記載の駆動源制御方式であり、これにより上述の２区間を特定することができる。
【００５６】
本発明の請求項１１に記載の発明は、前記特定状態の検出タイミングに基づき、前記第２行程のシーケンスを制御することを特徴とする請求項１０に記載の駆動源制御方式であり、これにより上述の２区間を特定し、各区間に対して計測された制御目標値を選択して、制御を実行できる。
【００５７】
本発明の請求項１２に記載の発明は、前記制御目標値を記憶するための記憶手段を有し、駆動源を含む装置の電源が投入された直後に前記第１行程を実施して、前記制御目標値を前記記憶手段に格納すると共に、以降は前記記憶手段に格納された制御目標値を用いて、駆動源を制御することを特徴とする請求項１及び８に記載の駆動源制御方式であり、これにより頻繁に駆動源のスタート・ストップが発生する場合でも時間的な無駄を省くことができる。
【００５８】
本発明の請求項１３に記載の発明は、前記制御目標値を記憶するための記憶手段を有し、前記第２行程実行中に前記エッジ間隔を測定し、測定結果に応じて前記制御目標値を更新することを特徴とする請求項１及び８に記載の駆動源制御方式であり、これにより駆動源を常に安定して制御できる。
【００５９】
（実施の形態１）
以下、本発明の一実施の形態について図面を参照しながら説明する。実施の形態１では本発明を画像読み取り装置に適用した場合について説明する。
【００６０】
近年ワークステーションやパーソナルコンピュータ等が高機能化され、カラー画像の編集、電子ファイリングやＯＣＲ（光学式文字読み取り装置）等による文字入力が高速に処理できるようになった。これに伴い画像を簡易に入力することができるフラットベッドタイプの画像読み取り装置が普及してきている。この種の装置では、原稿を読み取るためにＤＣモータ等の駆動源が採用されている。
【００６１】
図１は本発明に係る駆動源制御方法を応用した画像読み取り装置の概略を示す図である。図１において１８は画像読み取り装置本体である。１９は読み取らせる原稿を載置する原稿ガラスである。２０は原稿を走査して読みとるキャリッジである。キャリッジ２０は図示しないシャフト、レール等の支持部材により支持され、移動方向を一方向に規制されている。２１はキャリッジを駆動する駆動源でありＤＣモータが採用されている。２２は駆動源２１の軸に直結されたエンコーダであり、駆動源２１が所定量回転する毎にＡ相、Ｂ相の２つの相から位相が約９０゜ずれた、デューティ比約５０％のパルスを発生する。２３は駆動プーリ、２４はタイミングベルトであり、駆動源２１で発生した動力は、タイミングベルト２４によって駆動プーリ２３に伝達される。２５はワイヤ、２６は従動プーリであり、ワイヤ２５は駆動プーリ２３と従動プーリ２６の間に張られ、駆動プーリ２３の回転に伴ってキャリッジ２０を方向ｄ１及びその逆方向に移動させる。
【００６２】
２７は原稿ガラス１９上に載置された原稿であり、原稿２７はキャリッジ２０の移動によりライン単位に読み取られる。２８は原稿カバーであり、支持部２９によって開閉可能に支持されている。３０は基準取得位置であり、この位置の原稿ガラス上には白色の基準板が張り付けられている。ｐ１はキャリッジ２０のホームポジションであり、画像読み取り装置が待機中の場合は、キャリッジ２０は必ずホームポジションｐ１に位置している。
【００６３】
次に図２は本発明に係る駆動源制御方法を適用した画像読み取り装置の光学系の概略を示す図である。図２において３１は原稿を照射するランプ、３２は実質的に画像読み取り位置を特定するアパーチャ、３３ａ、３３ｂ、３３ｃは原稿からの反射光を反射する反射ミラー、３４は光学情報を電気信号に変換するイメージセンサ、３５はイメージセンサ３４上にイメージを結像させる結像レンズである。
【００６４】
以上の様に構成された画像読み取り装置について、図１及び図２を用いて、以下にその動作を説明する。
【００６５】
装置の電源が投入されると、キャリッジ２０は初期位置にかかわらず、ホームポジションｐ１に復帰する。その後、基準取得位置３０に移動し、ランプ３１を点灯して基準板を実際に読み取ってイメージセンサ３４から出力されるアナログ信号に対する増幅率の決定、及び白黒レベルの補正（シェーディング補正）等を行なう。その後再度ホームポジションｐ１に復帰し、待機状態となる。
【００６６】
次に本発明に係る駆動源制御方法を応用した画像読み取り装置の読み取り動作について詳細に説明する。
【００６７】
例えばパーソナルコンピーュータ等の外部ホスト（図示せず。以降、単にＰＣと略称する）より、読み取り解像度、読み取り範囲等の設定を行なった後、原稿の読み取り命令が出されると、ランプ３１を点灯すると共に駆動源２１を回転し、タイミングベルト２４、駆動プーリ２３、ワイヤ２５及び従動プーリ２６を介して駆動力をキャリッジ２０に伝達し、キャリッジ２０を方向ｄ１に、ＰＣから予め設定された読み取り解像度に対応した速度で移動させる。ＰＣから設定された読み取り範囲に対応した領域の先頭にキャリッジ２０が到達すると、原稿ガラス１９上に載置された原稿の読み取りを開始する。原稿は、原稿ガラス１９を通してランプ３１により照射され、原稿からの反射光は反射ミラー３３ａ、３３ｂ、３３ｃにより反射され、結像レンズ３５によりイメージセンサ３４上に結像され、電気信号に変換される。指定された読み取り範囲に対する読み取り動作が終了すると、キャリッジ２０を方向ｄ１とは逆方向に移動させ、ホームポジションｐ１に復帰させる。
【００６８】
以上述べたように画像読み取り装置はＰＣから指定された解像度に応じてキャリッジ２０の移動速度を変化させて画像を読み取る。
【００６９】
次に本発明に係る駆動源制御方法を図３を用いて詳細に説明する。図３は本発明に係る駆動源制御方法の構成を示すブロック図である。
【００７０】
図３において、２１はキャリッジを駆動する駆動源であり、ＤＣモータが採用されている。２２は駆動源２１の軸に直結されたエンコーダであり、駆動源２１が所定量回転する毎にＡ相、Ｂ相の２つの相から位相が約９０゜ずれた、デューティ比約５０％のパルスを発生する。３６ａはエンコーダ２２から出力されるＡ相信号、３６ｂはエンコーダ２２から出力されるＢ相信号である。一般にＡ相とＢ相の位相は９０゜ずらして設計されるが、１０数％程度の誤差を持つものもある。また各相信号のデューティ比は５０％となるよう設計されているが、１０数％程度の誤差を持つものもある。３７ａ、３７ｂはエッジを検出する検出手段としてのエッジ検出部であり、Ａ相とＢ相各々の立ち上がりエッジと立ち下がりエッジを検出し、パルスとして出力する。
【００７１】
３８は回転方向検出部であり、例えばＡ相の立ち上がりエッジ検出時のＢ相のステート（ＬｏｗかＨｉか）に応じて駆動源２１の回転方向、即ちキャリッジ２０の移動方向を検出する。３９は合成回路部であり、エッジ検出部３７ａ、３７ｂの出力をＯＲ演算し、エッジ検出部３７ａ、３７ｂで検出されたＡ相とＢ相の立ち上がりと立ち下がりエッジを全てパルスとして出力する。４０はアップダウンカウンタであり、回転方向検出部３８の出力に応じて、合成回路部３９から出力されたパルスをアップダウンカウントする。アップダウンカウンタ４０の出力を参照することで、駆動源２１で駆動されるキャリッジ２０がどの位置にあるかを検出することができる。４１はプリスケーラであり、指定された読み取り解像度に依存して決まるキャリッジ２０の移動速度に応じて、所望の率で入力信号を分周する。４２はプリスケーラ出力であり、４３は（プリスケーラ４１により分周されていない）合成回路出力であり、４４はエンコーダ単相出力である。４５はセレクタであり、プリスケーラ出力４２と、合成回路出力４３とエンコーダ単相出力４４のいずれかを選択する。４６は後述のごとくセレクタ４５から出力される信号のエッジ間隔を測定する測定手段としての演算装置（以降ＣＰＵと略称する）であり、更にＣＰＵ４６は後述のようにエッジ間隔を測定して駆動源の速度情報（即ち駆動速度）を算出するとともに、この速度情報に基づいてモータドライバ４８に速度指令値を出力し駆動源２１を制御する。４７はＣＰＵ４６に供給されるクロック信号を発生するクロック発生器である。４８はモータドライバであり、ＣＰＵ４６が出力する制御信号に基づき駆動源２１の回転速度を制御する。４９は不揮発性メモリであり、例えばシリアル通信等によりＣＰＵ４６とデータのやり取りを行う。また後述するように、不揮発性メモリ４９には駆動源の駆動速度の目標値としての制御目標値が格納され、更に不揮発性メモリ４９上で制御目標値を更新することも可能である。５０はワークメモリであり、ＣＰＵ４６のワーク領域として装備されている。
【００７２】
さてＣＰＵ４６は図示しない内蔵カウンタと、内蔵カウンタの値をコピーする図示しない内蔵レジスタを有している。内蔵カウンタは基本的にはフリーランカウンタであり、クロック発生器４７が発生するクロックパルスが入力する度にカウンタ値がインクリメントされる。ＣＰＵ４６はセレクタ４５で選択された信号の立ち上がりエッジが入力されると、それまでクロック数を計数してきた内蔵カウンタの値を、図示しない内蔵レジスタにコピーすると共に、内蔵カウンタの値を０にリセットする。
【００７３】
次に図３と図４を用いて、Ａ相、Ｂ相の立ち上がり、立ち下がりエッジを参照して、駆動源を基準速度Ｖの１／４倍の速度に制御する場合（以降このモードを両相両エッジ駆動と呼称する）における、本発明の第１行程、即ち制御目標値を取得する過程について説明する。
【００７４】
図４は実施の形態１における両相両エッジ駆動の第１行程のシーケンスを示す図である。
【００７５】
まず駆動源２１の回転を開始するにあたって、エンコーダ単相信号４４（＝エンコーダＡ相信号）がＣＰＵ４６の入力となるように、ＣＰＵ４６はセレクタ４５を設定する。ＣＰＵ４６はこの状態で駆動源２１の速度制御を行うが、この過程は従来例と全く同様なので省略する。またこの時点での駆動源の駆動速度は、例えばＡ相の立ち上がりエッジのみを参照して駆動源を駆動する場合の速度と等しく、これは従来例で基準速度Ｖとして説明した速度であり、特許請求の範囲の記載における第１の駆動速度に対応する。
【００７６】
駆動源２１が予め定められた回転速度に到達すると、ＣＰＵ４６は、割り込みによって、その直後のエンコーダ単相信号４４の立ち上がりのタイミングＴ１−１を検出すると、直ちにエッジ合成回路出力４３がＣＰＵ４６の入力となるように、セレクタ４５の設定を変更し、更にワークメモリ５０上に割り付けられた、ソフトウェアが管理する変数である、４つの区間累積値を０にクリアする。
【００７７】
その他のＣＰＵ４６の状態は変わっていないため、以降、ＣＰＵ４６の内蔵カウンタは、図４に示す区間ｓ、区間ｔ、区間ｕ、区間ｖにおいて、クロック発生器４７が発生したクロックパルスを計数し、このカウンタ値は図示しない内蔵レジスタにコピーされる。
【００７８】
ＣＰＵ４６が次の立ち上がりのタイミングＴ１−２を検出した時点では、内蔵レジスタには区間ｓにおけるカウンタ値がコピーされており、ＣＰＵ４６はこの値を内蔵レジスタから取りだし、ワークメモリ５０にカウンタ値ｓとして格納すると共に、区間ｓに対応する区間累積値に加算する。以降この処理を処理Ｂと呼称する。
【００７９】
ＣＰＵ４６が次の立ち上がりのタイミングＴ１−３を検出した時点では、内蔵レジスタには区間ｔにおけるカウンタ値がコピーされており、ＣＰＵ４６はこの値を内蔵レジスタから取りだし、ワークメモリ５０にカウンタ値ｔとして格納すると共に、区間ｔに対応する区間累積値に加算する。以降この処理を処理Ｃと呼称する。
【００８０】
ＣＰＵ４６が次の立ち上がりのタイミングＴ１−４を検出した時点では、内蔵レジスタには区間ｕにおけるカウンタ値がコピーされており、ＣＰＵ４６はこの値を内蔵レジスタから取りだし、ワークメモリ５０にカウンタ値ｕとして格納すると共に、区間ｕに対応する区間累積値に加算する。以降この処理を処理Ｄと呼称する。
【００８１】
ＣＰＵ４６が次の立ち上がりのタイミングＴ１−５を検出した時点では、内蔵レジスタには区間ｖにおけるカウンタ値がコピーされており、ＣＰＵ４６はこの値を内蔵レジスタから取りだし、ワークメモリ５０にカウンタ値ｖとして格納すると共に、区間ｖに対応する区間累積値に加算する。更にワークメモリに格納されたカウンタ値ｓ、カウンタ値ｔ、カウンタ値ｕ、カウンタ値ｖを加算する。この加算結果はエンコーダ単相信号４４の立ち上がりエッジ間隔のみに着目してカウントした値と等価である。
【００８２】
エンコーダ単相信号４４は駆動源が所定の角度回転する毎に発生する「距離」を示す信号である。また各区間毎にクロック信号を計数したカウンタ値の加算結果は「時間」を表わすから、ＣＰＵ４６は距離÷時間を演算することで、駆動源２１の速度情報を入手することができる。一般にエンコーダは、同一の相の同一のエッジ間隔は極めて高い精度で一定に再現されるため、エッジ間隔＝「距離」を一定値とみなし、予め定められた定数（以降速度変換定数：ＴＲＮＶと示す）を定義し、これをカウンタ値ｓ、カウンタ値ｔ、カウンタ値ｕ、カウンタ値ｖの加算結果で除算して速度情報とする。以降この処理を処理Ａと呼称する。
【００８３】
この速度情報に基づきＣＰＵ４６はモータドライバ４８に速度指令値を出力し、駆動源２１を制御する。この過程は図１６のフローに示した従来例の制御信号生成過程と全く同様なので省略する。
【００８４】
同様にタイミングＴ１−６では処理Ｂを、タイミングＴ１−７では処理Ｃを、タイミングＴ１−８では処理Ｄを、更にタイミングＴ１−９では処理Ａを・・・のように順次周期的に実行していく。最初にエンコーダ単相信号４４の立ち上がり、即ちタイミングＴ１−１を開始トリガとして用いることで、区間ｓ、区間ｔ、区間ｕ、区間ｖを容易に判別できる。上述した処理を繰り返せば、合成回路出力４３を参照しながら、エンコーダ単相信号４４を用いたのと全く同等に駆動源２１を制御できる。
【００８５】
さてこのように駆動源２１を制御しながら、駆動源２１を予め定められた期間、例えば予め定められた回数の、処理Ａを実施する期間、駆動源２１を駆動すれば、上述の処理Ｂ、処理Ｃ、処理Ｄ、処理Ａにより、それぞれ区間ｓのカウンタ値ｓ、区間ｔのカウンタ値ｔ、区間ｕのカウンタ値ｕ、区間ｖのカウンタ値ｖの累積結果を得ることができる。以降この累積結果を累積値ｓ、累積値ｔ、累積値ｕ、累積値ｖと呼称する。
【００８６】
エンコーダの各相のデューティ比と相間の位相差のばらつきは、エンコーダ固有のものであり、上述の４つの区間に周期的に現われるため、４つの区間についての累積値を取得すれば、ばらつきの状態を完全に把握することができる。更に累積期間をある程度与えれば、制御系の外乱要素の影響を小さくなるため、結果的に累積値ｓ、累積値ｔ、累積値ｕ、累積値ｖの比は、それぞれ区間ｓ、区間ｔ、区間ｕ、区間ｖの距離の比を示す情報とみなしてよい。
【００８７】
一方エンコーダ単相信号４４の立ち上がりエッジの周期は、仮に駆動源２１が理想的に回転していれば一定の値となり、エッジ周期をカウントするカウント値も当然一定の値となる。これはキャリッジ２０の目標とする移動速度と駆動系の減速比と、エッジ周期をカウントするクロックの周波数から予め求めることができる。例えばキャリッジ２０を所定の速度で駆動するとき、駆動源が基準速度Ｖで駆動されるとする。このときエンコーダ単相信号４４の立ち上がりエッジの周期が１ｍｓｅｃであり、区間計測用のクロック周波数が８ＭＨｚであれば、エンコーダ単相信号４４のエッジ間においてカウンタ値は理論的には８０００となる。このカウント値は設計上定まる数値であり、以降これを理論カウント値と呼称しＣＮＴＡと示す。
【００８８】
最終的に第１行程は各区間に対する理論カウント値を求め、これから各区間毎の制御目標値を得ることが目的である。
【００８９】
次に各区間の理論カウント値を求める方法を説明する。理論カウント値ＣＮＴＡは設計的に求めることができる数値であることは既に述べた。また累積値ｓ、累積値ｔ、累積値ｕ、累積値ｖの比は、それぞれ区間ｓ、区間ｔ、区間ｕ、区間ｖの距離の比を示す情報とみなしてよい。そこでまず累積値ｓ、累積値ｔ、累積値ｕ、累積値ｖの平均値を求め、これをＣＮＴａｖｅとする。ＣＮＴａｖｅを用いて区間ｓの理論カウント値ＣＮＴｓは（数４）のように、区間ｔの理論カウント値ＣＮＴｔは（数５）のように、区間ｕの理論カウント値ＣＮＴｕは（数６）のように、区間ｖの理論カウント値ＣＮＴｖは（数７）のように求められる。
【００９０】
（数４）  ＣＮＴｓ＝ＣＮＴＡ×累積値ｓ／ＣＮＴａｖｅ
（数５）  ＣＮＴｔ＝ＣＮＴＡ×累積値ｔ／ＣＮＴａｖｅ
（数６）  ＣＮＴｕ＝ＣＮＴＡ×累積値ｕ／ＣＮＴａｖｅ
（数７）  ＣＮＴｖ＝ＣＮＴＡ×累積値ｖ／ＣＮＴａｖｅ
さてここで、前に述べた速度変換定数ＴＲＮＶを用いると、区間ｓの速度目標値ＶＥＬＯｓは（数８）、区間ｔの速度目標値ＶＥＬＯｔは（数９）、区間ｕの速度目標値ＶＥＬＯｕは（数１０）、区間ｖの速度目標値ＶＥＬＯｖは（数１１）と表される。
【００９１】
（数８）  ＶＥＬＯｓ＝ＴＲＮＶ／ＣＮＴｓ
（数９）  ＶＥＬＯｔ＝ＴＲＮＶ／ＣＮＴｔ
（数１０）  ＶＥＬＯｕ＝ＴＲＮＶ／ＣＮＴｕ
（数１１）  ＶＥＬＯｖ＝ＴＲＮＶ／ＣＮＴｖ
こうして求めた４つの、各区間毎の速度目標値は、それぞれが対応する区間の制御目標として、ワークメモリ５０に格納される。
【００９２】
さて、前述したようにエンコーダの各相のデューティ比と相間の位相差のばらつきは、エンコーダ固有のばらつき量であるから、経時的な変化は生じない。従って第１行程は、例えば装置の電源が立ち上げられた直後に実施すればよいし、また、例えば、装置の組み立て行程において一度実施し、各区間の制御目標値を不揮発性メモリ４９に格納しておくこともできる。仮にエンコーダのデューティ比に経時変化が生じた場合には、再計測した値を不揮発性メモリ４９上で更新することも可能である。
【００９３】
次に図３と図５と図６を用いて、本発明において駆動源の駆動速度を基準速度Ｖの１／４に設定した場合の第２行程、即ち第１行程で駆動源を基準速度Ｖで駆動して求めた区間毎の制御目標値を用いて駆動源を制御する過程について説明する。この第２行程における、基準速度Ｖに対して１／４に設定された駆動速度が、特許請求の範囲に記載の第１の駆動速度よりも低速の第２の駆動速度に対応する。
【００９４】
図５は実施の形態１における第２行程のシーケンスを示す図であり、図６は制御信号生成過程を示すフローを示す図である。
【００９５】
駆動源２１の回転を開始するにあたって、ＣＰＵ４６は第１行程で取得した各区間の制御目標値、即ち速度目標値（ＶＥＬＯｓ、ＶＥＬＯｔ、ＶＥＬＯｕ、ＶＥＬＯｖ）を不揮発性メモリ４９から取り出し、ワークメモリ５０にコピーすることもできる。既にワークメモリ５０に速度目標値（ＶＥＬＯｓ、ＶＥＬＯｔ、ＶＥＬＯｕ、ＶＥＬＯｖ）が格納されていれば、これをそのまま使用することもできる。まずエンコーダ単相信号４４（＝エンコーダＡ相信号）がＣＰＵ４６の入力となるように、ＣＰＵ４６はセレクタ４５を設定する。ＣＰＵ４６はこの状態で駆動源２１の速度制御を行うが、この過程は従来例と全く同様なので省略する。
【００９６】
駆動源２１が予め定められた回転速度に到達すると、ＣＰＵ４６は、割り込みによって、その直後のエンコーダ単相信号４４の立ち上がりのタイミングＴ２−１を検出すると（ステップ１０）、直ちにエッジ合成回路出力４３がＣＰＵ４６の入力となるように、セレクタ４５の設定を変更する（ステップ２０）。
【００９７】
その他のＣＰＵ４６の状態は変わっていないため、以降、ＣＰＵ４６の内蔵カウンタは、図５に示す区間ｓ、区間ｔ、区間ｕ、区間ｖにおいて、クロック発生器４７が発生したクロックパルスを計数し、このカウンタ値は図示しない内蔵レジスタにコピーされる。この値を以降ＣＮＴと略称する。
【００９８】
ＣＰＵ４６が次の立ち上がりのタイミングＴ２−２を検出した時点では（ステップ３０）、ＣＰＵ４６はこの割り込みを起点として割り込み回数のカウントを開始する（ステップ４０）。内蔵レジスタには区間ｓにおける内蔵カウンタ値ＣＮＴがコピーされており、ＣＰＵ４６はこの値を内蔵レジスタから取りだし、（数１２）により速度情報ＶＥＬＯに変換する（ステップ５０）。
【００９９】
（数１２） ＶＥＬＯ＝ＴＲＮＶ／ＣＮＴ次に割り込み回数を４で割った余りを求め（ステップ６０）、ここでは余りが０なので区間ｓの速度目標値ＶＥＬＯｓを選択する（ステップ７０）。
【０１００】
次にステップ５０で得られた速度情報ＶＥＬＯを用いて（数１３）に基づいて速度偏差を求める（ステップ８０）。
【０１０１】
（数１３） 速度偏差ｅ＝速度目標値ＶＥＬＯｓ−ＶＥＬＯ
次にステップ８０で得られた速度偏差ｅを累積（積分）し、（数１４）に従い距離偏差を求める（ステップ９０）。
【０１０２】
（数１４）  距離偏差＝Σ（速度偏差ｅ）
次にステップ８０とステップ９０で得られた速度偏差と距離偏差を用い、（数１５）に従って速度指令値を計算する（ステップ１００）。
【０１０３】
（数１５）  速度指令値＝Ｋ｛速度偏差＋距離偏差／Ｔ｝
比例積分制御にはＫとＴの２つの係数が存在するが、一般にＫを比例係数、Ｔを積分係数と呼称する。これらの係数は、駆動系を構成するハードウェア（モータ、モータドライバ等）に依存しており、例えばＳＰＩＣＥ等によるアナログシミュレーションや限界感度法などの方法によって定めることができる。
【０１０４】
次に割り込み回数をインクリメントし（ステップ１１０）、最後にＣＰＵ４６はモータドライバ４８に対して速度指令値を出力して駆動源２１の速度を制御する（ステップ１２０）。
【０１０５】
ＣＰＵ４６が次の立ち上がりのタイミングＴ２−３を検出した時点では、割り込み回数の条件（ステップ３０）によりステップ４０は処理しない。内蔵レジスタには区間ｔにおける内蔵カウンタ値ＣＮＴがコピーされており、ＣＰＵ４６はこの値を内蔵レジスタから取りだし、（数１２）により速度情報ＶＥＬＯに変更する（ステップ５０）。
【０１０６】
次に割り込み回数を４で割った余りを求め（ステップ６０）、ここでは余りが１なので（ステップ１３０）、区間ｓの速度目標値ＶＥＬＯｔを選択する（ステップ１４０）。
【０１０７】
次にステップ５０で得られた速度情報ＶＥＬＯを用いて（数１６）に基づいて速度偏差を求める（ステップ８０）。
【０１０８】
（数１６） 速度偏差ｅ＝速度目標値ＶＥＬＯｔ−ＶＥＬＯ
次にステップ８０で得られた速度偏差ｅを累積（積分）し、（数１４）に従い距離偏差を求める（ステップ９０）。
【０１０９】
次にステップ８０とステップ９０で得られた速度偏差と距離偏差を用い、（数１５）に従って速度指令値を計算する（ステップ１００）。
【０１１０】
次に割り込み回数をインクリメントし（ステップ１１０）、最後にＣＰＵ４６はモータドライバ４８に対して速度指令値を出力する（ステップ１２０）。
【０１１１】
ＣＰＵ４６が次の立ち上がりのタイミングＴ２−４を検出した時点では、割り込み回数の条件（ステップ３０）によりステップ４０は処理しない。内蔵レジスタには区間ｕにおける内蔵カウンタ値ＣＮＴがコピーされており、ＣＰＵ４６はこの値を内蔵レジスタから取りだし、（数１２）により速度情報ＶＥＬＯに変更する（ステップ５０）。
【０１１２】
次に割り込み回数を４で割った余りを求め（ステップ６０）、ここでは余りが２なので（ステップ１５０）、区間ｕの速度目標値ＶＥＬＯｕを選択する（ステップ１６０）。
【０１１３】
次にステップ５０で得られた速度情報ＶＥＬＯを用いて（数１７）に基づいて速度偏差を求める（ステップ８０）。
【０１１４】
（数１７） 速度偏差ｅ＝速度目標値ＶＥＬＯｕ−ＶＥＬＯ
次にステップ８０で得られた速度偏差ｅを累積（積分）し、（数１４）に従い距離偏差を求める（ステップ９０）。
【０１１５】
次にステップ８０とステップ９０で得られた速度偏差と距離偏差を用い、（数１５）に従って速度指令値を計算する（ステップ１００）。
【０１１６】
次に割り込み回数をインクリメントし（ステップ１１０）、最後にＣＰＵ４６はモータドライバ４８に対して速度指令値を出力する（ステップ１２０）。
【０１１７】
ＣＰＵ４６が次の立ち上がりのタイミングＴ２−５を検出した時点では、割り込み回数の条件（ステップ３０）によりステップ４０は処理しない。内蔵レジスタには区間ｖにおける内蔵カウンタ値ＣＮＴがコピーされており、ＣＰＵ４６はこの値を内蔵レジスタから取りだし、（数１２）により速度情報ＶＥＬＯに変更する（ステップ５０）。
【０１１８】
次に割り込み回数を４で割った余りを求め（ステップ６０）、ここでは余りが３なので（ステップ１５０）、区間ｖの速度目標値ＶＥＬＯｖを選択する（ステップ１７０）。
【０１１９】
次にステップ５０で得られた速度情報ＶＥＬＯを用いて（数１８）に基づいて速度偏差を求める（ステップ８０）。
【０１２０】
（数１８） 速度偏差ｅ＝速度目標値ＶＥＬＯｖ−ＶＥＬＯ
次にステップ８０で得られた速度偏差ｅを累積（積分）し、（数１４）に従い距離偏差を求める（ステップ９０）。
【０１２１】
次にステップ８０とステップ９０で得られた速度偏差と距離偏差を用い、（数１５）に従って速度指令値を計算する（ステップ１００）。
【０１２２】
次に割り込み回数をインクリメントし（ステップ１１０）、最後にＣＰＵ４６はモータドライバ４８に対して速度指令値を出力する（ステップ１２０）。
【０１２３】
以降上述したタイミングＴ２−２、タイミングＴ２−３、タイミングＴ２−４、タイミングＴ２−５を周期的に繰り返し、駆動源２１の速度制御をおこなう。
【０１２４】
さて上述した処理のなかで、ステップ７０の処理時点ではステップ５０で得られた内蔵カウンタ値も参照できる。従ってステップ７０において区間ｓに対する内蔵カウンタの値を常にモニタできる。同様にステップ１４０において区間ｔ、ステップ１６０において区間ｕ、ステップ１７０において区間ｖに対する内蔵カウンタの値をモニタできる。
【０１２５】
そこで、例えば区間ｓに対する内蔵カウンタの値を規定回数累積し、これが現在採用している区間ｓの理論カウント値と予め定められた率より大きく外れた場合は、既に説明した第１行程を装置の待機時等に再実行して、何らかの障害によりエンコーダのデューティや位相差に経時変化が生じた場合に対応できる。
【０１２６】
また装置組立時に制御目標値を不揮発性メモリ等に書き込んでおくような装置であれば、エンコーダのデューティや位相差に経時変化が生じた場合は、再計測した値を不揮発性メモリ上で更新することも可能である。
【０１２７】
以上、基準速度Ｖに対して１／４の速度で、駆動源を駆動する場合について説明してきた。次に基準速度Ｖに対して１／２の速度で、駆動源を駆動する場合について説明する。
【０１２８】
基準速度Ｖに対して１／４の速度で駆動源を駆動する場合は、エンコーダのＡ相、Ｂ相それぞれの立ち上がり、立ち下がりエッジを全て検出して、その区間計測値に基づき駆動源を制御した（両相両エッジ駆動）。一方基準速度Ｖに対して１／２の速度で、駆動源を駆動する場合はＡ相の立ち上がり、立ち下がりエッジを検出して、その区間計測値に基づき駆動源を制御する（単相両エッジ駆動）。
【０１２９】
以降、図３と図７を用いて説明する。図７は実施の形態１における単相両エッジ駆動の第１行程のシーケンスを示す図である。
【０１３０】
まず駆動源２１の回転を開始するにあたって、エンコーダ単相信号４４（＝エンコーダＡ相信号）がＣＰＵ４６の入力となるように、ＣＰＵ４６はセレクタ４５を設定する。またプリスケーラ４１を２分周出力に設定する。
【０１３１】
ＣＰＵ４６はこの状態で駆動源２１の速度制御を行うが、この過程は従来例と全く同様なので省略する。またこの時点での駆動源の駆動速度は、例えばＡ相の立ち上がりエッジのみを参照して駆動源を駆動する場合の速度と等しく、これは従来例で基準速度Ｖとして説明した速度である。
【０１３２】
駆動源２１が予め定められた回転速度に到達すると、ＣＰＵ４６は、割り込みによって、その直後のエンコーダ単相信号４４の立ち上がりのタイミングＴ’１−１を検出すると、直ちにプリスケーラ出力４２がＣＰＵ４６の入力となるように、セレクタ４５の設定を変更する。プリスケーラ４１にはＡ相、Ｂ相の両エッジの合成回路出力４３が入力されているから、プリスケーラ出力４２は合成回路出力４３を２分周したものとなる。またプリスケーラ４１はＡ相信号を直接参照し（図示せず）、分周出力の立ち上がりと、Ａ相の立ち上がりエッジの同期をとっている。またＣＰＵ４６はワークメモリ５０上に割り付けられた、ソフトウェアが管理する変数である、２つの区間累積値を０にクリアする。
【０１３３】
その他のＣＰＵ４６の状態は変わっていないため、以降、ＣＰＵ４６の内蔵カウンタは、図７に示す区間ｗ、区間ｘにおいて、クロック発生器４７が発生したクロックパルスを計数し、このカウンタ値は図示しない内蔵レジスタにコピーされる。
【０１３４】
ＣＰＵ４６が次の立ち上がりのタイミングＴ’１−２を検出した時点では、内蔵レジスタには区間ｗにおけるカウンタ値がコピーされており、ＣＰＵ４６はこの値を内蔵レジスタから取りだし、ワークメモリ５０にカウンタ値ｗとして格納すると共に、区間ｗに対応する区間累積値に加算する。以降この処理を処理Ｂ’と呼称する。
【０１３５】
ＣＰＵ４６が次の立ち上がりのタイミングＴ’１−３を検出した時点では、内蔵レジスタには区間ｘにおけるカウンタ値がコピーされており、ＣＰＵ４６はこの値を内蔵レジスタから取りだし、ワークメモリ５０にカウンタ値ｘとして格納すると共に、区間ｘに対応する区間累積値に加算する。更にワークメモリに格納されたカウンタ値ｗ、カウンタ値ｘを加算する。この加算結果はエンコーダ単相信号４４の立ち上がりエッジ間隔のみに着目してカウントした値と等価である。
【０１３６】
エンコーダ単相信号４４は駆動源が所定の角度回転する毎に発生する「距離」を示す信号である。また各区間毎にクロック信号を計数したカウンタ値の加算結果は「時間」を表わすから、ＣＰＵ４６は距離÷時間を演算することで、駆動源２１の速度情報を入手することができる。一般にエンコーダは、同一の相の同一のエッジ間隔は極めて高い精度で一定に再現されるため、エッジ間隔＝「距離」を一定値とみなし、予め定められた定数（以降速度変換定数：ＴＲＮＶと示す）を定義し、これをカウンタ値ｗ、カウンタ値ｘの加算結果で除算して速度情報とする。以降この処理を処理Ａ’と呼称する。
【０１３７】
この速度情報に基づきＣＰＵ４６はモータドライバ４８に速度指令値を出力し、駆動源２１を制御する。この過程は図１６のフローに示した従来例の制御信号生成過程と全く同様なので省略する。
【０１３８】
同様にタイミングＴ’１−３では処理Ｂ’を、タイミングＴ’１−４では処理Ａ’を・・・のように順次周期的に実行していく。最初にエンコーダ単相信号４４の立ち上がり、即ちタイミングＴ’１−１を開始トリガとして用いることで、区間ｗ、区間ｘを容易に判別できる。上述した処理を繰り返せば、合成回路出力４３を参照しながら、エンコーダ単相信号４４を用いたのと全く同等に駆動源２１を制御できる。
【０１３９】
さてこのように駆動源２１を制御しながら、駆動源２１を予め定められた期間、例えば予め定められた回数の、処理Ａ’を実施する期間、駆動源２１を駆動すれば、上述の処理Ｂ’、処理Ａ’により、それぞれ区間ｗのカウンタ値ｗ、区間ｘのカウンタ値ｘの累積結果を得ることができる。以降この累積結果を累積値ｗ、累積値ｘと呼称する。
【０１４０】
エンコーダの単相におけるデューティ比のばらつきは、エンコーダ固有のものであり、上述の２つの区間に周期的に現われるため、２つの区間についての累積値を取得すれば、ばらつきの状態を完全に把握することができる。更に累積期間をある程度与えれば、制御系の外乱要素の影響を小さくなるため、結果的に累積値ｗ、累積値ｘの比は、それぞれ区間ｗ、区間ｘの距離の比を示す情報とみなしてよい。
【０１４１】
一方、エンコーダ単相信号４４の立ち上がりエッジの周期は、仮に駆動源２１が理想的に回転していれば一定の値となり、エッジ周期をカウントするカウント値も当然一定の値となる。これはキャリッジ２０の目標とする移動速度と駆動系の減速比と、エッジ周期をカウントするクロックの周波数から予め求めることができる。例えばキャリッジ２０を所定の速度で駆動するとき、駆動源が基準速度Ｖで駆動されるとする。このときエンコーダ単相信号４４の立ち上がりエッジの周期が１ｍｓｅｃであり、区間計測用のクロック周波数が８ＭＨｚであれば、エンコーダ単相信号４４のエッジ間においてカウンタ値は理論的には８０００となる。このカウント値は設計上定まる数値であり、以降、これを理論カウント値と呼称し、ＣＮＴＡ’と示す。
【０１４２】
最終的に第１行程は各区間に対する理論カウント値を求め、これから各区間毎の制御目標値を得ることが目的である。
【０１４３】
次に各区間の理論カウント値を求める方法を説明する。理論カウント値ＣＮＴＡ’は設計的に求めることができる数値であることは既に述べた。また累積値ｗ、累積値ｘの比は、それぞれ区間ｗ、区間ｘの距離の比を示す情報とみなしてよい。そこでまず累積値ｗ、累積値ｘの平均値を求め、これをＣＮＴａｖｅ’とする。ＣＮＴａｖｅ’を用いて区間ｗの理論カウント値ＣＮＴｗは（数１９）のように、区間ｘの理論カウント値ＣＮＴｘは（数２０）のように求められる。
【０１４４】
（数１９）  ＣＮＴｗ＝ＣＮＴＡ’×累積値ｗ／ＣＮＴａｖｅ’
（数２０）  ＣＮＴｔ＝ＣＮＴＡ’×累積値ｘ／ＣＮＴａｖｅ’
さてここで、前に述べた速度変換定数ＴＲＮＶ’を用いると、区間ｗの速度目標値ＶＥＬＯｗは（数２１）、区間ｘの速度目標値ＶＥＬＯｘは（数２２）と表される。
【０１４５】
（数２１）  ＶＥＬＯｗ＝ＴＲＮＶ’／ＣＮＴｗ
（数２２）  ＶＥＬＯｘ＝ＴＲＮＶ’／ＣＮＴｘ
こうして求めた２つの、各区間毎の速度目標値は、それぞれが対応する区間の制御目標として、ワークメモリ５０に格納される。
【０１４６】
さて前述したようにエンコーダの単相のデューティ比のばらつきは、エンコーダ固有のばらつき量であるから、経時的な変化は生じない。従って第１行程は、例えば装置の電源が立ち上げられた直後に実施すればよいし、また例えば装置の組み立て行程において一度実施し、各区間の制御目標値を不揮発性メモリ４９に格納しておくこともできる。
【０１４７】
次に図３と図８と図９を用いて、駆動速度が基準速度Ｖの１／２の場合における第２行程、即ち第１行程でもとめた区間毎の制御目標値を用いて駆動源を制御する過程について説明する。
【０１４８】
図８は実施の形態１における駆動速度が基準速度Ｖの１／２の場合の、第２行程のシーケンスを示す図であり、図９は実施の形態１における駆動速度が基準速度Ｖの１／２の場合の、第２行程の制御信号生成過程を示すフローチャートである。
【０１４９】
駆動源２１の回転を開始するにあたって、ＣＰＵ４６は第１行程で取得した各区間の制御目標値を不揮発性メモリ４９から取り出し、ワークメモリ５０にコピーすることもできる。既にワークメモリ５０に制御目標値が格納されていれば、これをそのまま使用することもできる。
【０１５０】
まずエンコーダ単相信号４４（＝エンコーダＡ相信号）がＣＰＵ４６の入力となるように、ＣＰＵ４６はセレクタ４５を設定する。ＣＰＵ４６はこの状態で駆動源２１の速度制御を行うが、この過程は従来例と全く同様なので省略する。
【０１５１】
駆動源２１が予め定められた回転速度に到達すると、ＣＰＵ４６は、割り込みによって、その直後のエンコーダ単相信号４４の立ち上がりのタイミングＴ’２−１を検出すると（ステップ２００）、直ちにプリスケーラ出力４２がＣＰＵ４６の入力となるように、セレクタ４５の設定を変更する（ステップ２１０）。プリスケーラ４１にはＡ相、Ｂ相の両エッジの合成回路出力４３が入力されているから、プリスケーラ出力４２は合成回路出力４３を２分周したものとなる。またプリスケーラ４１はＡ相信号を直接参照し（図示せず）、分周出力の立ち上がりと、Ａ相の立ち上がりエッジの同期をとっている。
【０１５２】
その他のＣＰＵ４６の状態は変わっていないため、以降、ＣＰＵ４６の内蔵カウンタは、図８に示す区間ｗ、区間ｘにおいて、クロック発生器４７が発生したクロックパルスを計数し、このカウンタ値は図示しない内蔵レジスタにコピーされる。この値を以降ＣＮＴ’と略称する。
【０１５３】
ＣＰＵ４６が次の立ち上がりのタイミングＴ’２−２を検出した時点では（ステップ２２０）、ＣＰＵ４６はこの割り込みを起点として割り込み回数のカウントを開始する（ステップ２３０）。内蔵レジスタには区間ｗにおける内蔵カウンタ値ＣＮＴ’がコピーされており、ＣＰＵ４６はこの値を内蔵レジスタから取りだし、（数２３）により速度情報ＶＥＬＯ’に変換する（ステップ２４０）。
【０１５４】
（数２３） ＶＥＬＯ’＝ＴＲＮＶ’／ＣＮＴ’
次に割り込み回数の偶奇判定をし（ステップ２５０）、ここでは偶数なので区間ｗの速度目標値ＶＥＬＯｗを選択する（ステップ２６０）。
【０１５５】
次にステップ２４０で得られた速度情報ＶＥＬＯ’を用いて（数２４）に基づいて速度偏差を求める（ステップ２７０）。
【０１５６】
（数２４） 速度偏差ｅ’＝速度目標値ＶＥＬＯｗ−ＶＥＬＯ’
次にステップ２７０で得られた速度偏差ｅ’を累積（積分）し、（数２５）に従い距離偏差を求める（ステップ２８０）。
【０１５７】
（数２５）  距離偏差＝Σ（速度偏差ｅ’）
次にステップ２７０とステップ２８０で得られた速度偏差と距離偏差を用い、（数１５）に従って速度指令値を計算する（ステップ２９０）。
【０１５８】
次に割り込み回数をインクリメントし（ステップ３００）、最後にＣＰＵ４６はモータドライバ４８に対して速度指令値を出力して駆動源２１の速度を制御する（ステップ３１０）。
【０１５９】
ＣＰＵ４６が次の立ち上がりのタイミングＴ’２−３を検出した時点では、割り込み回数の条件（ステップ２２０）によりステップ２３０は処理しない。内蔵レジスタには区間ｘにおける内蔵カウンタ値ＣＮＴ’がコピーされており、ＣＰＵ４６はこの値を内蔵レジスタから取りだし、（数２３）により速度情報ＶＥＬＯ’に変換する（ステップ２４０）。
【０１６０】
次に割り込み回数の偶奇判定を行ない（ステップ２５０）、ここでは奇数なので区間ｘの速度目標値ＶＥＬＯｘを選択する（ステップ３２０）。
【０１６１】
次にステップ２４０で得られた速度情報ＶＥＬＯ’を用いて（数２６）に基づいて速度偏差を求める（ステップ２７０）。
【０１６２】
（数２６） 速度偏差ｅ’＝速度目標値ＶＥＬＯｘ−ＶＥＬＯ’
次にステップ２７０で得られた速度偏差ｅ’を累積（積分）し、（数２２）に従い距離偏差を求める（ステップ２８０）。
【０１６３】
次にステップ２７０とステップ２８０で得られた速度偏差と距離偏差を用い、（数１５）に従って速度指令値を計算する（ステップ２９０）。
【０１６４】
次に割り込み回数をインクリメントし（ステップ３００）、最後にＣＰＵ４６はモータドライバ４８に対して速度指令値を出力する（ステップ３１０）。
【０１６５】
以降上述したタイミングＴ’２−２、タイミングＴ’２−３を周期的に繰り返し、駆動源２１の速度制御をおこなう。
【０１６６】
さて上述した処理のなかで、ステップ２６０の処理時点ではステップＳＰ２４０で得られた内蔵カウンタ値も参照できる。従ってステップ２６０において区間ｗに対する内蔵カウンタの値を常にモニタできる。同様にステップＳＰ３２０において区間ｘに対する内蔵カウンタの値をモニタできる。
【０１６７】
そこで、例えば区間ｗに対する内蔵カウンタの値を規定回数累積し、これが現在採用している区間ｗの理論カウント値と予め定められた率より大きく外れた場合は、既に説明した第１行程を装置の待機時等に再実行して、何らかの障害によりエンコーダのデューティに経時変化が生じた場合に対応できる。
【０１６８】
また装置組立時に制御目標値を不揮発性メモリ等に書き込んでおくような装置であれば、エンコーダのデューティに経時変化が生じた場合は、再計測した値を不揮発性メモリ上で更新することも可能である。
【０１６９】
（実施の形態２）
以下、本発明の一実施の形態について図面を参照しながら説明する。実施の形態２では本発明を画像形成装置、より詳しくは電子写真装置に適用した場合について説明する。
【０１７０】
以下に従来例の電子写真装置について述べていくが、感光体上にレーザビーム等で形成された潜像を各色の現像器で現像し、顕画化された単色画像を一旦中間転写体と呼称する像形成媒体上に転写して合成し、中間転写体上の合成像を一括して用紙に転写する、いわゆる中間転写体方式の電子写真装置について主に説明する。
【０１７１】
図１０は本発明の駆動源制御方法を応用した電子写真装置の全体構成を示す図である。
【０１７２】
図１０において、５１はループベルト状の感光体である。感光体５１はＰＥＴ基材、アルミ蒸着層、電荷発生層（ＣＧＬ）、電荷輸送層（ＣＴＬ）で構成され、３本の感光体搬送ローラ５２、５３、５４によって支持されている。５５は駆動源であり、ＤＣモータが採用されている。駆動源５５はエンコーダと一体に構成されており、駆動源５５が所定の量回転する毎に単相のパルスを出力する。駆動源５５の回転により感光体５１は駆動方向ｄ２に周回動する。５６は感光体位置検出用マークであり、感光体５１の端部に１つ配置されている。５７は感光体位置検出マーク５６を検出する感光体位置検出センサーである。感光体５１は継目５８を有しており、画像を形成する際は継目５８を回避せねばならない。この際に感光体位置検出センサー５７の出力を参照する。
【０１７３】
感光体５１の周面にはｄ２で示す回転方向に帯電器５９、露光光学系６０、ブラック（Ｋ）、イエロー（Ｙ）、マゼンタ（Ｍ）、シアン（Ｃ）の各色の現像器６１Ｋ、６１Ｙ、６１Ｍ、６１Ｃ、中間転写前除電器６２、中間転写ローラ６３、感光体クリーニング装置６４、及び除電器６５が設けられている。
【０１７４】
帯電器５９はタングステンワイヤ等からなる帯電線と金属板からなるシールド板、グリッド板等（図示せず）によって構成され、帯電線へ負の高電圧を印加すると帯電線がコロナ放電を起こし、グリッド板に例えば−７００Ｖの電圧を印加すると感光体５１の表面は一様に−７００Ｖ程度の負の電位に帯電する。
【０１７５】
露光光学系６０はレーザ駆動装置、ポリゴンミラー、レンズ系、ポリゴンミラー回転用のモータ（スキャナモータ）等（図示せず）で構成され、帯電された感光体５１上に静電潜像を形成する。６６は露光光学系６０から照射される露光光線である。露光光線６６は例えば階調変換回路（図示せず）からの画像信号をレーザ駆動回路（図示せず）でパルス幅変調して得られ、感光体５１上に特定色の画像データに対応する静電潜像を形成する。
【０１７６】
各現像器６１Ｋ、６１Ｙ、６１Ｍ、６１Ｃはそれぞれブラック、イエロー、マゼンタ、シアンのトナーを収納している。各色現像器は導電性ゴム等を用いたスリーブローラ６７Ｋ、６７Ｃ、６７Ｍ、６７Ｙを有しており、スリーブローラを感光体５１の駆動方向ｄ２に対して順方向に回転させると、現像器内部から薄層化されたトナーがスリーブローラの表面に供給される。トナーは薄層化される時点で摩擦により負に帯電している。各色の現像はスリーブローラに負の電圧（現像バイアス）を印加し、スリーブローラを回転させながら、各色離接カム６８Ｋ、６８Ｙ、６８Ｍ、６８Ｃに対応した専用モータ（図示せず）を駆動し、選択された現像器、例えばブラック現像器６１Ｋをｄ４方向に移動し、スリーブローラ６７Ｋを感光体５１に接触させて行う。本例では非磁性一成分トナーを用いた接触現像を採用している。
【０１７７】
潜像が形成された部分の感光体５１の表面電位（明電位）は−５０〜−１００Ｖ近くに上昇しており、スリーブローラ６７に−３００Ｖ程度の負の電位を与えることで、感光体５１からスリーブローラ６７の方向に電界が発生する。この結果スリーブローラ上の負に帯電したトナーには電界の逆、即ち感光体５１の方向にクーロン力が作用し、トナーは感光体５１に形成された潜像部分に付着する。
一方潜像が形成されていない部分の感光体５１の表面電位（暗電位）は−７００Ｖであるから、現像バイアスを印加しても電界はスリーブローラ６７から感光体５１の方向に生じるためトナーは感光体５１に付着しない。以上のような現像プロセスは、光が照射された部分（即ち白）にトナーを付着させる（即ち黒）ため一般にネガポジプロセスあるいは反転現像と呼称されている。
【０１７８】
中間転写前除電器６２は赤色ＬＥＤを複数個線上に配置したものであり、感光体５１に形成されたトナー像を各色画像の合成媒体である中間転写体６９に転写する直前に感光体５１の表面を除電する。中間転写前除電器６２は原則的に第一色目の転写時には動作せず、二色目以降の転写の際に動作する。転写前除電は中間転写体６９にトナー像が転写され、かつ感光体５１上にトナーが存在しない場合に、中間転写体６９のトナー像が感光体５１に逆転写するのを防止する効果がある。
【０１７９】
逆転写発生のメカニズムを以下に説明する。中間転写体６９にトナー像が存在し、かつ感光体５１上にトナーが存在しない場合には、中間転写体６９上のトナーは後述する中間転写ローラ６３による転写バイアスと感光体５１の表面電位による過剰な電界中にさらされる。このためトナーの真の電荷が剥奪される、いわゆる電荷注入が発生しトナーと感光体５１間でファンデルワールス力が支配的になりトナーが感光体５１に逆転写したり、逆帯電トナー（正に帯電したトナー）が発生して、クーロン力により感光体５１に逆転写すると考えられている。
【０１８０】
一方転写前除電を行った場合は、感光体５１のトナーが存在しない部分が明電位となるため、トナーに過剰な電界が作用しなくなり、効率よく逆転写を防止することができる。しかしながら除電作用が大きすぎると、ドット周辺のトナーがない部分の電位のバリアが消失し、トナーを感光体５１の面方向に束縛する力が減少するため、転写の際にドットが飛散してしまう。従って転写前除電器の発光光量は十分管理する必要がある。
【０１８１】
中間転写ローラ６３は感光体支持ローラ５３の近傍にあって、中間転写体６９の内側に接触する金属ローラであり、中間転写体６９を挟んで感光体５１と対向して配置されている。感光体５１のアルミ蒸着層は接地されているため、中間転写ローラ６３に正電圧を印加すると中間転写ローラ６３から感光体５１の方向に電界が発生する。このため感光体５１上の負電荷トナーには中間転写体６９の方向にクーロン力が作用しトナーは中間転写体６９に転写される。
【０１８２】
感光体クリーニング装置６４は感光体５１を挟んで感光体支持ローラ５４と対向して配置されており、感光体５１から中間転写体６９の転写後に感光体５１に残っている残留トナーを除去する。感光体５１の継目５８は露光光線６６の走査方向に対して３゜〜５゜程度傾斜して設けられており、継目５８が感光体クリーニング装置６４を通過する際の衝撃により、画像が乱れないよう配慮されている。感光体クリーニング装置６４は感光体５１に対して離接する機構を有していない。
【０１８３】
除電器６５は赤色ＬＥＤを複数個線上に配置したものであり、感光体５１上の残留電位を除去する。
【０１８４】
次に中間転写体周辺の構成について説明する。
中間転写体６９は導電性の樹脂等からなる継ぎ目のないループ状のベルトであり単色画像を合成してフルカラー画像を形成するための媒体である。中間転写体６９は３本の搬送ローラ７０、７１、７２によって支持され、感光体５１と同一の駆動源５５により方向ｄ３に周回動する。７３は中間転写体位置検出用マークであり、中間転写体６９の端部に８つ配置されている。７４は中間転写体位置検出マーク７３を検出する中間転写体位置検出センサーである。画像を形成する際には、複数個の中間転写体位置検出用マーク７３から１つを選択して画像形成位置の基準として用いる。
【０１８５】
以降画像形成基準の決定方法について説明する。図１０の構成の電子写真装置では、感光体５１と中間転写体６９の周長は等しくなるよう設計されているが、完全に同一ではないため各々の回転周期は異なる。もし感光体位置検出マーク５６を画像形成基準にした場合は、感光体５１上では常に同じ位置にトナー像が形成されるが、中間転写体６９上で画像を重ねると各色のトナー像が位置ずれを起こす。一方、中間転写体６９から画像形成基準を得た場合は、周長差に応じて感光体５１上の画像形成位置は徐々に変わって行くが、中間転写体６９上では同じ位置に合成像が形成される。従って画像形成基準は中間転写体６９から得ねばならない。ところで感光体５１には継目５８があり、継目上にトナー像は形成できないため、中間転写体６９の適当な位置で画像形成位置を見つけても、画像形成動作に移行できない場合がある。
【０１８６】
そこで中間転写体６９の端部に中間転写体位置検出マーク７３を複数個配置しておき、感光体位置検出マーク５６を検出する直前の中間転写体位置検出マーク７３を、画像形成基準として選択する。更に感光体位置検出マーク５６を検出する直前の中間転写体位置検出マーク７３を検出してから、感光体位置検出マーク５６を検出するまでの時間を位相差時間として計測し、選択された中間転写体位置検出マーク７３を検出後、全ての作像プロセスを位相差時間だけ遅延させる処理を行っている。
【０１８７】
原理上は中間転写体位置検出マーク７３は一つであっても構わないが、感光体５１と中間転写体６９の位置関係によっては最初のページの印字が遅くなったり、中間転写体位置検出マーク７３を検出してから画像形成開始までに時間がかかり、中間転写体６９上の画像位置合わせ精度の劣化が考えられるため、中間転写体６９には複数の中間転写体位置検出マーク７３を配置し、マーク検出後速やかに画像形成が開始されるよう配慮されている。
【０１８８】
中間転写体６９の周面にはｄ３で示す回転方向に、転写前帯電器７５、濃度センサー７６、用紙転写ローラ７７、中間転写体クリーニング装置７８が配置されている。
【０１８９】
転写前帯電器７５はタングステンワイヤ等からなる帯電線と金属板からなるシールド板（図示せず）で構成されるコロトロンチャージャであり、帯電線へ負の高電圧を印加すると帯電線がコロナ放電を起こし、中間転写体６９上に合成されたトナー像を、強制的に再帯電する。転写前帯電器７５の起動は記録用紙７９に転写する直前に、中間転写体６９上の画像領域に対してのみ行われ、その他の期間は停止している。転写前帯電により、用紙転写の際の機構的なマージン及び対環境特性が改善される。
【０１９０】
濃度センサー７６は反射型センサーを応用したものであり、中間転写体６９上のトナー濃度を検出する。濃度センサー７６の発光側はＤ／Ａ変換器（図示せず）に接続されており、Ｄ／Ａ変換器にデータを設定して電流を制御することで発光光量を変化させることができる構成となっている。受光側の出力はオペアンプ（図示せず）等で増幅されＣＰＵのＡ／Ｄ変換ポート（図示せず）に入力される。
【０１９１】
用紙転写ローラ７７は金属の中心軸と発泡シリコンや導電性ウレタンゴムで構成されている。中間転写体６９上で合成されたトナー像を記録用紙に転写する際に中間転写体６９と接触回動する。用紙転写ローラ７７がトナー等で汚染されると画像が劣化するため、近傍にクリーニング機構（図示せず）が配置されている。
【０１９２】
中間転写体クリーニング装置７８は用紙転写後の中間転写体６９上の残留トナーを除去する装置であり、中間転写体６９上にトナー像が合成されている間は中間転写体６９から離間しており、クリーニングに共する時のみ当接する。
【０１９３】
次に給紙系並びに定着装置の構成を説明する。
給紙系は記録紙カセット８０、給紙ローラ８１、用紙搬送路８２、スリップローラ８３、レジストローラ８４ａとその従動ローラ８４ｂから構成されている。
【０１９４】
記録紙カセット８０は記録紙を収納するためのカセットである。カセット周辺には記録紙カセット有無センサー、記録紙サイズ判別センサー、記録紙有無センサー、記録紙残量センサー（全て図示せず）等が配置されている。
【０１９５】
給紙ローラ８１は半月形のローラであり、記録紙カセット８０から記録用紙７９を１枚づつ用紙搬送路８２へ送り出す。
【０１９６】
用紙搬送路８２の途中には、スリップローラ８３が配置され、給紙ローラ８１によってピックアップされた記録用紙７９はスリップローラ８３によりレジストローラ８４ａまで搬送される。記録用紙７９の先端がレジストローラ８４ａに到達した時点では、レジストローラ８４ａは回転しておらず、記録用紙７９は先に進むことができずにスリップローラ８３位置でスリップしている。
【０１９７】
レジストローラ８４ａと従動ローラ８４ｂは記録用紙７９と中間転写体６９上の合成像の位置を一致させるため一時的に記録用紙７９を停止待機させる。動作時は共に回動して記録用紙７９を用紙転写ローラ７７の方向へ搬送する。
【０１９８】
次に定着装置８５の構成を説明する。
定着装置８５はヒートローラ８６、加圧ローラ８７、温度センサー８８等で構成されている。
【０１９９】
ヒートローラ８６はヒータと、アルミ製の芯金、厚み０．５ｍｍ程度のシリコンゴムによって構成されており、記録用紙８８上に転写されたトナー像の表面を加熱しトナーを軟化、溶融させる。
【０２００】
加圧ローラ８７は鉄製の軸と厚み３ｍｍ程度のシリコンゴムとからなり、ヒートローラ８６との間に記録用紙７９を挟持して圧力を加える。ヒートローラ８６と加圧ローラ８７の挟持回転に伴い熱と圧力で記録用紙７９上のトナー像は記録用紙７９に定着されカラー画像を形成する。
【０２０１】
温度センサ８８はサーミスタ等の温度センサであり、ヒートローラ８６の表面温度を検出する。温度センサ８８からの出力は適当なサンプリング周期で検出され、検出結果に基づいて、単位時間当りのヒータの点灯時間が制御され、常に規定の温度を保持している。
【０２０２】
以上述べてきた画像形成装置では、画像形成時において、感光体５１は方向ｄ２に、中間転写体６９は方向ｄ３に、常に同一方向に回転する。従って駆動源５５も常に同一方向に回転すればよいため、速度制御に際して、実施の形態１で述べた画像読み取り装置のように、複数の方向を検出する必要がない。
【０２０３】
このため以上述べてきたタイプの画像形成装置で使用されるエンコーダは、例えば駆動源５５のロータの外周に磁気記録された単相のパターンを磁気検出器で検出して、これを単相出力する方式が多く用いられる。即ちこのタイプでは、エンコーダと駆動源は一体に構成されていることが多い。
【０２０４】
さて、画像品質を向上するため、画素密度を感光体５１の送り方向（副走査方向）、及びこれと垂直方向（主走査方向）の夫々について２倍にして、画像を形成する方法が知られている。これは感光体５１と中間転写体６９の搬送速度を１／２倍に設定し、かつ露光光学系６０による１走査期間の記録画素数を２倍に制御することで達成される。このときは駆動源を基準速度Ｖの１／２速度で精度よく駆動することが必要である。
【０２０５】
図１１は実施の形態２における駆動源制御方法の構成を示すブロック図である。図１１において５５は既に説明した駆動源であり、駆動源が所定の量回転する毎に、一体に構成されたエンコーダから単相のパルスが出力される。９０はエッジを検出する検出手段としてのエッジ検出部であり、単相信号の立ち上がり及び立ち下がりエッジを検出して、これをパルスとして出力する。９１はエンコーダ出力信号であり、９２はエッジ検出部出力である。９３はエンコーダ出力信号９１とエッジ検出部出力９２のいずれかを選択するセレクタである。９４は後述のごとくセレクタ９３から出力される信号のエッジ間隔を測定する測定手段としての演算装置（以降ＣＰＵと略称する）であり、更にＣＰＵ９４は後述のようにエッジ間隔を測定して駆動源の速度情報（即ち駆動速度）を算出するとともに、この速度情報に基づいてモータドライバ９６に速度指令値を出力し駆動源５５を制御する。９５はＣＰＵ９４に供給されるクロック信号を発生するクロック発生器である。９６はモータドライバであり、ＣＰＵ９４が出力する制御信号に基づき駆動源５５の回転速度を制御する。９７は不揮発性メモリであり、例えばシリアル通信等によりＣＰＵ９４とデータのやり取りを行う。また後述するように、不揮発性メモリ４９には駆動源の駆動速度の目標値としての制御目標値が格納され、更に不揮発性メモリ４９上で制御目標値を更新することも可能である。５０はワークメモリであり、ＣＰＵ４６のワーク領域として装備されている。９８はワークメモリであり、ＣＰＵ９４のワーク領域として装備されている。
【０２０６】
次にエンコーダの単相出力信号の立ち上がり、立ち下がりエッジを検出して、その区間計測値に基づき、基準速度Ｖに対して１／２の速度で、駆動源を駆動する方法について説明する（単相両エッジ駆動）。
【０２０７】
まず図１１と図１２を用いて本発明の第１行程、即ち制御目標値を取得する過程について説明する。図１２は実施の形態２における単相両エッジ駆動の第１行程のシーケンスを示す図である。本シーケンスにおけるタイミングや処理内容は、実施の形態１で述べた単相両エッジ駆動と同等のため、用語は同じものを使用する。
【０２０８】
まず駆動源５５の回転を開始するにあたって、エンコーダ出力信号９１がＣＰＵ９４の入力となるように、ＣＰＵ９４はセレクタ９３を設定する。
【０２０９】
ＣＰＵ９４はこの状態で駆動源５５の速度制御を行うが、この過程は従来例と全く同様なので省略する。またこの時点での駆動源の駆動速度は、立ち上がりエッジのみを参照して駆動源を駆動する場合の速度と等しく、これは従来例で基準速度Ｖとして説明した速度である。
【０２１０】
駆動源５５が予め定められた回転速度に到達すると、ＣＰＵ９４は、割り込みによって、その直後のエンコーダ出力信号９１の立ち上がりのタイミングＴ’１−１を検出すると、直ちにエッジ検出部出力９２がＣＰＵ９４の入力となるように、セレクタ９３の設定を変更する。またＣＰＵ４６はワークメモリ９８上に割り付けられた、ソフトウェアが管理する変数である、２つの区間累積値を０にクリアする。
【０２１１】
その他のＣＰＵ９４の状態は変わっていないため、以降、ＣＰＵ９４の内蔵カウンタは、図１２に示す区間ｗ、区間ｘにおいて、クロック発生器９５が発生したクロックパルスを計数し、このカウンタ値は図示しない内蔵レジスタにコピーされる。
【０２１２】
ＣＰＵ９４が次の立ち上がりのタイミングＴ’１−２を検出した時点では、内蔵レジスタには区間ｗにおけるカウンタ値がコピーされており、ＣＰＵ９４はこの値を内蔵レジスタから取りだし、ワークメモリ９８にカウンタ値ｗとして格納すると共に、区間ｗに対応する区間累積値に加算する。以降この処理を処理Ｂ’と呼称する。
【０２１３】
ＣＰＵ９４が次の立ち上がりのタイミングＴ’１−３を検出した時点では、内蔵レジスタには区間ｘにおけるカウンタ値がコピーされており、ＣＰＵ９４はこの値を内蔵レジスタから取りだし、ワークメモリ９８にカウンタ値ｘとして格納すると共に、区間ｘに対応する区間累積値に加算する。更にワークメモリに格納されたカウンタ値ｗ、カウンタ値ｘを加算する。この加算結果はエンコーダ出力信号９１の立ち上がりエッジ間隔のみに着目してカウントした値と等価である。
【０２１４】
エンコーダ出力信号９１は駆動源が所定の角度回転する毎に発生する「距離」を示す信号である。また各区間毎にクロック信号を計数したカウンタ値の加算結果は「時間」を表わすから、ＣＰＵ９４は距離÷時間を演算することで、駆動源５５の速度情報を入手することができる。一般にエンコーダは、同一の相の同一のエッジ間隔は極めて高い精度で一定に再現されるため、エッジ間隔＝「距離」を一定値とみなし、予め定められた定数（以降速度変換定数：ＴＲＮＶと示す）を定義し、これをカウンタ値ｗ、カウンタ値ｘの加算結果で除算して速度情報とする。以降この処理を処理Ａ’と呼称する。
【０２１５】
この速度情報に基づきＣＰＵ９４はモータドライバ９６に速度指令値を出力し、駆動源５５を制御する。この過程は図１６のフローに示した従来例の制御信号生成過程と全く同様なので省略する。
【０２１６】
同様にタイミングＴ’１−３では処理Ｂ’を、タイミングＴ’１−４では処理Ａ’を・・・のように順次周期的に実行していく。最初にエンコーダ出力信号９１の立ち上がり、即ちタイミングＴ’１−１を開始トリガとして用いることで、区間ｗ、区間ｘを容易に判別できる。上述した処理を繰り返せば、エッジ検出部出力９２を参照しながら、エンコーダ単相信号４４を用いたのと全く同等に駆動源５５を制御できる。
【０２１７】
さてこのように駆動源５５を制御しながら、駆動源５５を予め定められた期間、例えば予め定められた回数の、処理Ａ’を実施する期間、駆動源５５を駆動すれば、上述の処理Ｂ’、処理Ａ’により、それぞれ区間ｗのカウンタ値ｗ、区間ｘのカウンタ値ｘの累積結果を得ることができる。以降この累積結果を累積値ｗ、累積値ｘと呼称する。
【０２１８】
エンコーダ信号のデューティ比のばらつきは、エンコーダ固有のものであり、上述の２つの区間に周期的に現われるため、２つの区間についての累積値を取得すれば、ばらつきの状態を完全に把握することができる。更に累積期間をある程度与えれば、制御系の外乱要素の影響を小さくなるため、結果的に累積値ｗ、累積値ｘの比は、それぞれ区間ｗ、区間ｘの距離の比を示す情報とみなしてよい。
【０２１９】
一方エンコーダ出力信号９１の立ち上がりエッジの周期は、仮に駆動源５５が理想的に回転していれば一定の値となり、エッジ周期をカウントするカウント値も当然一定の値となる。これは感光体５１及び中間転写体６９の目標とする搬送速度と駆動系の減速比と、エッジ周期をカウントするクロックの周波数から予め求めることができる。例えば感光体５１及び中間転写体６９を所定の速度で駆動するとき、駆動源が基準速度Ｖで駆動されるとする。このときエンコーダ出力信号９１の立ち上がりエッジの周期が１ｍｓｅｃであり、区間計測用のクロック周波数が８ＭＨｚであれば、エンコーダ出力信号９１のエッジ間においてカウンタ値は理論的には８０００となる。このカウント値は設計上定まる数値であり、以降これを理論カウント値と呼称しＣＮＴＡ’と示す。
【０２２０】
最終的に第１行程は各区間に対する理論カウント値を求め、これから各区間毎の制御目標値を得ることが目的である。
【０２２１】
次に各区間の理論カウント値を求める方法を説明する。理論カウント値ＣＮＴＡ’は設計的に求めることができる数値であることは既に述べた。また累積値ｗ、累積値ｘの比は、それぞれ区間ｗ、区間ｘの距離の比を示す情報とみなしてよい。そこでまず累積値ｗ、累積値ｘの平均値を求め、これをＣＮＴａｖｅ’とする。ＣＮＴａｖｅ’を用いて区間ｗの理論カウント値ＣＮＴｗは（数１９）のように、区間ｘの理論カウント値ＣＮＴｘは（数２０）のように求められる。
【０２２２】
さてここで、前に述べた速度変換定数ＴＲＮＶ’を用いると、区間ｗの速度目標値ＶＥＬＯｗは（数２１）、区間ｘの速度目標値ＶＥＬＯｘは（数２２）と表される。
【０２２３】
こうして求めた２つの、各区間毎の速度目標値は、それぞれが対応する区間の制御目標として、ワークメモリ９８に格納される。
【０２２４】
さて前述したようにエンコーダ出力信号のデューティ比のばらつきは、エンコーダ固有のばらつき量であるから、経時的な変化は生じない。従って第１行程は、例えば装置の電源が立ち上げられた直後に実施すればよいし、また例えば装置の組み立て行程において一度実施し、各区間の制御目標値を不揮発性メモリ９７に格納しておくこともできる。仮にエンコーダのデューティ比に経時変化が生じた場合には、再計測した値を不揮発性メモリ９７上で更新することも可能である。
【０２２５】
次に図１１と図１３を用いて、駆動速度が基準速度Ｖの１／２の場合における第２行程、即ち第１行程でもとめた区間毎の制御目標値を用いて駆動源を制御する過程について説明する。また制御のフローは実施の形態１で説明した、基準速度Ｖに対して１／２の速度で、駆動源を駆動する場合と同等なので、説明には図９を流用して説明する。
【０２２６】
図１３は実施の形態２における、駆動速度が基準速度Ｖの１／２の場合の第２行程のシーケンスを示す図である。
【０２２７】
駆動源５５の回転を開始するにあたって、ＣＰＵ９４は第１行程で取得した各区間の制御目標値を不揮発性メモリ９７から取り出し、ワークメモリ９８にコピーすることもできる。既にワークメモリ９８に制御目標値が格納されていれば、これをそのまま使用することもできる。
【０２２８】
まずエンコーダ出力信号９１がＣＰＵ９４の入力となるように、ＣＰＵ９４はセレクタ９３を設定する。ＣＰＵ９４はこの状態で駆動源５５の速度制御を行うが、この過程は従来例と全く同様なので省略する。
【０２２９】
駆動源５５が予め定められた回転速度に到達すると、ＣＰＵ９４は、割り込みによって、その直後のエンコーダ出力信号９１の立ち上がりのタイミングＴ’２−１を検出すると（ステップ２００）、直ちにエッジ検出部出力９２がＣＰＵ９４の入力となるように、セレクタ９３の設定を変更する。（ステップ２１０）
その他のＣＰＵ９４の状態は変わっていないため、以降、ＣＰＵ９４の内蔵カウンタは、図８に示す区間ｗ、区間ｘにおいて、クロック発生器９５が発生したクロックパルスを計数し、このカウンタ値は図示しない内蔵レジスタにコピーされる。以降この値をＣＮＴ’と略称する。
【０２３０】
ＣＰＵ９４が次の立ち上がりのタイミングＴ’２−２を検出した時点では（ステップ２２０）、ＣＰＵ９４はこの割り込みを起点として割り込み回数のカウントを開始する（ステップ２３０）。内蔵レジスタには区間ｗにおける内蔵カウンタ値ＣＮＴ’がコピーされており、ＣＰＵ９４はこの値を内蔵レジスタから取りだし、（数２３）により速度情報ＶＥＬＯ’に変換する（ステップ２４０）。
【０２３１】
次に割り込み回数の偶奇判定をし（ステップ２５０）、ここでは偶数なので区間ｗの速度目標値ＶＥＬＯｗを選択する（ステップ２６０）。
【０２３２】
次にステップ２４０で得られた速度情報ＶＥＬＯ’を用いて（数２４）に基づいて速度偏差を求める（ステップ２７０）。
【０２３３】
次にステップ２７０で得られた速度偏差ｅ’を累積（積分）し、（数２５）に従い距離偏差を求める（ステップ２８０）。
【０２３４】
次にステップ２７０とステップ２８０で得られた速度偏差と距離偏差を用い、（数１５）に従って速度指令値を計算する（ステップ２９０）。
【０２３５】
次に割り込み回数をインクリメントし（ステップ３００）、最後にＣＰＵ９４はモータドライバ９６に対して速度指令値を出力して駆動源５５の速度を制御する（ステップ３１０）。
【０２３６】
ＣＰＵ９４が次の立ち上がりのタイミングＴ’２−３を検出した時点では、割り込み回数の条件（ステップ２２０）によりステップ２３０は処理しない。内蔵レジスタには区間ｘにおける内蔵カウンタ値ＣＮＴ’がコピーされており、ＣＰＵ９４はこの値を内蔵レジスタから取りだし、（数２３）により速度情報ＶＥＬＯに変更する（ステップ２４０）。
【０２３７】
次に割り込み回数の偶奇判定を行ない（ステップ２５０）、ここでは奇数なので区間ｘの速度目標値ＶＥＬＯｘを選択する（ステップ３２０）。
【０２３８】
次にステップ２４０で得られた速度情報ＶＥＬＯ’を用いて（数２６）に基づいて速度偏差を求める（ステップ２７０）。
【０２３９】
次にステップ２７０で得られた速度偏差ｅ’を累積（積分）し、（数２２）に従い距離偏差を求める（ステップ２８０）。
【０２４０】
次にステップ２７０とステップ２８０で得られた速度偏差と距離偏差を用い、（数１５）に従って速度指令値を計算する（ステップ２９０）。
【０２４１】
次に割り込み回数をインクリメントし（ステップ３００）、最後にＣＰＵ９４はモータドライバ９６に対して速度指令値を出力する（ステップ３１０）。
【０２４２】
以降上述したタイミングＴ’２−２、タイミングＴ’２−３を周期的に繰り返し、駆動源５５の速度制御をおこなう。
【０２４３】
さて上述した処理のなかで、ステップ２６０の処理時点ではステップ２４０で得られた内蔵カウンタ値も参照できる。従ってステップ２６０において区間ｗに対する内蔵カウンタの値を常にモニタできる。同様にステップ３２０において区間ｘに対する内蔵カウンタの値をモニタできる。
【０２４４】
そこで、例えば区間ｗに対する内蔵カウンタの値を規定回数累積し、これが現在採用している区間ｗの理論カウント値と予め定められた率より大きく外れた場合は、既に説明した第１行程を装置の待機時等に再実行して、何らかの障害によりエンコーダのデューティに経時変化が生じた場合に対応できる。
【０２４５】
また装置組立時に制御目標値を不揮発性メモリ等に書き込んでおくような装置であれば、エンコーダのデューティに経時変化が生じた場合は、再計測した値を不揮発性メモリ上で更新することも可能である。
【０２４６】
【発明の効果】
以上のように本発明によれば非常に簡易な方法で、第１の駆動速度で駆動源を駆動した際の、エンコーダの複数相の出力信号に対して立ち上がりエッジと立ち下がりを検出し、このエッジ間隔を測定した値に基づいて制御目標値を取得する第１行程と、この制御目標値に基づいて駆動源の駆動速度を、第１の駆動速度より低速に設定された第２の駆動速度で制御する第２行程とを有することで、第１行程で安定した駆動条件のもとでエンコーダのバラつきに対応する制御目標値を得ることができ、更に第２行程では第１行程で得た制御目標値を用いて駆動源を極めて低速に制御することができる。
【０２４７】
これにより高価な高精度エンコーダを使用することなく、駆動源を低速に駆動したときもサンプリングレートを低下させず帯域を確保でき、更に全ての相信号の全エッジを単純に検出しサンプリングレートを確保した場合に見られるような、異音や制御系の挙動不安定のない駆動源制御方法を実現できる。
【図面の簡単な説明】
【図１】本発明に係る駆動源制御方法を応用した画像読み取り装置の概略を示す図
【図２】本発明に係る駆動源制御方法を適用した画像読み取り装置の光学系の概略を示す図
【図３】本発明に係る駆動源制御方法の構成を示すブロック図
【図４】実施の形態１における両相両エッジ駆動における第１行程のシーケンスを示す図
【図５】実施の形態１における第２行程のシーケンスを示す図
【図６】制御信号生成過程を示すフローを示す図
【図７】実施の形態１における単相両エッジ駆動の第１行程のシーケンスを示す図
【図８】実施の形態１における駆動速度が基準速度Ｖの１／２の場合の、第２行程のシーケンスを示す図
【図９】実施の形態１における駆動速度が基準速度Ｖの１／２の場合の、第２行程の制御信号生成過程を示すフローチャート
【図１０】本発明の駆動源制御方法を応用した電子写真装置の全体構成を示す図
【図１１】実施の形態２における駆動源制御方法の構成を示すブロック図
【図１２】実施の形態２における単相両エッジ駆動の第１行程のシーケンスを示す図
【図１３】実施の形態２における、駆動速度が基準速度Ｖの１／２の場合の第２行程のシーケンスを示す図
【図１４】従来の駆動源制御方法の概要を示すブロック図
【図１５】ＣＰＵが駆動源の速度情報を取得するまでの過程を示す図
【図１６】従来例における制御信号生成過程を示すフローを示す図
【図１７】駆動速度とエンコーダ出力の関係を示す図
【図１８】単純にＣＰＵのサービス回数を増加する方法を示す図
【図１９】エンコーダの各相信号のデューティが５０％で、相間の位相差が９０゜の状態を示す図
【符号の説明】
２１  キャリッジを駆動する駆動源
２２  エンコーダ
３６ａ  Ａ相信号
３６ｂ  Ｂ相信号
３７ａ  エッジ検出部（Ａ相）
３７ｂ  エッジ検出部（Ｂ相）
３８  回転方向検出部
３９  合成回路部
４０  アップダウンカウンタ
４１  プリスケーラ
４２  プリスケーラ出力
４３  合成回路出力
４４  エンコーダ単相出力
４５  セレクタ
４６  演算装置（ＣＰＵ）
４７  クロック発生器
４８  モータドライバ
５５  駆動源
９０  エッジ検出部
９１  エンコーダ出力信号
９２  エッジ検出部出力
９３  セレクタ
９４  演算装置（ＣＰＵ）
９５  クロック発生器
９６  モータドライバ
【図１】
0003700325.tif 000002
【図２】
0003700325.tif 000003
【図３】
0003700325.tif 000004
【図４】
0003700325.tif 000005
【図５】
0003700325.tif 000006
【図６】
0003700325.tif 000007
【図７】
0003700325.tif 000008
【図８】
0003700325.tif 000009
【図９】
0003700325.tif 000010
【図１０】
0003700325.tif 000011
【図１１】
0003700325.tif 000012
【図１２】
0003700325.tif 000013
【図１３】
0003700325.tif 000014
【図１４】
0003700325.tif 000015
【図１５】
0003700325.tif 000016
【図１６】
0003700325.tif 000017
【図１７】
0003700325.tif 000018
【図１８】
0003700325.tif 000019
【図１９】
0003700325.tif 000020