以下本発明の実施例を図面を参酌して説明する。
1.回路図
図1は、本発明の実施例に関わる部分を示した回路図である。5は手振れ検出手段としての角速度検出回路であり、手振れによる角速度を検出し、その出力と書き込み可能な不揮発正メモリであるE2PROM10に書き込まれている角速度検出回路5の個々のゲインばらつきを調整する為のゲイン調節値と、測距回路7によって検出された被写体距離と、撮影レンズ11、12、13、14で構成される撮影光学系は焦点距離を可変可能なズームレンズであってズーム位置検出回路8により検出された撮影焦点距離とによりワンチップマイクロコンピュータであるCPU1によって所定の演算がなされ、モータ駆動回路2により、撮影レンズ11、12、13、14内の光軸変化手段としての手ぶれ補正レンズ13(単に補正レンズ、或いは防振レンズと言うことがある)をアクチュエータとしてのモータ4を制御することにより適当な速度でシフトして光軸を変化させることで、像面での手ぶれを打ち消す様な構成をとる。通常、この様な補正レンズ13の補正は直角に交差する2軸分必要であるが、同様な制御になるので1軸分の制御についてのみ述べることにする。また、CPU1にはこれ以外に回路系を動作させる為の電池(不図示)の残有容量、若しくは電流供給能力をチェックするバッテリーチェック回路6、露光処理を行う為のシャッタ回路9、半押しSW15、全押しSW16が接続されている。
また、角速度検出回路5はカメラの手ぶれにより生じた角速度に応じて出力値が変化し、CPU1がこの出力値をA/D変換を行い手ぶれの角速度を検出する。モータ4の回転は、適当なギア等(不図示)により直線運動に変換し手ぶれ補正レンズ13を駆動するように構成される。光軸変化手段の変位を検出する変位検出手段としてのレンズ位置検出回路3は、公知の技術により手ぶれ補正レンズ13の位置を検出するものである。次に、CPU1はワンチップマイクロコンピュータであり、カメラのシーケンスを制御している。さらに、時間を計測する計時タイマ機能や、一定時間間隔でその処理を行うタイマ割り込み処理、任意のdutyを出力するPWM出力機能、角速度検出回路5の出力をA/D変換する機能も持っている。
2.防振制御
次に露光時の防振制御方法の概略を説明する。
CPU1は、手ぶれによって生じた角速度を角速度検出回路5の出力をA/D変換することで検出、その角速度において防振レンズ13を如何なる速度でシフトすれば手ぶれがおさまるかを算出し、その算出結果である防振レンズ目標速度VCと、レンズ位置算出回路3の出力より検出された防振レンズ13の位置である防振レンズ位置VRとから、モータ4の駆動量を算出し、モータ駆動回路2を通じてモータ4を制御することにより適当な速度でシフトして光軸を変化させることで、その手ぶれを打ち消す様な構成をとる。また、モータ4の制御方法はPWM(PULSE WIDTH MODULATION)制御で行なった場合について述べることにする。通常、PWM制御はある一定周期間の通電時間を可変する、つまり、モータがオンしているdutyを可変することで速度制御を行なう方式である。次に、その具体的な内容を説明する。
(1)角速度検出回路出力−防振レンズ目標速度変換係数算出
まず、CPU1は、所定のタイミングで測距回路7により測距(AFという場合がある)処理を行ってその結果である被写体距離と、ズーム位置検出回路8により撮影が行われる焦点距離を検出、E2PROM値に書き込まれた角速度検出回路5の個々のばらつきを補正する為のゲイン調整値G0を読み込み、これらの結果から角速度検出回路5の出力値に対してどれだけ補正レンズ13をシフトされたらいいかの適正補正係数A0(角速度検出回路出力−防振レンズ目標速度変換係数と言う場合がある)を下記の様に算出する。
角速度検出回路出力−防振レンズ目標速度変換係数A0は、上式で示す通り撮影が行われる焦点距離と、被写体距離とのある関数で算出される値と、ゲイン調節値G0を掛け合わせた値として求まる。撮影光学系の焦点距離と、被写体距離との前記関数はその撮影光学系固有のものでこの関数を焦点距離の関数として求められる変数d1、d2を用いた式(数2)によりA0を近似的に算出してもかまわない。つけ加えて言うならば、通常知られている測距回路としてはその出力値として被写体距離の逆数であるものが一般的で、式(数2)はそれに適した算出式になっている。
尚、上記式をさらに簡略化し、CPU1での演算の負荷を軽減する為に以下の方法がとられる。撮影光学系の焦点距離をいくつかのゾーンに分割し、その各ゾーンの代表される焦点距離におけるd1、d2をあらかじめ算出しておき、CPU1はそのあらかじめ算出された値を所定のメモリから読み込むことでその処理の高速化をはかっている。撮影焦点距離35mmから105mmのズーム光学系の場合の例を表1に示す。
表1の例では、撮影焦点距離を10のゾーンに分割されていて各ゾーンに対してそれぞれのd1、d2が予め表1の様に決定されている。また、この演算処理は精度良く算出する必要があり、CPU1であるワンチップマイクロコンピュータに行わせる演算としては簡略化された上式を用いたとしてもまだ高度のものであり、演算時間も非常に長く要する。よって、防振制御中に同時にこの処理を行わせることは困難である。そこで本実施例では防振制御処理を開始する以前、詳しく述べれば半押し中の比較的処理の頻繁でないタイミングに算出を行わせている。
(2)防振レンズ目標速度算出
次に、露光時に行われる防振制御について説明する。以下で説明する処理は、所定時間間隔で行われるタイマ割り込み処理において行われる処理である。
まず、角速度検出回路5の出力をA/D変換し、その出力と前記の方法で算出されている角速度検出回路出力−防振レンズ目標速度変換係数算出A0から下式により防振レンズ目標速度VCを算出する。
(3)モータ駆動dutyの算出
次に、(2)項で算出された防振レンズ目標速度VCに対して精度良く防振レンズ13を制御する為に以下の様な方法でモータ4の制御を行う。モータ4の駆動する駆動dutyを下式の様な制御式を用いて算出し、モータ駆動回路2を通じてモータ4を駆動する。
では、式(数4)の各項について詳しい説明を行う。
まず、式(数4)の第1項と第6項について説明する。図2は、モータ4に所定dutyで通電を行った時の防振レンズ13の速度を縦軸に、その通電開始からの時間を横軸にとった時の防振レンズ速度VRの立ち上がり特性である。防振レンズ13の速度VRは概略下式の様な関数で表せる変化をする。
ここで、VR0は前記の所定dutyで通電を開始してから十分な時間が経過した定常時の防振レンズの速度、τはモータ4とモータの回転を防振レンズのシフト運動に変換するメカの特性によって決まる時定数であり、通常、コワレスモータを使用した場合には十数ms程度の値になる。図3は、モータ4に通電される駆動dutyを変化させた時の定常時の防振レンズ速度VRとの関係を示す。まず、駆動dutyを点A1、つまり0%の状態から増加させて行く。点A2まではモータは停止したままであるが点A2をすぎると一気にモータは回転を始め点A3に達する。点A3からは、駆動dutyの増加とともに定常時の防振レンズ速度VRは増加して駆動dutyが100%で点A4に達する。今度は逆に駆動dutyを減少させていくと駆動dutyの減少とともに定常時の防振レンズ速度VR0は減少してゆく。しかし、駆動dutyを増加していった場合とは異なり点A3の駆動duty以下になってもモータは回転を停止しない。この図3の例では点A5の駆動duty以下になって初めてモータは回転を停止している。まとめると、駆動dutyを変化させるとA1→A2→A3→A4→A5→A6→A7という経路でモータの回転数、つまり防振レンズ速度が変化する。このことから分かることは、点A3、点A4を結ぶ直線を傾きK1とし、この直線のX接片をDoffsetとすると、下式で算出される駆動dutyでモータを駆動すれば、時間的に定常状態においては制御目標である防振レンズ目標速度VRで防振レンズをシフトすることが可能となる。
ここで、Doffsetは正の定数であって前の±符号は、実際の防振レンズ13の駆動方向は正負の方向を有する為、Doffsetの項は第1項が正の場合には+を、負の場合には−を第1項に加算することを意味する。同様に式(数4)の第6項の±は第1項から第5項の算出結果が正の場合には+、負の場合には−をそれぞれ第1項から第5項の算出結果に加算する意味である。ここで、第1項で算出される駆動量は、補正光学系のメカ、或いは、モータ4の基本的静特性に基づく項でそれのよって算出される量は基本駆動量、若しくは、基本駆動dutyと呼び、それ以外の項で算出される量を補正駆動量、或いは、補正駆動dutyと呼ぶ。
次に、図4を用いて第2項の説明をする。図2は、式(数4)の第1項と第6項のみを用いて時間t=0からモータ4の制御を開始した時の防振レンズ目標速度VCと実際の防振レンズ速度VRを示す。この場合の制御では、モータ4を含めた防振レンズシフトメカ系の時定数により実際の防振レンズ速度VRが防振レンズ目標速度VCに追いつくまでに応答遅れを生じている。又、こうした制御では外的負荷要因、例えば、モータ4に供給する電源電圧、或いは、防振レンズシフトメカ系の変動等により、必ずしも目標速度であるVCと一致した速度が得られない。そこで、防振レンズ目標速度VCと実際の防振レンズ速度VRの差、つまり速度誤差ΔVに応じた駆動dutyを第1項、第6項に加算させたのが第2項である。
ここで、K2を大きく設定し過ぎると追従性は良くなるものの逆にオーバシュートや発振等が起こり、逆に誤差量が大きくなり、小さく設定し過ぎると滑らかな制御を期待できるものの追従性が悪化する傾向にあり、K2は実験的に最良の値が求められる。
次に、図5を用いて第3項の説明をする。図5(a)(b)(c)は、式(数4)の第1項と第6項のみを用いてモータ4の制御を開始した時、防振レンズ目標速度VCにステップ入力を与えた場合の時間t=0からの実際の防振レンズ速度VRを示す。第3項は主に立ち上がり特性改善に寄与する項である。図5(a)は式(数4)の第1項、第6項のみでの制御した場合の防振レンズ速度VRの立ち上がりを示す。ここで、速度誤差ΔVの絶対値が所定値K3_th以上である場合に速度誤差ΔVを積算して積算値をΔSとし、速度誤差ΔVの絶対値が所定値K3_th未満である場合に積算値ΔSをクリアする。図5(a)の場合の積算値ΔSの様子を図5(b)に示す。尚、駆動開始t=0時にΔS=0としている。
第3項の制御はこの速度誤差の積算値ΔSに応じた駆動dutyを第1項、第6項、ないし、第2項に加算させる様にしている。このことを示したのが図5(c)で、第3項の制御を行わなかった場合に比べ立ち上がり特性の改善が見られる。また、第2項までの制御に於いては、ある程度速度誤差ΔVが減少するとそれに応じて第2項の駆動dutyへの補正量が減少し、特に、外的要因が大きい場合にはどうしても無視できない量の速度誤差が残ってしまう。また、この残った速度誤差を小さくする為にK2を増加させると逆に発振等により滑らかな制御を行えない。この点に於いても第3項を追加し、K3、及び、K3_thを適切な値に設定することで速度誤差の改善、及び、滑らかな制御を行うことが可能となる。尚、K3、及び、K3_thは実験により最良の値を設定する。
次に、第1項、第2項、第3項、及び、第6項を用いて制御を行った時に問題になるのは、モータ4、防振レンズシフトメカ系、及び本実施例による制御演算等の制御系の応答遅れにより、防振レンズ目標速度VCに対して実際に制御された防振レンズ位置VRには微少な時間的遅れが生ずる。その様子を図6に示す。 これを補正する為に第4項による補正項を加える。第4項は、防振レンズ目標速度VCの時間的変化量、つまりVCの時間微分値であるdVC/dtに応じた駆動dutyを第1項、第2項、第3項、及び、第6項に加えている。ここで、時間微分値dVC/dtは下式の様に単位時間Δt間の防振レンズ目標速度VCの変化量として近似してもかまわない。
ここで、VC’は現在時刻のVCの単位時間Δt前の防振レンズ目標速度である。尚、この第4項の補正項の係数K4は、前記制御系の遅れから理論的に求めるか、或いは、実験的に最良の値に設定する。
次に、第1項、第2項、第3項、第4項及び、第6項を用いて制御を行った場合も微少な速度誤差ΔVは残り、撮影秒時の短い場合にはこの誤差は無視できるものの、秒時の長い場合にこの速度誤差ΔVは累積され大きな位置的な誤差を生ずる。そこで、第5項によりこの位置誤差による補正を行う。この位置誤差をΔLとすると、ΔLは以下の2つの方法により算出される。第1の方法は、防振レンズ目標速度VCを所定のタイミング(通常このタイミングは防振制御開始)から積分、或いは、積算し、防振レンズ目標位置LCを式(数11)の様に算出する。
次に、算出された防振レンズ目標位置LCと実際の防振レンズ位置LRとの差から位置誤差ΔLを式(数12)の様に算出する。
第2の方法は、速度誤差ΔVを所定のタイミングから積分、或いは積算して位置誤差ΔLを式(数13)の様に算出する。
以上の2つのいずれかの方法で算出された位置誤差に応じて駆動dutyを第1項、第2項、第3項、第4項、及び、第6項に加算させるが第5項である。尚、係数K5は、実験により位置誤差ΔLが小さく、かつ、滑らかな制御になる様に最良の値に設定する。
以上制御式(数4)の各係数K1、K2、K3、K3_th、K4、K5、及び、Doffsetは実験等を用いて各制御項毎に独立に設定値を決定していると述べたが、実際には、再度、制御式(数4)を用いて実験等により、全体としてより防振レンズ速度誤差ΔV、或いは、防振レンズ位置誤差ΔLが小さくなる様に再設定を行っている。
(3)防振制御に於ける助走制御
次に、露光時に行われる防振制御に於ける、制御開始から所定時間の助走制御について説明する。今、図7の様な防振レンズ目標速度VCが与えられた場合に、式(数4)を用いてt=0から防振制御を開始した場合を考えると、モータ4、或いは、防振メカ系の立ち上がり時定数により制御開始初期については速度誤差ΔVが大きい。このΔVが大きい間は前記位置誤差ΔLの説明からも明かな通り、ΔLが増大して、第5項が大きくなる。このことにより、図7の例では駆動開始直後はオーバーシュート、或いは、発振ぎみな制御になってしまい、制御が安定するまでに時間がかかる。
そこで、制御開始から所定時間(図7で示す助走区間)は第5項を0にする、或いは、ΔL=0にする、或いは、第5項の補正を行わない様にする様にすれば良い。このことにより、防振制御開始時のオーバーシュート、発振を防げ、制御の安定する時間も短縮される。助走制御を行った場合と、行わない場合の制御の例を図7に示す。ここで、この助走区間は少なくとも露光タイミング前に終了する様に設定し、また、制御の安定した後に露光を開始するように各タイミングを設定している。
3.防振レンズのセンタリング制御
次に、露光処理の前に行われる処理で、防振レンズ13を防振レンズのシフト範囲の中央位置LSへ駆動する制御方法を説明する。
(1)防振レンズ目標速度算出
以下で説明する処理は、所定時間間隔で行われるタイマ割り込み処理において行われる処理である。
まず、下式の様にレンズ位置検出回路3で検出された防振レンズ位置LRと、中央位置LSの差に応じた速度にある所定速度Voffsetを加えた値を防振レンズ目標速度VCとする。
尚、本実施例では式(数14)の算出値に対してVC≦VC_Cとする様な所定のリミット速度VC_Cを設けている。ここで、リミット速度VC_Cをある値以上に大きく設定すると、防振レンズ速度VCは式(数14)により算術的には求められるが、後述する式(数15)、或いは、式(数15)の第3項、或いは、第4項を削除した制御式で求められる駆動dutyには例えば100%〜−100%と言う有限の範囲にあり、当然、実際に制御される防振レンズ速度VRの範囲も有限である。また、制御するVC_Cの設定によっては速度にリミットがかからない設定にする事も可能である。
(2)モータ駆動dutyの算出
次に、(1)項で算出された防振レンズ目標速度VCに対して以下の様に駆動dutyを算出し、モータ4の制御を行う。
まず、防振レンズ位置LRが中央位置LSの所定値Lstop前までは、下式で算出される駆動dutyでモータ4を駆動する。
上式は式(数4)から第5項を削除した制御式で、各係数K1、K2、K3、K4、及び、Doffsetは式(数4)の説明と同様な設定値の決め方をするか、或いは、式(数4)と同じ値に設定し、ΔSの積分開始、或いは、積算開始タイミングはセンタリング駆動開始タイミングとする。また、さらに式(数4)の第3項、或いは、第4項も削除した制御式を用いて演算を簡略化することも可能である。
次に、防振レンズ位置LRが中央位置LSの所定値Lstop以降の駆動dutyは下式に従う。
或いは、モータ4をショートブレーキ状態にしてもかまわない。
(3)制御の様子
図8において実際の防振レンズ速度VRと防振レンズ位置LRの関係を説明する。まず、防振レンズ13の初期位置は位置B0にある。この位置B0をリセット位置と言うことにし、防振レンズ位置LRの値を0と決めることにする。
ここで、リミット速度VC_Cを図8の様にVC_C1に設定した場合を考えると、まず、B0から防振レンズのセンタリング駆動が開始され、防振レンズは設定されている防振レンズの目標速度VCに制御しようとするが防振制御系の時定数の関係から次第に防振レンズ速度VRが増加し、B5に達する。B5に達すると、防振レンズ目標速度VCは設定されたリミット値VC_C1以上には設定されない為、防振レンズ目標速度VCにリミットがかかり、B5から以下で説明するB6の間の防振レンズ目標速度はVC_C1になり、その間はその設定された速度で防振レンズ13は制御される。次にB6から中央位置LSのLstop前であるB3の間は式(数14)で算出される点線に沿って次第にVCが減少し、B3からは駆動dutyを0、或いは、モータ4をショートブレーキ状態にされ、防振レンズ13は最終的に中央位置LSの近辺B4で停止する。
次に、リミット速度VC_CをVC_C2に設定した場合を考えると、まず、B0から防振レンズのセンタリング駆動が開始され、防振レンズは設定されている防振レンズの目標速度VCに制御しようとするが防振制御系の時定数の関係から次第に防振レンズ速度VRが増加し、B5に達する。B5に達しても今度は速度にリミットがかからずそのまま防振レンズ速度VRは増加し、B2に達する。B2から中央位置LSのLstop前であるB3の間は式(数14)で算出される直線でVCが設定され、この直線で防振レンズ13は制御され中央位置LSに近づくにつれ次第に防振レンズ速度VRは減少し、B3からは駆動dutyを0、或いは、モータ4をショートブレーキ状態にされ、防振レンズ13は最終的に中央位置LSの近辺B4で停止する。
4.防振レンズのリセット制御
次に、露光処理の後に行われる処理で、防振レンズ13を防振レンズのシフト範囲の一端のリセット位置、つまり、防振レンズ位置LRが0の位置へ駆動する制御方法を説明する。
(1)防振レンズ目標速度算出
以下で説明する処理は、所定時間間隔で行われるタイマ割り込み処理において行われる処理である。
まず、下式の様に所定の一定速度VC_Rを防振レンズ目標速度VCとする。
ここで、VC_Rは、図8の様にリセット位置B0を防振レンズ位置LR=0ととり、中央位置LSの方向を正の座標軸とした場合には、当然負の値に設定する。
(2)モータ駆動dutyの算出
次に、(1)項で算出された防振レンズ目標速度VCに対して式(数15)を用いて駆動dutyを算出し、モータ4の制御を行う。そして、防振レンズ13がリセット位置に停止したことを確認し、防振レンズのリセット処理が終了する。尚、リセット位置に停止したかの判断方法は後述する。式(数15)は式(数4)から第5項を削除した制御式で、各係数K1、K2、K3、K4、及び、Doffsetは式(数4)の説明と同様な設定値の決め方をするか、或いは、式(数4)と同じ値に設定し、ΔSの積分開始、或いは、積算開始タイミングはリセット駆動開始タイミングとする。また、さらに式(数15)の第3項、或いは、第4項も削除した制御式を用いることで演算を簡略化することも可能である。
(3)制御の様子
図8において実際の防振レンズ速度VRと防振レンズ位置LRの関係を防振レンズ13のリセット処理を行う前の位置がB4にあった場合を例にとって説明すると、まず、B4から防振レンズのリセット駆動が開始されると、防振レンズは設定されている防振レンズの目標速度VC_Rに制御しようとするが防振制御系の時定数の関係から次第に防振レンズ速度VRが増加し、C1に達する。C1からC2までは設定されている目標速度VC_Rで制御され、C2でリセット位置へ到達したことを判定し、防振レンズのリセット制御を完了する。リセット位置への到達の判定は、このC2で急激に防振レンズ速度VRが減少し、概略0になることから防振レンズ速度VRが所定値以下になることを確認することで行う。
5.制御係数K1の可変
以上、露光時の防振制御、防振レンズのセンタリング制御、或いは、防振レンズのリセット制御時に、式(数4)、ないし、式(数15)、もしくは、式(数15)から第3項、ないし、第4項を削除した制御式で制御を行っているが、ここでは電池電圧変動の影響、或いは、防振レンズシフトメカ系の変動等の外的要因があった場合にも精度良く制御の行える方法として制御係数K1をこれらの外的要因を検出して柔軟に変化させる方法を説明する。
その第1の方法は、まずバッテリーチェック回路6によって検出された電池の残留容量、若しくは電源供給能力値を示すバッテリーチェック電圧(BC電圧と略す)により係数K1を可変する方法がある。その算出方法は式(数18)に基づき、BC電圧の関数として求められる。或いは、式(数18)を式(数19)の様に簡略化してもかまわない。
式(数18)、或いは、式(数19)の意味は、BC電圧が大きい、言い替えると電池の残留容量、或いは、電源供給能力が大きい時にはK1は小さく設定し、式(数4)、ないし、式(数15)、もしくは、式(数15)から第3項、ないし、第4項を削除した制御式の第1項においてその防振レンズ目標速度VCに対する駆動dutyの比を小さく設定する様にし、電池の残留容量、或いは、電源供給能力が大きすぎた時の防振レンズの速度の増加を補う様にしている。逆に、BC電圧が小さい、言い替えると電池の残留容量、或いは、電源供給能力が小さい時にはK1は大きく設定し、式(数4)、ないし、式(数15)、もしくは、式(数15)から第3項、ないし、第4項を削除した制御式の第1項においてその防振レンズ目標速度VCに対する駆動dutyの比を大きく設定することで、電池の残留容量、或いは、電源供給能力が小さい時にも防振レンズの速度の減少を補う様にしている。尚、係数Kbcは実験によって最良の値に設定する。
第2の方法、第3の方法は、同様に電池の残留容量、或いは、電源供給能力の変動、防振レンズシフト系メカの変動を防振レンズのセンタリング制御時のレンズの動き具合から検出し、制御係数K1を補正する方法である。
まず、第2の方法は、防振レンズのセンタリング処理において、速度リミット設定値VC_Cを速度にリミットがかからない設定する。その方法は、速度リミットVC_Cを図8でVC_C2に設定するようなことを行うか、速度リミットを行わない様にすれば良い。この様に設定しておいて防振レンズのセンタリングの処理を行った時の防振レンズ速度VRの最大値を検出し、その最大値をVRmaxとすると、式(数21)、或いは、その簡略化した式(数22)で求められる。
尚、係数Kmaxは実験によって最良の値に設定する。図9でこの様子を説明する。図9は、図8で示したセンタリング制御時の防振レンズ位置LRと防振レンズ速度VRの関係を、今度は制御開始からの時間tと防振レンズ速度VRとで示したものである。今、t=0から防振レンズのセンタリング制御を開始すると、B0からB5のポイントへと防振レンズ速度VRが増加してゆき、最終的に図8で示される式(数14)で算出される点線に交差した点B2(図9でもこのポイントをB2で示す)付近で防振レンズ速度VRが最大値に到達する。この最大値VRmaxから前記の様な方法で制御係数K1を算出している。
次に、第3の方法は、防振レンズのセンタリング処理において、速度リミット設定値VC_Cを速度にリミットがかかる様な設定とする。その方法は、速度リミットVC_Cを図8でVC_C1に設定する様なことをすれば良い。この様に設定しておいて防振レンズのセンタリングの処理を行い、速度リミットがかけられて防振レンズ速度VRが速度リミット値VC_Cで制御されている期間の駆動dutyの平均値を算出して、それをDaveとすると、式(数23)、或いは、その簡略化した式(数24)で制御係数K1が求められる。
また、VC_Cをパラメタに加えた式(数25)により制御係数K1を算出してもかまわない。
尚、係数Kave、或いは、Kave’は実験によって最良の値に設定する。また、この駆動duty平均値を算出する区間は、防振レンズ速度VRが設定された速度リミット値VC_Cの定速で制御されている(この区間を定速度領域と呼ぶことにする)ことが必要である。そこで、防振レンズのセンタリング開始から必ず定速度領域になる様に設定された所定時間後から、これも必ず定速度領域になる様に設定された次の所定時間後の2点間の平均駆動dutyを算出する、或いは、防振レンズのセンタリング開始から必ず定速度領域になる様に設定された所定時間後から、図8でB6のポイントまでとしてもかまわない。B6のポイントは、式(数14)において算出されたVCがVC_C以下になることを確認することで検出できる。
図9でこの様子を説明する。今、t=0から防振レンズのセンタリング制御を開始すると、B0からB5のポイントへと防振レンズ速度VRが増加してゆき、B5からB6の間は設定されたリミット速度VC_C(図9の例ではVC_C1)で防振レンズは制御されている。B6のポイントは図8で示される式(数14)で算出される点線とリミット速度VC_Cが交差した点であり(図9でもこのポイントをB6で示す)、このポイント以降は前記の説明通り式(数14)で算出される速度で制御される。この時、このB5からB6までの間、いわゆる定速度領域に於いて駆動dutyの様子を図9の下図に示す。このB5からB6の間の定速度領域の駆動dutyの平均値を算出するか、或いは、制御開始t=0から所定時間後のB7(この場合にはB7のポイントで必ず定速度領域になる様にこの所定時間を設定する)からB6の間の平均駆動dutyを算出して前記の様な方法で制御係数K1を算出している。
6.駆動dutyのリミット設定
防振レンズのセンタリング制御、或いは、防振レンズのリセット制御時に、何らかの原因により速度制御を誤った場合に、防振レンズの制御端にぶつけて防振レンズシフト系メカを破損する場合がある。或いは、防振レンズのリセット制御時において、リセット位置にぶつけてしばらくの間、詳しく述べれば、防振レンズ速度VRが所定速度以下になりリセット位置に駆動されたことを確認し、リセット制御を終了する間に、防振レンズ速度VRが減少し、防振レンズ目標速度VCとこのVRの差の応じて式(数15)、もしくは、式(数15)から第3項、ないし、第4項を削除した制御式によって算出される駆動dutyは増大してしまう。この時、モータ4を通じて防振レンズシフト系メカに大きな力が加わり、防振レンズシフト系メカを破損する場合がある。
そこで、本実施例では防振レンズのセンタリング制御、及び、防振レンズのリセット制御時に、式(数15)、もしくは、式(数15)から第3項、ないし、第4項を削除した制御式によって算出される駆動dutyにリミットを設ける様にしている。
しかし、この場合に問題があるのは、電池の残留容量、若しくは電源供給能力値が低い場合、若しくは、防振レンズシフト系メカ等の動きが悪かった場合に、駆動dutyのリミット値を小さくし過ぎて防振レンズが全く動かない場合が有り得る。こうした問題を避ける為、本実施例では、駆動dutyのリミット値をBC電圧、或いは、リセット制御時には、センタリング制御時に検出されたVRmax、或いは、Daveの値によって可変する様にしている。尚、VRmax、或いは、Daveの値によって算出された制御係数K1を用いて駆動dutyのリミット値を算出してもかまわない。それぞれの場合の駆動dutyリミット値の算出式は以下の通りである。
BC電圧、或いは、BC電圧によって算出されたK1を用いる場合には、下記の式による。
VRmax、或いは、VRmaxによって算出されたK1を用いる場合には、下記の式による。
Dave、或いは、Daveよって算出されたK1を用いる場合には、下記の式による。
尚、駆動dutyの上限は100%までであるので駆動dutyリミット値の設定も100%までである。また、各係数K11、K11’、K12、K12’、K13、K13’は防振レンズシフト系メカが破損せず、かつ、防振レンズ13が確実に動作できる様な値に設定する。
7.防振レンズのセンタリング、リセット時の異常の検出方法
防振レンズのセンタリング制御、或いは、防振レンズのリセット制御時に、何らかの原因により速度制御を誤った場合に、防振レンズの制御端にぶつけて防振レンズシフト系メカを破損する場合がある。そこで、防振レンズのセンタリング制御と、防振レンズのリセット制御時にこの異常を検出し、異常検出時にはその制御を中断し、露光時の防振制御も中止することで、防振レンズシフト系メカの破損を未然に防いでいる。
その第1の異常検出方法は、防振レンズのセンタリング制御、或いは、防振レンズのリセット制御時に、所定時間制御を行ってもその処理が終了しなかった場合に異常と判断する。この異常をタイムアップ異常と言うことにする。
その第2の異常検出方法は、防振レンズのセンタリング制御時に於いて、防振レンズ速度VRの最大値VRmaxを検出し、VRmaxが所定値以上でなかった場合には防振レンズ13の動きが悪い、或いは、メカの破損により全く動かないとして異常と判断する。この異常を防振レンズ動き具合異常と言うことにする。
その第3の異常検出方法は、防振レンズのセンタリング制御時に於いて、防振レンズ速度VRの最小値VRminを検出し、VRminが所定値以上でなかった場合には防振レンズ位置検出回路3の検出に不具合があるとして異常と判断する。この異常を防振レンズ位置検出異常と言うことにする。つけ加えて言うならば、防振レンズ13は中央位置LSの方向を正とした場合に、センタリング制御時は正の方法に駆動しているのだから防振レンズ速度VRは負の値は有り得ない。但し、センタリング制御開始時、或いは、センタリング制御終了直前には、たまに負の速度が検出される場合がある為、そこの間ではこの異常の検出を止める様にしていると同時に、前記のVRminが所定値以上でないかの判定に用いた所定値は防振レンズ位置検出回路3が異常でない限り検出されない値に設定する。
8.CPU1の処理内容
次に図10から図20のフローチャートに示した処理は本実施例の動作を示したもので、CPU1に内蔵しているプログラムのうち、本実施例に関わる部分のみを示したものである。
(1)半押し処理
CPU1に接続された半押しSW15がオンすると、図10で示されるフローに従ってCPU1の処理が開始される。まず、S1000から処理が開始され、S1001で防振制御における係数K2、K3、K3_th、K4、K5、Doffset、K10、Kbc、Kmax、Kave、Kave’、K11、K11’、K12、K12’、K13、及び、K13’がE2PROMから読み込まれて各係数に書き込まれる。これらの制御における各係数をE2PROMに設定し、後に変更するのが容易にしている。これらの制御係数は、防振レンズシフト系メカ、或いは、モータ4の特性により最良な値に設定値すべきもので、この特性が何らかの要因で変化した場合にはそれに見合った設定にしないと制御精度が保てない。例えば、本実施例をもとにつくられた製品において、このメカ特性のばらつき、或いは、モータ4の特性ばらつきを個々の製品ごとに調整する様な場合に、E2PROMの各設定値を変更することだけで可能となる。或いは、本実施例をもとに製作された製品が量産後、防振レンズシフト系メカ、或いは、モータ4が変更になった場合、にもこのことが言える。
次に、S1002においてバッテリーチェック回路6によりBC電圧を検出し、S1003で式(数18)、或いは、式(数19)によりBC防振制御係数K1を算出する。次に、S1004で測距回路7により測距処理(AF処理)を行い、S1005で角速度ゲイン調節値をE2PROMより読み込みそれをG0とし、S1006では、S1004で得られた被写体距離とS1005で得られたG0と、ズーム位置検出回路8で現在の撮影光学系の焦点距離を検出し、これらから式(数1)、ないし、式(数2)により角速度検出回路出力−防振レンズ目標速度変換係数A0を算出し、S1007へ進む。S1007では全押しSW16がオンかの判定を行い、オンであったらS1010へ、オフであったらS1008へ進み、S1008で半押しSW15がオンかの判定を行い、オンであったらS1007へ戻り、オフであったらS1009で本処理を終了する。
S1010では防振レンズのセンタ位置LSの調整値をE2PROMから読み込み、センタ位置LSへ入れS1011へ進む。防振レンズシフト系メカ精度や、防振レンズ13の取り付け精度の関連で必ずしも既定の位置が撮影解像力の最良の位置とは言えない場合が多い。そこで、個々の製品でE2PROMに調整値を書き込むことで撮影解像力の最良ポイントに防振レンズ13を駆動する為のものである。次に、S1011では、防振レンズのセンタリング駆動を行う時の駆動dutyのリミット値を設定し、S1012へ進む。S1011では式(数26)、或いは、式(数27)、或いは、式(数28)により駆動dutyのリミット設定値を算出している。S1012では後述する図13で示される防振レンズ13のセンタリング処理を行い、防振レンズ13をS1010で設定されたセンタ位置LSへ駆動する。
S1013では後述する図15で示される防振制御開始処理を行い、防振レンズ13を角速度検出回路5で検出した出力に応じてシフトし、像面での手振れによる像面シフトを打ち消す様に動作させる。S1014ではS1015で行われる露光処理における露光タイミング時に、既に、S1013で防振制御が開始されて前記助走制御が終了し、防振制御が安定している様にする為に必要な所定時間をウエイトし、S1015へ進む。S1015ではシャッタ回路9を動作させ、露光処理を行う。S1015で露光処理が完結すると、S1016でS1014で開始した防振制御を終了し、所定時間モータ4をショートブレーキ状態にして防振レンズ13を停止する。S1017では、防振レンズのリセット制御に於ける駆動dutyのリミット値をBC電圧を基に式(数26)、式(数27)、式(数28)のいずれかで算出し、或いは、センタリング制御時のリミット速度VC_Cを図8のVC_C2で示された様に防振レンズ速度にリミットがかからない様な設定にした場合には、VRmaxを基に式(数29)、式(数30)、式(数31)のいずれかで、センタリング制御時のリミット速度VC_Cを図8のVC_C1で示された様に防振レンズ速度にリミットがかかる様な設定にした場合には、Daveを基に式(数32)、式(数33)、式(数34)のいずれかで算出し、算出された駆動dutyのリミット値によりS1018では後述する図14で示される防振レンズリセット処理により防振レンズ13をリセット位置へと駆動し、S1019で本実施例の処理を終了する。
次に、半押し処理の別の実施例を図11を用いて説明する。図10とはある部分を除いて同様の処理を行っているので、ここでは図11で図10との相違部分のみを説明する。
まず第1の違いは、S1113でその直前S1112で行われた防振レンズのセンタリング制御時に異常を検出した場合、つまり、タイムアップ異常、動き具合異常、防振レンズ位置検出異常の1つでも異常があった場合には、S1115へ進み何も行わないが、それ以外、つまり、防振レンズのセンタリング制御時に全く異常なく処理が行われた場合にはS1114でセンタリング制御時のリミット速度VC_Cを図8のVC_C2で示された様に防振レンズ速度にリミットがかからない様な設定にした場合には、VRmaxを基に式(数21)、ないし、式(数22)で、センタリング制御時のリミット速度VC_Cを図8のVC_C1で示された様に防振レンズ速度にリミットがかかる様な設定にした場合には、Daveを基に式(数23)、式(数24)、式(数25)のいずれかで防振制御係数K1を再算出している。
これは、BC電圧でK1を算出する場合には電池の残留容量、若しくは電源供給能力の変動だけしかK1の算出に考慮されていなかったが、防振レンズのセンタリング制御時に求められたVRmax、或いは、Daveを用いれば防振レンズシフト系メカ等の変動要因も考慮にいれて算出される為、より精度の良いK1の算出が可能で、それによってS1115から開始される防振制御処理においても精度の良い制御が可能となる。また、防振レンズのセンタリング制御時に異常を検出した場合には、VRmax、或いは、Daveは正確な値に設定されてない可能性があり、VRmax、或いは、Daveに基づいてK1を算出しないほうが良い為、この場合にはK1の再算出は行わないようにしている。
第2の違いは、防振レンズのリセット制御を行う直前のS1119の防振レンズのリセット制御の駆動dutyリミット値の設定方法が異なる。S1119でコールされる図12で示される処理でこの処理を説明すると、S1200からその処理が開始され、S1201で防振レンズのセンタリング制御時に異常が検出されたかを判断し、異常が検出されなかった場合にはS1202でセンタリング制御時のリミット速度VC_Cを図8のVC_C2で示された様に防振レンズ速度にリミットがかからない様な設定にした場合には、VRmaxを基に式(数29)、式(数30)、式(数31)のいずれかで、センタリング制御時のリミット速度VC_Cを図8のVC_C1で示された様に防振レンズ速度にリミットがかかる様な設定にした場合には、Daveを基に式(数32)、式(数33)、式(数34)のいずれかで駆動dutyのリミット値を算出している。
逆に、異常が検出された場合にはS1203でBC電圧を用いて式(数26)、若しくは、式(数27)、或いは、予め定められた所定値により駆動dutyのリミット値を決定している。また、防振レンズのセンタリング制御時に異常を検出した場合には、VRmax、或いは、Daveは正確な値に設定されてない可能性があり、VRmax、或いは、Daveに基づいて駆動リミットdutyを算出しないほうが良い為、この場合にはBC電圧、或いは、予め定められた所定値により駆動リミットdutyを決定している。
(2)防振制御
図15で示される防振制御開始処理は、図10のS1013で、或いは、図11のS1115でコールされる処理で防振レンズ13を角速度検出回路5の出力に応じて動作させ像面での手振れを抑える防振制御を開始する処理である。本処理はS1500から開始され、まず、S1501で防振レンズセンタリングタイムアップ異常FLGがセットされているかを判定し、セットされていたらS1508で本処理を終了し、セットされていない場合にはS1502へ進む。S1502では防振レンズ動き具合異常FLGがセットされているかを判定し、セットされていたらS1508で本処理を終了し、セットされていない場合にはS1503へ進む。S1503では防振レンズ位置検出異常FLGがセットされているかを判定し、セットされていたらS1508で本処理を終了し、セットされていない場合にはS1504へ進む。
次に、S1504では、防振レンズの駆動dutyのリミット値を所定値に設定し、S1505で防振制御助走タイマを設定し、S1506でΔSをクリア、S1507で後述する防振制御タイマ割込み処理を許可することで防振制御を開始し、S1507で本処理を終了する。尚、S1501、S1502、S1503で本処理が開始される前に行われた後述する防振レンズのセンタリング駆動制御時に何らかの異常を検出したかの判定を行い、異常であった場合にはS1508へ進み本処理を終了し、防振制御を開始しない様に、つまり、防振制御を行わない様にしている。
次に、図16で示された防振制御タイマ割込み処理を説明する。本防振制御タイマ割込み処理は所定間隔、例えば1ms間隔でその処理が開始されるタイマ割込み処理である。S1600から処理を開始し、S1601でLR’に前回の防振制御タイマ割込み処理で設定されている防振レンズ位置LRを入れ、S1602でレンズ位置検出回路3により検出された現在の防振レンズ位置をLRに入れる。次に、S1603で式(数35)により、今回の防振レンズ位置LRから前回の防振レンズ位置LR’を引き算することで防振レンズ速度VRを算出する。
次に、S1604で角速度検出回路5の出力をA/D変化し、S1605では式(数1)ないし式(数2)を用いて算出されている角速度検出回路出力−防振レンズ目標速度変換係数算出A0とS1604で求めたA/D変換値とから防振レンズ目標速度VCを算出しS1606へ進む。S1606では、図15のS1505で設定された防振制御助走タイマがタイムアップしたかを判定し、タイムアップしていなければS1608で防振レンズ速度誤差量積算値ΔLをクリアし、S1609へ進み、タイムアップしていればS1607で式(数13)により防振レンズ速度誤差ΔVを積算しΔLを求め、S1609へ進む。S1609では図20で示される駆動duty算出処理を行い、駆動dutyを算出し、S1610へ進む。
図20で示される駆動duty算出処理は式(数4)の算出方法をフローで詳しく説明したものであり、詳細は後述する。S1610では駆動dutyの絶対値が設定されている駆動dutyのリミット値より大きいかの判定を行い、大きかったらS1611で駆動dutyをそのリミット値に設定しS1612へ進む。ここで、駆動dutyは正の値である場合と、負の場合があるがS1611では正の場合は、駆動dutyに正のリミット値を、負の場合には設定されているリミット値の絶対値を変えないで符号を負にした値を駆動dutyに設定する意味である。S1610で逆に大きくなかったらS1612へ進む。S1612は設定されている駆動dutyでモータ4を駆動し、S1613でその処理を終了する。
次に、防振制御タイマ割込み処理の別の例を図19を用いて説明する。本防振制御タイマ割込み処理は図16で示された処理と以下の1部分のみ異なる為、ここではその相違点のみ説明することにする。S1905の防振レンズ目標速度VCを算出するまでは図16と同一の処理が行われ、S1906で図15のS1505で設定された防振制御助走タイマがタイムアップしたかを判定し、タイムアップしていなければS1908で防振レンズ目標位置LCを現在の防振レンズ位置LRに設定し、S1909へ進み、タイムアップしていればS1907で式(数11)により防振レンズ目標速度VCを積算する、つまり、今までの防振レンズ目標位置LCに防振レンズ目標速度VCを加算することで現在の防振レンズ目標位置LCを求め、S1609へ進む。S1609では式(数12)により防振レンズ目標速度LCから防振レンズ位置LRを減算することで位置誤差ΔLを算出し、S1910へ進む。S1910の駆動duty算出処理以降の処理については図16と同一である為、説明を省略する。
次に、図20で示される駆動duty算出処理の説明をする。本駆動duty算出処理は、式(数4)の計算方法を示したフローで、その処理はS2000から始まる。S2001では式(数4)の第1項を算出する処理で防振レンズ目標速度VCにK1をかけてD1とし、S2002へ進む。S2002では式(数4)の第2項を算出する処理で防振レンズ目標速度VCから防振レンズ速度VRを減算した速度誤差ΔVにK2をかけてD2とし、S2003へ進む。S2003、S2004、S2005、S2006では式(数4)の第3項を算出する処理である。まずS2003に於いて防振レンズ目標速度VCと防振レンズ速度VRの差の絶対値をとり、その絶対値がK3_th以上かの判定を行い、以上であったらS2004で式(数8)により速度誤差ΔV(つまりVC−VRに相当する)を今までの速度誤差積算値ΔSに加えてそれをΔSとし、逆に以上でなかった場合にはS2005で式(数9)によりΔSをクリアし、それぞれS2006に進み、S2006で算出されたΔSにK3をかけてD3とし、S2007へ進む。
S2007では式(数4)の第4項を算出する処理で式(数10)により現在の防振レンズ目標速度VCから前回の防振レンズ速度VC’を減算することで、防振制御タイマ割込み処理は所定時間間隔で処理が行われているわけだから、所定時間中の防振レンズ目標速度の変化量を求め、求めた値にK4をかけてD4とし、S2008へ進む。S2008では式(数4)の第5項を算出する処理でΔLにK5をかけてD5とし、S2009へ進む。S2009では求められたD1、D2、D3、D4、D5を全て足し合わせ、つまり、式(数4)の第1項から第5項までの和をとり、それをDとし、S2010へ進む。S2010、S2011、S2012の処理は式(数4)の第6項を第1項から第5項までの和Dが正であった場合には加算し、負であった場合には減算する処理で、まずS2010でDが0以上であるかの判定を行い、0以上であったらS2011でDにDoffsetを加算して駆動dutyとし、S2013で本処理を終了し、0以上でなかったらS2012でDにDoffsetを減算して駆動dutyとし、S2013で本処理を終了する。
(3)防振レンズのセンタリング
図13で示される防振レンズセンタリング処理は、図10のS1012で、或いは、図11のS1112でコールされる処理で防振レンズ13を中央位置LSに駆動する処理である。本処理はS1300から開始され、まず、S1301で防振レンズ停止FLGのクリアと、前記説明した異常が検出された場合にセットされるFLG(防振レンズセンタリングタイムアップ異常FLG、防振レンズ動き具合異常FLG、防振レンズ位置検出異常FLG)をクリアし、S1302で防振レンズセンタリング処理中断タイムアップ時間を設定する。ここで、この設定時間は、センタリング制御を開始してから、何らかの異常がない限りは必ず設定された時間で確実に中央位置に防振レンズ13が駆動される様な時間設定とする。S1303ではΔSをクリアし、次に、S1304で図18で示される防振レンズセンタリングタイマ割込み処理を許可することで防振レンズセンタリング制御を開始する。防振レンズセンタリングタイマ割込み処理は後述する。
次にS1305で所定時間ウエイトし、S1306で防振レンズのmax速度VRmax、min速度VRminをクリアする。S1305での所定時間ウエイトした意味をここで述べると、レンズ位置検出回路3に例えば防振レンズ13の位置の変化をインタラプタ信号パルスのカウント数で検出する様な構成にしたものが一般的によく用いられる。こうした場合に、インタラプタ信号が離散的な信号である為に、所定時間中に入るパルス数により防振レンズ速度VRを検出する、或いは、インタラプタ信号の周期の逆数により防振レンズ速度VRを検出する場合には、防振レンズのセンタリング制御を開始した初期において、防振レンズ速度VRは正確な値が検出できないばかりでなく、有り得ない程大きな値が検出される場合がある。そこで、この様なインタラプタを使用した場合でも、センタリング制御開始され所定時間ウエイトして、正確な防振レンズ速度が算出される様になってからVRmax、VRminをクリアしている。尚、このS1305でのウエイト時間は通常5msから10数ms程度に設定されることが多い。また、VRmax、VRminはそれぞれ防振レンズ速度VRの最大値、最小値で検出は後述する図18で示される防振レンズセンタリングタイマ割込み処理で行われている。
次に、S1307では所定時間ウエイトし、S1308で駆動duty積算値INTEG_DUTYと駆動duty積算回数INTEG_CNTをクリアする。この駆動duty積算値、及び、駆動duty積算回数は駆動duty平均値Daveを算出する為のもので、S1308のタイミングは図9のB7のタイミングになる様にS1307のウエイト時間を設定する。S1308のタイミング、つまり、図9のB7のポイントから、後述する防振レンズセンタリングタイマ割込み処理のなかで所定時間ごとに駆動dutyが積算され、その値が駆動duty積算値INTEG_DUTYに入れられると共に、その積算回数が駆動duty積算回数INTEG_CNTに入れられる。
次に、S1308の処理が終了するとS1309でS1302で設定されている防振レンズセンタリング処理中断タイマがタイムアップしたか、つまり、防振レンズのセンタリング制御を開始してから所定の時間が経過しているかを判定し、タイムアップしていればS1310でタイムアップ異常として防振レンズセンタリングタイムアップ異常FLGをセットし、S1316へ進む。逆にタイムアップしていなければ、S1311でVRmaxが所定値以下であるかの判定を行い、以下であった場合には、S1312で防振レンズ13の動き具合が異常であるとして防振レンズ動き具合異常FLGをセットし、S1316へ進む。このS1311の処理は、防振レンズ13の動きが悪い場合に防振レンズ速度の最大値VRmaxが小さい値になることを利用している。S1311の判定に使用したVRmaxを、防振レンズ速度VRが所定値以下かの判定で行ってもかまわない。逆に所定値以下でなかった場合にはS1313でVRminが所定値以下であるかの判定を行い、以下であった場合には、S1314でレンズ位置の検出が異常であるとして防振レンズ位置検出異常FLGをセットし、S1316へ進む。
このS1313の処理は、レンズ位置検出回路3の出力に異常があった場合に、レンズ位置検出回路3の出力によって検出された防振レンズ速度VRが異常値で、しかも、有り得ない小さな値、例えば負の符号を持った値として算出された場合に、防振レンズセンタリングタイマ割込みのなかで検出されたときにはこの異常値がVRminに設定されることを利用している。S1313の判定に使用したVRminを、防振レンズ速度VRが所定値以下かの判定で行ってもかまわない。逆に所定値以下でなかった場合にはS1315で防振レンズの停止を行うかを、防振レンズセンタリングタイマ割込み処理のなかで設定される防振レンズ位置LRが中央位置LSの所定値Lstop前に到達した場合(図8のB3のポイントに相当する)にセットされる防振レンズ停止FLGをみて行う。S1315で防振レンズ停止FLGがセットされてしない場合にはS1309へ戻り、防振レンズ停止FLGがセットされるまで以上の処理を繰り返す。防振レンズ停止FLGがセットされている場合はS1316へ進む。
S1316では防振レンズセンタリングタイマ割込み処理を禁止し、モータ4を所定時間ショートブレーキ状態にした防振レンズ13を確実に停止させ、
後述する防振レンズセンタリングタイマ割込み処理のなかで設定された駆動duty積算値INTEG_DUTYと、駆動duty積算回数INTEG_CNTとから式(数36)を用いて図9のB7からB6の間の平均駆動dutyDaveを算出し、S1318へ進む。
S1318で本防振レンズセンタリング処理を終了する。
次に、図18で示された防振レンズセンタリングタイマ割込み処理を説明する。本防振レンズセンタリングタイマ割込み処理は所定間隔、例えば1ms間隔でその処理が開始されるタイマ割込み処理である。S1800から処理を開始し、S1801でLR’に前回の防振レンズセンタリング割込み処理で設定されている防振レンズ位置LRを入れ、S1802でレンズ位置検出回路3により検出された現在の防振レンズ位置をLRに入れる。次に、S1803で式(数35)により、今回の防振レンズ位置LRから前回の防振レンズ位置LR’を引き算することで防振レンズ速度VRを算出する。これは、所定間隔、例えば1ms間隔で本処理が行われている為、前回と今回の防振レンズの位置の差から所定時間にどれだけ防振レンズ13が移動したかを検出することで防振レンズ速度VRを算出している。
次に、S1804では防振レンズ速度VRがVRmaxより大きいかを判定し、大きい場合にはS1805でVRmaxにVRを入れ、S1806に進み、逆に、大きくなかったらS1806へ進む。S1806では防振レンズ速度VRがVRminより小さかったらS1807でVRminにVRを入れ、S1808へ進み、小さくなかったらS1808へ進む。このS1804、S1805、S1806、S1807の処理により、防振レンズ速度VRの最大値、最小値が算出される。次に、S1808では防振レンズ位置LRが中央位置LSの所定量Lstop前(図8のB3のポイントに相当する)に駆動されたかをLR+LstopがLS以上になったかで判定し、その位置に駆動されたと判断したらS1809で防振レンズ停止FLGをセットし、S1810へ進み、逆にまだその位置に駆動されていないと判断した場合にはS1810へ進む。
S1810では防振レンズ目標速度VCを式(数14)を用いて算出し、S1811でVCが防振レンズ目標速度のリミット値VC_Cより大きいかの判定を行い、大きい場合にはS1813でVCにVC_Cを設定し、S1814で式(数15)、もしくは、式(数15)から第3項、ないし、第4項を削除した制御式で駆動dutyを算出し、S1815で駆動dutyをINTEG_DUTYに加算することで、駆動dutyの積算を行い、S1816で駆動dutyの積算回数INTEG_CNTを1インクリメントし、S1817へ進む。逆に、S1811で大きくなかったらS1812で式(数15)、もしくは、式(数15)から第3項、ないし、第4項を削除した制御式で駆動dutyを算出し、S1817へ進む。
以上S1811からS1817の前までの処理により、防振レンズ目標速度VCにリミットを設定される。また、このリミットがかかっている状態は図9の防振レンズのセンタリング制御開始からB6までの領域であって、かつ、図13の説明でも述べたが図9のB7のポイントでINTEG_DUTY、及び、INTEG_CNTの値がクリアされるので、B7からB6の間の駆動dutyの積算値と、その積算回数を求めることができる。次に、S1817では駆動dutyの絶対値が設定されている駆動dutyのリミット値より大きいかの判定を行い、大きかったらS1818で駆動dutyをそのリミット値に設定するしS1819へ進む。ここで、駆動dutyは正の値である場合と、負の場合があるが、S1818では正の場合は、駆動dutyに正のリミット値を、負の場合には設定されているリミット値の絶対値を変えないで符号を負にした値を駆動dutyに設定する意味である。S1817で逆に大きくなかったらS1819へ進む。S1819では設定されている駆動dutyでモータ4を駆動し、S1820でその処理を終了する。
次に、図18のS1812、及び、S1814の駆動duty算出の方法について図21を用いて説明する。図21は式(数4)の第5項を削除した制御式、つまり、式(数15)についてその算出の様子を示したフローで、その処理はS2100から始まる。S2101では式(数15)の第1項を算出する処理で防振レンズ目標速度VCにK1をかけてD1とし、S2102へ進む。S2102では式(数15)の第2項を算出する処理で防振レンズ目標速度VCから防振レンズ速度VRを減算した速度誤差ΔVにK2をかけてD2とし、S2103へ進む。
S2103、S2104、S2105、S2106では式(数15)の第3項を算出する処理である。まずS2103に於いて防振レンズ目標速度VCと防振レンズ速度VRの差の絶対値をとり、その絶対値がK3_th以上かの判定を行い、以上であったらS2104で式(数8)により速度誤差ΔV(つまりVC−VRに相当する)を今までの速度誤差積算値ΔSに加えてそれをΔSとし、逆に以上でなかった場合にはS2105で式(数9)によりΔSをクリアし、それぞれS2106に進み、S2106で算出されたΔSにK3をかけてD3とし、S2107へ進む。
S2107では式(数15)の第4項を算出する処理で式(数10)により現在の防振レンズ目標速度VCから前回の防振レンズ速度VC’を減算することで、防振レンズセンタリングタイマ割込み処理は所定時間間隔で処理が行われているわけだから、所定時間中の防振レンズ目標速度の変化量を求め、求めた値にK4をかけてD4とし、S2108へ進む。S2108では求められたD1、D2、D3、D4を全て足し合わせ、つまり、式(数15)の第1項から第4項までの和をとり、それをDとし、S2109へ進む。S2109、S2110、S2111の処理は式(数15)の第5項を第1項から第4項までの和Dが正であった場合には加算し、負であった場合には減算する処理で、まずS2109でDが0以上であるかの判定を行い、0以上であったらS2110でDにDoffsetを加算して駆動dutyとし、S2112で本処理を終了し、0以上でなかったらS2111でDにDoffsetを減算して駆動dutyとし、S2112で本処理を終了する。
また、図18のS1812、及び、S1814の駆動duty算出で用いる制御式を式(数15)の第3項、ないし、第4項を削除した式を用いる場合には、その項に該当するステップを削除すれば良い。
(4)防振レンズのリセット
図14で示される防振レンズリセット処理は、図10のS1018で、或いは、図11のS1120でコールされる処理で防振レンズ13をリセット位置に駆動する処理である。本処理はS1400から開始され、まず、S1401で防振レンズリセットタイムアップ異常FLGをクリアし、S1402で防振レンズリセット処理中断タイムアップ時間を設定する。ここで、この設定時間は、リセット制御を開始してから、何らかの異常がない限りは必ず設定された時間でリセット位置に防振レンズ13が駆動される様な時間設定とする。S1403でΔSをクリアし、次に、S1404で図17で示される防振レンズリセットタイマ割込み処理を許可することで防振レンズリセット制御を開始する。防振レンズリセットタイマ割込み処理は後述する。
次にS1305で所定時間ウエイトし、S1406でS1402で設定されている防振レンズリセット処理中断タイマがタイムアップしたか、つまり、防振レンズのリセット制御を開始してから所定の時間が経過しているかを判定し、タイムアップしていればS1407でタイムアップ異常として防振レンズリセットタイムアップ異常FLGをセットし、S1409へ進む。逆にタイムアップしていなければ、S1408で防振レンズ速度VRが所定値以下になったかを判定し、所定値以下にならない場合にはS1406へ戻り、逆に、所定値以下になった場合には、防振レンズ13がリセット位置に駆動された為に防振レンズ速度が小さい値になったと判断し、S1409へ進む。S1409では防振レンズリセットタイマ割込み処理を禁止し、モータ4を所定時間ショートブレーキ状態にして防振レンズ13を確実に停止させ、S1410でレンズ位置検出回路3をリセットして防振レンズ位置の出力値をクリアし、S1411で処理を終了する。
次に、図17で示された防振レンズリセットタイマ割込み処理を説明する。本防振レンズリセットタイマ割込み処理は所定間隔、例えば1ms間隔でその処理が開始されるタイマ割込み処理である。S1700から処理を開始し、S1701でLR’に前回の防振レンズリセットタイマ割込み処理で設定されている防振レンズ位置LRを入れ、S1702でレンズ位置検出回路3により検出された現在の防振レンズ位置をLRに入れる。次に、S1703で式(数35)により、今回の防振レンズ位置LRから前回の防振レンズ位置LR’を引き算することで防振レンズ速度VRを算出する。
次に、S1704では防振レンズ目標速度VCを式(数17)を用いて算出し、S1705で式(数15)、もしくは、式(数15)から第3項、ないし、第4項を削除した制御式で駆動dutyを算出し、S1706では駆動dutyの絶対値が設定されている駆動dutyのリミット値より大きいかの判定を行い、大きかったらS1707で駆動dutyをそのリミット値に設定しS1708へ進む。ここで、駆動dutyは正の値である場合と、負の場合があるがS1707では正の場合は、駆動dutyに正のリミット値を、負の場合には設定されているリミット値の絶対値を変えないで符号を負にした値を駆動dutyに設定する意味である。S1706で逆に大きくなかったらS1708へ進む。S1708では設定されている駆動dutyでモータ4を駆動し、S1709でその処理を終了する。
また、図17のS1705の駆動duty算出で用いる制御式を式(数15)を用いる場合には、前記防振レンズのセンタリングで説明した図21を用いて、制御式を式(数15)の第3項、ないし、第4項を削除した式を用いる場合には、図21のその削除した項に該当するステップを削除すれば良い。
以上、本実施例では防振レンズ13をモータ4を駆動するdutyを変化させて制御するPWM制御で説明したが、これをモータ4の駆動電圧を変化させることで制御する電圧制御にも本発明は置き換えることができる。その場合、駆動dutyを駆動電圧に置き換えた制御に相当する。つまり、D/A変換機能を有したマイクロコンピュータ等により駆動dutyの値に相当する電圧を発生させ、モータ駆動回路2はその電圧に比例した電圧でモータ4を駆動するように構成すればよい。また、本実施例では撮影光学系の光軸を変化させる方法として撮影光学系の一部をシフトする方式で説明したが、これ以外にもバリアングルプリズム等を使用してもかまわないし、また、モータの代わりにボイスコイル等の他のアクチュエータを使用することも可能である。