(57)【特許請求の範囲】
【請求項１】
超音波モータと、
この超音波モータの駆動周波数を初期駆動周波数から変化させることにより、該超音波モータを起動させる駆動制御手段と、
前記超音波モータが回転を開始したときの駆動周波数に基づき、初期駆動周波数データを算出する演算手段と、
該算出された初期駆動周波数データに基づき、次に前記超音波モータを起動させるときの初期駆動周波数を設定する設定手段と、
前記超音波モータの起動毎に、該超音波モータが回転を開始したときの駆動周波数を起動周波数データとして記憶する周波数記憶手段と、
前記駆動制御手段が前記超音波モータの起動動作を開始する前にその都度、該動作環境における周囲温度を検出する温度検出手段と、
この検出された周囲温度を温度データとして記憶し、少なくとも前回の温度データと今回の温度データの記憶を保持する温度記憶手段と、
前記前回の温度データと前記今回の温度データとの差が所定値以上あるか否かを判定する温度判定手段とを備え、
前記演算手段は、前記周波数記憶手段に記憶されている複数の起動周波数データに基づいて前記初期駆動周波数を算出し、
前記駆動制御手段は、前記温度判定手段によって温度データ差が所定値以上あると判定された場合は、前記周波数記憶手段に記憶されている起動周波数データを全て消去することを特徴とする超音波モータ駆動制御装置。
【請求項２】
請求項１記載の超音波モータ駆動制御装置において、前記駆動制御手段は、前記超音波モータの駆動周波数を前記初期駆動周波数から低減させることにより、前記超音波モータを起動させる超音波モータ駆動制御装置。
【請求項３】
請求項１または２記載の超音波モータ駆動制御装置において、前記周波数記憶手段は、さらに、前記超音波モータの共振周波数データを記憶し、
前記演算手段は、この共振周波数データと前記起動周波数データの平均値とを用いて前記初期駆動周波数データを算出する超音波モータ駆動制御装置。
【請求項４】
請求項３記載の超音波モータ駆動制御装置において、前記演算手段は、前記共振周波数データと前記起動周波数データの平均値との差分を所定倍した値を、前記起動周波数データの平均値に加算することにより、前記初期駆動周波数データを算出する超音波モータ駆動制御装置。
【請求項５】
請求項３または４記載の超音波モータ駆動制御装置において、前記周波数記憶手段は、前記超音波モータの回転速度が最高速度に達したときの駆動周波数を、前記共振周波数データとして記憶する超音波モータ駆動制御装置。
【請求項６】
請求項１または２記載の超音波モータ駆動制御装置において、前記演算手段は、前記起動周波数データの平均値よりも所定の割合だけ高い値を、前記初期駆動周波数データとして算出する超音波モータ駆動制御装置。
【請求項７】
請求項１ないし６のいずれか一項に記載の超音波モータ駆動制御装置において、前記駆動制御手段は、前記超音波モータの駆動周波数を該駆動制御手段の制御可能な最低値まで下げても前記超音波モータが起動しなかった場合には、前記周波数記憶手段に記憶されている起動周波数データを全て消去する超音波モータ駆動制御装置。
【請求項８】
請求項１ないし７のいずれか一項に記載の超音波モータ駆動制御装置において、前記設定手段は、前記周波数記憶手段に記憶されている起動周波数データが１つもない場合には、前記駆動制御手段が制御可能な最高駆動周波数を、前記初期駆動周波数として設定する超音波モータ駆動制御装置。
【請求項９】
請求項１、３、４または６記載の超音波モータ駆動制御装置において、前記初期駆動周波数データは前記周波数記憶手段に記憶される超音波モータ駆動制御装置。
【請求項１０】
請求項１または２記載の超音波モータ駆動制御装置において、前記周波数記憶手段には、最新の起動周波数データを含む過去所定回数分の起動周波数データが格納される超音波モータ駆動制御装置。
【請求項１１】
請求項１ないし１０のいずれか一項に記載の超音波モータ駆動制御装置において、前記設定手段は、前記演算手段が算出した初期駆動周波数データが前記駆動制御手段の制御可能な最高駆動周波数よりも高い場合は、該最高駆動周波数を前記初期駆動周波数として設定する超音波モータ駆動制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、超音波モータの駆動周波数を適切に制御する超音波モータ駆動制御装置に関する。
【背景技術】
【０００２】
円環または円盤タイプ超音波モータは、位相の異なる２つの交流駆動電圧を振動子（ステータ）に張り付けてある圧電素子に印加して振動子の表面に弾性振動の進行波を励起させることにより、振動子の表面に加圧接触させた移動子（ロータ）に進行波と逆の方向に回転する円運動を生じさせ、振動子と移動子間の摩擦力により移動子を移動させている。このような超音波モータでは、その共振周波数でモータを駆動させれば、最も駆動効率が良くなるとともに回転速度が最速となることが知られている。
【０００３】
そこで超音波モータを共振周波数で駆動制御しようとする場合に従来では、超音波モータの駆動周波数を共振周波数よりも十分に高い周波数から徐々に下げていき、共振状態となったときに駆動周波数を固定して共振状態を維持していた（特許文献１）。これは、超音波モータの共振周波数が負荷トルクや周囲温度の変化により変動するためで、何らかの原因により共振周波数が高周波数側へシフトしてしまった場合でも安定して超音波モータを起動できるように通常の共振周波数よりも十分に高い駆動周波数から徐々に下げていく必要がある。
【特許文献１】特開昭６３-２０９４８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、通常の状態の（共振周波数がシフトしていない）場合若しくは共振周波数が低周波数側へシフトしてしまった場合に、従来のように通常の共振周波数よりも十分に高い駆動周波数から掃引を開始したのでは、超音波モータが起動するまでに時間がかかり、応答性低下の要因となってしまう。
【０００５】
本発明は、共振周波数が変動した場合でも、超音波モータの迅速な起動及び安定駆動を可能にする超音波モータ駆動制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、超音波モータと、この超音波モータの駆動周波数を初期駆動周波数から変化させることにより、該超音波モータを起動させる駆動制御手段と、前記超音波モータが回転を開始したときの駆動周波数に基づき、初期駆動周波数データを算出する演算手段と、該算出された初期駆動周波数データに基づき、次に前記超音波モータを起動させるときの初期駆動周波数を設定する設定手段と、前記超音波モータの起動毎に、該超音波モータが回転を開始したときの駆動周波数を起動周波数データとして記憶する周波数記憶手段と、前記駆動制御手段が前記超音波モータの起動動作を開始する前にその都度、該動作環境における周囲温度を検出する温度検出手段と、この検出された周囲温度を温度データとして記憶し、少なくとも前回の温度データと今回の温度データの記憶を保持する温度記憶手段と、前記前回の温度データと前記今回の温度データとの差が所定値以上あるか否かを判定する温度判定手段とを備え、前記演算手段は、前記周波数記憶手段に記憶されている起動周波数データに基づいて前記初期駆動周波数データを算出し、前記駆動制御手段は、前記温度判定手段によって温度データ差が所定値以上あると判定された場合は、前記周波数記憶手段に記憶されている起動周波数データを全て消去することを特徴としている。
【０００７】
温度判定手段によって温度データ差が所定値以上あると判定された場合は、周囲温度が前回駆動時から変化している場合であり、超音波モータの共振周波数が変動している可能性がある。よって、駆動制御手段は、周波数記憶手段に記憶されている起動周波数データを全て消去することにより、変動による誤動作を防止できる。
【０００８】
前回超音波モータが回転を開始したときの駆動周波数に応じて次回起動時の初期駆動周波数を変化させれば、超音波モータが回転し始めるまでの起動時間を短縮することができ、応答性が改善される。駆動制御手段は、超音波モータを安定駆動させるため、超音波モータの駆動周波数を初期駆動周波数から低減して超音波モータを起動させることが好ましい。
【０００９】
上記超音波モータ駆動制御装置には、さらに、超音波モータの起動毎に、超音波モータが回転を開始したときの駆動周波数を起動周波数データとして記憶する周波数記憶手段を備えることができる。演算手段は、前記周波数記憶手段に記憶されている起動周波数データの平均値を算出し、この平均値を用いて前記初期駆動周波数データを算出することができる。
好ましくは、周波数記憶手段に超音波モータの共振周波数データをも記憶させ、この共振周波数データと起動周波数データの平均値とを用いて、演算手段に初期駆動周波数データを算出させる。具体的には例えば、起動周波数データの平均値と共振周波数データとの差分を所定倍した値を起動周波数データの平均値に加算し、これを初期駆動周波数データとする。この場合には、前回駆動時の共振周波数よりも高周波側であって、且つ、前回駆動時の起動周波数に近い初期駆動周波数を設定できる。なお、周波数記憶手段は、超音波モータの回転速度が最高速度に達したときの駆動周波数を、共振周波数データとして記憶することが好ましい。
また演算手段は、上述の共振周波数データを用いずに、初期駆動周波数データを算出してもよい。例えば、起動周波数データの平均値よりも所定の割合だけ高い値を、初期駆動周波数データとして算出することができる。
【００１０】
また駆動制御手段は、超音波モータの駆動周波数を該駆動制御手段の制御可能な最低値まで下げても超音波モータが起動しなかった場合に、周波数記憶手段に記憶されている起動周波数データを全て消去することが好ましい。周波数記憶手段に記憶されている起動周波数データが１つもない場合に設定手段は、駆動制御手段が制御可能な最高駆動周波数を初期駆動周波数として設定する。
【００１１】
初期駆動周波数データは、周波数記憶手段に記憶することができる。また周波数記憶手段には、最新の起動周波数データを含む過去所定回数分の起動周波数データを格納可能である。また設定手段は、演算手段が算出した初期駆動周波数データが駆動制御手段の制御可能な最高駆動周波数よりも高い場合は、該最高駆動周波数を初期駆動周波数として設定する。
【発明の効果】
【００１２】
本発明によれば、超音波モータが起動するまでの時間が大幅に短縮して応答性が向上するとともに、必ず共振周波数よりも高周波数側でモータが起動して起動後も安定に駆動させることができるだけでなく、周囲温度または負荷トルクの変化に伴い共振周波数が変動した場合でも、超音波モータを確実に起動して安定に駆動することができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明を適用した超音波モータ駆動制御装置の制御系を示すブロック図である。この図１には、本装置により制御される超音波モータがカメラのオートフォーカスレンズを駆動する実施形態を示している。
【００１４】
超音波モータ（ＵＳＭ）１０は、詳細は図示しないが、圧電体を備えた振動子と移動子とが互いに接触しており、圧電体に９０°位相の異なる電圧が印加されると、振動子が振動して弾性振動の進行波が励起される結果、移動子が前記進行波の進行方向と逆向きに移動して被駆動体を駆動するように構成されている。この超音波モータ１０には、振動子が弾性振動したときの振幅に比例した振幅電圧ＶDを検出するセンサ電極Ｓが設けられている。超音波モータ１０が回転すると、超音波モータ１０の駆動周波数に対応した交流信号（＝振幅電圧ＶD）がセンサ電極Ｓから出力される。図８（ａ）に超音波モータの駆動周波数に対する回転数の相関特性を、図８（ｂ）には同じく駆動周波数に対する振幅電圧の相関特性をそれぞれ示す。
【００１５】
本装置は、超音波モータ１０の駆動制御手段としてレンズＣＰＵ２０を備えている。レンズＣＰＵ２０は、カメラＣＰＵ３０との間でデータ通信を行い、カメラ側から入力した制御信号に基づく動作を行う。カメラ側からの制御信号には、超音波モータ１０の駆動開始命令や超音波モータ１０の駆動量（駆動パルス数）を指定する信号などが含まれる。
【００１６】
レンズＣＰＵ２０は、制御用プログラム等を格納したＲＯＭ２０ｄ、制御用データを一時的に記憶するＲＡＭ２０ｃ、Ａ／Ｄ変換入力ポート２０ａ及びカウンタ２０ｂを備え、カメラ側の電源ラインＶｃｃから電力供給を受けて動作する。Ａ／Ｄ変換入力ポート２０ａは、周囲温度に応じて抵抗値が変化するサーミスタＲｔと抵抗Ｒの接続点に接続されていて、レンズＣＰＵ２０は、Ａ／Ｄ変換入力ポート２０ａの入力変化（サーミスタＲｔの抵抗値変化）に基づき、周囲温度を検知することができる。カウンタ２０ｂは、超音波モータ１０の回転量に応じてパルスエンコーダ２１から出力されるパルスを入力する毎に１ダウンカウントするカウンタである。レンズＣＰＵ２０は、所定時間内におけるカウンタ２０ｂの変化値に基づき超音波モータ１０の回転速度を測定することができる。
【００１７】
レンズＣＰＵ２０には、超音波モータ駆動回路２２及び書き換え可能な不揮発性メモリであるＥＥＰＲＯＭ２３が接続されている。超音波モータ駆動回路２２は、レンズＣＰＵ２０からの指令に応じた駆動電圧（周波数信号）を超音波モータ１０に供給する回路である。ＥＥＰＲＯＭ２３は各種データを格納するメモリ手段であって、レンズＣＰＵ２０は必要に応じてＥＥＰＲＯＭ２３に対してデータの読み出し／書き込みを行なう。
【００１８】
上記構成に基づき、モータ駆動制御処理の概要を説明する。
レンズＣＰＵ２０は、超音波モータ駆動回路２２を介して、初期駆動周波数を有する駆動電圧を超音波モータ１０に印加し、超音波モータ１０の駆動周波数を初期駆動周波数から徐々に低減することで超音波モータ１０を起動させる。超音波モータ１０の起動後（回転開始後）は、さらに超音波モータ１０の駆動周波数を低減して超音波モータ１０を加速させ、超音波モータ１０を最速（一定速）で回転駆動させる。この超音波モータ１０の加速及び一定速駆動は、超音波モータ１０のセンサ電極Ｓが出力した振幅電圧ＶDに基づいて制御される。そしてレンズＣＰＵ２０は、カウンタ２０ｂのカウンタ値に基づいて超音波モータ１０の駆動量を検知し、超音波モータ１０の駆動量が所定量に達したら超音波モータ１０を減速させ、超音波モータ１０の回転を停止させる。
【００１９】
本実施形態は、上記モータ駆動制御処理において、超音波モータ１０の共振周波数よりも高い周波数であって且つモータ起動時間が最短となるように、初期駆動周波数を変化させることに特徴を有している。レンズＣＰＵ２０は、超音波モータ１０が回転開始したときの駆動周波数を起動周波数データｆｓ［ｎ］とし、超音波モータ１０の回転速度が最高速度に達したときの駆動周波数を共振周波数データｆｒとしてそれぞれＥＥＰＲＯＭ２３に記憶し、これら起動周波数データｆｓ［ｎ］及び共振周波数データｆｒを用いて初期駆動周波数データｆｉｎｉｔを算出する。初期駆動周波数データｆｉｎｉｔは、次に超音波モータ１０を駆動させるときの初期駆動周波数を設定するためのデータであって、ＥＥＰＲＯＭ２３に記憶される。レンズＣＰＵ２０は、超音波モータ１０の駆動前にＥＥＰＲＯＭ２３から初期駆動周波数データｆｉｎｉｔを読み出して初期駆動周波数を設定し、該初期駆動周波数から駆動周波数の掃引を開始する。
【００２０】
このように初期駆動周波数を可変とし、且つ、共振周波数よりも高い周波数であってモータ起動時間を最短に抑えるように、ＥＥＰＲＯＭ２３に記憶した過去のデータに基づいて初期駆動周波数を設定すれば、超音波モータ１０を共振周波数よりも高周波数側で起動させることができ、起動後も安定に駆動させることが可能となる。またモータ起動時間が短縮されるから、応答性の向上も図れる。なお、超音波モータには駆動周波数が共振周波数よりも低くなると、急激に性能が悪化するという特性もあるが、本実施形態ではこのような事態を招くこともない。
【００２１】
また本実施形態では、前回駆動時から周囲温度や負荷トルクが一定値以上変化している場合は超音波モータ１０の共振周波数も変動したと考えられるため、レンズＣＰＵ２０が、ＥＥＰＲＯＭ２３に記憶してある起動周波数データｆｓ［ｎ］、共振周波数データｆｒなどの超音波モータ駆動に関するデータを全消去する。ＥＥＰＲＯＭ２３に超音波モータ駆動に関するデータの記憶がない場合には、共振周波数が高周波数側にシフトした場合を考慮して、レンズＣＰＵ２０が制御可能な最高駆動周波数を初期駆動周波数として設定し、最高駆動周波数から駆動周波数の掃引を行なう。これにより、周囲温度及び負荷トルクの変化に応じて共振周波数が変動した場合でも、超音波モータ１０を確実に起動させて安定に駆動することができる。
【００２２】
次に、図２〜図６を参照して、本装置の制御動作をより詳細に説明する。図２は本装置のメイン処理を示すフローチャートである。この処理にはカメラの電源がオンされたときに入り、電源オン状態ではＳ１３〜Ｓ１９の処理が繰り返し実行される。
この処理に入ると先ず、ＥＥＰＲＯＭ２３に記憶された起動周波数データｆｓ［ｎ］を全て消去し（ｎ＝０）、初期駆動周波数としてレンズＣＰＵ２０の制御可能な最高駆動周波数をセットする（Ｓ１１）。次に、カメラＣＰＵ３０との間でデータ通信を実行し（Ｓ１３）、この通信により駆動開始命令を入力したかどうかをチェックする（Ｓ１５）。駆動開始命令を入力していなければＳ１３へ戻り、駆動開始命令を入力するまでＳ１３、Ｓ１５の処理を繰り返す（Ｓ１５；Ｎ）。そして駆動開始命令を入力したときは（Ｓ１５；Ｙ）、カメラ側で設定された駆動パルス数をカウンタ２０ｂにセットし（Ｓ１７）、駆動処理（Ｓ１９）を実行する。
【００２３】
Ｓ１９で実行される駆動処理について、図３を参照して詳細に説明する。この処理に入ると先ず、ＵＳＭ起動処理を実行して超音波モータ１０を起動させる（Ｓ２１）。ＵＳＭ起動処理では、超音波モータ１０の駆動周波数を初期駆動周波数から徐々に低減して超音波モータ１０を起動（回転開始）させる。このＵＳＭ起動処理においてレンズＣＰＵ２０は、駆動周波数の掃引を開始してからパルスエンコーダ２１の出力を最初に検知したとき、超音波モータ１０が起動（回転開始）したと判断する。
【００２４】
超音波モータ１０が起動したら、超音波モータ１０の駆動周波数をさらに低減して超音波モータ１０の回転速度を加速し（Ｓ２３）、超音波モータ１０のセンサ電極Ｓから出力される振幅電圧ＶDがある規定値に達したときの駆動周波数を共振周波数データｆｒとしてＥＥＰＲＯＭ２３に記憶して（Ｓ２５）、記憶した共振周波数データｆｒに基づき超音波モータ１０を一定速駆動（最速駆動）する（Ｓ２７）。この加速・一定速駆動は、超音波モータ１０のセンサ電極Ｓから出力される振幅電圧ＶDに基づいて制御されるが、本発明とは直接関係がないので詳細な説明を省略する。
【００２５】
そして所定時間（または所定パルス分）だけ一定速駆動したら、パルスエンコーダ２１の出力、即ちカウンタ２０ｂの値に基づき超音波モータ１０の回転速度を減速して超音波モータ１０の回転を停止させ（Ｓ２９）、初期駆動周波数データｆｉｎｉｔの算出処理を実行してリターンする（Ｓ３１）。初期駆動周波数データｆｉｎｉｔは、次回駆動時の初期駆動周波数を設定するためのデータである。
【００２６】
Ｓ２１で実行されるＵＳＭ起動処理について、図４を参照して詳細に説明する。この処理に入ると先ず、Ａ／Ｄ変換入力ポート２０ａの入力値に基づき周囲温度を検出し、その検出温度をＥＥＰＲＯＭ２３に記憶する（Ｓ４１、Ｓ４３）。次に、ＥＥＰＲＯＭ２３に記憶されている起動周波数データの個数を示す変数ｎが０より大きいか否かをチェックする（Ｓ４５）。変数ｎが０より大きくないとき、即ち変数ｎが０であれば、過去のデータがないので、レンズＣＰＵ２０の制御可能な最高駆動周波数を初期駆動周波数として設定し、Ｓ５７へ進む（Ｓ４５；Ｎ、Ｓ４７）。
【００２７】
変数ｎが０より大きければ（Ｓ４５；Ｙ）、ＥＥＰＲＯＭ２３から前回の検出温度と今回の検出温度を読み出し、前回の検出温度と現在の検出温度との差の絶対値が所定値以上あるか否かをチェックする（Ｓ４９）。前回検出時と今回検出時の温度差が所定値以上なかったときは（Ｓ４９；Ｎ）、前回駆動時（Ｓ３１）にて算出した初期駆動周波数データｆｉｎｉｔをＥＥＰＲＯＭ２３から読み込んで初期駆動周波数として設定し、Ｓ５７へ進む（Ｓ５１）。すなわち、今回のモータ駆動は前回のモータ駆動時とほぼ同じ条件であるとみなせるので、前回のモータ駆動時において算出した初期駆動周波数データｆｉｎｉｔに対応する初期駆動周波数から、超音波モータ１０の駆動周波数の掃引を開始する。これにより、共振周波数よりも高周波数側であって且つ共振周波数に近い駆動周波数からモータ駆動を開始でき、起動までの時間が短縮できる。一方、Ｓ４９にて前回検出時と今回検出時の温度差が所定値以上あれば、周囲温度が前回駆動時から大きく変化したことを意味する。この場合には共振周波数が大きく変動しているときがある。そこで前回検出時と今回検出時の温度差が所定値以上ある場合は、レンズＣＰＵ２０の制御可能な最高駆動周波数を初期駆動周波数として設定し、ＥＥＰＲＯＭ２３に記憶された起動周波数データｆｓ［ｎ］を全消去してＳ５７へ進む（Ｓ４９；Ｙ、Ｓ５３、Ｓ５５）。
【００２８】
Ｓ５７では、Ｓ４７、Ｓ５１、Ｓ５３のいずれかで設定した初期駆動周波数を有する駆動電圧を、超音波モータ駆動回路２２を介して超音波モータ１０に印加する。そして、パルスエンコーダ２１の出力を検知したか否かにより超音波モータ１０が起動（回転開始）したか否かをチェックする（Ｓ５９）。超音波モータ１０が起動していなければ（Ｓ５９；Ｎ）、超音波モータ１０の現在の駆動周波数がレンズＣＰＵ２０の制御可能な最低駆動周波数であるか否かをチェックし（Ｓ６１）、現在の駆動周波数が最低駆動周波数でなければ、駆動周波数を所定値下げてＳ５９へ戻る（Ｓ６１；Ｎ、Ｓ６３）。そして超音波モータ１０が起動しない間は、駆動周波数が最低駆動周波数に達するまで、Ｓ５９〜Ｓ６３の処理を繰り返して駆動周波数を掃引する。そして超音波モータ１０が起動する前に駆動周波数が最低駆動周波数に達した場合は（Ｓ５９；Ｎ、Ｓ６１；Ｙ）、ＥＥＰＲＯＭ２３に記憶された起動周波数データｆｓ［ｎ］を全消去し（ｎ＝０）、レンズＣＰＵ２０の制御可能な最高駆動周波数を、今回駆動時の起動周波数データｆｓｃｕｒとして設定しＳ７７へ進む（Ｓ６５、Ｓ６７）。
【００２９】
超音波モータ１０が起動（回転開始）したら（Ｓ５９；Ｙ）、該回転開始時の駆動周波数を今回駆動時の起動周波数データｆｓｃｕｒとして設定し（Ｓ６８）、回転開始後所定時間内のカウンタ２０ｂの変化値により超音波モータ１０の回転速度を測定し（Ｓ６９）、測定した現在の回転速度をＥＥＰＲＯＭ２３に記憶して（Ｓ７１）、変数ｎが０より大きいか否かをチェックする（Ｓ７３）。変数ｎが０より大きければ、ＥＥＰＲＯＭ２３から前回の回転速度と今回の回転速度を読み出して、前回の回転速度と今回の回転速度との差の絶対値が所定値以上か否かをチェックする（Ｓ７３；Ｙ、Ｓ７５）。前回駆動時と今回駆動時との回転速度差が所定値以上あれば、負荷トルクが大きく変動したことを意味する。この場合には共振周波数が変動しているときがある。そこで前回駆動時と今回駆動時との回転速度差が所定値以上ある場合には、ＥＥＰＲＯＭ２３に記憶されている起動周波数データｆｓ［ｎ］を全消去し（ｎ＝０）、レンズＣＰＵ２０の制御可能な最高駆動周波数を、今回駆動時の起動周波数データｆｓｃｕｒとして設定し直してＳ７７へ進む（Ｓ７５；Ｙ、Ｓ６５、Ｓ６７）。変数ｎが０より大きくないとき（Ｓ７３；Ｎ）、または前回駆動時と今回駆動時との回転速度差が所定値以上ないときは（Ｓ７５；Ｎ）、Ｓ６５及びＳ６７をスキップしてＳ７７へ進む。前回駆動時と今回駆動時との回転速度差が所定値以上ない場合には、今回のモータ駆動は前回のモータ駆動時とほぼ同じ条件であるとみなせるので、過去のデータを用いて初期駆動周波数データｆｉｎｉｔを算出することができる。Ｓ７７では、起動周波数の記憶及び平均値算出処理を実行し、リターンする。
【００３０】
Ｓ７７で実行される起動周波数の記憶及び平均値算出処理について、図５を参照してより詳細に説明する。この処理に入ると先ず、ＥＥＰＲＯＭ２３に記憶された起動周波数データの個数を示す変数ｎが５以上か否かをチェックする（Ｓ８１）。本実施形態ではＥＥＰＲＯＭ２３に記憶可能な最大個数を５としており、Ｓ８１ではＥＥＰＲＯＭ２３に記憶可能な最大個数まで起動周波数データｆｓ［ｎ］が記憶されているか否かをチェックしている。
【００３１】
変数ｎが５以上でなければ（Ｓ８１；Ｎ）、変数ｎに＋１加算し（Ｓ８３）、ｎ番目の起動周波数データｆｓ［ｎ］に今回駆動時の起動周波数データｆｓｃｕｒを記憶し（Ｓ８７）、ＥＥＰＲＯＭ２３に記憶されている全起動周波数データｆｓ［ｎ］の平均値ｆｓａｖｒを算出してリターンする（Ｓ８９）。
【００３２】
変数ｎが５以上であれば（Ｓ８１；Ｙ）、常に最新のデータを記憶しておくため、最も古い記憶値ｆｓ［１］を削除してから二番目に古い記憶値ｆｓ［２］をｆｓ［１］として記憶し、同様にｆｓ［３］をｆｓ［２］、ｆｓ［４］をｆｓ［３］、ｆｓ［５］をｆｓ［４］として記憶しなおす（Ｓ８５）。そして最新の起動周波数データｆｓ［５］に今回駆動時の起動周波数データｆｓｃｕｒを記憶し（Ｓ８７）、ＥＥＰＲＯＭ２３に記憶されている全起動周波数データの平均値ｆｓａｖｒを算出してリターンする（Ｓ８９）。
【００３３】
Ｓ３１で実行される初期駆動周波数の算出処理について、図６を参照してより詳細に説明する。この処理では、ｎ個の起動周波数データｆｓ［ｎ］の平均値ｆｓａｖｒ及び共振周波数データｆｒをＥＥＰＲＯＭ２３から読み出して、ｆｉｎｉｔ＝ｆｓａｖｒ＋（ｆｓａｖｒ-ｆｒ）×０．１により初期駆動周波数データｆｉｎｉｔを算出する（Ｓ９１）。そして算出した初期駆動周波数データｆｉｎｉｔがレンズＣＰＵ２０の制御可能な最高駆動周波数よりも大きければ、初期駆動周波数データｆｉｎｉｔを最高駆動周波数に設定し直してリターンする（Ｓ９３；Ｙ、Ｓ９５）。算出した初期駆動周波数データｆｉｎｉｔが最高駆動周波数よりも大きくなければ、Ｓ９５をスキップしてリターンする（Ｓ９３；Ｎ）。このように算出した初期駆動周波数データｆｉｎｉｔに基づき初期駆動周波数を設定するので、常に最高駆動周波数から駆動周波数の掃引を行っていた従来に対して、超音波モータ１０が起動するまでの時間を大幅に短縮することができる（図７参照）。
【００３４】
なお本実施形態では、式；ｆｓａｖｒ＋（ｆｓａｖｒ-ｆｒ）×０．１により初期駆動周波数データｆｉｎｉｔを算出しているが、起動周波数データｆｓ［ｎ］の平均値ｆｓａｖｒよりも所定の割合だけ大きい値、例えばｆｓａｖｒ×１．１を初期駆動周波数データｆｉｎｉｔとして設定することもできる。
【００３５】
図９〜図１１は、本装置によるモータ駆動制御処理の第２の実施形態を示している。この実施形態では、ＥＥＰＲＯＭ２３の代わりにＲＡＭ２０ｃを制御処理中のメモリ手段として用い、ＥＥＰＲＯＭ２３をバックアップ用メモリとして用いている。
【００３６】
図９は、第２の実施形態のメイン処理に関するフローチャートである。メイン処理に入ると先ず、モータ駆動制御に関するデータをＥＥＰＲＯＭ２３から読み込んでＲＡＭ２０ｃにメモリする（Ｓ１００）。モータ駆動制御に関するデータには、起動周波数データｆｓ［ｎ］や初期駆動周波数データｆｉｎｉｔなどが含まれている。モータ駆動制御に関するデータをＲＡＭ２０ｃにメモリしたら、Ｓ１１０以降の処理を行なう。Ｓ１１０、Ｓ１３０、Ｓ１５０、Ｓ１７０及びＳ１９０の処理は、上述した図２のＳ１１、Ｓ１３、Ｓ１５、Ｓ１７及びＳ１９の処理と同様なので説明を省略する。以下では、図２の実施形態では実行しない、Ｓ１６０-１及びＳ１６０-２の処理について説明する。Ｓ１６０-１は、駆動開始命令を入力していないとＳ１５０にて判断したとき実行される。Ｓ１６０-１では、駆動開始命令を入力しない状態のままで所定時間が経過したか否かをチェックする。そして所定時間経過していなかったらＳ１３０へ戻り（Ｓ１６０-１；Ｎ）、所定時間経過していたらＲＡＭ２０ｃ内のモータ駆動制御に関するデータをＥＥＰＲＯＭ２３にメモリしてＳ１３０へ戻る（Ｓ１６０-１；Ｙ、Ｓ１６０-２）。
【００３７】
図１０は、Ｓ１９０で実行される駆動処理に関するフローチャートであり、図３の駆動処理とほぼ同じである。すなわち、図１０のＳ２１０、Ｓ２３０及びＳ２７０〜Ｓ３１０は、図３のＳ２１、Ｓ２３及びＳ２７〜Ｓ３１に対応している。これに対し、Ｓ２５０の処理は、共振周波数データｆｒをＥＥＰＲＯＭ２３の代わりにＲＡＭ２０ｃにメモリする点で、図３のＳ２５と異なる。
【００３８】
図１１は、Ｓ２１０で実行されるＵＳＭ起動処理に関するフローチャートであり、図４のＵＳＭ起動処理とほぼ同じである。すなわち、図１１のＳ４１０、Ｓ４５０〜Ｓ５３０、Ｓ５７０〜Ｓ６３０、Ｓ６７０、Ｓ６９０及びＳ７３０〜Ｓ７７０の処理は、図４のＳ４１、Ｓ４５〜Ｓ５３、Ｓ５７〜Ｓ６３、Ｓ６７、Ｓ６９及びＳ７３〜Ｓ７７の処理に対応しており、Ｓ４３０、Ｓ５５０、Ｓ６５０及びＳ７１０の処理が図４とは異なっている。Ｓ４３０では、検出した温度を、ＥＥＰＲＯＭ２３ではなくＲＡＭ２０ｃへメモリする。またＳ５５０及びＳ６５０では、ＥＥＰＲＯＭ２３ではなくＲＡＭ２０ｃに記憶された起動周波数データｆｓ［ｎ］を全て消去する。そしてＳ７１０では、測定した回転速度を、ＥＥＰＲＯＭ２３ではなくＲＡＭ２０ｃにメモリする。
【００３９】
このように制御中のメモリ手段としてＲＡＭ２０ｃを用いれば、ＥＥＰＲＯＭ２３を使用する場合よりも処理速度が高速化するため実際的である。なお、電源が切断されたり所定時間以上なにも操作されなかった場合には、周囲環境が変化しているおそれがあるため、モータ駆動制御に関するデータを保持する必要はないとみなして全データを消去する構成にすることもできる。すなわち、モータ駆動制御に関するデータのバックアップをＥＥＰＲＯＭ２３にとる必要がなくなり、ＥＥＰＲＯＭ２３が不要となる。
【００４０】
以上では、本装置により制御される超音波モータがカメラのオートフォーカスレンズを駆動する実施形態について説明したが、超音波モータの被駆動体としては、カメラのオートフォーカスレンズだけでなく、ズームレンズや他の光学機器でもよいのは勿論である。特に、超音波モータを起動-停止-起動させる動作を頻繁に行う機器に本装置を適用すれば、より顕著な効果を発揮する。
【図面の簡単な説明】
【００４１】
【図１】本発明を適用した超音波モータ駆動制御装置の制御系を示すブロック図である。
【図２】同装置のメイン処理に関するフローチャートである。
【図３】同装置の駆動処理に関するフローチャートである。
【図４】同装置のＵＳＭ起動処理に関するフローチャートである。
【図５】同装置の起動周波数の記憶及び平均値算出処理に関するフローチャートである。
【図６】同装置の初期駆動周波数データ算出処理に関するフローチャートである。
【図７】超音波モータの回転速度変化を時系列で示した図である。
【図８】（ａ）は超音波モータの駆動周波数に対する回転数の相関特性を示す図、（ｂ）は超音波モータの駆動周波数に対する振幅電圧の相関特性を示す図である。
【図９】図２とは別実施例のメイン処理に関するフローチャートである。
【図１０】図３とは別実施例の駆動処理に関するフローチャートである。
【図１１】図４とは別実施例のＵＳＭ起動処理に関するフローチャートである。
【符号の説明】
【００４２】
１０  超音波モータ（ＵＳＭ）
２０  レンズＣＰＵ
２０ａ  Ａ／Ｄ変換入力ポート
２０ｂ  カウンタ
２１  パルスエンコーダ
２３  ＥＥＰＲＯＭ
３０  カメラＣＰＵ（温度判定手段）
Ｒｔ  サーミスタ（温度検出手段）
【図１】
0004612662.tif 000002
【図２】
0004612662.tif 000003
【図３】
0004612662.tif 000004
【図４】
0004612662.tif 000005
【図５】
0004612662.tif 000006
【図６】
0004612662.tif 000007
【図７】
0004612662.tif 000008
【図８】
0004612662.tif 000009
【図９】
0004612662.tif 000010
【図１０】
0004612662.tif 000011
【図１１】
0004612662.tif 000012