図面を参照して説明する。なお、複数の実施形態において、共通する要素又は関連する要素には同一の符号を付与するものとする。
(第1実施形態)
先ず、図1に基づき、ブラシレスモータ200と、ブラシレスモータ200を駆動する装置である駆動装置100の概略構成について説明する。
ブラシレスモータ200は、ステータ210と、ステータに対して相対回転可能に構成された図示しないロータと、を有している。ステータ210は、複数のコイル212を有している。本実施形態において、ステータ210は、コイル212として、U相コイル212a、W相コイル212c、及び、W相コイル212cを有している。ロータは、マグネットロータとされている。
ブラシレスモータ200は、例えば、燃料ポンプの駆動源に適用できる。すなわち、駆動装置100は、ブラシレスモータ200の動作を制御することで燃料ポンプの動作を制御する電子装置に適用できる。
駆動装置100は、中性点電圧生成部10、複数のコンパレータ12、位置検出部14、通電パターン生成部16、Duty算出部18、PWM出力部20、インバータ回路22、シャント抵抗30、及び、過電流判定部32を備えている。なお、駆動装置100は、ロータの回転位置を検出するためのセンサを備えていない。よって、駆動装置100は、センサレス駆動方式でブラシレスモータ200を駆動する。
中性点電圧生成部10は、ステータ210における各相のコイル212の端子電圧に基づき、中性点電圧に相当する電圧を生成するものである。中性点電圧とは、コイル212の共通接続点である中性点の電圧である。以下、中性点電圧生成部10が生成する電圧を中性点相当電圧と称する。中性点電圧生成部10は、ステータ210における各相のコイル212の端子と接続されている。中性点電圧生成部10により生成された中性点相当電圧は、各コンパレータ12に入力される。
コンパレータ12は、位置検出部14が各相のコイル212に生じる誘起電圧を特定するための信号を出力するものである。駆動装置100は、コンパレータ12として、U相コンパレータ12a、V相コンパレータ12b、及び、W相コンパレータ12cを有している。
U相コンパレータ12aは、ステータ210におけるU相コイル212aの端子と接続されており、U相コイル212aの端子電圧と中性点相当電圧とを比較する。V相コンパレータ12bは、ステータ210におけるV相コイル212bの端子と接続されており、V相コイル212bの端子電圧と中性点相当電圧とを比較する。W相コンパレータ12cは、ステータ210におけるW相コイル212cの端子と接続されており、W相コイル212cの端子電圧と中性点相当電圧とを比較する。
各コンパレータ12は、接続されたコイル212の端子電圧と中性点相当電圧との比較結果に応じた出力信号を位置検出部14に出力する。コンパレータ12の出力信号のレベルは、端子電圧と中性点相当電圧との大小関係に応じてHigh又はLowとされる。
ロータが回転している場合に、非通電相のコイル212の端子電圧では、ロータが所定角度回転する度に誘起電圧が生じる。そして、コイル212の端子電圧に誘起電圧が生じる度に、端子電圧が中性点電圧を跨ぐように変化する。端子電圧が中性点電圧を跨ぐタイミングが、ゼロクロスのタイミングである。
ブラシレスモータ200が120度通電方式で駆動されている場合、各コイル212は、電気角で120度の通電、及び、60度の非通電を順に繰り返す。この場合、コイル212における60度の非通電期間では、端子電圧と中性点相当電圧との大小関係が逆転して、コンパレータ12の出力信号のレベルが変化する。これによれば、下記のスパイクノイズが生じる期間を除くと、ロータが電気角で180度回転する度に、コンパレータ12の出力信号が立ち下がり及び立ち上がりを順に繰り返す。
位置検出部14は、各コンパレータ12の出力信号に基づき、ロータの回転位置を特定するものである。詳述すると、位置検出部14は、コンパレータ12の出力信号の立ち上がりエッジ及び立ち下がりエッジの少なくとも一方に基づき、コイル212の端子電圧に誘起電圧が生じているか否か、及びロータの回転位置を検出する。
位置検出部14は、ロータの回転位置に応じた位置検出信号を生成し、生成した位置検出信号を通電パターン生成部16及びDuty算出部18に出力する。位置検出信号は、位置検出部14が誘起電圧を特定する度に値が変化する信号である。すなわち、位置検出信号は、位置検出部14がロータの回転位置を特定したか否かを示している。
通電パターン生成部16は、ステータ210の3相のコイル212への通電パターンを生成して出力するものである。通電パターンとは、ステータ210の3相のコイル212のうちのどの相を通電相とするか、及び、各相の通電タイミングを含む信号である。通電パターン生成部16は、位置検出信号が変化したタイミングを基準にして通電パターンを生成する。通電パターン生成部16は、通電パターンをPWM出力部20に出力する。
Duty算出部18は、Duty値を算出するものである。Duty値は、PWM出力部20がインバータ回路22に対してDuty制御する際に用いられる。Duty値は、Duty比と称することもできる。Duty算出部18は、位置検出信号に基づき、ロータの回転速度の現在値を算出する。またDuty算出部18には、ロータの回転速度の目標値が予め決められているか、或いは外部から入力される。Duty算出部18は、ロータの回転速度の現在値と、目標値と、の差に基づき、Duty値を算出する。そしてDuty算出部18は、算出したDuty値をPWM出力部20に出力する。
PWM出力部20は、PWM信号をインバータ回路22に出力するものである。すなわちPWM出力部20は、インバータ回路22に対してDuty制御を行う。PWM出力部20は、通電パターンとDuty値とを合成してPWM信号を生成する。
インバータ回路22は、3つの素子モジュール24を有している。詳述すると、インバータ回路22は、素子モジュール24として、U相素子モジュール24a、V相素子モジュール24b、及び、W相素子モジュール24cを有している。
各素子モジュール24は、直列接続された2つのNチャネル型のMOSFET26a,26bと、ダイオード28a,28bと、を有している。各MOSFET26aのドレインは、バッテリと接続されている。各MOSFET26bのソースは、シャント抵抗30を介して接地されている。各MOSFET26a,26bのドレイン及びソースの間には、ダイオード28a,28bが接続されている。MOSFET26a,26bの共通接続点は、インバータ回路22の出力端子となり、ステータ210における各相のコイル212の端子に接続されている。
MOSFET26a,26bのゲートは、PWM出力部20と接続されている。MOSFET26a、26bは、PWM信号に応じてオンオフ動作する。そして、MOSFET26a,26bのオンオフ動作に応じて、コイル212の通電相及び非通電相が決定される。通電パターン生成部16、Duty算出部18、及び、インバータ回路22は、特許請求の範囲に記載の通電制御部に相当する。
駆動装置100は、ブラシレスモータ200の起動時において、ロータの回転位置によらない初期駆動制御を行う。初期駆動において駆動装置100は、ロータを回転させ、非通電相のコイル212の端子電圧を監視して誘起電圧を特定する。これにより、駆動装置100は、ロータの回転位置を検出する。そして、駆動装置100は、ロータの回転位置を検出すると、初期駆動制御を終了するとともに、検出したロータの回転位置に応じてコイル212の通電を制御する誘起駆動制御を行う。初期駆動制御及び誘起駆動制御の具体的な処理手順については、下記で詳細に説明する。
シャント抵抗30は、コイル212に流れる電流を検出するために配置されている。シャント抵抗30は、各MOSFET26bにおけるソースの共通接続点と、グランドと、の間に配置されている。コイル212が通電した場合に、通電相のコイル212に流れる電流がシャント抵抗30にも流れる。すなわち、シャント抵抗30の両端電圧は、コイルに流れる電流の値に対応している。シャント抵抗30は、特許請求の範囲に記載の電流検出部に相当する。シャント抵抗30の両端電圧は、特許請求の範囲に記載の電流検出信号に相当する。
過電流判定部32は、コイル212に過電流が流れているか否かを判定するものである。過電流判定部32は、シャント抵抗30の両端電圧と、予め設定された閾値と、を比較する。過電流判定部32は、シャント抵抗30の両端電圧が閾値を超えた場合に、コイル212に過電流が流れていると判定する。
過電流判定部32は、コイル212に過電流が流れているか否かの判定結果を通電パターン生成部16及びPWM出力部20に出力する。通電パターン生成部16は、過電流判定部32の判定結果に応じて、通電パターンを変化させる。また、PWM出力部20は、過電流判定部32の判定結果に応じて、コイル212の通電相及び非通電相を決定する。
位置検出部14、通電パターン生成部16、Duty算出部18、PWM出力部20、及び、過電流判定部32は、例えば、マイコンによって構成されている。言い換えると、位置検出部14、通電パターン生成部16、Duty算出部18、PWM出力部20、及び、過電流判定部32の夫々は、マイコンの一部とされている。
次に、図2に基づき、初期駆動制御の処理手順について説明する。
駆動装置100は、ロータの回転を開始する際、すなわちブラシレスモータ200の起動時に、初期駆動制御を開始する。初期駆動制御では、先ず、Duty算出部18がDuty値を初期化する(S10)。すなわち、Duty算出部18が、Duty値を予め設定された初期値にする。そして、Duty算出部18は、初期化したDuty値をPWM出力部20に出力する。
そして、通電パターン生成部16は、U相コイル212aからV相コイル212bへ電流を流す通電パターンを生成し、PWM出力部20に出力する。PWM出力部20は、Duty値及び通電パターンを合成し、PWM信号をインバータ回路22に出力する。これにより、インバータ回路22は、U相コイル212aからV相コイル212bへ電流を流すように、U相コイル212a及びV相コイル212bを通電させる(S12)。
次に、過電流判定部32は、S12によるコイル212の通電により、U相コイル212a及びV相コイル212bに過電流が流れているか否かを判定する(S14)。通電相のコイル212に対してロータが動き難い位置とされている場合であっても、Duty値が小さ過ぎると、コイル212に過電流は流れない。すなわち、コイル212に過電流は流れない場合は、コイル212の通電によりロータが回っている、或いはDuty値が小さ過ぎる、と判断できる。
S14でコイル212に過電流が流れていないと判定されると、位置検出部14は、ロータの回転位置を特定したか否かを判定する(S16)。位置検出部14は、コイル212の端子電圧に対して誘起電圧を特定しない場合に、ロータの回転位置を特定していないとみなし、位置検出信号の値を変化させない。
Duty値が小さ過ぎてロータが十分に回っていない場合には、位置検出部14は、S16においてロータの回転位置を特定しない。S16において位置検出部14がロータの回転位置を特定しないと判定すると、Duty算出部18はDuty値を増加させる(S18)。S18においてDuty算出部18は、予め設定された所定の割合でDuty値を増加させる。
Duty算出部18がS18でDuty値を増加させた後、PWM出力部20は、増加したDuty値に基づきPWM信号を出力する。これにより、S12の処理に戻り、インバータ回路22がU相コイル212a及びV相コイル212bを通電させる。
以上によれば、コイル212に過電流が流れない場合、駆動装置100は、S12〜S18の処理を繰り返し行う。これによれば、PWM出力部20は、U相コイル212a及びV相コイル212bに対するDuty制御において、Duty値を初期値から時間経過とともに増加させる。
S14でコイル212に過電流が流れていると過電流判定部32が判定した場合、通電相であるU相コイル212a及びV相コイル212bに対してロータが動き難い位置に配置されている可能性がある。よって、PWM出力部20は、S12で通電させていたU相コイル212a及びV相コイル212bの通電を停止する(S20)。
駆動装置100では、初期駆動制御の開始からS20におけるコイル212の通電停止までの時間を4ms以内とする。言い換えると、初期駆動制御の開始からS20におけるコイル212の通電停止までの時間が4ms以内となるように、Duty値の初期値、及び、S18でDuty値を増加させる値が設定されている。Duty値の初期値は、例えば、10%とされている。Duty算出部18がS18でDuty値を増加させる値は、例えば、5%とされている。
PWM出力部20がS20の処理を行った後、駆動装置100は、S10〜S20で行ったU相コイル212a及びV相コイル212bに対する処理と同じ処理を、S22〜S32でV相コイル212b及びW相コイル212cに対して行う。
PWM出力部20がS20で通電を停止した後、Duty算出部18はDuty値を初期化する(S22)。このとき、Duty算出部18は、Duty値を、S10で用いた初期値にする。これにより、Duty算出部18がS18で増加させていたDuty値は、S10の初期値に戻る。
そして通電パターン生成部16は、V相コイル212bからW相コイル212cへ電流が流れる通電パターンを生成し、PWM出力部20に出力する。PWM出力部20は、通電パターンとDuty値とを合成し、インバータ回路22にPWM信号を出力する。これにより、インバータ回路22は、V相コイル212bからW相コイル212cへ電流を流すようにV相コイル212b及びW相コイル212cを通電させる(S24)。
次に、過電流判定部32は、S24によるコイル212の通電により、コイル212に過電流が流れているか否かを判定する(S26)。そして、S26でコイル212に過電流が流れていないと判定されると、位置検出部14がロータの回転位置を特定できたか否かを判定する(S28)。
S28において位置検出部14がロータの回転位置を特定しない場合、Duty算出部18はDuty値を増加させる(S30)。S30においてDuty算出部18がDuty値を増加させる割合は、例えば、S18で増加させた割合と同じとする。
Duty算出部18がS30でDuty値を増加させた後、PWM出力部20は、増加したDuty値に基づきPWM信号を出力する。これにより、S24の処理に戻り、インバータ回路22がV相コイル212b及びW相コイル212cを通電させる。
以上によれば、コイル212に過電流が流れない場合、駆動装置100は、S24〜S30の処理を繰り返し行う。これによれば、PWM出力部20は、通電を切り換えた後のコイル212に対するDuty制御において、Duty値を初期値から時間経過とともに増加させる。
S26でコイル212に過電流が流れていると過電流判定部32が判定した場合、通電相であるV相コイル212b及びW相コイル212cに対してロータが動き難い位置に配置されている可能性がある。よって、PWM出力部20は、S26で通電させていたV相コイル212b及びW相コイル212cの通電を停止する(S32)。
駆動装置100では、S20におけるコイル212の通電停止からS32におけるコイル212の通電停止までの時間を4ms以内とする。言い換えると、S20におけるコイル212の通電停止からS32におけるコイル212の通電停止までの時間が4ms以内となるように、Duty値の初期値、及び、S30でDuty値を増加させる値が設定されている。
PWM出力部20がS32の処理を行った後、駆動装置100は、S22〜S32で行ったV相コイル212b及びW相コイル212cに対する処理と同じ処理を、S34〜S44でW相コイル212c及びU相コイル212aに対して行う。
PWM出力部20がS32で通電を停止した後、Duty算出部18はDuty値を初期化する(S34)。このとき、Duty算出部18は、Duty値を、S10で用いた初期値、すなわちS22で用いた初期値にする。これにより、Duty算出部18がS30で増加させていたDuty値は、S22の初期値に戻る。
そして通電パターン生成部16は、W相コイル212cからU相コイル212aへ電流が流れる通電パターンを生成し、PWM出力部20に出力する。PWM出力部20は、通電パターンとDuty値とを合成し、PWM信号を出力する。これにより、インバータ回路22は、W相コイル212cからU相コイル212aへ電流を流すように、W相コイル212c及びU相コイル212aを通電させる(S36)。
次に、過電流判定部32は、S36によるコイル212の通電により、コイル212に過電流が流れているか否かを判定する(S38)。そして、S38でコイル212に過電流が流れていないと判定されると、位置検出部14がロータの回転位置を特定できたか否かを判定する(S40)。
S40において位置検出部14がロータの回転位置を特定しない場合、Duty算出部18はDuty値を増加させる(S42)。S42においてDuty算出部18がDuty値を増加させる割合は、例えば、S18及びS30で増加させた割合と同じとする。
Duty算出部18がS42でDuty値を増加させた後、PWM出力部20は、増加したDuty値に基づきPWM信号を出力する。これにより、S36の処理に戻り、インバータ回路22がW相コイル212c及びU相コイル212aを通電させる。
以上によれば、コイル212に過電流が流れない場合、駆動装置100は、S36〜S42の処理を繰り返し行う。これによれば、PWM出力部20は、S24〜S30の処理と同様に、通電を切り換えた後のコイル212に対するDuty制御において、Duty値を初期値から時間経過とともに増加させる。
また、S38でコイル212に過電流が流れていると過電流判定部32が判定した場合、通電相のコイル212に対してロータが回り難い位置に配置されているのではなく、ブラシレスモータ200がロック状態になっているとみなすことができる。ロック状態とは、何らかの理由によってロータが回転し難くなっているブラシレスモータ200の状態である。
S38でコイル212に過電流が流れていると過電流判定部32が判定した場合、PWM出力部20は、ブラシレスモータ200がロック状態にされているとみなし、S36で通電させていたW相コイル212c及びU相コイル212aの通電を停止する(S44)。
駆動装置100では、S32におけるコイル212の通電停止からS44におけるコイル212の通電停止までの時間を4ms以内とする。言い換えると、S32におけるコイル212の通電停止からS44におけるコイル212の通電停止までの時間が4ms以内となるように、Duty値の初期値、及び、S42でDuty値を増加させる値が設定されている。以上によれば本実施形態では、ブラシレスモータ200がロック状態にある場合、駆動装置100が、初期駆動制御の開始から12ms以内にロック状態であると判定する。
駆動装置100は、S44の処理を行った後、初期駆動制御を終了し、誘起駆動制御を行わない。S44の後において駆動装置100は、例えば、ブラシレスモータ200がロック状態にあることを示す信号を外部に出力したり、ブラシレスモータ200がロック状態にあることを前提にした制御、例えば所定時間後に再度初期駆動制御を開始すること等を行う。
一方、S16、S28、及び、S40において位置検出部14がロータの回転位置を特定した場合、初期駆動制御を終了するとともに誘起駆動制御を開始する。
次に、図3〜図6に基づき、誘起駆動制御の処理手順について説明する。
誘起駆動制御が開始されると、PWM出力部20は、現在の時刻が回転チェックタイミングか否かを判定する(S50)。回転チェックタイミングとは、駆動装置100がロータの回転を停止させて、ロータの回転位置を特定する期間である。回転チェックタイミングを設けることで、駆動装置100は、ロータの回転位置を誤特定している場合に、ロータの回転位置及び回転速度を修正できる。回転チェックタイミングは、例えば、誘起駆動制御開始後の経過時間や、ロータの回転速度が安定しているか否かに基づき設定される。また、駆動装置100は定期的に回転チェックタイミングを設けてもよい。
PWM出力部20は、S50で回転チェックタイミングではないと判定すると、ロータの回転位置に応じたPWM信号を出力する。これにより、インバータ回路22がコイル212を通電させる(S52)。PWM出力部20がS52で用いるロータの回転位置は、初期駆動制御又は誘起駆動制御においてロータの回転位置を特定する処理のうちのS52の直近の処理で特定されたロータの回転位置である。S52においてPWM出力部20は、インバータ回路22に対し、例えば、120度通電方式により矩形波駆動を行う。
次に、位置検出部14は、S52で非通電相とされたコイル212に誘起電圧が生じているか否かをコンパレータ12の出力信号に基づき判定する。これにより位置検出部14は、ロータの回転位置を特定したか否かを判定する(S54)。そして位置検出部14は、S54の判定結果に応じた位置検出信号を通電パターン生成部16及びPWM出力部20に出力する。
S54で位置検出部14がロータの回転位置を特定しない場合、PWM出力部20はS50の処理に戻る。以上によれば、回転チェックタイミングではなく、且つ、位置検出部14がロータの回転位置を特定しない場合、駆動装置100は、S50〜S54の処理を繰り返し行う。
ところで、コイル212が通電相から非通電相にされたタイミング、すなわちMOSFET26a,26bがオンからオフにされたタイミングでは、ダイオード28a,28bに還流電流が流れる。この還流電流により、対応するコイル212の端子電圧にスパイクノイズが生じる。そのため、コンパレータ12の出力信号は、誘起電圧が生じたタイミングに加えて、スパイクノイズが生じたタイミングにおいても変化する。
これに対し、図4〜図6に示すように、位置検出部14は、スパイクノイズによりロータの回転位置を誤特定しないように、各コンパレータ12の出力信号に対して監視期間を設けている。なお、コイル212が非通電とされた期間のうちの監視期間以外の期間を、マスク期間と称する。
位置検出部14は、監視期間においてのみコンパレータ12の出力信号の変化を監視し、マスク期間における出力信号の変化については位置検出信号に反映させない。位置検出部14は、監視期間として、U相コンパレータ12aの出力信号を監視する監視期間Tu、V相コンパレータ12bの出力信号を監視する監視期間Tv、及び、W相コンパレータ12cの出力信号を監視する監視期間Twを有している。
図4では、W相コイル212cに誘起電圧が生じているか否かを示すW相コンパレータ12cの出力信号を図示している。位置検出部14は、W相コイル212cが非通電相とされてから所定時間が経過するまでマスク期間を設けている。そして、位置検出部14は、W相コイル212cが非通電相とされたタイミングから所定時間が経過した後に監視期間Twを設け、W相コイル212cが通電すると監視期間Twを終了する。位置検出部14は、W相コイル212cに対して監視期間Twを設けたのと同様の方法で、U相コイル212aに対して監視期間Tuを設けるとともに、V相コイル212bに対して監視期間Tvを設ける。
本実施形態において、位置検出部14は、監視期間におけるコンパレータ12の出力信号の立ち上がりエッジを特定することで、コイル212の端子電圧に生じる誘起電圧を特定する。詳述すると、位置検出部14は、監視期間においてコンパレータ12の出力信号がHighである場合に、コンパレータ12の出力信号の立ち上がりエッジを特定したと判定する。すなわち、位置検出部14は、監視期間においてコンパレータ12の出力信号がHighの場合に、誘起電圧を特定したと判定するとともに、ロータの回転位置を特定したと判定する。
S54で位置検出部14がロータの回転位置を特定した場合、Duty算出部18は、位置検出信号に基づきロータの回転速度の現在値を算出する(S56)。ロータの回転速度は、S56の直前のS54で位置検出部14が検出したと判定したロータの回転位置と、直前のS54の1つ前に検出されたロータの回転位置と、の回転角度の差を、回転するのに掛かった時間で割った値である。
次に、Duty算出部18は、S56で算出した回転速度に基づき、Duty値を算出する(S58)。詳述すると、Duty算出部18は、ロータの回転速度の現在値が目標値となるように、Duty値を算出する。Duty算出部18は、算出したDuty値をPWM出力部20に出力する。
次に、PWM出力部20は、S58で算出されたDuty値が0%であるか否かを判定する(S60)。Duty算出部18は、例えばロータの回転を停止させる場合にS58でDuty値を0%とする。PWM出力部20は、S60でDuty値が0%であると判定すると、S52で通電させていたコイル212の通電を停止する(S62)。PWM出力部20は、S62の処理を行った後、誘起駆動制御を終了する。
PWM出力部20は、S60でDuty値が0%ではないと判定すると、S50の処理に戻る。以上によれば、回転チェックタイミングではなく、且つ、Duty値が0%ではない場合、駆動装置100は、S50〜S60の処理を繰り返し行う。
上記したように、位置検出部14は、コンパレータ12の出力信号に対して監視期間を設けているため、マスク期間においてコンパレータ12の出力信号を監視しない。そのため、マスク期間において、コンパレータ12の出力信号が想定しているように変化していない場合がある。すなわち、マスク期間において、ロータが想定しているように回転していない場合がある。
この場合、例えば位置検出部14は、1回転毎にロータの回転位置を特定するはずが、1/2回転毎や、1/3回転毎に回転位置を特定してしまう虞がある。すなわち、位置検出部14は、監視期間を設けたことにより、ロータの回転位置を誤特定する虞がある。この場合、Duty算出部18は、ロータの回転速度の現在値を、実際の速度よりも2倍速い速度や、3倍速い速度として誤って算出してしまう。すなわち、ロータの回転速度の現在値が、駆動装置100の想定している速度の1/2や、1/3となってしまう。
この場合には、S58におけるDuty値の算出や、S52におけるロータの回転位置に応じたコイル212の通電が、正常に行われない。図5では、ロータの回転位置の誤特定により、ロータの回転速度が駆動装置100の想定している速度の1/2となっている場合について示している。
駆動装置100は、ロータの回転位置の誤特定に対する対策として、上記した回転チェックタイミングを設けている。PWM出力部20は、S50で現在の時刻が回転チェックタイミングであると判定すると、ステータ210における3相全てのコイル212の通電を停止する(S64)。
図6では、U相コイル212a及びV相コイル212bに対する通電の後に回転チェックタイミングとなり、PWM出力部20がS64で全てのコイル212に対する通電を停止させている。以下、コイル212の通電が停止された期間を、通電停止期間と示す。通電停止期間の開始直後には端子電圧にスパイクノイズが生じる。そのため、位置検出部14は、通電停止期間が開始してから所定期間が経過するまで、コンパレータ12の出力信号にマスク期間を設けている。
通電停止期間の開始から所定期間経過後、位置検出部14は、コンパレータ12の出力信号に監視期間を設けてロータの回転位置を特定する(S66)。S66において位置検出部14は、3つのコンパレータ12の出力信号を監視する。すなわち、通電停止期間において位置検出部14は、3相全てのコイル212の端子電圧に対し、誘起電圧が生じるか否かを判定する。
S66において位置検出部14は、例えば、何れか1つのコンパレータ12の出力信号に変化があった場合に、ロータの回転位置を特定したと判定する。位置検出部14は、コンパレータ12の出力信号に変化がない場合、ロータの回転位置を特定しないと判定し、S66の判定に戻る。すなわち、コンパレータ12の出力信号に変化がない場合、位置検出部14はS66の判定を繰り返し行う。
図6に示す例では、通電停止期間の開始から所定時間経過後に、V相コンパレータ12bの出力信号に基づき位置検出部14がS66でロータの回転位置を特定したと判定する。位置検出部14は、S66でロータの回転位置を検出した場合、検出したロータの回転位置に応じて位置検出信号の値を変化させる。
PWM出力部20は、S66において位置検出部14によりロータの回転位置が特定された場合であっても、全てのコイル212に対する通電停止を継続する(S68)。すなわち、S66でロータの回転位置が特定された場合であっても、PWM出力部20は特定されたロータの回転位置に応じた通電を行わない。
次に、位置検出部14は、S54の処理を行い、ロータの回転位置を特定したか否かを判定する。S68の直後のS54の処理が行われるタイミングでは、3相全てのコイル212に対する通電が停止されている。S68の直後のS54において位置検出部14は、何れか1つのコンパレータ12の出力信号に変化があった場合に、例えばU相コンパレータ12aの出力信号に変化があった場合に、ロータの回転位置を特定したと判定する。
S68の直後のS54においても、S52の直後のS54における処理と同様に、ロータの回転位置が特定された場合にS56の処理へ進み、ロータの回転位置を特定されない場合にS50の処理に進む。なお、S68の直後のS54でロータの回転位置が特定されない場合であっても、回転チェックタイミングの期間内であれば、S66の処理が再び行われ、通電停止期間にロータの回転位置が特定される。
以上によれば、回転チェックタイミングの期間内において位置検出部14は、3相全てのコイル212の通電が停止されている状態で、ロータの回転位置を複数回特定する。通電停止期間では、3相全てのコイル212の通電が継続して停止されているため、コイル212の端子電圧にスパイクノイズは生じない。そのため、通電停止期間において位置検出部14は、ロータの回転位置を特定した後、さらに回転位置を特定する前にマスク期間を設けない。言い換えると、位置検出部14は、ロータの回転位置を複数回特定するにあたり、コンパレータ12の出力信号に対して、途切れない1回の監視期間を設ける。すなわち、位置検出部14は、通電停止期間のうちの途切れない1回の監視期間で、非通電相とされた複数のコイル212について誘起電圧の特定を複数回行う。
図6に示す例において、位置検出部14は、通電停止期間でU相コンパレータ12aの出力信号がLowからHighになっていることに基づき、S54でロータの回転位置を特定したと判定する。そして、位置検出部14は、通電停止期間において2回目のロータの回転位置の特定をすると、特定したロータの回転位置に応じて位置検出信号を変化させる。そのため、Duty算出部18は、S56において、通電停止期間において特定されたロータの2つの回転位置に基づき、ロータの回転速度の現在値を算出する。これによれば、Duty算出部18は、ロータの回転速度の現在値を誤って算出していた場合に正しい値に修正できる。
この場合Duty算出部18は、S56と同様に、S58においてDuty値を誤って算出していた場合に正しい値に修正できる。そして、Duty算出部18は、修正したDuty値をPWM出力部20に出力する。
また、位置検出部14が通電停止期間においてS54で2回目のロータの回転位置の特定をすると、通電パターン生成部16が通電パターンを生成する。このとき通電パターン生成部16は、通電停止期間において特定されたロータの2つの回転位置に基づき、通電パターンを生成する。これにより、通電パターン生成部16は、誤った通電パターンを生成していた場合に正しいパターンに修正できる。
次に、Duty値が0%ではなく、且つ、現在の時刻が回転チェックタイミングではない場合、PWM出力部20は、S52の処理を行う。このときPWM出力部20は、通電停止期間において算出されたDuty値と、通電停止期間において生成された通電パターンと、を合成し、ロータの回転位置に応じた通電を行う。これにより、PWM出力部20は、正しい通電パターン及び正しいDuty値を用いてコイル212を通電させることができる。
なお、回転チェックタイミングにおいてS66でロータの回転位置が特定された後で、S54でロータの回転位置が特定されない場合に、時間経過が経過することで、次の回転位置が特定されずに回転チェックタイミングが終了する場合がある。この場合には、通電停止期間にロータの回転位置が1回しか特定されない。また、回転チェックタイミングの期間内に、S66でロータの回転位置が特定されるとともにS54で回転位置が特定されないことが繰り返されて、通電停止期間に回転位置が3回以上特定されることもある。
次に、上記した駆動装置100の効果について説明する。
コイル212が通電しているにもかかわらず通電相のコイル212との相対位置に応じてロータが回転しない場合には、インピーダンスが小さくなり、コイル212に過電流が流れることとなる。これに対し本実施形態の初期駆動制御では、通電によってコイル212に過電流が流れた場合に、通電パターン生成部16が、通電相のコイル212との相対位置に応じてロータが回転していないとみなして、コイル212の通電パターンを切り換える。
そして、切り換えられた通電パターンに基づきPWM出力部20がコイル212を通電させることで、通電相のコイル212に対するロータの相対位置を変化させることができる。これにより、通電相のコイル212との相対位置に応じてロータが回転しないのを抑制できる。以上によれば、駆動装置100は、初期セットを行うことなく、ブラシレスモータ200を起動させることができる。よって、ブラシレスモータ200の起動時間が長くなるのを抑制できる。
ところで、ロータが回転していない状態又はロータの回転速度が遅い状態では、インピーダンスが小さく、コイル212に過電流が生じ易い。すなわち、ロータの回転開始時には、コイル212に過電流が生じ易い。これに対し、Duty算出部18がDuty値を小さくすると、コイル212に過電流は流れ難いが、ロータが回転し難く、位置検出部14がロータの回転位置を特定し難い。
これに対して本実施形態では、初期駆動制御においてDuty算出部18が、コイル212の通電開始時から時間経過とともにDuty値を増加させる。また、Duty算出部18は、過電流によりコイル212の通電が切り換えられた場合に、Duty値を初期化するとともに、通電が切り換えられたときから時間経過とともにDuty値を増加させる。これによれば、駆動装置100は、ロータの回転開始時において、Duty値を小さくして、コイル212に過電流が流れるのを抑制しつつ、ロータを回転させることができる。また、駆動装置100は、ロータの回転が開始してコイル212に過電流が流れ難い状態になると、Duty値を大きくしてロータの回転位置が特定できないのを抑制できる。
また、本実施形態の駆動装置100は、初期駆動制御において、過電流によりコイル212の通電パターンを切り換えた後においてもコイル212に過電流が流れている場合、ブラシレスモータ200がロック状態にあると判定する。これによれば、ブラシレスモータ200がロック状態であるか否かを判定するためのロック検出手段を駆動装置100に設ける必要がない。
また、本実施形態において位置検出部14は、通電停止期間のうちの途切れない1回の監視期間で、非通電相とされた複数のコイル212について誘起電圧の特定を複数回行う。これによれば、マスク期間においてロータが想定しているように回転していない場合であっても、駆動装置100は、ロータの回転位置及び回転速度を正しい値に修正できる。よって、PWM出力部20は、通電停止期間の経過後において、修正されたロータの回転位置及び回転速度に基づき、コイル212の通電を制御できる。
(その他実施形態)
以上、本発明の好ましい実施形態について説明したが、本発明は上記実施形態になんら制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することが可能である。
上記実施形態では、駆動装置100が、初期駆動制御において時間経過とともにDuty値を増加させる例を示したが、これに限定するものではない。駆動装置100は、初期駆動制御においてDuty値を一定としてもよい。
上記実施形態では、駆動装置100が、S38でコイル212に過電流が流れていると判定すると、ブラシレスモータ200がロック状態であると判定する例を示した。しかしながら、これに限定するものではない。駆動装置100は、S38でコイル212に過電流が流れていると判定すると、S10の処理に戻ってもよい。
上記実施形態においてインバータ回路22は、2つのMOSFET26a,26b及び2つのダイオード28a,28bを有する3つの素子モジュール24から構成された例を示したが、これに限定するものではない。インバータ回路22は、PWM出力部20からのPWM信号に応じてコイル212を通電させるものであればよい。
上記実施形態では、ステータ210が3つのコイル212を有する例を示したが、これに限定されるものではない。コイル212の数は複数であればよい。