以下、本発明の実施の形態を、図面を参照して説明する。図1は、本発明の第1実施形態であるセンサ出力の温度補正装置が搭載されたカメラの構成を示すブロック図である。なお、本図においては、発明に係る構成のみが模式的に図示される。
本実施形態においてカメラ10は、例えばカメラ本体11に鏡筒12を着脱可能なデジタル一眼レフカメラである。また本実施形態では、鏡筒12内に手ブレ補正機構13が設けられる。すなわち、ブレ補正用の補正レンズ14を備えた手ブレ補正機構13は、撮像レンズ15A、15Bの間に配置される。撮像レンズ15Aから入射した光は、光軸Lに沿って補正レンズ14、撮像レンズ15Bを介してカメラ本体11内の撮像素子16へと導かれ結像する。
カメラ本体11および鏡筒12内にはそれぞれカメラCPU17、レンズCPU18が設けられる。カメラCPU17には、メインスイッチ19、測光スイッチ20、レリーズスイッチ21が接続されており、電源ラインおよびグランドとともに、レンズマウント(図示せず)の複数の電極を通して、レンズCPU18に接続される。なお、カメラCPU17は、カメラ全体の様々な制御を行うもので、この他にも様々なデバイスに接続されている。
鏡筒12には、手ブレ補正制御のオン/オフを設定する手ブレ補正スイッチ22が設けられ、レンズCPU18に接続される。また、鏡筒12内に、光軸Lに垂直なカメラの縦軸、横軸に沿ったY、X軸周りの回転角速度を検出する角速度センサ23X、23Yが設けられ、各角速度センサ23X、23Yで検出された信号は、レンズCPU18へ入力される。手ブレ補正制御がオンのとき、レンズCPU18は角速度センサ23X、23Yで検出された各軸周りの角速度、および焦点距離などのレンズ情報に基づき、手ブレを相殺するために補正レンズ14が移動すべきX、Y軸方向の目標位置を算出する。
補正レンズ14は、例えば補正レンズ14を保持する可動部に設けられるコイル(図示せず)と鏡筒12に固定された固定部に設けられるヨークとの間の電磁相互作用により駆動され、コイルへの電流供給はX方向駆動制御部24XおよびY方向駆動制御部24Yによって制御される。補正レンズ14を保持する可動部には、例えばホール素子などを用いた位置センサ25X、25Yが設けられ、補正レンズ14の位置が検出され、レンズCPU18へとフィードバックされる。すなわち、レンズCPU18は、角速度センサ23X、23Yの信号に基づき算出された補正レンズ14の目標位置と位置センサ25X、25Yから得られた現補正レンズ14の位置とからコイルへの電流供給量を算出し、X方向駆動制御部24XおよびY方向駆動制御部24Yへと出力する。
手ブレ補正機構13には、後述するメカニカルなロック機構26が併設されるとともに、ロック状態を検出するためのロック検知センサ26Sが設けられる。ロック機構26は補正レンズ14の中心を光軸L上に維持するための機構である。ロック機構26は、ロックモータ44により駆動され、ロックモータ44は、レンズCPU18からの指令に基づきロック環制御部27によって制御される。また現ロック状態はロック検知センサ26Sによりその状態がレンズCPU18に通知される。
また、鏡筒12には温度センサ50が設けられ、温度センサ50の検出信号はレンズCPU18に入力され、後述するように、例えばレンズCPU18に設けられたフラッシュメモリなどの不揮発性メモリ51(図6参照)に、角速度センサ23X、23Yからの角速度信号(ジャイロ出力)とともに記録可能である。またレンズCPU18の通信ポートと、カメラCPU17の通信ポートは、レンズマウントの電極を通して接続され、両者の間では後述するようにデータ通信が行われる。
図2(a)〜図2(c)は、本実施形態の手ブレ補正機構13の外観図であり、図2(a)が正面斜視図、図2(b)がロック解除時の正面図、図2(c)がロック時の正面図である。
図示されるように、補正レンズ14は円環フレームを備える可動部28によってその略中央に保持される。可動部28の円環フレームの外周部には、径方向外側に延出する例えば4つの突起28Pが外周に沿って略等間隔で設けられる。可動部28の円環フレームの周囲には、それを取り囲むように環状のロック環30が配置され、ロック環30と円環フレームの間には環状クリアランス29が設けられる。
ロック環30の内径は、可動部28の各突起28Pが公差を除きロック環30の内周に当接する寸法であり、その内周縁には、突起28Pに対応する数の凹部30Pが内周に沿って略等間隔で形成される。後述するように、凹部30Pは、突起28Pと協働して手ブレ補正における補正レンズ14の可動範囲を規定する。
ロック環30は、概ね円筒外観を呈するケーシング31内に収容され、ケーシング(固定部)31内において光軸周りに回動可能である。ロック環30の回動は、例えばロック環30の外周部に設けられたラック・アンド・ピニオン機構により行われる。すなわちロック環30の外周部にはラック部30Rが設けられるとともにケーシング31側に設けられたピニオン32に噛合され、ピニオン32は、ケーシング31内に固定されたステッピングモータなどのロックモータ44により駆動される。
またロック環30の外周部には、ロック環30の回動位置からロック状態を検知するための切り欠き30A、30Bが設けられ、ケーシング31には、切り欠き30A、30Bと協働するフォトインタラプタ(ロック検知センサ)26Sが設けられる。すなわち、ロック解除時には図2(b)に示されるように切り欠き30Aを通してフォトインタラプタ26Sにおいて光が検知され、ロック時には図2(c)に示されるように切り欠き30Bを通して光が検知される。
また、可動部28には、環状フレームから径方向外側に延出する平板部28Aが複数設けられ、可動部28を駆動するためのコイル等が搭載される。平板部28Aは、ケーシング31内において、その前後がベアリング(図示せず)を介して支持され、光軸方向への移動が規制される。
次に図2および図3を参照して、本実施形態における補正レンズ14の可動範囲について説明する。なお図3(a)、図3(b)は、ロック解除時およびロック時の補正レンズ14の可動範囲を模式的に示す図である。
図2(b)のロック解除時、ロック環30は、可動部28の各突起28Pが各々凹部30Pに位置するように配置される。このとき可動部28の動きは、突起28Pが凹部30Pの側壁に当接することで規制され、補正レンズ14の可動範囲は、図3(a)において網掛けされる矩形領域(ロック解除時可動範囲)33となる。一方、図2(c)のロック時には、ロック環30が図2(b)の位置から右回りに回動され、各突起28Pは、ロック環30の円弧状の内周面に当接される。これにより、可動部28の上下左右への運動は規制され、補正レンズ14の中心が光軸Lに一致するように固定される。
しかし、突起28Pとロック環30の円弧状内周面との間には公差が存在するため、ロック時においても、補正レンズ14は実際には図3(b)に示されるように、光軸Lを中心とする円形網掛け領域(ロック時可動範囲)34内において移動可能である。
図4〜図6を参照して、本実施形態の手ブレ補正処理についてより詳細に説明する。図4は、手ブレによるカメラの動きとX、Y軸の関係を模式的に示す斜視図であり、図5は、カメラ本体11、補正レンズ14、X、Y軸の関係を示す正面図である。
図4に示されるように、カメラでの撮影においては、垂直軸(Y軸)周りの回転(ヨー)より横方向(X軸方向)へ移動する像ブレが発生し、水平軸周りの回転(ピッチ)により縦方向(Y軸方向)へ移動する像ブレが発生する。したがって、Y軸周りの回転運動を検出することでX軸方向の像ブレを相殺するための補正レンズ14のX軸方向へのシフト量が決定し、X軸周りの回転運動を検出することでY軸方向の像ブレを相殺するための補正レンズ14のY軸方向へのシフト量が決定する。
図6は、レンズCPU18において実行される手ブレ補正制御のブロック図であり、補正処理は例えば所定時間(例えば1mS)間隔の割り込み処理として実行される。
角速度センサ23X、23Yの各ジャイロで得られたY軸周り、X軸周りのアナログ角速度信号(ジャイロ出力)は、レンズCPU18のA/Dポート(A/D1、A/D2)に入力され、A/D演算部33X、33Yにおいてデジタル信号(ジャイロ出力)Vx、Vyに変換される。Y軸、X軸周りの角速度信号Vx、Vyからは、後述するように、温度補正用のオフセット補正値Vrx、VryおよびVVx、VVyが差し引かれ、補正出力Vout_x、Vout_yとされる。補正出力Vout_x、Vout_yは、制御部39に入力されるとともに、角度演算部36X、36Yに入力される。角度演算部36X、36Yでは、補正出力Vout_x、Vout_yが積分され、Y軸、X軸周りの回転角度(ヨー角θX、ピッチ角θY)が算出される。レンズ駆動位置計算部37X、37Yでは、ヨー角、ピッチ角、およびメモリに保存された焦点距離fなどのレンズ情報38に基づいて、像ブレを相殺するためのX方向、Y方向における補正レンズ14の駆動位置が算出され、制御部39に入力される。
ポート4から入力される手ブレ補正スイッチ22がオン状態の時には、制御部39はレンズ駆動位置計算部37X、37Yにおいて算出されたX軸方向への駆動位置X、Y軸方向への駆動位置Yを補正レンズ14の目標位置とし、駆動位置X、駆動位置Yと補正レンズ14の現在位置X、現在位置Yの偏差を算出し、これらに対して例えばPID演算などの処理を自動制御演算部40X、40Yにおいて施す。自動制御演算部40X、40Yからの出力は、ポート1、ポート2を通してX方向駆動制御部24X、Y方向駆動制御部24Yへ出力され、手ブレ補正機構13に設けられたX方向コイル41X、Y方向コイル41Yへ供給される電流が制御される。
可動部28の位置、すなわち補正レンズ14の現在のX軸、Y軸方向の位置は、ホールセンサ(位置センサ)25X、25Yからの信号に基づきX方向駆動制御部24X、Y方向駆動制御部24Yにおいて算出され、現在のX位置信号、Y位置信号としてA/Dポート(A/D3、A/D4)を通してレンズCPU18に入力され、A/D演算部43X、43Yにおいてデジタル信号としての現在位置X、現在位置Yへ変換され、前述したようにフィードバックされる。これにより、手ブレ補正スイッチ22がオンされているときには、角速度センサ23X、23Yの出力に基づいて補正レンズ14の目標とする駆動位置が算出され、この目標値に基づき補正レンズ14がX軸、Y軸方向に駆動される。
なお、レンズCPU18は、手ブレ補正スイッチ22のオン/オフ状態に基づいて、ポート3に接続されたロック環制御部(ドライバ)27を通してロックモータ44を駆動しロック環30を回動させる。すなわち、その位置をロック解除位置(図2(b))とロック位置(図2(c))の間で切り替える。ロック環30がロック解除位置、ロック位置に達したかは、フォトインタラプタ(ロック検知センサ)26Sによって検出される。
また、フラッシュメモリ51には、レンズCPU18のA/Dポート5を介して入力される温度センサ50からの工程調整時(後述)の温度T0と、これに対応する工程調整時のオフセット補正値(第1補正値)Vrx、Vry、およびゲインGGx、GGy(後述)などのセンサの温度特性に係る情報が記録される。制御部39は、同データに基づき、現在の温度のオフセット補正値(第2補正値)VVx、VVyを算出する。
次に、図19を参照して、第1オフセット補正値Vrx、Vry、第2オフセット補正値VVx、VVyおよびゲインGGx、GGyを用いた本実施形態のセンサ出力の温度補正処理の原理について説明する。なお、温度補正処理は、ジャイロ23X、23Yからの出力各々に対して行われるが、両者は同一の方法で取り扱われる。したがって、図19の説明では、各ジャイロ23X、23Yとの対応を示す添え字x、yを除いたゲインGG、ジャイロ出力V、オフセット補正値Vr、VV、補正出力Vout等の変数を用いて説明する。
図19は、温度と線形近似を行った静止時のジャイロの出力との関係を示すグラフであり、横軸は温度、縦軸は静止時ジャイロ出力に対応する。ジャイロ出力を線形近似する場合、2点のデータが必要である。本実施形態では、出荷前に行われる工程調整(較正)時の温度T0における出力V0を1点目のデータとし、2点目のデータは、出荷後、カメラが静止状態にあることが検知されたとき(三脚検知時)に取得する。
出荷後2点目データが取得されるまでの間は、工程調整において取得される1点目の温度T0と、その時のジャイロ出力V0のみが、工程調整温度T0と第1補正値Vrとしてフラッシュメモリ51に記録されている。したがって、2点目データが取得されるまでの間、ジャイロ出力Vからは温度T0におけるオフセット値(第1補正値)Vrは差し引かれるだけであり、温度補正後においても温度がT0から離れるとオフセット誤差は増大する。
出荷後、例えば温度T1、出力V1が2点目のデータとして取得されると、直線L1が静止時ジャイロ出力の近似式として算出できる。このとき任意の温度Tに対応するジャイロ出力V(T)は、V(T)〜GG1・(T−T0)+Vr、GG1=(V1−V0)/(T1−T0)として表せ、以後の補正処理では、任意の温度Tに対して、V(t)−Vr〜VV(T)=GG1・(T−T0)と近似できる。これにより、任意の温度Tに対して補正出力Vout=V(T)−Vr−VV(T)は、静止状態において略0となり、ジャイロ出力のオフセットが除去される。
しかし、通常測定値には誤差があり、更にオフセット値も経時的に変化する可能性がある。したがって、本実施形態では、静止状態が検出されると、後述する一定の条件の下で再度2点目データの取り直しが行われ、ゲインGGが更新される。
例えば温度T2、ジャイロ出力V2が新たに2点目データとして取得されると、直線L2が静止時ジャイロ出力の近似式と考えられる。しかし温度T2、出力V2が2点目データとして検出されるときには、直線L1を用いた補正式でジャイロ出力が補正されているので、このときの第2補正値VV2=GG1・(T2−T0)となる。ここで直線L2のゲインGG2は、GG2=(Vout+VV2)/(T2−T0)となり、直線L2によるジャイロ出力V(T)の補正式は、V(T)〜GG2・(T−T0)+Vrとなる。そして第2補正値VV(T)は、以後、新しいゲインGG2を用いて、VV(T)=GG2・(T−T0)として求められる。
次に図1、図6、図7、図8を参照して、カメラCPU17およびレンズCPU18で実行されるメインフローについて説明する。図7、図8のフローは、カメラ本体11に設けられたメインスイッチ19がオンされると開始される。なお、ここでは鏡筒12がカメラ本体11に装着されていることを前提としている。
図7は、カメラCPU17側のフローチャートであり、ステップS100ではレリーズスイッチ21がオンされているか否かが判定される。レリーズスイッチ21がオンされている場合には、ステップS132においてレンズCPU18との通信を行い、後述する第2補正値のリセットを要求し、ステップS118へとジャンプする。
一方、ステップS100においてレリーズスイッチ21がオンされていないと判定された場合には、ステップS102において測光スイッチ20がオンされているか否か判定される。この処理は測光スイッチ20がオンされるまで繰り返され、測光スイッチ20がオンされたと判定されると、ステップS104において、レンズCPU18との通信を行い、第2補正値のリセットを要求するとともに、スルー画像の表示が行われることをレンズCPU18に通知する。
ステップS106〜S114では、スルー画像の撮影および表示が行われる。すなわち、ステップS106ではAE処理、ステップS108ではAF処理が行われ、ステップS110ではステップS108で設定されたフォーカス位置、ステップS106で決定された露出の下、撮像素子(CCD)16における電荷蓄積が開始される。そしてステップS112では撮像素子(CCD)16に蓄積された画素信号の例えばフィールド読出しが行われ、画像信号として出力される。ステップS114では、入力された画像信号がモニタ(図示せず)へ出力され、スルー画像として表示される。
次にステップS116では、レリーズスイッチ21がオンされているか否かが判定され、レリーズスイッチ21がオンされていない場合、処理はステップS130へジャンプする。一方、レリーズスイッチ21がオンされている場合には、ステップS118においてレンズCPU18との通信を行い、手ブレ補正処理の開始を要求するとともに、レリーズ処理を実行することをレンズCPU18に通知する。そしてステップS120〜S126において、静止画の撮影が実行される。すなわち、ステップS120ではステップS108で設定されたフォーカス位置およびステップS106で決定された露出の下で、撮像素子(CCD)16における電荷蓄積が開始される。そしてステップS122において撮像素子(CCD)16に蓄積された電荷の例えば全画素読出しが行われる。ステップS124では、出力された画像信号が不揮発性の映像メモリ(図示せず)に保存され、ステップS126においてその画像がモニタ(図示せず)に表示される。
ステップS128で、レンズCPU18との通信を行い、手ブレ補正処理の終了を要求し、ステップS130では、測光スイッチ20がオンされているか否かを判定する。測光スイッチ20がオンされていると判定されれば処理はステップS106へ戻り、オンされていないと判定されるとステップS102に戻り同様の処理が繰り返される。なお以上の処理はカメラ本体11のメインスイッチ19がオフされるまで、あるいはカメラがスリープモードへ移行するまで繰り返される。
図8は、レンズCPU18側のフローチャートである。ステップS200、S202ではステータスレジスタ(フラグ)、タイマカウンタ、オフセット補正値等の変数の初期化が行われる。すなわちステップS200では、第2補正値リセット要求フラグKVRES(1:リセット要求)、手ブレ補正フラグBRE(1:手ブレ補正駆動要求)、工程テストフラグTST(1:工程テスト中)が初期化され、ステップS202では、三脚検知要求フラグKV(1:三脚検知要求有り)、ロック状態フラグLOCK(1:ロック解除状態)、三脚検知フラグSAN(1:三脚検知有り)、三脚検知用タイムカウンタTim、第2補正値VVx、VVy(以下、両者をVVで表す)の初期化が行われる。すなわち、ステップS200では、KVRES=0、BRE=0、TST=0とされ、ステップS202では、KV=1、LOCK=0、SAN=0、Tim=0、VV(VVx、VVy)=0が設定される。
ステップS200、S202において、ステータスレジスタ(フラグ)、タイマカウンタ、オフセット補正値等の変数の初期化が終了すると、ステップS204において、カメラCPU17から通信要求があったか否かが判定され、この判定はカメラCPU17から通信要求があるまで繰り返される。レンズCPU18においてカメラCPU17から通信要求が検出されると、ステップS206、S208、S210、S212において、カメラCPU17からの通信が、第2補正値のリセット要求(S206)か、手ブレ補正開始の要求か(S208)、手ブレ補正終了の要求か(S210)、工程テストの要求か(S212)が順次判定される。
カメラCPU17からの通知が、第2補正値リセット要求である場合には、ステップS214において第2補正値リセット要求フラグKVRESが1に設定される。また、手ブレ補正開始の要求の場合には、ステップS216においてフラグBREが1に設定され、手ブレ補正終了の要求の場合には、ステップS218においてフラグBREが0に設定される。そして工程テストの要求の場合には、ステップS220において工程テストフラグTSTが1に設定される。ステップS206〜ステップS212の判定が全て終了すると、処理はステップS204に戻り、同処理はレンズCPU18の電源がオフされるまで繰り返される。
また、レンズCPU18では、1msの周期で図9のフローチャートに示されるタイマ割り込みが発生する。以下図2、図6、図9を参照して、本実施形態の1msタイマ割り込み処理について説明する。
1msタイマ割り込み処理では、ステップS300、S302、S304、S306、ステップS308において、第2補正値リセット要求フラグKVRES=1か否か(第2補正値(VV)のリセットが要求されているか)、三脚検知要求フラグKV=1であるか否か(カメラが静止状態にあるか否かを検知する三脚検知処理が要求されているか)、手ブレ補正フラグBRE=1であるか否か(手ブレ補正の駆動が要求されているか)、手ブレ補正フラグBRE=0であるか否か(手ブレ補正の停止が要求されているか)、工程テストフラグTST=1であるか否か(工程テストが要求されているか)が順次判定される。ステップS300〜ステップS306の各ステップにおける判定がNoのときには、次のステップの判定が行われ、ステップS300〜ステップS308の全ての判定が終了すると、本タイマ割り込み処理は終了する。一方、ステップS300〜ステップS308の各ステップにおける判定がYesのときには、以下に説明する各フラグに対応する処理が実行された後、ステップS300〜ステップS308の中の次のステップにおけるフラグ判定が行われる。
ステップS300において、第2補正値リセット要求フラグKVRES=1であるときには(第2補正値(VV)のリセットが要求されている場合)、ステップS310において、後述する第2補正値VVのリセット処理が行われる。そして、ステップS312において第2補正値リセット要求フラグKVRESが0に設定され、ステップS302の判定が実行される。
ステップS302において、三脚検知要求フラグKV=1のときには(カメラが静止状態にあるか否かを検知する三脚検知処理が要求されている場合)、ステップS314において後述するジャイロ出力を用いた三脚検知処理を実行し、三脚検知処理実行後、ステップS304の判定を実行する。なお、同処理において、カメラが静止状態(三脚使用状態)にあると判断されるときには、後述するゲインGGx、GGyの算出が行われるとともに三脚検知フラグSANが1に設定される。
ステップS304において、手ブレ補正フラグBRE=1(手ブレ補正駆動要求)のときには、ステップS316においてロック状態フラグLOCK=0であるか否か、すなわち手ブレ補正機構13がロック状態にあるか否かが判定される。ロック状態にない場合(ロック解除状態の場合)には、ステップS318において後述する手ブレ補正処理を実行した後、ステップS306の判定を実行する。一方、ロック状態フラグLOCK=0の場合(ロック状態の場合)、ステップS320において、後述する中心駆動処理を実行して、補正レンズ14をロック時可動範囲34(図3(b))の中心に移動するとともに、ステップS322においてロック環30を回動してロックを解除して、ステップS324においてロック状態フラグLOCKを1(ロック解除状態)に設定する。そしてその後にステップS318の手ブレ補正処理を開始し、ステップS306の判定を実行する。
ステップS306において、手ブレ補正フラグBRE=0(手ブレ補正停止要求)のときには、ステップS320においてロック状態フラグLOCK=1であるか否か、すなわち手ブレ補正機構13がロック解除状態にあるか否かが判定される。ロック解除状態にない場合(ロック状態の場合)には、直ちにステップS308の判定が実行される。一方、ロック状態フラグLOCK=1(ロック解除状態)の場合には、ステップS326において、ステップS320と同様の中心駆動処理が実行され、レンズ14をロック解除時可動範囲33(図3(a))の中心に移動する。そして、ステップS328において、ロック環30を回転して手ブレ補正機構13をロックするためのロックモータ44の駆動を開始する(ロック処理)。そして、ステップS330において、三脚検知フラグSAN=1であるか否か、すなわち現在カメラが静止状態(三脚使用状態)にあるか否かが判定される。
三脚検知フラグSAN≠1のとき(静止状態にない場合)、ステップS332においてロック環30による手ブレ補正機構13のロックが完了したか否かが判定され、同処理はロックが完了するまで繰り返される。ロックの完了が確認されると、ステップS334においてロック状態フラグLOCKが0(ロック状態)に設定され、ステップS308の判定が実行される。一方、ステップS330においてSAN=1(静止状態にある)と判定されると、ステップS336において後述するゲインデータ更新処理が実行されるとともに、ステップS338において三脚検知フラグSANが0(静止状態にない)に設定された後、ステップS332以下の処理が実行される。すなわち、ステップS306において、手ブレ補正フラグBRE=0(手ブレ補正停止要求)と判定されると、手ブレ補正処理が実行されることなく手ブレ補正機構13がロックされ、手ブレ補正機構13をロックするためにロックモータ44が駆動されている間(ロック処理作動中)にゲインデータ更新処理S336が実行される。
ステップS308において、工程テストフラグTST=1(工程テスト要求)のときには、ステップS340において後述する工程テストが実行される。そして、ステップS342において工程テストフラグTSTが0(工程テスト要求なし)に設定され、本タイマ割り込み処理は終了する。なお、工程テストフラグTST=1(工程テスト要求)で要求されるテストは、出荷前の工場における調整工程で行われる温度キャリブレーションテストである。すなわち、出荷後、工程テストフラグTSTは常時0であり、工程テストが通常行われることはない。
次に図6、図10を参照して、図9のステップS340において実行される工程テスト処理について説明する。なお、温度補正は、ジャイロ23X、23Yのそれぞれに対して行われ、工程テストも両ジャイロに対して独立に行われる。しかし両者は同一の方法で取り扱われるので、以下の説明では、図19の説明と同様に、各ジャイロ23X、23Yとの対応を示す添え字x、yを除いたゲインGG、ジャイロ出力V、オフセット補正値Vr、VV、補正出力Vout等の変数を用いて説明する。
レンズCPU18の工程テスト処理では、まずステップS400において、フラッシュメモリ51のゲインGG(後述)の書き込み領域がクリアされる。領域のクリアには所定時間掛かるので、レンズCPU18はステップS402において50mS待機し、その後ステップS404において、第1補正値Vrの値、および第2補正値VVの値が0に設定される。ステップS406、S408では、制御部39において、ジャイロ23X、23YのAD値(ジャイロ出力)V、および温度センサ50のAD値Tempが取得されるとともに、ステップS410において、Voutの値が入力される。
ここでは、オフセット補正値Vr、VVの値が、ステップS404においてVr=0、VV=0に設定されているので、Vout(=V−Vr−VV)の値は、このときのジャイロ23X、23YのAD値Vそのもの、すなわち工程調整時の温度T0でのジャイロ出力V0となる。ステップS412では、第1補正値Vrの値が、このときの補正出力Voutの値に設定され(Vr=Vout=V0)、工程テスト時の工程調整温度T0が、ステップS408で取得された現在の温度AD値Tempに設定されるとともに(T0=Temp)、ゲインGGが0に設定される(GG=0)。そしてステップS414において、ステップS412で設定された、Vrの値、T0の値、およびGGの値がフラッシュメモリ51に記録され、工程テストは終了する。
次に図6および図11のフローチャートを参照して、図9のステップS310で実行されるレンズCPU18における第2補正値(VV)リセット処理について説明する。
ステップS500では、フラッシュメモリ51からゲインGG、工程調整時温度T0、後述するOKコード(有効データコード)のデータが読み出され、ステップS502においてOKコードが有効であるか否かが判定される。OKコードは、後述するように、前回のゲインGGのフラッシュメモリ51への記録処理が有効に行われたか否かを示すコードであり、OKコードが有効のときには、フラッシュメモリ51から読み出されたゲインGGを用いて、ステップS504において、現在の温度Tempに対する第2補正値VVの値がVV=GG・(Temp−T0)として計算される。一方、ステップS502においてOKコードが有効でないと判定されると、ステップS508においてGGが0に設定され、ステップS504では、GG=0を用いて現在の温度Tempに対する第2補正値VVの値がVV=GG・(Temp−T0)計算される。すなわち、OKコードが無効のときには、VV=0とされる。そしてステップS506では、フラッシュメモリ51から読み出されたゲインGG、あるいはステップS508で設定されたGG=0を用いてステップS504で算出されたVVの値を現温度Tempにおける第2補正値VVして制御部39に設定し、本第2補正値リセット処理は終了する。
次に図12を参照して、図9のステップS314で実行されるレンズCPU18での三脚検知処理について説明する。
ステップS600では、制御部39においてジャイロ23X、23YのAD値(ジャイロ出力)Vが取得され、ステップS602では、温度センサ50のAD値Tempが取得される。そしてステップS604において、ジャイロ23X、23Yの補正出力Voutの値が制御部39に入力される。
ステップS606では、Voutの変動ΔVoutの絶対値|ΔVout|が所定値MovLvlよりも小さいか否かが判定され、すなわち1つ前のVoutの値と現在のVoutの値の差をX、Y成分毎に求め、両者の絶対値の何れもが所定値MovLvlよりも小さいか否かが判定される。|ΔVout|のX、Y成分の何れかが所定値MovLvl以上のときには、カメラは動いていると考えられるので、処理はステップS618に移り、三脚検知用タイムカウンタTimの値を0にリセットして、本三脚検知処理を終了する。
一方、ステップS606において、|ΔVout|のX、Y成分の何れもが所定値MovLvlよりも小さいと判定されると、ステップS608において三脚検知用タイムカウンタTimの値が所定値よりも大きいか否かが判定される。Tim>所定値でない場合には、ステップS620においてTimがインクリメントされ、処理はステップS600に戻る。そして、次のジャイロ出力V、次の温度Temp、次のVoutがステップS600〜S604で順次取得され、|ΔVout|<MovLvlである限り、同処理はTim>所定値となるまで繰り返される。Tim>所定値となるまでの一定時間、|ΔVout|<MovLvlであると、カメラは三脚などに設置され、静止していると判断され、処理はステップS610へと移る。
ステップS610では、補正出力Voutの絶対値|Vout|が所定値VLvlよりも大きいか否かが判定される。第2補正値VVによるジャイロ出力Vの補正が適正に行われているならば、ステップS608においてカメラが静止されていると判断される場合には、Voutは略0にならなければならない。それにもかかわらず、ステップS610において|Vout|>VLvlと判定される場合、現在のゲインGGを用いて算出される第2補正値VVによる補正は不適切と考えられる。そのためステップS610において|Vout|>VLvlであると判断されるときには、ステップS614において三脚検知フラグSANを1に設定するとともに、ステップS616において現在の補正出力Vout、現在の第2補正値VV、現在の温度Temp、工程調整時温度T0を用いて新しいゲインGGが算出される。そしてステップS618において三脚検知用タイムカウンタTimの値を0にリセットして、本三脚検知処理を終了する。
一方、ステップS610において|Vout|がVLvl以下であると判定される場合には、ステップS612において、現在の温度Tempと工程調整時温度T0の差の絶対値|Temp−T0|が所定値GGCalcよりも大きいか否かが判定される。|Temp−T0|>GGCalcでないときには、現在の温度Tempが、工程調整時温度T0に近過ぎ、ゲインGGを計算しても精度が得られない判断される。そのため、ステップS614、S616を飛ばしてステップS618へと処理は移り、三脚検知用タイムカウンタTimの値を0にリセットして、本三脚検知処理を終了する。
またステップS612において、|Temp−T0|>GGCalcであると判定されるときには、ステップS610のYesのときと同様に、ステップS614、S616を実行し新たなゲインGGの値を掲載した後、ステップS618を実行して三脚検知用タイムカウンタTimの値を0にリセットし、本三脚検知処理を終了する。
次に図13のフローチャートを参照して、図9のステップS320およびステップS326において実行されるレンズCPU18での中心駆動処理について説明する。
中心駆動処理は、手ブレ補正機構13において、補正レンズ14を可動範囲33、34(図3)の中央に移動する処理であり、ステップS700において、ホールセンサ25X、25Y(図6)の出力に基づき補正レンズ14の現在の位置情報を検出する。そしてステップS702において制御部39における補正レンズ14の目標位置である駆動位置(X,Y)を光軸および可動範囲33、34の中心に対応する(0,0)に設定する。その後ステップS704、S706において、自動制御のための演算を、現在位置および目標位置に基づき行い、その演算結果に基づき手ブレ補正機構13を駆動して、補正レンズ14を中心位置(0,0)へと移動して本処理は終了する。
次に図14のフローチャートを参照して、図9のステップS318において実行されるレンズCPU18での手ブレ補正処理について説明する。
手ブレ補正処理では、まずステップS800において、角速度センサ(ジャイロ)23X、23YからY軸、X軸周りの角速度信号を取得し、ステップS802においてY軸、X軸周りの回転角を計算する(角度演算部36X、36Y)。ステップS804では、ステップS802において計算された回転角とレンズの焦点距離fなどから駆動位置X、Yを計算する(レンズ駆動位置計算部37X、37Y;制御部39)。ステップS806では、ホールセンサ25X、25Yの信号に基づき補正レンズ14の現在位置を取得し(X、Y方向駆動制御部24X、24Y)、ステップS808の自動制御計算において、駆動位置X、Yとフィードバックされる現在位置の偏差から操作量を計算する(自動制御演算部40X、40Y)。ステップS810では、操作量に基づきX、Y方向コイル41X、41Yに電力を供給し手ブレ補正機構13を駆動し(X、Y方向駆動制御部24X、24Y)、本実施形態の手ブレ補正処理は終了する。
次に図15のフローチャートを参照して、図9のステップS336において実行されるレンズCPU18でのゲインデータ更新処理について説明する。
ゲインデータ更新処理は、三脚検知フラグSAN=1のとき、すなわち図12の三脚検知処理のステップS616においてゲインGGの計算が行われたときに、ゲインGGをフラッシュメモリ51に記録する処理である。まずステップS900において、フラッシュメモリ51のゲインGGの書き込み領域がクリアされる。領域のクリアには所定時間掛かるので、レンズCPU18はステップS902において50mS待機し、その後ステップS904において、ステップS616において計算されたゲインGGのフラッシュメモリ51への書き込みが行われる。次に、ステップS906において、フラッシュメモリ51へのOKコードの書き込みが行われ、本ゲインデータ更新処理は終了する。
図16に、ゲインデータ更新処理によるフラッシュメモリ51へのデータの書き込みの様子を模式的に示す。
図16(a)に示されるように、本実施形態では、フラッシュメモリ51の連続する3つのアドレス(ここでは1000、1001、1002)が、X方向ゲインGGx、Y方向ゲインGGy、OKコードのデータに割り当てられる。書き換え時には、図16(b)に示されるように、この連続する3つのアドレスに対応する領域がクリアされ、全て「00」のデータが書き込まれる。その後、図16(c)、(d)に示されるように、X方向ゲインGGx、Y方向ゲインGGy、OKコードの順で、各メモリ領域への書き込みが連続して行われる。OKコードは例えば「01」であり、OKコードの書き込みが完了していれば、このアドレスには「01」のデータが記録されている。しかし、ゲインデータ更新処理の途中で、レンズが取り外されるなどして、レンズの電源がオフされてしまった場合、OKコードを記録する領域には「00」のデータが記録されている。すなわち、図11の第2補正処理リセット処理のステップS502におけるOKコードが有効なときとは、同領域から読み出されたデータが「01」のときであり、「00」の場合には、読み出されたゲインGGx、GGyが不正データである可能性がある。
次に図17のタイミングチャートを参照して、本実施形態のゲインデータ更新処理(図9のS336、図15)が実行されるタイミングについて説明する。図17の横軸は時間に対応し、図17(a)は、ロック環30を含む手ブレ補正機構13(図2参照)の動作内容を、図17(b)は補正レンズ14の動きを模式的に示す。
時点t0でレンズ電源がONされ、レンズCPU18がt1でカメラCPU17から第2補正値リセット(命令(要求)(S104またはS132)が通知され、続いてt2でカメラCPU17から手ブレ補正処理開始要求(命令)(S118)あると、略同時に手ブレ補正レンズの中心駆動処理(S320)がt2〜t3の間に行われ、更にロック環30のロック解除処理(S322)がt3〜t4の間に行われる。ロック環30が解除されると、手ブレ補正処理(S318)が実行され、図17(b)に示されるように補正レンズ14が、手ブレに合わせて中心周りに搖動される。t5においてレンズCPU18がカメラCPU17から手ブレ補正終了命令(要求)(S128)を通知されると、中心駆動処理(S326)がt5〜t6の間に行われ、中心駆動処理が終了すると直ちにロック環30をロックするためのロック処理(S328)が開始され、t7にロック処理動作が終了する(S332のYes)。本実施形態では、ロック処理(S328)が開始されてから終了するまでの期間t6〜t7の間に、ゲインデータ更新処理(S336)を実行する期間TP1を設ける。
ゲインデータのメモリへの書き込みには一定の時間が掛かるので、書き込みの最中に鏡筒12がカメラ本体11から外されるなどしてレンズCPU18の電源がオフされる可能性がある。その場合、ゲインデータが正しくメモリに記録されていないので、次回のゲインデータを利用するときに適正な温度補正を行うことができない。そこで本実施形態では、ロックモータ44が駆動している間に、ゲインデータの更新処理(S336)を行うことで、メモリへの書き込み途中で、レンズCPU18の電源がオフされることを防止する。すなわち、ロックモータ44が駆動している間は、通常モータ音が発せられており、多少の振動もあるため、ユーザが誤って鏡筒12をカメラ本体11から取り外す可能性は極めて低い。そのため、本実施形態では、同期間中にゲインデータのフラッシュメモリ51への書き込みを行う。また、本実施形態では、ゲインデータに続けてOKコードを記録する構成としたことで、データ読み出し時にOKコードを参照することで、読み出されたゲインデータの有効性を判断することが可能である。
ゲイン更新処理(S336)は、レンズの電源がオフされない状況であれば、他のタイミングで行われてもよい。例えば中心駆動が開始されてからロック環のロックが完了するまでの期間t5〜t7は、手ブレ補正機構13のモータやアクチュエータが駆動されており、ユーザが電源をオフする可能性は低いので、この期間TP(t5〜t7)、あるいはt2〜t4の期間の間にゲインデータ更新処理を行う場合にも同様に、メモリへの書き込み途中で、レンズCPU18の電源がオフされることを防止することができる。これにより本実施形態によれば、センサ出力の温度補正のための情報を適切に管理することができる。
図18に、期間TPの中心駆動処理中にゲインデータ更新処理を行う場合のレンズCPU18の1mSタイマ割り込み処理のフローチャートを変形例として示す。
図18のフローチャートは、図9のフローチャートに対応し、図9と異なるのは、ステップS326〜S338までのフローであり、その他の処理は図9の各ステップと同様である。したがって、本図の説明では、ステップS326〜S338に置き換えられるステップS346〜S358についてのみ説明する。
ステップS320でロック状態フラグLOCK=1であると判定されると、ステップS346において、図9のステップS326と同様に中心駆動処理が開始される。図9のフローでは、中心駆動処理が終了してから、ステップS330の三脚検知フラグSAN=1であるか否かが判定されたが、変形例では、中心駆動処理が開始されると直ぐに、ステップS348において三脚検知フラグSAN=1であるか否かの判定が行われる。
三脚検知フラグSAN≠1のとき(静止状態にない場合)には、手ブレ補正機構13による中心駆動処理が完了したか否かがステップS350において判定され、同処理は中心駆動処理が完了するまで繰り返される。ステップS350において中心駆動処理の完了が確認されると、ステップS352においてロック環30による手ブレ補正機構13のロック処理が実行される。ステップS352においてロックが完了すると、ステップS354においロック状態フラグLOCKが0(ロック状態)に設定され、以下図9と同様にステップS308の判定が実行される。
一方、ステップS348においてSAN=1(静止状態にある)と判定されると、ステップS356において図9のステップS336と同様にゲインデータ更新処理が実行されるとともに、ステップS358において図9のステップS338と同様に三脚検知フラグSANが0(静止状態にない)に設定される。その後は、ステップS350以下の処理が実行される。すなわち、ステップS306において、手ブレ補正フラグBRE=0(手ブレ補正停止要求)と判定されると、補正レンズ14を可動範囲の中心に移動するためにアクチュエータが駆動されている間(中心駆動処理作動中)にゲインデータ更新処理S356が実行される。
以上のように変形例において本実施形態と同様に、ゲインデータのメモリへの書き込み途中で、レンズCPU18の電源がオフされることを防止することができる。
なお、本実施形態および変形例では、ジャイロ出力を用いてカメラの静止状態を検知したが、加速度センサなど他のセンサを搭載し、これらのセンサ出力に基づいて静止状態を検知してもよい。また、本実施形態および変形例では、ユーザによりレンズ電源がオフされない状況、例えばレンズのモータやアクチュエータなどの駆動部が稼働している最中にデータのメモリへの書き込みが行われた。しかし、本発明を駆動部が停止しているときにメモリへの書き込みを行い、OKコードの付加により記録されたゲインの有効性を判断する構成にしてもよく、この場合、無効なゲインデータが発生する可能性は増大するものの、ゲインデータの記録が適正に行われていない場合であっても、温度補正処理を実行することができる。