(57)【特許請求の範囲】
【請求項１】
モータの回転位置に応じて生成するＰＷＭ信号の状態を遷移させる演算コアと、
ドライバ回路を介して前記ＰＷＭ信号をモータに出力する出力インタフェースと、
前記ドライバ回路が前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した比較対象検出信号と前記３相の駆動信号の中点電圧を示すセンタータップ電圧、又は、各相巻き線端子から接地電位に接続された分圧抵抗網により合成されたアーティフィシャルセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、
前記コンパレータの出力信号の値に基づきコンパレータ積分値を増減し、
前記コンパレータ積分値がカウント初期値に達したことに応じて前記モータの回転位置が遷移したことを検出し、
当該検出結果に応じて、前記ＰＷＭ信号の状態を次状態に遷移させるモータの駆動制御プログラム。
【請求項２】
前記ＰＷＭ信号の状態が遷移した後の所定の期間は前記コンパレータの出力結果によらず前記コンパレータ積分値をカウントアップ又はカウントダウンする請求項１に記載のモータの駆動制御プログラム。
【請求項３】
前記所定の期間は、前記ＰＷＭ信号の状態が維持される一期間の所定の割合の期間として予め設定される請求項２に記載のモータの駆動制御プログラム。
【請求項４】
前記モータの回転位置の遷移が検出されたことに応じて選択する前記比較対象検出信号を切り換える請求項１乃至３のいずれか１項に記載のモータの駆動制御プログラム。
【請求項５】
前記ドライバ回路は、電源配線と接地配線との間にハイサイドトランジスタとローサイドトランジスタとが直列に接続される３組の駆動段回路を有し、前記ＰＷＭ信号により選択された２組の前記駆動段回路の前記ハイサイドトランジスタと前記ローサイドトランジスタとが排他的に導通状態に制御され、
前記比較対象検出信号は、前記３組の駆動段回路のうち非選択の駆動段回路の出力ノードに生成される駆動信号である請求項１乃至４のいずれか１項に記載のモータの駆動制御プログラム。
【請求項６】
モータの回転位置に応じて生成するＰＷＭ信号の状態を遷移させるＰＷＭ信号生成回路と、
ドライバ回路を介して前記ＰＷＭ信号をモータに出力する出力インタフェースと、
前記ドライバ回路が前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した１相の駆動信号と前記３相の駆動信号の中点電圧を示すセンタータップ電圧、又は、各相巻き線端子から接地電位に接続された分圧抵抗網により合成されたアーティフィシャルセンタータップ電圧とを比較するコンパレータと、を有するモータ駆動装置を用いたモータの駆動制御方法であって、
前記コンパレータの出力信号の値に基づきコンパレータ積分値を増減し、
前記コンパレータ積分値がカウント初期値に達したことに応じて前記モータの回転位置が遷移したことを検出し、
当該検出結果に応じて、前記ＰＷＭ信号の状態を次状態に遷移させるモータの駆動制御方法。
【請求項７】
モータの回転位置に応じて生成するＰＷＭ信号の状態を遷移させるＰＷＭ信号生成回路と、
ドライバ回路を介して前記ＰＷＭ信号をモータに出力する出力インタフェースと、
前記ドライバ回路が前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した１相の駆動信号と前記３相の駆動信号の中点電圧を示すセンタータップ電圧、又は、各相巻き線端子から接地電位に接続された分圧抵抗網により合成されたアーティフィシャルセンタータップ電圧とを比較するコンパレータと、を有し、
前記ＰＷＭ信号生成回路は、
前記コンパレータの出力信号の値に基づきコンパレータ積分値を増減し、
前記コンパレータ積分値がカウント初期値に達したことに応じて前記モータの回転位置が遷移したことを検出し、
当該検出結果に応じて、前記ＰＷＭ信号の状態を次状態に遷移させるモータの駆動制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はモータの駆動制御プログラム、駆動制御方法及び駆動制御装置に関し、特にホール素子等の位置検出素子によらず位置検出を行うブラシレスＤＣモータの駆動制御プログラム、駆動制御方法及び駆動制御装置に関する。
【背景技術】
【０００２】
モータを回転させる場合、ロータの回転位置を検出して、ロータの回転位置に合わせて駆動信号の状態を遷移させる必要がある。そこで、一般的なモータでは、ホール素子等の位置検出手段を備えることでモータの回転位置を検出し、駆動信号の状態を遷移させる。しかし、ホール素子は、高温環境下（例えば、１２５℃以上の環境温度）では正確な位置検出が行えない問題がある。そこで、近年、例えば、ＨＤＤ（Hard Disk Drive）、送風機、ポンプなどの高速高トルク回転が必要になる用途において、センサレスブラシレス直流モータが多く利用されている。センサレスブラシレス直流モータでは、ホール素子等の位置検出手段を用いることなくモータの回転位置を検出し、当該検出結果に基づき回転制御が可能である。センサレスブラシレス直流モータを用い場合、高温環境下における耐久性の面で多くのメリットを有する。
【０００３】
このセンサレスブラシレス直流モータでは、非通電相に生じる誘起電圧を利用してモータの回転位置を検出し、当該検出のタイミングに応じて通電させる電機子巻線電流の通電を切り換えることができる。このようなセンサレスブラシレス直流モータの一例が特許文献１、２に開示されている。
【０００４】
特許文献１に示される例では、センサレスブラシレス直流モータを３相の駆動信号（Ｕ相、Ｖ相、Ｗ相）を用いて駆動する。そして、特許文献１の図１、図２に示す例では、Ｕ相の駆動信号の電圧（端子Ｒに生じる電圧）と基準電圧Ｖｄｃ／２とをコンパレータで比較して端子Ｒの電圧が基準電圧Ｖｄｃ／２と交わるゼロクロス検出点を検出する。そして、ゼロクロス検出点が検出されたタイミングに応じて、マイクロコンピュータにてモータを駆動するためのＰＷＭ信号の状態を次状態に遷移させる。
【０００５】
また、特許文献２では、非通電相の駆動信号の電圧レベルとセンタータップ電圧とをコンパレータで比較し、当該比較結果に応じてアップダウンカウンタを動作させ、アップダウンカウンタの値に応じて真のゼロクロス点を算出する方法が開示されている。そして、特許文献２では、算出されたゼロクロス点から駆動信号のステートを遷移させるタイミングを算出する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−２４７９８４号公報
【特許文献２】米国特許第７，２３５，９３９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、一般的に、センサレスブラシレス直流モータにおいて駆動信号と基準電圧とを比較する場合、非通電相の駆動信号を入力段分圧抵抗等で信号振幅を減衰させた後にコンパレータ等で非通電相の駆動信号の大きさを判定する。このとき、入力段分圧抵抗は分圧比誤差を持つ。また、非通電相の駆動信号の大きさを判定するコンパレータは、入力オフセット電圧や入力ノイズ電圧等誤差要因を持つ。さらに、モータが低い回転速度で回転する起動時等では大きな誘起電圧を望めないため、電機子巻線の電圧と基準電圧との比較電位差が微小になる。このようなことから、特許文献１に記載の技術では、モータの低回転領域において誘起電圧とノイズ電圧との間に十分なＳＮ比を確保できなくなり比較結果が不安定となる。結果として、特許文献１に記載の技術では、誘起電圧が基準電圧と交差する時に位置検出信号が不確定に複数回発生し、低回転速度領域における位置検出の間隔を正確に計時することが困難である。
【０００８】
また、特許文献２の図３、図４では、コンパレータへの入力ノイズにより生じる誤差の問題が明らかであるが、特許文献２では、このノイズをマスクすることで、ゼロクロス点の計算結果にこの誤差の影響が反映されないようにしている。しかしながら、特許文献２では、図３、図４、図８及びそれに関連する記載からも明らかなように、駆動信号のステートを遷移させる周期が予め決められていなければゼロクロス点の算出ができない問題がある。つまり、特許文献２は、モータの回転速度の変化に対応できない問題がある。例えば、ＰＷＭ信号のデューティ比を可変することでモータの回転速度を制御する場合などモータの回転速度が変化するような用途では、特許文献２の技術は利用できない。また、モータは、回転速度がゼロの状態から回転を開始しなければならないが、回転速度が最大回転数に達する前の段階では特許文献２の技術は利用できない。このようなことから、特許文献２では、特にモータが最大回転速度以外の回転速度で回転している場合におけるモータの制御性が悪化する問題がある。
【０００９】
また、特許文献１では、ゼロクロス検出点が検出されたタイミングに応じてＰＷＭ信号の状態を次状態へと遷移させるタイミングを切り換える。そのため、特許文献１では、ゼロクロス検出点がずれた場合、モータの制御性が悪化する問題がある。また、上記問題を回避する為にコンパレータにヒステリシス持たせる事が一般的であるが、コンパレータにヒステリシスによる不感帯を持たせることにより比較結果を安定化させた場合、端子Ｒの電圧が基準電圧Ｖｄｃ／２と交わるゼロクロス検出点が実際のゼロクロス検出点とずれモータの制御性が悪化する問題がある。誘起電圧がヒステリシス範囲以内である場合、ゼロクロス検出する事が出来ないため、低回転速度に限界が発生する。つまり、特許文献１に記載の技術では、センサレスブラシレス直流モータを低回転速度で制御する場合に制御性が悪化する問題を解決できない。
【課題を解決するための手段】
【００１０】
本発明にかかるモータの駆動制御プログラムの一態様は、モータの回転位置に応じて生成するＰＷＭ信号の状態を遷移させる演算コアと、ドライバ回路を介して前記ＰＷＭ信号をモータに出力する出力インタフェースと、前記ドライバ回路が前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した比較対象検出信号と前記３相の駆動信号の中点電圧を示すセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、前記コンパレータの出力信号の値に基づきコンパレータ積分値を増減し、前記コンパレータ積分値がカウント初期値に達したことに応じて前記モータの回転位置が遷移したことを検出し、当該検出結果に応じて、前記ＰＷＭ信号の状態を次状態に遷移させる。
【００１１】
本発明にかかるモータの駆動制御方法の一態様は、モータの回転位置に応じて生成するＰＷＭ信号の状態を遷移させるＰＷＭ信号生成回路と、ドライバ回路を介して前記ＰＷＭ信号をモータに出力する出力インタフェースと、前記ドライバが前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した１相の駆動信号と前記３相の駆動信号の中点電圧を示すセンタータップ電圧とを比較するコンパレータと、を有するモータ駆動装置を用いたモータの駆動制御方法であって、前記コンパレータの出力信号の値に基づきコンパレータ積分値を増減し、前記コンパレータ積分値がカウント初期値に達したことに応じて前記モータの回転位置が遷移したことを検出し、当該検出結果に応じて、前記ＰＷＭ信号の状態を次状態に遷移させる。
【００１２】
本発明にかかるモータの駆動制御装置の一態様は、モータの回転位置に応じて生成するＰＷＭ信号の状態を遷移させるＰＷＭ信号生成回路と、ドライバ回路を介して前記ＰＷＭ信号をモータに出力する出力インタフェースと、前記ドライバが前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した１相の駆動信号と前記３相の駆動信号の中点電圧を示すセンタータップ電圧とを比較するコンパレータと、を有し、前記ＰＷＭ信号生成回路は、前記コンパレータの出力信号の値に基づきコンパレータ積分値を増減し、前記コンパレータ積分値がカウント初期値に達したことに応じて前記モータの回転位置が遷移したことを検出し、当該検出結果に応じて、前記ＰＷＭ信号の状態を次状態に遷移させる。
【００１３】
本発明にかかるモータの駆動制御プログラム、駆動制御方法及び駆動制御装置では、比較対象検出信号とセンタータップ電圧とが入力されるコンパレータの出力結果を積分したコンパレータ積分値に基づきモータの回転位置を検出する。これにより、コンパレータが入力オフセットを有する場合、或いは、ノイズに対する対策（例えば、ヒステリシス特性を有するコンパレータの利用）を行ってない場合であっても、これらのコンパレータの特性がモータの回転検出タイミングに与える影響を抑制することができる。
【発明の効果】
【００１４】
本発明にかかるモータの駆動制御プログラム、駆動制御方法及び駆動制御装置によれば、モータを低回転速度でモータの制御した場合の制御性を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１にかかるモータ駆動制御装置のブロック図である。
【図２】実施の形態１にかかるモータ駆動制御装置のより詳細なブロック図である。
【図３】実施の形態１にかかるモータ駆動制御装置の動作手順を示すフローチャートである。
【図４】図３に示したフローチャートの変数初期化処理の詳細なフローチャートである。
【図５】図３に示したフローチャートのモータ駆動動作の詳細なフローチャートである。
【図６】図５に示したフローチャートの回転制御処理の詳細なフローチャートである。
【図７】図６に示したフローチャートの定電流制御処理の詳細なフローチャートである。
【図８】図６に示したフローチャートのフライバックフィルタ処理の詳細なフローチャートである。
【図９】図６に示したフローチャートのロータ位置検出処理の詳細なフローチャートである。
【図１０】図９に示したフローチャートのステート制御処理の詳細なフローチャートである。
【図１１】図１０に示したフローチャートの定回転速度制御処理の詳細なフローチャートである。
【図１２】図１０に示したフローチャートのステート更新処理の詳細なフローチャートである。
【図１３】図１０に示したフローチャートのフライバック適応フィルタ更新処理の詳細なフローチャートである。
【図１４】図６に示したフローチャートのレギュレーションループ調停処理の詳細なフローチャートである。
【図１５】図６に示したフローチャートのＰＷＭプリモジュレーション処理の詳細なフローチャートである。
【図１６】実施の形態１にかかるモータ駆動制御装置のモータ制御開始時点の動作を示すタイミングチャートである。
【図１７】実施の形態１にかかるモータ駆動制御装置の状態０におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。
【図１８】実施の形態１にかかるモータ駆動制御装置の状態１におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。
【図１９】実施の形態１にかかるモータ駆動制御装置の状態２におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。
【図２０】実施の形態１にかかるモータ駆動制御装置の状態３におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。
【図２１】実施の形態１にかかるモータ駆動制御装置の状態４におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。
【図２２】実施の形態１にかかるモータ駆動制御装置の状態５におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。
【図２３】実施の形態１にかかるモータ駆動制御装置において同期整流動作が有る場合と無い場合による入出力特性を比較するグラフである。
【図２４】実施の形態１にかかるモータ駆動制御装置においてデューティ比が５０％のＰＷＭ信号を生成した場合の状態０の駆動信号及びセンタータップ電圧を説明するタイミングチャートである。
【図２５】実施の形態１にかかるモータ駆動制御装置においてデューティ比が５０％のＰＷＭ信号を生成した場合の状態０のモータ駆動制御装置の動作を説明するタイミングチャートである。
【図２６】実施の形態１にかかるモータ駆動制御装置においてデューティ比が５０％のＰＷＭ信号を生成した場合の状態０〜状態５の駆動信号及びセンタータップ電圧を説明するタイミングチャートである。
【図２７】実施の形態１にかかるモータ駆動制御装置においてデューティ比が５０％のＰＷＭ信号を生成した場合の状態０〜状態５のモータ駆動制御装置の動作を説明するタイミングチャートである。
【図２８】実施の形態１にかかるモータ駆動制御装置においてデューティ比が１００％のＰＷＭ信号を生成した場合の状態０〜状態５の駆動信号及びセンタータップ電圧を説明するタイミングチャートである。
【図２９】実施の形態１にかかるモータ駆動制御装置においてデューティ比が１００％のＰＷＭ信号を生成した場合の状態０〜状態５のモータ駆動制御装置の動作を説明するタイミングチャートである。
【図３０】実施の形態１にかかるモータ駆動制御装置において決定されたＰＷＭ信号のデューティ比が最大デューティ比を超えた場合に生成されるＰＷＭ信号を説明するタイミングチャートである。
【図３１】実施の形態１にかかるモータ駆動制御装置において決定されたＰＷＭ信号のデューティ比が最小デューティ比を下回った場合に生成されるＰＷＭ信号を説明するタイミングチャートである。
【図３２】実施の形態１にかかるモータ駆動制御装置において決定されたＰＷＭ信号のデューティ比が最大デューティ比以下、かつ、最小デューティ比以上であった場合に生成されるＰＷＭ信号を説明するタイミングチャートである。
【図３３】実施の形態２にかかるモータ駆動制御装置の状態０におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。
【図３４】実施の形態２にかかるモータ駆動制御装置の状態１におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。
【図３５】実施の形態２にかかるモータ駆動制御装置の状態２におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。
【図３６】実施の形態２にかかるモータ駆動制御装置の状態３におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。
【図３７】実施の形態２にかかるモータ駆動制御装置の状態４におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。
【図３８】実施の形態２にかかるモータ駆動制御装置の状態５におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。
【図３９】実施の形態２にかかるモータ駆動制御装置における回生ブレーキ動作が有る場合と無い場合による制御可能なモータの回転速度の範囲を比較するグラフである。
【図４０】実施の形態２にかかるモータ駆動制御装置においてデューティ比が５０％のＰＷＭ信号を生成した場合の状態０の駆動信号及びセンタータップ電圧を説明するタイミングチャートである。
【図４１】実施の形態２にかかるモータ駆動制御装置においてデューティ比が５０％のＰＷＭ信号を生成した場合の状態０〜状態５の駆動信号及びセンタータップ電圧の動作を説明するタイミングチャートである。
【発明を実施するための形態】
【００１６】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。まず、図１に実施の形態１にかかるモータ駆動制御装置１のブロック図を示す。図１に示すように、モータ駆動制御装置１はマイクロコンピュータである。つまり、実施の形態１にかかるモータ駆動制御装置１は、マイクロコンピュータ上で実行されるモータ駆動制御プログラムによりモータの駆動動作を実現する。
【００１７】
なお、図１に示すブロック図では、プリドライバ回路２、ドライバ回路３、及び、モータ４を示した。プリドライバ回路２は、モータ駆動制御装置１が生成するＰＷＭ信号のレベル変換を行う。ドライバ回路３は、プリドライバ回路２を介して入力されるＰＷＭ信号に応じて３相（例えば、Ｕ相、Ｖ相、Ｗ相）の駆動信号を生成し、当該駆動信号によりモータ４を駆動する。モータ４は、制御対象であって、３相の駆動信号の中点電圧（センタータップ電圧ＣＴ）を出力する。なお、このセンタータップ電圧は、モータにセンタータップ電圧の取り出し端子から取り出しても良く、また、３相の駆動信号が入力される抵抗網を用いて人工的に合成されたアーティフィシャルセンタータップ電圧（Artificial center tap voltage）であっても良い。以下の説明で用いられるセンタータップ電圧は、生成方法に関わらず３相の駆動信号の中点電圧を示すものとする。
【００１８】
図１に示すように、モータ駆動制御装置１は、ハードウェアとして、演算コア１０、プログラムメモリ１１、ＲＡＭ（Random Access Memory）１２、ＧＰＩＯ（General Purpose Input/Output）１３、セレクタ１４、コンパレータ１５、アナログデジタル変換器１６、タイマ１７を有する。モータ駆動制御装置１では、これらのブロックがバスを介して互いに接続される。
【００１９】
プログラムメモリ１１には、モータ駆動制御プログラムが格納される。このプログラムメモリ１１は、ＲＯＭ（Read Only Memory）、フラッシュメモリ等により構成される。演算コア１０は、プログラムメモリ１１からモータ駆動制御プログラムを読み出して実行する。そして、演算コア１０は、モータ駆動制御プログラムに従って、ＰＷＭ信号を生成する。また、演算コア１０は、コンパレータ１５の出力に基づきモータの回転を検出して、モータの検出結果に応じてＰＷＭ信号の状態を遷移させる。演算コア１０の動作についての詳細は後述する。ＲＡＭ１２は、演算コア１０がモータ駆動制御プログラムの実行する際に用いるデータを格納する記憶装置である。
【００２０】
ＧＰＩＯ１３は、汎用入出力装置である。モータ駆動制御装置１は、ＧＰＩＯを介して図示しない他の回路から速度制御信号、ＰＷＭデューティ制御信号を受信する。温度制御信号は、モータ駆動制御装置１が組み込まれる装置の温度に応じて生成される。ＰＷＭデューティ制御信号は、例えば、モータがファンの回転を制御するものである場合、当該ファンの回転速度を示す回転速度指示値をモータ駆動制御装置１に指示する。温度制御信号及びＰＷＭデューティ制御信号により示される値は、ＧＰＩＯ１３を介して演算コア１０に与えられる。また、ＧＰＩＯ１３は、図示しない他の回路にモータ４の回転速度と比例した周波数の通知信号（以下、回転速度通知信号と称す）を出力する。回転速度通知信号は、例えば、演算コア１０が生成し、ＧＰＩＯ１３を介して出力されるものである。さらに、モータ駆動制御装置１では、演算コア１０において生成されたＰＷＭ信号は、ＧＰＩＯ１３を介してプリドライバ回路２に出力される。
【００２１】
セレクタ１４は、演算コア１０からの指示に基づき、３相信号から選択した非駆動相を比較対象検出信号ＳＰとして出力する。より具体的には、モータ４としてセンサレスブラシレス直流モータを利用する場合、セレクタ１４は、非通電相を比較対象検出信号ＳＰとして選択する。
【００２２】
コンパレータ１５は、比較対象検出信号ＳＰと、センタータップ電圧とを比較して、出力信号をハイレベルとローレベルとのいずれかの論理レベルとする。本実施の形態では、コンパレータ１５は、比較対象検出信号ＳＰよりもセンタータップ電圧ＣＴの方が高い場合は出力信号をハイレベルとし、比較対象検出信号ＳＰよりもセンタータップ電圧ＣＴの方が低い場合は出力信号をローレベルとする。
【００２３】
図１に示す例では、ドライバ回路３のソース側に電流検出抵抗Ｒｉ及びローパスフィルタが設けられる。電流検出抵抗Ｒｉは、ドライバ回路３を介して流れるモータ４の駆動電流を電圧に変換する。アナログデジタル変換器１６は、アナログ値をデジタル値に変換する回路である。実施の形態１にかかるモータ駆動制御装置１では、アナログデジタル変換器１６によって、電流検出抵抗Ｒｉにより生成された電圧値をデジタル値に変換し、駆動電流の大きさに応じたデジタル値を得る。なお、ローパスフィルタは、電流検出抵抗Ｒ１により生成された電圧値の高周波ノイズを除去するものであるが、図面を簡略化するために図示を省略した。
【００２４】
タイマ１７は、モータ駆動制御装置１として動作するマイクロコンピュータの動作クロックをカウントして、当該カウント値に応じて割り込み要求を出力する。割り込み要求は、演算コア１０に与えられる。演算コア１０は、入力された割り込み要求の種類に応じて、予め規定された動作を行う。実施の形態１にかかるモータ駆動制御装置１では、タイマ１７には、第１の設定値と第２の設定値が設定される。そして、タイマ１７は、カウント値が第１の設定値に達したことに応じて第１の割り込み信号を出力し、カウント値が第２の設定値に達したことに応じて第２の割り込み信号を出力する。より具体的には、モータ駆動制御装置１では、第１の設定値として、ＰＷＭ信号のオンタイム（ＰＷＭ信号がハイレベルとなる期間）よりも小さな値が設定され、第２の設定値として、ＰＷＭ信号の１周期の期間に相当する値が設定される。なお、第１の設定値は、ＰＷＭ信号をオンステートからオフステートに切り換えるタイミングを指定するものであり、ＰＷＭ信号のオンタイムより若干小さな値に設定されるものとする。また、以下の説明では、第１の割り込み要求をＢＥＭＦ（バックＥＭＦ）タイマ割り込みと称し、第２の割り込み要求を周期タイマ割り込みと称す。
【００２５】
実施の形態１にかかるモータ駆動制御装置１では、演算コア１０がモータ駆動制御プログラムを実行することでモータの駆動を制御するＰＷＭ信号のデューディ制御及び状態制御を行う。そこで、演算コア１０がモータ駆動制御プログラムを実行することにより実現される機能を演算コア１０の機能ブロックとした場合のモータ駆動制御装置１のブロック図を図２に示す。なお、図１のブロック図に示したブロックと同じ構成要素については、図１と同じ符号を付して説明を省略する。
【００２６】
図２に示すように、モータ駆動制御プログラムを実行することで、演算コア１０には、ＰＷＭデモジュレータ２１、ＰＷＭモジュレータ２２、定電流駆動制御部２３、ロータ位置検出部２４、回転制御部２５、回転速度制御部２６、ＰＷＭデューティ制御部２７が機能ブロックとして実現される。なお、図２に示したモータ駆動制御装置１では、設定値及び変数の初期化処理等の一般的な処理を行うブロックについては記載を省略した。また、モータ駆動制御装置１は、ＰＷＭパルスのカウント処理を行い、ＰＷＭパルスのカウント値に基づき様々な処理を行うが、ＰＷＭパルスのカウント値をカウントするブロックについては、図２では記載を省略した。このように記載を省略したブロックの機能は、マイクロコンピュータの一般的な演算処理にて実現されるものとする。
【００２７】
ＰＷＭデモジュレータ２１は、ＰＷＭ信号のデモジュレーション処理を行う。より具体的には、ＰＷＭデモジュレータ２１は、ＢＥＭＦタイマ割り込みが入力されたことに応じてコンパレータ１５の出力信号ＣＭＰ＿ＯＵＴ及びモータを駆動する駆動電流をサンプリングする。なお、駆動電流の値は、ＰＷＭデモジュレータ２１が定電流駆動制御部２３にサンプリング指示を与えることに基づいて定電流駆動制御部２３においてサンプリングされる。また、ＰＷＭデモジュレータ２１は、周期タイマ割り込みが入力されたことに応じて、タイマ１７の第１の設定値の値を更新する。そして、ＰＷＭデモジュレータ２１は、出モジュレーション処理が終了したことに応じてＰＷＭモジュレータ２２に処理の開始を指示する。
【００２８】
ＰＷＭモジュレータ２２は、ＰＷＭデモジュレータ２１からの処理開始指示に基づきＰＷＭ信号の論理レベルを切り換える。このとき、ＰＷＭモジュレータ２２は、回転制御部２５の指示値に基づき、複数のＰＷＭ信号をハイレベルとするか、ローレベルとするかを決定する。ＰＷＭモジュレータ２２が出力するＰＷＭ信号は、ＧＰＩＯ１３を介してプリドライバ回路２に出力される。
【００２９】
定電流駆動制御部２３は、定電流駆動制御処理を行う。定電流駆動制御処理では、モータ４を定電流駆動するための帰還制御値を生成する。
【００３０】
ロータ位置検出部２４は、コンパレータ積分値を有する。そして、ロータ位置検出部２４は、コンパレータ積分値算出処理、フライバックフィルタ処理、フライバック適応フィルタ更新処理、ロータ位置検出処理、ステートテーブル更新処理を行う。コンパレータ積分値算出処理では、ＰＷＭデモジュレータ２１でサンプリングされたコンパレータ１５の出力信号ＣＭＰ＿ＯＵＴに基づきコンパレータ１５の出力値の積算を行う。フライバックフィルタ処理では、非通電相の駆動信号に発生するフライバックパルスをフィルタする。このフライバックフィルタを適用している期間中は、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴによらず、コンパレータ積分値を単純増加又は単純減少させる。フライバック適応フィルタ更新処理では、フライバックフィルタの条件を更新する。ロータ位置検出処理では、ロータの位置検出処理を行い、ＰＷＭ信号の状態の遷移タイミングを指示する。ステートテーブル更新処理では、ＰＷＭ信号の状態を決定するオフステートテーブルとオンステートテーブルの更新処理を行う。
【００３１】
回転制御部２５は、ステート制御処理を行う。より詳細には、ステート制御処理では、回転速度検出処理、スタッキング検出処理、ステート更新処理が行われる。回転速度検出処理では、モータ４の回転速度の検出処理が行われる。スタッキング検出処理では、モータ４のロータのスタックを検出する。ステート更新処理では、ＰＷＭ信号の状態の次状態を決定と、ＰＷＭ信号を次状態に遷移させるか否かを決定する。
【００３２】
回転速度制御部２６は、定回転制御処理を行う。定回転制御処理では、モータ４の現在の回転速度と外部から与えられた回転速度指示値との誤差を算出し、モータ４を回転速度指示値に沿った回転速度に制御するための帰還制御値を生成する。なお、回転速度指示値としては、ＰＷＭデューティ制御信号に起因するものの他に、温度制御に由来する速度制御信号に基づくものも含むものとする。
【００３３】
ＰＷＭデューティ制御部は、レギュレーションループ調停処理と、ＰＷＭプリモジュレーション処理とを行う。レギュレーションループ調停処理では、ＰＷＭ信号の次周期のデューティ比を決定する帰還制御値として、定電流駆動制御部２３が生成した帰還制御値と、回転速度制御部２６が生成した帰還制御値と、のいずれを用いるかの調停処理を行う。ＰＷＭプリモジュレーション処理は、レギュレーションループ調停処理にて決定された帰還制御値に基づきＰＷＭ信号の次周期のオンタイムの値を決定する。また、ＰＷＭプリモジュレーション処理では、ＰＷＭデモジュレータ２１に決定したオンタイムの値を与える。
【００３４】
続いて、モータ駆動制御プログラムにより実現される機能を用いたモータの駆動制御についてさらに詳細に説明する。そこで、図３〜図１５にモータ駆動制御装置１の動作手順を示すフローチャートを示す。そして、この図３〜図１５を参照して、モータ駆動制御装置１の動作についてさらに詳細に説明する。
【００３５】
図３では、モータ駆動制御装置１の動作の全体を示すフローチャートを示した。図３に示すように、モータ駆動制御プログラムは、メインルーチンがスタートすると、まず、変数初期化処理を行う（ステップＳ１）。続いて、モータ駆動制御プログラムは、アナログデジタル変換器１６を利用して、マイクロコンピュータ１に供給されている電源電圧の電圧値をサンプリングする（ステップＳ２）。続いて、モータ駆動制御プログラムは、サンプリングした電源電圧の電圧値が最低起動電圧よりも大きいか否かを判断する（ステップＳ３）。ステップＳ３において、電源電圧が最低起動電圧以下であると判断された場合、ステップＳ１の変数初期化処理に戻る。一方、電源電圧が最低起動電圧よりも大きいと判断された場合、演算コア１０へのタイマ割り込みを許可する（ステップＳ４）。なお、起動を許可するか否かを判断する電源電圧としては、ドライバ回路３に与えられる電源電圧とマイクロコンピュータ１に与えられる電源電圧とのうち高い電圧値を有する電源電圧を用いる。本実施の形態では、ドライバ回路３の電源からマイクロコンピュータ１の電源を作るため、ドライバ回路３の電源電圧を監視することが好ましい。この場合、アナログデジタル変換器１６によりドライバ回路３の電源電圧を測定する。
【００３６】
そして、モータ駆動制御プログラムは、タイマ割り込みの発生を待ち、タイマ割り込みが発生したことに起因してモータ駆動動作処理を行う（ステップＳ５、Ｓ６）。また、モータ駆動制御プログラムは、モータ駆動動作処理が完了した時点で、ロータのスタック状態を示すスタックロータ検出フラグＳＴＣ＿ＤＥＴがＴＲＵＥであるか否かを判断する（ステップＳ７）。ステップＳ７においてスタックロータ検出フラグＳＴＣ＿ＤＥＴがＦＡＬＳＥであると判断された場合、つまり、モータが回転していると判断された場合、再びタイマ割り込みの発生を待つ。一方、ステップＳ７においてスタックロータ検出フラグＳＴＣ＿ＤＥＴがＴＲＵＥで有ると判断された場合、つまり、モータが回転していないと判断された場合、ステップＳ１の変数初期化処理に戻る。
【００３７】
続いて、ステップＳ１の変数初期化処理について詳細に説明する。変数初期化処理の詳細な動作手順を示すフローチャートを図４に示す。図４に示すように、変数初期化処理では、まず、タイマの初期化処理を行う（ステップＳ１０）。より具体的には、ステップＳ１０では、タイマ１７のレジスタにＰＷＭ信号のオンタイム期間に基づき第１の設定値と、ＰＷＭ信号の１周期の長さを指定する第２の設定値を格納する。
【００３８】
次いで、移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥと、ＰＷＭパルス数ＰＷＭ＿ＰＬＳ［０］〜ＰＷＭ＿ＬＰＬＳ［５］と、を最大パルスカウント数とする。移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥは、モータを一回転させるために、６つの状態を利用する場合は、この６状態に含まれる各状態の平均ＰＷＭパルス数を示すものである。ＰＷＭパルス数ＰＷＭ＿ＰＬＳ［０］〜ＰＷＭ＿ＬＰＬＳ［５］は、状態０〜状態５の各状態の期間の長さを規定するＰＷＭ信号のパルス数である。最大パルスカウント数は、例えば、モータ４を最低回転速度で動作させた場合における一状態の間のＰＷＭ信号のパルス数であって、予め設定される値である。
【００３９】
次いで、起動時のフライバックパルス継続ＰＷＭパルス数ＦＢ＿ＭＡＳＫの値を設定する（ステップＳ１２）。ステップＳ１２では、フライバックパルス継続ＰＷＭパルス数ＦＢ＿ＭＡＳＫにモータ４の最大回転速度に相当する６ステートＰＷＭパルス数の６分の１の値を設定する。モータ４が無負荷状態で回転を開始した場合、回転速度が高い状態で回転を開始する場合があるが、起動時のフライバックパルス継続ＰＷＭパルス数ＦＢ＿ＭＡＳＫをこのような値に設定することで、無負荷状態でモータ４が回転を開始したとしても、ロータの回転位置と駆動信号の状態とがずれて意図した回転方向と逆の回転方向でモータ４が回転することを防止することができる。
【００４０】
次いで、定電流制御指示値ＣＮＳＴ＿ＣＲＮＴ＿ＳＥＴを最大電流値ＭＡＸ＿ＣＲＮＴの３分の１の値に設定する（ステップＳ１３）。この最大電流値ＭＡＸ＿ＣＲＮＴは、ドライバ回路３を構成するトランジスタに許容される所定時間当りの最大電流に相当する値である。通常、３相の駆動信号を生成する場合、ドライバ回路３は３組の駆動段回路を有する。そのため、モータを一回転させるために、３組の駆動段回路が導通状態となる期間はモータを一回転させる時間の３分の１の時間である。しかし、回転開始時は、モータが停止状態にあり、駆動段回路が導通状態となる時間がモータの回転時よりも長くなる。そのため、回転開始時に、定電流制御指示値ＣＮＳＴ＿ＣＲＮＴ＿ＳＥＴを最大電流値ＭＡＸ＿ＣＲＮＴした場合、駆動段回路のそれぞれに流れる電流が最大電流を超えるおそれがある。そこで、定電流制御指示値ＣＮＳＴ＿ＣＲＮＴ＿ＳＥＴを最大電流値ＭＡＸ＿ＣＲＮＴの３分の１の値に設定する。これにより、ＰＷＭ信号の一状態の長さが長くなったとしても、駆動段回路を構成するトランジスタには、最大電流以上の電流が流れることを防止することができる。
【００４１】
次いで、スタックロータ検出フラグをＦＡＬＳＥに設定する（ステップＳ１４）。モータの回転開始前は、モータは停止状態であるため、その状態を確定させるためである。
【００４２】
次いで、回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧと、電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧをカウント初期値（例えば、ゼロ）に初期化する（ステップＳ１５）。回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧ及び電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧは、初期化を行わない場合、値が不定であり、初期化前の値を用いた場合、モータ駆動制御装置１が正常に動作しない可能性がある。そこで、この初期化処理により値をゼロとすることで、モータ駆動制御装置１の動作開始時の回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧ及び電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧの値を確定させる。
【００４３】
続いて、図３のステップＳ６で示したモータ駆動動作処理の詳細について説明する。そこで、モータ駆動動作処理の動作手順を示すフローチャートを図５に示す。図５に示すように、モータ駆動動作処理は、ＰＷＭデモジュレーション処理（ステップＳ２０）及びＰＷＭモジュレーション処理（ステップＳ３０）、及び、ＰＷＭ信号設定処理（ステップＳ４０）により構成される。
【００４４】
ＰＷＭデモジュレーション処理は、図２のＰＷＭデモジュレータ２１にて実行される処理である。また、ＰＷＭモジュレーション処理は、図２のＰＷＭモジュレータ２２で実行される処理である。
【００４５】
ＰＷＭデモジュレーション処理では、まず、入力された割り込みがＢＥＭＦタイマ割り込みであるであるか否かを判断する（ステップＳ２１）。そして、割り込みがＢＥＭＦタイマ割り込みであると判断された場合、ＢＥＭＦタイマ割り込みをクリアする（ステップＳ２２）。次いで、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴの出力値をサンプリングする。次いで、アナログデジタル変換器１６からモータの駆動電流の電流値をサンプリングする。なお、駆動電流の電流値は、定電流駆動制御部２３にて利用される。次いで、ＰＷＭデモジュレーション処理の終了を受けて、ＰＷＭモジュレーション処理が開始される。
【００４６】
割り込みがＢＥＭＦタイマ割り込みに応じて開始されるＰＷＭモジュレーション処理では、まず、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮがＰＷＭ信号の周期ＰＷＭ＿ＴＲＭよりも小さいか否かを判断する（ステップＳ３１）。そして、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮがＰＷＭ信号の周期ＰＷＭ＿ＴＲＭよりも小さいと判断された場合、オフステートのＰＷＭ信号をＧＰＩＯ１３に出力する（ステップＳ３２）。なお、モータ駆動制御プログラムでは、モータ４が３相駆動方式である場合６つのＰＷＭ信号を生成するが、６つのＰＷＭ信号のいずれのＰＷＭ信号をオフステートとするか、又は、オンステートとするかをステートテーブルの記述に従って決定する。ステートテーブルには、ＰＷＭ信号の状態毎にオンステートとオフステートとを切り換えるＰＷＭ信号の指定、及びオフステートとしてハイサイドオフの状態とするかローサイドオフの状態とするかの指定が規定される。
【００４７】
その後、ＰＷＭ信号のオフステートサイドを反転する（ステップＳ３３）。このステップＳ３３では、ＰＷＭ信号の信号パターンを指示するステートテーブルのオフステートのパターンをハイサイドオフの状態とするかローサイドオフの状態とするかを切り換える処理である。例えば、ＰＷＭ信号の現周期でステートテーブルのオフステートがハイサイドオフを指示している場合、ＰＷＭ信号の次周期ではステートテーブルのオフステートがローサイドオフを指示するように更新する。このステップＳ３３は、実施の形態１にかかるモータ駆動制御装置１が、ＰＷＭ信号の周期毎にＰＷＭ信号のオフステート期間としてハイサイドオフステートとローサイドオフステートとを交互に切り換えるオルタネートＰＷＭ方式の動作のために行われる処理である。一方、ステップＳ３１において、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮがＰＷＭ信号の周期ＰＷＭ＿ＴＲＭ以上と判断された場合、ＰＷＭ信号をオンステートで維持する（ステップＳ３４）。
【００４８】
つまり、モータ駆動制御装置１は、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮがＰＷＭ信号の一周期よりも小さい場合、ＢＥＭＦタイマ割り込みが発生をトリガとして、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴのサンプリングと、ＰＷＭ信号のオンステートからオフステートへの切り換えを行う。また、モータ駆動制御装置１は、オンタイムＰＷＭ＿ＯＮがＰＷＭ信号の一周期以上である場合、ＢＥＭＦタイマ割り込みが発生をトリガとして、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴのサンプリングを行うが、ＰＷＭ信号のオンステートからオフステートへの切り換えは行わない。
【００４９】
そして、ステップＳ３３又はステップＳ３４の処理が完了すると、モータ駆動制御プログラムは、モータ駆動制御処理を終了させる。
【００５０】
一方、ステップＳ２１において割り込みがＢＥＭＦタイマ割り込みではない判断された場合、つまり、割り込みが周期タイマ割り込みである場合、周期タイマ割り込みをクリアする（ステップＳ２５）。次いで、ＰＷＭ信号の現周期において算出されたＰＷＭ信号のオンタイムＰＷＭ＿ＯＮの値で次周期のＰＷＭ信号のオンタイムＰＷＭ＿ＯＮを更新する。次いで、ＰＷＭデモジュレーション処理の処理結果を受けて、ＰＷＭモジュレーション処理が開始される。
【００５１】
割り込みがＢＥＭＦタイマ割り込みに応じて開始されるＰＷＭモジュレーション処理では、まず、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮがゼロよりも大きいか否かを判断する（ステップＳ３５）。つまり、ステップＳ３５では、生成するＰＷＭ信号にオン期間があるか否かを判断する。そして、ステップＳ３５において、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮがゼロよりも大きいと判断された場合、オンステートのＰＷＭ信号をＧＰＩＯ１３に出力する（ステップＳ３６）。次いで、ＢＥＭＦタイマ割り込みを許可する（ステップＳ３７）。一方、ステップＳ３５において、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮがゼロ以下であると判断された場合、オフステートを維持したＰＷＭ信号をＧＰＩＯ１３に出力する（ステップＳ３８）。その後、ステップＳ３３と同様にＰＷＭ信号のオフステートの反転を行う（ステップＳ３９）。このオフステートの反転処理は、実施の形態１にかかるモータ駆動制御装置１が、ＰＷＭ信号の周期毎にＰＷＭ信号のオフステート期間としてハイサイドオフステートとローサイドオフステートとを交互に切り換えるオルタネートＰＷＭ方式の動作のために行われる処理である。
【００５２】
そして、ステップＳ３７又はステップＳ３９の処理が完了すると、モータ駆動制御プログラムは、ＰＷＭ信号設定処理を行う（ステップＳ４０）。ＰＷＭ信号設定処理が完了した場合は、モータ駆動制御処理を終了する。
【００５３】
続いて、ステップＳ４０のＰＷＭ信号設定処理について説明する。ＰＷＭ信号設定処理では、次周期のＰＷＭ信号のオンタイムＰＷＭ＿ＯＮの算出処理及びＰＷＭ信号のステートの更新処理を行う。これらの処理を行うための、ＰＷＭ信号設定処理の詳細なフローチャートを図６に示す。
【００５４】
図６に示すように、ＰＷＭ信号設定処理では、まず、ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳのカウントアップ処理を行う（ステップＳ４１）。このステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳは、ＰＷＭ信号が現状態に遷移した後の経過時間を示す値である。実施の形態１にかかるモータ駆動制御プログラムでは、各状態の経過時間をＰＷＭ信号のパルス数をカウントすることで算出する。なお、ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳのカウントアップ処理は、図２のロータ位置検出部２４にて行われる処理である。
【００５５】
次いで、モータ駆動制御プログラムは、回転速度指示値ＲＯＴ＿ＳＥＴの値を更新する（ステップＳ４２）。回転速度指示値ＲＯＴ＿ＳＥＴは、例えば、モータ駆動制御装置１の外部から与えられるＰＷＭデューティ制御信号によって与えられる。なお、回転速度指示値ＲＯＴ＿ＳＥＴの更新処理は、図２の回転速度制御部２６で行われる処理である。
【００５６】
次いで、モータ駆動制御プログラムは、定電流制御処理を行う（ステップＳ４３）。この定電流制御処理は、モータ４を定電流駆動する場合の帰還制御値を生成する処理である。定電流制御処理の詳細については後述する。なお、定電流制御処理は、図２の定電流駆動制御部２３で行われる処理である。
【００５７】
次いで、モータ駆動制御プログラムは、ステートＰＷＭパルス数ＰＷＭ＿ＰＬＳとフライバックパルス継続ＰＷＭパルス数ＦＢ＿ＭＡＳＫとを比較する（ステップＳ４４）。そして、ステートＰＷＭパルス数ＰＷＭ＿ＰＬＳがフライバックパルス継続ＰＷＭパルス数ＦＢ＿ＭＡＳＫよりも小さい場合、フライバックパルスフィルタ処理を行う（ステップＳ４５）。一方、ステートＰＷＭパルス数ＰＷＭ＿ＰＬＳがフライバックパルス継続ＰＷＭパルス数ＦＢ＿ＭＡＳＫ以上であった場合、ロータ位置検出処理（ステップＳ４９）を行う。なお、ロータ位置検出処理の中でステート制御処理も行われる。ステップＳ４４、Ｓ４５の処理は、図２のロータ位置検出部２４にて行われ、ステップＳ４９の処理は、ロータ位置検出部２４、回転制御部２５及び回転速度制御部２６にて行われる。フライバックフィルタ処理と、ロータ位置検出処理の詳細については、後述する。
【００５８】
３相駆動のモータでは、非通電相の駆動信号に、ＰＷＭ信号の状態遷移の直後にフライバックパルスが生じる。このフラバックパルスが生じている期間は、センタータップ電圧ＣＴと比較対象検出信号ＳＰ（非通電相の駆動信号）の電圧関係がロータの位置がＰＷＭ信号の状態を次状態へ切り替えるタイミングに達した場合の比較対象検出信号ＳＰとセンタータップ電圧ＣＴとの関係と同じになる。そこで、実施の形態１にかかるモータ駆動制御プログラムでは、ＰＷＭ信号の状態が遷移した後の所定の期間はコンパレータの出力信号ＣＭＰ＿ＯＵＴの値によらずコンパレータ積分値ＣＭＰ＿ＩＮＴＧをカウントアップ又はカウントダウンする。実施の形態１では、この所定の期間をＰＷＭ信号の状態が維持される一期間の所定の割合の期間として予め設定する。図６に示す例では、この所定の期間を規定する変数として、フライバックパルス継続ＰＷＭパルス数ＦＢ＿ＭＡＳＫとの変数を設けた。そして、このフライバックパルス継続ＰＷＭパルス数ＦＢ＿ＭＡＳＫとして、モータ４の起動時は最大回転速度に相当する６ステートＰＷＭパルス数の６分の１の値を設定し、モータ４が回転を開始した後は移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥの４分の１を設定する。
【００５９】
次いで、ステップＳ４５又はステップＳ４９の処理が完了すると、モータ駆動制御プログラムは、レギュレーションループ調停処理が行われる（ステップＳ４６）。レギュレーションループ調停処理では、定電流制御処理（ステップＳ４３）で算出された制御帰還値と、ステップＳ４９内のステート制御処理でモータ４の回転速度に基づき生成される制御帰還値と、のいずれの値に基づき次周期のＰＷＭ信号のデューティ比を設定するかの調停処理が行われる。なお、レギュレーションループ調停処理は、図２のＰＷＭデューティ制御部にて行われる。また、レギュレーションループ調停処理の詳細については、後述する。
【００６０】
次いで、モータ駆動制御プログラムは、ＰＷＭプリモジュレーション処理を行う（ステップＳ４７）。ＰＷＭプリモジュレーション処理では、レギュレーションループ調停処理において決定された制御帰還値に基づき次周期のＰＷＭ信号のデューティ比が決定され、当該デューティ比に基づきＰＷＭ信号のオンタイムＰＷＭ＿ＯＮが決定される。このＰＷＭプリモジュレーション処理は、図２のＰＷＭデューティ制御部にて行われる。また、ＰＷＭプリモジュレーション処理の詳細については、後述する。
【００６１】
次いで、モータ駆動制御プログラムは、次周期のＰＷＭ信号のオンステートとオフステートとを設定する（ステップＳ４８）。このステップＳ４８の処理は、６ステートテーブルのうちＰＷＭ信号の次周期のステートカウント値ＳＴ＿ＣＮＴに応じたステートテーブルのＰＷＭ信号パターンを読み込む処理である。ＰＷＭ信号のパターンは、例えば、更新後の状態において導通相とする駆動信号を生成するドライバ回路３の駆動段回路にＰＷＭ信号を与え、非導通相とする相の駆動信号を生成するドライバ回路３の駆動段回路にはＰＷＭ信号の供給を停止するＰＷＭ信号のパターンを指示するものである。また、ステップＳ４８において設定されるオフステートは、ステップＳ３３、Ｓ３９で選択されたサイドのオフステートが設定される。
【００６２】
ここで、ステップＳ４３の定電流制御処理についてさらに詳細に説明する。そこで、定電流制御処理の詳細な動作手順を示すフローチャートを図７に示す。図７に示すように、定電流制御処理では、まず、定電流制御指示値ＣＮＳＴ＿ＣＲＮＴ＿ＳＥＴと、図５のステップＳ２４でサンプリングしたモータの駆動電流ＭＩと、の電流誤差ＣＲＮＴ＿ＥＲＲを算出する（ステップＳ５０）。次いで、ステップＳ５０で算出した電流誤差ＣＲＮＴ＿ＥＲＲと電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧとを加算して、電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧの値を更新する（ステップＳ５１）。次いで、ステップＳ５１で算出した電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧのクランプ処理を行う（ステップＳ５２）。実施の形態１にかかるモータ駆動制御プログラムでは、予めＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧの最大値と最小値が規定されている。そして、ステップＳ５２のクランプ処理では、回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧの値が予め規定された最大値と最小値との間の値であって、所定のビット幅で表せる値に変換する。電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧは、定電流駆動制御部２３で生成される制御帰還値に相当する値である。
【００６３】
続いて、ステップＳ４５のフライバックフィルタ処理の詳細について説明する。そこで、フライバックフィルタ処理の詳細な動作手順を示すフローチャートを図８に示す。図８に示すように、フライバックフィルタ処理では、まず、モータ駆動制御プログラムは、回転方向指示フラグＦＷＤがＴＲＵＥであるか否かを判断する（ステップＳ６０）。回転方向指示フラグＦＷＤは、モータ４を正回転方向で制御するか、逆回転方向で制御するかを指示する値であって、外部入力信号により設定される値である。回転方向指示フラグＦＷＡＤがＴＲＵＥである場合、モータ駆動制御装置１はモータ４を正回転方向で制御し、回転方向指示フラグＦＷＡＤがＦＡＬＳＥである場合、モータ駆動制御装置１はモータ４を逆回転方向で制御する。ステップＳ６０において、回転方向指示フラグＦＷＤがモータ４を正回転方向で制御することを指示していると判断された場合、モータ駆動制御プログラムは、ステートカウント値ＳＴ＿ＣＮＴを参照し、値が奇数であるか偶数であるかを判定する（ステップＳ６１）。このステートカウント値ＳＴ＿ＣＮＴは、ＰＷＭ信号の状態がいずれの制御状態であるかを示す値である。
【００６４】
実施の形態１にかかるモータ駆動制御装置１では、ステートカウント値ＳＴ＿ＣＮＴが奇数である場合、比較対象検出信号となる非通電相の電圧がセンタータップ電圧ＣＴに対して小さな状態から大きな状態に遷移する。また、実施の形態１にかかるモータ駆動制御装置１では、ステートカウント値ＳＴ＿ＣＮＴが偶数である場合、比較対象検出信号となる非通電相の電圧がセンタータップ電圧ＣＴに対して大きな状態から小さな状態に遷移する。つまり、フライバックパルスがないとすると、ステートカウント値ＳＴ＿ＣＮＴが奇数である期間中にコンパレータ１５の出力信号ＣＭＰ＿ＯＵＴは、０から１に遷移する。また、フライバックパルスがないとすると、ステートカウント値ＳＴ＿ＣＮＴが偶数である期間中にコンパレータ１５の出力信号ＣＭＰ＿ＯＵＴは、１から０に遷移する。そのため、モータ駆動制御プログラムは、ステップＳ６１においてステートカウント値ＳＴ＿ＣＮＴが奇数であると判断された場合は、コンパレータ積分値ＣＭＰ＿ＩＮＴＧから１を減算する（ステップＳ６２）。また、モータ駆動制御プログラムは、ステップＳ６１においてステートカウント値ＳＴ＿ＣＮＴが偶数であると判断された場合は、コンパレータ積分値ＣＭＰ＿ＩＮＴＧに１を加算する（ステップＳ６３）。そして、ステップＳ６２又はステップＳ６３の処理が終了するとフライバックフィルタ処理を終了する。
【００６５】
一方、ステップＳ６０において、回転方向指示フラグＦＷＤがモータ４を逆回転方向で制御することを指示していると判断された場合も、モータ駆動制御プログラムは、ステートカウント値ＳＴ＿ＣＮＴを参照し、値が奇数であるか偶数であるかを判定する（ステップＳ６４）。ここで、回転方向指示フラグＦＷＤがモータ４を正回転方向で制御することを指示していると判断された場合、モータ４のロータに流れる駆動電流は正回転している場合の逆となる。そのため、ステートカウント値ＳＴ＿ＣＮＴが奇数である場合のコンパレータ１５の出力信号の遷移方向は、モータ４が正回転方向で回転している場合の逆になる。
【００６６】
そのため、モータ駆動制御プログラムは、ステップＳ６４においてステートカウント値ＳＴ＿ＣＮＴが奇数であると判断された場合は、コンパレータ積分値ＣＭＰ＿ＩＮＴＧに１を加算する（ステップＳ６５）。また、モータ駆動制御プログラムは、ステップＳ６４においてステートカウント値ＳＴ＿ＣＮＴが偶数であると判断された場合は、コンパレータ積分値ＣＭＰ＿ＩＮＴＧから１を減算する（ステップＳ６６）。そして、ステップＳ６５又はステップＳ６６の処理が終了するとフライバックフィルタ処理を終了する。
【００６７】
続いて、ステップＳ４９のロータ位置検出処理の詳細について説明する。そこで、ロータ位置検出処理の詳細な動作手順を示すフローチャートを図９に示す。図９に示すように、モータ駆動制御プログラムは、まず、図５のステップＳ２３でサンプリングされたコンパレータ１５の出力信号ＣＭＰ＿ＯＵＴの値が１であるか否かを判断する（ステップＳ７０）。ステップＳ７０において、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴが１であった場合、コンパレータ積分値ＣＭＰ＿ＩＮＴＧをカウントアップする。一方、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴが１であった場合、コンパレータ積分値ＣＭＰ＿ＩＮＴＧをカウントダウンする。つまり、モータ駆動制御プログラムは、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴの値をサンプリングした時点で、比較対象検出信号（非通電相の駆動信号）の電圧値がセンタータップ電圧ＣＴよりも大きいと判断された場合は、コンパレータ積分値を増加させ、比較対象検出信号の電圧値がセンタータップ電圧ＣＴよりも小さいと判断された場合は、コンパレータ積分値を減少させる。
【００６８】
次いで、モータ駆動制御プログラムは、ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳが最大パルスカウント数ＭＡＸＣＮＴよりも大きいか否かを判断する（ステップＳ７３）。このステップＳ７３において、ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳが最大パルスカウント数よりも大きい場合、ステート制御処理（ステップＳ７４）を行った後に有効スタートアップフラグＳＴＵＰをＦＡＬＳＥとし（ステップＳ７５）、ゼロクロスカウント値ＺＣ＿ＣＮＴにゼロを設定する（ステップＳ７６）。そして、ステップＳ７６の処理が完了したことに伴い、ロータ位置検出処理を終了する。モータ駆動制御プログラムの最大パルスカウント数は、モータ４が最低回転速度で回転している場合の１状態のステートＰＷＭパルス数を規定するものである。つまり、ステップＳ７３において、ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳが最大パルスカウント数よりも大きい場合、モータ４は、最低回転速度以下の回転速度で回転しているか、停止しているかのいずれかである。そのため、この場合は、有効スタートアップフラグＳＴＵＰをＦＡＬＳＥとし、ゼロクロスが生じた回数をカウントするゼロクロスカウント値ＺＣ＿ＣＮＴをゼロにリセットする。
【００６９】
一方、ステップＳ７３において、ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳが最大パルスカウント数以下である場合、モータ駆動制御プログラムは、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロであるか否かを判断する（ステップＳ７７）。ステップＳ７７において、モータ駆動制御プログラムは、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロであると判断された場合、ステート制御処理を行う（ステップＳ７８）。そして、ゼロクロスカウント値ＺＣ＿ＣＮＴに１を加算する（ステップＳ７９）。次いで、モータ駆動制御プログラムは、ゼロクロスカウント値が５よりも大きいか否かを判断する（ステップＳ８０）。ステップＳ８０においてゼロクロスカウント値ＺＣ＿ＣＮＴが５よりも大きいと判断された場合、ゼロクロスカウント値ＺＣ＿ＣＮＴを５よりも大きな値（例えば、６）に設定する（ステップＳ８１）。また、有効スタートアップフラグＳＴＵＰをＴＲＵＥとする（ステップＳ８２）。
【００７０】
実施の形態１にかかるモータ駆動制御プログラムでは、ＰＷＭ信号の各状態の開始直後の所定の期間においてフライバックフィルタ処理（ステップＳ４５）が行われ、ステップＳ７７の判断処理が最初に行われる時点では、コンパレータ積分値ＣＭＰ＿ＩＮＴＧは、正の値と負の値のいずれかの値となっている。そのため、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロとなると言うことは、比較対象検出信号ＳＰとセンタータップ電圧ＣＴとの電圧関係が逆転するゼロクロスが発生したことを意味する。そのため、上記説明のように、モータ駆動制御プログラムは、この場合は、ゼロクロスカウント値ＺＣ＿ＣＮＴを加算する。そして、ゼロクロスカウント値ＺＣ＿ＣＮＴが５以上の値となったことに応じて、モータ４が電気角で一回転以上したと判断して有効スタートアップフラグＳＴＵＰをＴＲＵＥとする。
【００７１】
一方、ステップＳ７７においてコンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達していないと判断された場合、モータ駆動制御プログラムは、有効スタートアップフラグＳＴＵＰがＴＲＵＥであるか否かを判断する（ステップＳ８３）。このステップＳ８３において有効スタートアップフラグＳＴＵＰがＦＡＬＳＥであると判断された場合、モータ駆動制御プログラムは、ロータの位置検出ができないと判断してロータ位置検出処理を終了する。
【００７２】
一方、ステップＳ８３において有効スタートアップフラグＳＴＵＰがＴＲＵＥであると判断された場合、ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳが移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥよりも大きいか否かを判断する（ステップＳ８４）。ステップＳ８４においてステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳが移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥ以下の値であると判断された場合、モータ駆動制御プログラムは、ＰＷＭ信号の一状態が維持される最大許容期間を未だに経過していないと判断してロータ位置検出処理を終了する。一方、ステップＳ８４においてステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳが移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥより大きな値であると判断された場合、モータ駆動制御プログラムは、ステート制御処理（ステップＳ８５）を行った後にロータ位置検出処理を終了する。
【００７３】
ロータ位置検出処理において行われるステート制御処理（ステップＳ７４、Ｓ７８、Ｓ８５）は、同じ処理ルーチンである。このステート制御処理では、ＰＷＭ信号を次状態に遷移させるための処理である。つまり、実施の形態１にかかるモータ駆動制御プログラムは、モータ４の回転速度が最低回転速度以下である場合（ステップＳ７３のＹＥＳの枝）、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロとなることに応じてロータの位置が検出された場合（ステップＳ７７のＹＥＳの枝）、及び、モータ４が回転している状態でロータの位置検出が行われないもののＰＷＭ信号の現状態の継続期間が移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥで示される長さに達してしまった場合（ステップＳ８４のＹＥＳの枝）に、ＰＷＭ信号の状態を次状態に遷移させる。なお、ステート制御処理では、ＰＷＭ信号の周期毎に更新する必要はないが、所定の頻度では更新が必要な変数の算出処理が行われる。
【００７４】
続いて、ステップＳ７４、Ｓ７８、Ｓ８５のステート制御処理の詳細について説明する。そこで、ステート制御処理の詳細な動作手順を示すフローチャートを図１０に示す。図１０に示すように、ステート制御処理では、モータ駆動制御プログラムは、回転速度検出処理（ステップＳ９０）を行う。この回転速度検出処理では、モータ駆動制御プログラムは、ＰＷＭ信号が現状態を維持した期間の長さを示すＰＷＭパルス数ＰＷＭ＿ＰＬＳ［ＳＴ＿ＣＮＴ］に図６のステップＳ４１で更新されたステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳを代入する（ステップＳ９０ａ）。そして、６つの状態のそれぞれで算出されたＰＷＭパルス数ＰＷＭ＿ＰＬＳ［０］〜ＰＷＭ＿ＰＬＳ［６］を加算して６ステート合計ＰＷＭパルス数ＴＴＬ＿ＳＴ＿ＰＷＭ＿ＰＬＳを算出する（ステップＳ９０ｂ）。次いで、６ステート合計ＰＷＭパルス数ＴＴＬ＿ＳＴ＿ＰＷＭ＿ＰＬＳを状態の数である６で除算して移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥを算出する（ステップＳ９０ｃ）。ここで、６ステート合計ＰＷＭパルス数ＴＴＬ＿ＳＴ＿ＰＷＭ＿ＰＬＳは、モータ４が電気角で一回転する間に生成されたＰＷＭ信号のパルスの合計値であって、モータ４が電気角で一回転する時間を示す。つまり、６ステート合計ＰＷＭパルス数ＴＴＬ＿ＳＴ＿ＰＷＭ＿ＰＬＳによりモータ４の回転速度を知ることができる。なお、ステップＳ９０の回転速度検出処理は、図２の回転制御部２５で行われる。
【００７５】
次いで、モータ駆動制御プログラムは、スタッキング検出処理を行う（ステップＳ９１）。スタッキング検出処理は、６ステート合計ＰＷＭパルス数ＴＴＬ＿ＳＴ＿ＰＷＭ＿ＰＬＳがスタックロータ検出設定値ＳＴＣ＿ＤＥＴ＿ＳＥＴよりも小さいか否かを判断する（ステップＳ９１ａ）。スタックロータ検出設定値ＳＴＣ＿ＤＥＴ＿ＳＥＴは、モータ４の最大回転速度よりも十分に高い回転速度に相当する値であり、予め設定される値である。ここで、最大回転速度よりも十分に高い回転速度とは、モータの機械的な構造から決まる限界速度以上ではあるが電気的には可能な回転速度である。例えば、モータ４の機械的な構造から決まる限界速度が７０００ｒｐｍであった場合、８０００〜１００００ｒｐｍの回転速度に相当する値がスタックロータ検出設定値ＳＴＣ＿ＤＥＴ＿ＳＥＴとして設定される。モータ４がスタック状態である場合、ＰＷＭ信号を与えてもモータ４が機械的に回転していない状態であり、コンパレータ積分値ＣＭＰ＿ＩＮＴＧが極端に短い時間でゼロに達してしまう。そのため、モータ４がスタック状態である場合、ロータは機械的には回転していないが、ステータの回転磁界は、ロータの回転速度を超えて電気的に回転している状態となる。このため、ＰＷＭ信号の一状態が継続する期間が短くなり、６ステート合計ＰＷＭパルス数ＴＴＬ＿ＳＴ＿ＰＷＭ＿ＰＬＳがスタックロータ検出設定値ＳＴＣ＿ＤＥＴ＿ＳＥＴよりも小さくなる。このようなことから、６ステート合計ＰＷＭパルス数ＴＴＬ＿ＳＴ＿ＰＷＭ＿ＰＬＳがスタックロータ検出設定値ＳＴＣ＿ＤＥＴ＿ＳＥＴよりも小さいことを検出することでモータ４のスタック状態を検出することができる。なお、６ステート合計ＰＷＭパルス数ＴＴＬ＿ＳＴ＿ＰＷＭ＿ＰＬＳは、モータ４が回転している状態においては、無損失かつ無負荷の状態で駆動される、或いは、外部動力によってモータが駆動されない限り、スタックロータ検出設定値ＳＴＣ＿ＤＥＴ＿ＳＥＴよりも小さい状態とはならない。
【００７６】
そして、モータ駆動制御プログラムは、ステップＳ９１ａにおいて、モータ４がスタック状態であると判断された場合、スタックロータ検出フラグＳＴＣ＿ＤＥＴをＴＲＵＥとする（ステップＳ９１ｂ）。また、モータ駆動制御プログラムは、ステップＳ９１ａにおいて、モータ４がスタック状態ではないと判断された場合、スタックロータ検出フラグＳＴＣ＿ＤＥＴをＦＡＬＳＥとする（ステップＳ９１ｃ）。なお、ステップＳ９１のスタッキング検出処理は、図２の回転制御部２５で行われる。
【００７７】
そして、スタッキング検出処理（ステップＳ９１）が完了したことに応じて、モータ駆動制御プログラムは、定回転速度制御処理（ステップＳ９２）、ステート更新処理（ステップＳ９３）、フライバックパルス適応フィルタ更新処理（ステップＳ９４）を行う。また、フライバックパルス適応フィルタ更新処理（ステップＳ９４）の処理の後に、モータ駆動制御プログラムは、コンパレータ積分値ＣＭＰ＿ＩＮＴＧ及びステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳのリセット処理を行う（ステップＳ９５）。また、ＰＷＭ信号の状態が更新されたことに応じて次状態のステートカウント値ＳＴ＿ＣＮＴに基づきセレクタ１４が選択する検出信号相を切り換える。
【００７８】
ここで、定回転速度制御処理（ステップＳ９２）、ステート更新処理（ステップＳ９３）、フライバックパルス適応フィルタ更新処理（ステップＳ９４）についてより詳細に説明する。なお、定回転速度制御処理（ステップＳ９２）は、回転速度制御部２６で行われる処理であり、ステート更新処理（ステップＳ９３）及びフライバックパルス適応フィルタ更新処理は、ロータ位置検出部２４にて行われる処理である。
【００７９】
まず、ステップＳ９２の定回転速度制御処理の詳細な動作手順を示すフローチャートを図１１に示す。図１１示すように、定回転速度制御処理では、モータ駆動制御プログラムは、６ステート合計ＰＷＭパルス数ＴＴＬ＿ＳＴ＿ＰＷＭ＿ＰＬＳから回転速度指示値ＲＯＴ＿ＳＥＴを減じて回転速度誤差ＲＯＴ＿ＥＲＲを算出する（ステップＳ１００）。次いで、モータ駆動制御プログラムは、回転速度誤差ＲＯＴ＿ＥＲＲを用いてスタッキング防止加減速制限処理を行う（ステップＳ１０１）。
【００８０】
スタッキング防止加減速制限処理では、まず、移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥと加速係数ａとを乗算して最大許容加速度ＭＡＸ＿ＡＬＷ＿ＡＣＬを算出する（ステップＳ１０１ａ）。次いで、移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥと減速係数ｂとを乗算して最大許容減速度ＭＡＸ＿ＡＬＷ＿ＤＣＬを算出する（ステップＳ１０１ｂ）。
【００８１】
次いで、モータ駆動制御プログラムは、回転速度誤差ＲＯＴ＿ＥＲＲと最大許容加速度ＭＡＸ＿ＡＬＷ＿ＡＣＬとの比較処理を行う（ステップＳ１０１ｃ）。そして、ステップＳ１０１ｃにおいて、回転速度誤差ＲＯＴ＿ＥＲＲが最大許容加速度ＭＡＸ＿ＡＬＷ＿ＡＣＬよりも大きい場合は、回転速度誤差ＲＯＴ＿ＥＲＲを最大許容加速度ＭＡＸ＿ＡＬＷ＿ＡＣＬで更新する（ステップＳ１０１ｄ）。一方、ステップＳ１０１ｃにおいて、回転速度誤差ＲＯＴ＿ＥＲＲが最大許容加速度ＭＡＸ＿ＡＬＷ＿ＡＣＬ以下である場合は、回転速度誤差ＲＯＴ＿ＥＲＲの更新は行わない。
【００８２】
次いで、モータ駆動制御プログラムは、回転速度誤差ＲＯＴ＿ＥＲＲと最大許容減速度ＭＡＸ＿ＡＬＷ＿ＤＣＬとの比較処理を行う（ステップＳ１０１ｅ）。そして、ステップＳ１０１ｅにおいて、回転速度誤差ＲＯＴ＿ＥＲＲが最大許容減速度ＭＡＸ＿ＡＬＷ＿ＤＣＬよりも小さい場合は、回転速度誤差ＲＯＴ＿ＥＲＲを最大許容減速度ＭＡＸ＿ＡＬＷ＿ＤＣＬで更新する（ステップＳ１０１ｆ）。一方、ステップＳ１０１ｅにおいて、回転速度誤差ＲＯＴ＿ＥＲＲが最大許容減速度ＭＡＸ＿ＡＬＷ＿ＤＣＬ以上である場合は、回転速度誤差ＲＯＴ＿ＥＲＲの更新は行わない。
【００８３】
次いで、モータ駆動制御プログラムは、回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧに回転速度誤差ＲＯＴ＿ＥＲＲを加算して、回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧを更新する（ステップＳ１０２）。その後、モータ駆動制御プログラムは、更新後の回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧのクランプ処理を行う（ステップＳ１０３）。このクランプ処理では、回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧの値が予め規定された最大値と最小値との間の値であって、所定のビット幅で表せる値に変換する。回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧは、回転速度制御部２６で生成される制御帰還値に相当する値である。
【００８４】
続いて、ステップＳ９３のステート更新処理について詳細に説明する。そこで、ステート更新処理の詳細な動作手順を示すフローチャートを図１２に示す。図１２に示すように、ステート更新処理では、まず、回転方向指示フラグＦＷＤを参照して、モータ４の回転方向を判断する（ステップＳ１１０）。ステップＳ１１０において、回転方向指示フラグＦＷＤがＴＲＵＥであった場合、ステートカウント値ＳＴ＿ＣＮＴに１を加算する（ステップＳ１１１）。その後、更新後のステートカウント値ＳＴ＿ＣＮＴが５より大きいか否かを判断する（ステップＳ１１２）。そして、ステップＳ１１２において、ステートカウント値ＳＴ＿ＣＮＴが５よりも大きいと判断された場合は、ステートカウント値ＳＴ＿ＣＮＴをゼロにリセットして、ステート更新処理を終了する（ステップＳ１１３）。
【００８５】
一方、ステップＳ１１０において、回転方向指示フラグＦＷＤがＦＡＬＳＥであった場合、ステートカウント値ＳＴ＿ＣＮＴから１を減算する（ステップＳ１１４）。その後、更新後のステートカウント値ＳＴ＿ＣＮＴが０より小さい否かを判断する（ステップＳ１１５）。そして、ステップＳ１１５において、ステートカウント値ＳＴ＿ＣＮＴが０よりも小さいと判断された場合は、ステートカウント値ＳＴ＿ＣＮＴを５にリセットして、ステート更新処理を終了する（ステップＳ１１６）。
【００８６】
続いて、ステップＳ９４のフライバックパルス適応フィルタ更新処理について詳細に説明する。そこで、フライバックパルス適応フィルタ更新処理の詳細な動作手順を示すフローチャートを図１３に示す。図１３に示すように、フライバックパルス適応フィルタ更新処理では、モータ駆動制御プログラムは、有効スタートアップフラグＳＴＵＰがＴＲＵＥであるか否かを判断する（ステップＳ１２０）。そして、ステップＳ１２０において、有効スタートアップフラグＳＴＵＰがＦＡＬＳＥであると判断された場合、モータ４が有効に回転していないと判断し、フライバックパルス適応フィルタの更新は行わずに処理を終了する。
【００８７】
一方、ステップＳ１２０において、有効スタートアップフラグＳＴＵＰがＴＲＵＥであると判断された場合、定電流制御指示値ＣＮＳＴ＿ＣＲＮＴを最大電流値ＭＡＸ＿ＣＲＮＴとする（ステップＳ１２１）。次いで、モータ駆動制御プログラムは、フライバックパルス継続パルス数ＦＢ＿ＭＡＳＫを移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥの４分の１に設定する（ステップＳ１２２）。その後、モータ駆動制御プログラムは、更新後のフライバックパルス継続パルス数ＦＢ＿ＭＡＳＫがフライバックパルス継続パルス数の最低値ＭＩＮ＿ＦＢ＿ＭＡＳＫとの比較処理を行う（ステップＳ１２３）。そして、フライバックパルス継続パルス数ＦＢ＿ＭＡＳＫがフライバックパルス継続パルス数の最低値ＭＩＮ＿ＦＢ＿ＭＡＳＫ以上の値であれば、そのまま処理を終了する。一方、フライバックパルス継続パルス数ＦＢ＿ＭＡＳＫがフライバックパルス継続パルス数の最低値ＭＩＮ＿ＦＢ＿ＭＡＳＫよりも小さい場合、フライバックパルス継続パルス数ＦＢ＿ＭＡＳＫをフライバックパルス継続パルス数の最低値ＭＩＮ＿ＦＢ＿ＭＡＳＫに設定した後に処理を終了する（ステップＳ１２４）。
【００８８】
続いて、図６のステップＳ４６のレギュレーションループ調停処理について詳細に説明する。そこで、図１４にレギュレーションループ調停処理の詳細な動作手順を示すフローチャートを示す。このレギュレーションループ調停処理は、図２のＰＷＭデューティ制御部２７により行われる。
【００８９】
図１４に示すように、レギュレーションループ調停処理では、モータ駆動制御プログラムは、回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧと電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧとの比較処理を行う（ステップＳ１３０）。
【００９０】
そして、ステップＳ１３０において、回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧが電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧよりも小さいと判断された場合、電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧの値を回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧの値で更新する（ステップＳ１３１）。その後、モータ駆動制御プログラムは、回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧをＰＷＭ信号のオンタイムＰＷＭ＿ＯＮとした後にレギュレーションループ調停処理を終了する（ステップＳ１３２）。
【００９１】
一方、ステップＳ１３０において、回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧが電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧ以上であると判断された場合、回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧの値を電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧの値で更新する（ステップＳ１３３）。その後、モータ駆動制御プログラムは、電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧをＰＷＭ信号のオンタイムＰＷＭ＿ＯＮとした後にレギュレーションループ調停処理を終了する（ステップＳ１３４）。
【００９２】
このようなレギュレーションループ調停処理を行うことで、制御ループを定電流制御系と定回転制御系との間で切り換えた場合において、その切り換え時に切り換え後に利用される制御ループが飽和状態から制御を開始することを防止することができる。そして、切り換え直後の制御ループが飽和状態から制御を開始しないことで、制御ループの切り換えをスムーズに行うことができる。
【００９３】
続いて、図６のステップＳ４７のＰＷＭプリモジュレーション処理について詳細に説明する。そこで、図１５にＰＷＭプリモジュレーション処理の詳細な動作手順を示すフローチャートを示す。ＰＷＭプリモジュレーション処理は、図２のＰＷＭデューティ制御部２７により行われる。
【００９４】
図１５に示すように、ＰＷＭプリモジュレーション処理では、モータ駆動制御プログラムは、まず、ステップＳ４６のレギュレーションループ調停処理にて決定されたＰＷＭ信号のオンタイムＰＷＭ＿ＯＮに繰越ＰＷＭオンタイムＣＲＹ＿ＰＷＭ＿ＯＮを加算する（ステップＳ１４０）。このとき、加算される繰越ＰＷＭオンタイムＣＲＹ＿ＰＷＭ＿ＯＮは、現周期のＰＷＭ信号のオンタイムを決定する際に算出された値である。次いで、モータ駆動制御プログラムは、ステップＳ１４０で算出されたＰＷＭ信号のオンタイムＰＷＭ＿ＯＮと最大デューティ設定値ＭＡＸ＿ＤＵＴＹとの比較処理を行う（ステップＳ１４１）。この最大デューティ設定値ＭＡＸ＿ＤＵＴＹは、モータ駆動制御装置１が生成可能なパルス幅の制限に基づき設定される。
【００９５】
ステップＳ１４１において、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮが最大デューティ設定値ＭＡＸ＿ＤＵＴＹよりも大きいと判断された場合、繰越ＰＷＭオンタイムＣＲＹ＿ＰＷＭ＿ＯＮにＰＷＭ信号のオンタイムＰＷＭ＿ＯＮからＰＷＭ周期ＰＷＭ＿ＴＲＭを減じた値を設定する（ステップＳ１４２）。その後、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮとしてＰＷＭ周期ＰＷＭ＿ＴＲＭを設定する（ステップＳ１４３）。つまり、ステップＳ１４２の処理によりＰＷＭ信号のオンタイムＰＷＭ＿ＯＮが生成された場合、次周期のＰＷＭ信号はオフステートにはならない。
【００９６】
一方、ステップＳ１４１において、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮが最大デューティ設定値ＭＡＸ＿ＤＵＴＹよりも小さいと判断された場合、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮと最小デューティ設定値ＭＩＮ＿ＤＵＴＹとの比較処理を行う（ステップＳ１４４）。ステップＳ１４４において、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮが最小デューティ設定値ＭＩＮ＿ＤＵＴＹよりも小さいと判断された場合、繰越ＰＷＭオンタイムＣＲＹ＿ＰＷＭ＿ＯＮとしてＰＷＭ信号のオンタイムＰＷＭ＿ＯＮを設定する（ステップＳ１４５）。その後、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮをゼロに設定する（ステップＳ１４６）。つまり、ステップＳ１４６の処理によりＰＷＭ信号のオンタイムＰＷＭ＿ＯＮが生成された場合、次周期のＰＷＭ信号はオンステートにはならない。
【００９７】
一方、ステップＳ１４４において、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮが最小デューティ設定値ＭＩＮ＿ＤＵＴＹ以上であると判断された場合、繰越ＰＷＭオンタイムＣＲＹ＿ＰＷＭ＿ＯＮとしてゼロを設定する（ステップＳ１４７）。つまり、ステップＳ１４７の処理によりＰＷＭ信号のオンタイムＰＷＭ＿ＯＮが生成された場合、次周期のＰＷＭ信号はＰＷＭ信号のオンタイムＰＷＭ＿ＯＮの値に応じた長さのオンステートを有する。
【００９８】
上記説明では、モータ駆動制御装置１、つまり、モータ駆動制御プログラムによる動作について説明した。以下では、具体的な波形を示してモータ駆動制御装置１の動作について説明する。
【００９９】
まず、図１６に、モータ駆動制御装置１がモータ４を停止状態から回転状態とするモータ駆動制御の初期の挙動を説明するタイミングチャートを示す。図１６に示すタイミングチャートでは、ＰＷＭ信号の状態が遷移する毎にハイレベルとローレベルが切り替わる信号としてステート信号で示した。このステート信号がハイレベルである期間は、ステータの駆動相が奇数番目、つまり、ＰＷＭ信号が奇数番目の状態であることを示し、ローレベルであるき間は、ステータの駆動相が偶数番目、つまり、ＰＷＭ信号が偶数番目の状態であることを示す。また、ＰＷＭ信号が６状態を経る毎にハイレベルとローレベルが切り替わる信号として６ステート信号を示した。また、図１６では、ロータの回転状態を示すために有効スタートアップフラグＳＴＵＰを示した。なお、図１６に示すタイミングチャートは、回転開始の動作を示す一例として、ロータが状態０に対応する位置で静止している状態から回転を開始する例について示すものである。
【０１００】
まず、実施の形態１にかかるモータ駆動装置１は、変数初期化処理（ステップＳ１）において、電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧ及び回転速度誤差積分値ＲＯＴ＿ＲＥＥ＿ＩＮＴＧをゼロにリセットした状態でモータの制御を開始する。そのため、実施の形態１にかかるモータ駆動装置１は、モータを制御するＰＷＭ信号の状態を状態０としてモータ制御を開始するが、この制御開始時点での駆動電流はゼロである。このようなことから、図１６に示すように、駆動制御が開始された直後の状態０では、モータ４のロータに回転トルクが生じず停止したままの状態となる。また、ロータが回転していないことから、非通電相の駆動信号とセンタータップ電圧ＣＴとの間でゼロクロスが生じない。また、図１６に示す例では、ロータの位置が駆動対象のステータ（以下、励磁ステータと称す）の位置とよりも位相が遅れた状態であり、かつ、ゼロクロスが発生しないため、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達することはない。そして、最初の状態０においては、コンパレータ積分値ＣＭＰ＿ＩＮＴＧが最大パルスカウント値ＭＡＸＣＮＴに達したことに応じて、モータ駆動制御装置１は、ＰＷＭ信号の状態を状態０から状態１に遷移させる（図９のステップＳ７４以降の処理）。このようにコンパレータ積分値ＣＭＰ＿ＩＮＴＧが最大パルスカウント値ＭＡＸＣＮＴに達する状態を、以下では、タイムアウト検出と称す。そして、モータ駆動制御装置１は、ＰＷＭ信号の状態を遷移させる毎に駆動電流を増加させながら、モータ４の起動処理を継続する。
【０１０１】
ここで、モータ４の起動時における駆動電流の増加手順について説明する。まず、最初の状態０では、回転速度指示値ＲＯＴ＿ＳＥＴはゼロを維持するのに対して、駆動電流ＭＩがゼロであるため駆動電流ＭＩと定電流制御設定値ＣＯＮＳＴ＿ＣＲＮＴ＿ＳＥＴとの誤差は最大駆動電流の大きさに一致する。そのため、最初の状態０では、レギュレーションループ調停処理（ステップＳ４６、及び、図１４の処理）により電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧはゼロに維持される。
【０１０２】
続いて、タイムアウト検出によりＰＷＭ信号の状態が状態０から状態１に遷移すると、モータ駆動制御装置１では、ステップＳ９２及び図１１の処理が行われ、回転速度誤差値ＲＯＴ＿ＩＮＴＧの値として、回転速度指示値ＲＯＴ＿ＳＥＴを最大許容加速度ＭＡＸ＿ＡＬＷ＿ＡＣＬで制限した値を設定する。これに対して、状態１では、駆動電流ＭＩに対する電流誤差積分値ＣＲＮＴ＿ＩＮＴＧとして、駆動電流ＭＩと定電流制御設定値ＣＯＮＳＴ＿ＣＲＮＴ＿ＳＥＴとの誤差値が算出される。このとき、最初の状態１では駆動電流ＭＩは、当初ゼロであり、電流誤差積分値ＣＲＮＴ＿ＩＮＴＧは最大駆動電流の大きさに一致する。そのため、回転モータ駆動制御装置１では、レギュレーションループ調停処理（ステップＳ４６、及び、図１４の処理）により、電流誤差積分値ＣＲＮＴ＿ＩＮＴＧに回転速度誤差積分値ＲＯＴ＿ＩＮＴＧの値を代入する。つまり、ＰＷＭ信号の状態が遷移した場合に増加する駆動電流の増加量は、最大許容加速度ＲＯＴ＿ＡＬＷ＿ＡＣＬで制限された値になる。
【０１０３】
このように、ＰＷＭ信号の状態が遷移させた場合の駆動電流の増加量は、最大許容加速度ＲＯＴ＿ＡＬＷ＿ＡＣＬで制限された値になるため、モータ４の始動制御においては、回転速度誤差積分値ＲＯＴ＿ＥＲＲ＿ＩＮＴＧが電流誤差積分値ＣＲＮＴ＿ＥＲＲ＿ＩＮＴＧよりも小さい状態が続く。つまり、モータ４の回転が開始されるまでの期間は、ＰＷＭ信号の状態が遷移する度に増加させる駆動電流は、最大許容加速度ＲＯＴ＿ＡＬＷ＿ＡＣＬにより制限され、駆動電流は、徐々に大きくなる。
【０１０４】
このように、モータ駆動制御装置１は、ロータに印加する駆動トルクを徐々に大きくする。そして、ロータに印加される駆動トルクがロータの静止トルクを上回るとロータの回転が開始される。しかし、ロータが回転しても、ロータの回転周波数及び回転位相と、励磁ステータの駆動周波数及び駆動位相と、が一致しなければ、モータの回転は持続しない。
【０１０５】
例えば、駆動トルクが不十分である場合、ロータが回転しない状態が発生する。また、駆動トルクが十分であって、ロータが回転する状態であっても、励磁ステータの駆動位相とロータの回転位相とが不一致であった場合、ロータに印加する駆動トルクが不適切な状態となり、ロータが逆回転又は次状態の励磁ステータの駆動対象位置を通過する位置まで回転してしまい、モータの回転が持続しない状態となる。さらに、励磁ステータの駆動周波数とロータの回転周波数とが不一致である場合、連続して適切な駆動トルクをロータに印加できないため、モータの回転は持続しない。
【０１０６】
このように、モータ４の回転を持続させるためには、十分な駆動トルクと、励磁ステータの駆動周波数及び駆動位相とロータの回転周波数及び回転位相とを一致させることと、が必要になる。そこで、実施の形態１にかかるモータ駆動制御装置１では、駆動電流をＰＷＭ信号の状態を遷移させる毎に徐々に増加させると共に、ＰＷＭ信号の状態を遷移させて励磁ステータの駆動周波数及び駆動位相がロータの回転周波数及び回転位相と一致する状態を探る。より具体的には、実施の形態１にかかるモータ駆動制御装置１は、フライバックパルスフィルタ処理と、コンパレータ積分値ＣＭＰ＿ＩＮＴＧと、最大パルスカウント数ＭＡＸＣＮＴと、を用いて、励磁ステータの駆動周波数及び駆動位相とロータの回転周波数及び回転位相とが一致する状態を探る。
【０１０７】
まず、モータ駆動制御装置１は、ＰＷＭ信号の状態を遷移させた直後は、フライバックパルスフィルタ処理（図６のステップＳ４４、Ｓ４５及び図８の処理）により、コンパレータ積分値ＣＭＰ＿ＩＮＴＧを増加、又は、減少させる。そして、フライバックパルスフィルタ処理の終了後に、駆動トルクが静止トルク以上、かつ、励磁ステータの駆動位相に対するロータの回転位相差が±３０°未満の位置である場合は、ロータが回転してゼロクロスが検出できる可能性がある。そこで、タイムアウト検出期間経過前（ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳが最大パルスカウント値ＭＡＸＣＮＴ以下である期間）にコンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達したことを検出できれば、モータ駆動制御装置１は、ゼロクロスが生じたと判定して、ＰＷＭ信号を次状態に遷移させる。
【０１０８】
しかし、フライバックパルスフィルタ処理終了後の状態が、励磁ステータの駆動位相に対してロータの回転位相が３０°以上進んでいた状態である場合は、フライバックパルスフィルタ処理が終了した時点でコンパレータの出力が期待する論理レベルとは逆の論理レベルとなっているため、タイムアウト検出期間経過前にコンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達する。つまり、このような場合は、モータ駆動制御装置１は、フライバックパルスフィルタ処理が終了する前にゼロクロスが発生したと判断し、タイムアウト検出期間の経過を待たずにＰＷＭ信号の状態を状態に遷移させる。このような動作に相当する状態は、例えば、図１６において「コンパレータ積分値に基づく状態遷移」で示される状態である。なお、モータ駆動制御装置１では、変数初期化処理（図３のステップＳ１、及び図４の処理）において、有効スタートアップフラグＳＴＵＰがＦＡＬＳＥからＴＲＵＥに切り替るまでのフライバックパルス継続ＰＷＭパルス数ＦＢ＿ＭＡＳＫを小さく（例えば、最大回転速度に相当する６ステートＰＷＭパルス数の６分の１）に設定しているため、フラバックパルスフィルタ処理終了前にゼロクロスが発生したと判断される状態の期間は後述するタイムアウト検出に基づく状態遷移が行われる場合に比べて極端に短くなる。
【０１０９】
また、フライバックパルスフィルタ処理終了後の状態が、励磁ステータの駆動位相に対してロータの回転位相が３０°以上遅れた状態である場合は、フライバックパルスフィルタ処理が終了した時点でコンパレータの出力が期待する論理レベルとなっているため、コンパレータ積分値ＣＭＰ＿ＩＮＴＧの絶対値が増加する。しかし、励磁ステータの駆動位相に対してロータの回転位相が３０°以上遅れた状態である場合、ロータに適切な負荷トルクを印加することができないため、ロータが回転しない。そのため、タイムアウト検出期間が経過してもコンパレータの出力が反転せずコンパレータ積分値ＣＭＰ＿ＩＮＴＧの絶対値が減少に転じることがない。つまり、このような場合は、モータ駆動制御装置１は、タイムアウト検出がなされるまでゼロクロスの発生を待ち、タイムアウト検出期間が経過した時点でＰＷＭ信号の状態を状態に遷移させる。このような動作に相当する状態は、例えば、図１６において「タイムアウト検出に基づく状態遷移」で示される状態である。
【０１１０】
なお、フライバックパルスフィルタ処理終了後に、実際にはゼロクロスが生じている場合であっても、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達する前にロータがさらに回転してロータの回転位相が現状態に対応する回転位相とは異なる状態に対応する回転位相の位置まで到達した場合にはコンパレータ積分値ＣＭＰＣＭＰ＿ＩＮＴＧがゼロに達する前にタイムアウト検出期間が経過してしまうことがある。そのため、このような場合においてもモータ駆動制御装置１は、タイムアウト検出に基づきＰＷＭ信号の状態を遷移させる。
【０１１１】
このように、モータ駆動制御装置１では、ゼロクロスの発生が既に発生したと判断した場合には、即座にＰＷＭ信号を次状態に移行させる。また、モータ駆動制御装置１は、ゼロクロスの発生の可能性がある場合には、タイムアウト検出期間の間コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達することを待つ。そして、タイムアウト検出期間中に、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達しない場合、モータ駆動制御装置１は、ロータの回転周波数がタイムアウト検出期間を一周期とする駆動周波数よりも遅いと判断し、タイムアウト検出期間の経過に応じてＰＷＭ信号を次状態に移行させる。また、モータ駆動制御装置１は、タイムアウト検出期間中にコンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達したことを検出できた場合、ロータの回転周波数がタイムアウト検出期間を一周期とする駆動周波数よりも速いと判断して、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達したことに応じてＰＷＭ信号の状態を次状態に遷移させる。
【０１１２】
そして、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達したことに応じた状態遷移（図９のステップＳ７８）が６回連続して発生したことに応じて、モータ駆動制御装置１は、有効スタートアップフラグＳＴＵＰをＦＡＬＳＥからＴＲＵＥに切り換える（ステップＳ８２）。このように、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達したことに応じた状態遷移が６回連続して発生したことは、即ち、ロータの回転周波数及び回転位相と、励磁ステータの駆動周波数及び駆動位相と、が一致したことを意味する。なお、有効スタートアップフラグＳＴＵＰがＴＲＵＥとなる直前の期間（図１６のゼロクロス検出アンバランス回転）では、モータは加速状態であって、ステートＰＷＭパル数ＳＴ＿ＰＷＭ＿ＰＬＳが移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥに達する前に、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達する状態が継続する。そのため、有効スタートアップフラグＳＴＵＰがＴＲＵＥとなる直前の期間では、各状態の一期間が徐々に短くなる。また、このゼロクロス検出アンバランス回転の状態は、ステート間の長さは不均一であるが、ロータと励磁ステータとは周波数及び位相が一致した安定した回転状態であると判定できる。
【０１１３】
そして、有効スタートアップフラグＳＴＵＰがＴＲＵＥに切り替った後は、モータ駆動制御装置１は、定電流制御指示値ＣＮＳＴ＿ＣＲＮＴ＿ＳＥＴを最大電流値ＭＡＸ＿ＣＲＮＴの３分の１から最大電流値ＭＡＸ＿ＣＲＮＴに増加させる（図１４のステップＳ１２０、Ｓ１２１）と共に、フライバックパルス継続ＰＷＭパルス数ＦＢ＿ＭＡＳＫを移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥの４分の１に設定する。そして、モータ駆動制御装置１は、定電流制御によりモータ４の回転速度を回転速度指示値ＲＯＴ＿ＳＥＴまで上昇させる。
【０１１４】
実施の形態１にかかるモータ駆動制御装置１では、上記処理によりモータ４を起動することでモータ４が逆回転状態を継続することを防止することができる。
【０１１５】
まず、モータ駆動制御装置１では、モータ４を駆動する駆動電流をゼロとして起動制御を開始する。そして、モータ駆動制御装置１は、駆動電流を徐々に増加させながら状態遷移を進める。これにより、ロータの静止トルクよりも遙かに大きな駆動トルクが急に印加されることを防止する。このように、駆動電流を徐々に大きくすることで、ロータと励磁ステータとの位相関係がロータを逆回転（意図しない回転方向）させる関係である場合であっても、ロータが逆回転方向に過剰に回転することを防止する。
【０１１６】
また、モータ駆動制御装置１では、コンパレータ１５の出力状態から、フライバックパルスフィルタ処理が終了する前にゼロクロスが発生したと判断される場合には、タイムアウト検出期間の経過を待たずに即座にＰＷＭ信号の状態を次状態に遷移させる。このとき、有効スタートアップフラグＳＴＵＰがＦＡＬＳＥである期間において、モータ駆動制御装置１では、フライバックパルス継続ＰＷＭパルス数ＦＢ＿ＭＡＳＫの値を小さく設定することで逆回転方向の駆動トルクがロータに印加される期間を短くする。一方、モータ駆動制御装置１は、フライバックパルスフィルタ処理が終了した後にゼロクロスの発生が期待できる場合には、タイムアウト検出期間が経過するまでコンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロ達することを待つ。つまり、モータ駆動制御装置１では、ロータに正回転（意図した回転方向）の駆動トルクが印加される状態ではロータの回転位相が次状態の回転位置に達することをできる限り待ち、ロータに逆回転の駆動トルクが印加される状態ではロータに駆動トルクが印加される期間を短くする。
【０１１７】
また、モータ駆動制御装置１は、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達したことに応じたＰＷＭ信号の状態遷移が６回連続して発生したことに応じてモータ４が正常な回転状態となったと判断する（有効スタートアップフラグＳＴＵＰをＴＲＵＥとする）。例えば、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達したことに応じたＰＷＭ信号の状態遷移が６回連続して発生しない場合、いずれかの駆動相において、ロータの回転周波数及び回転位相と、励磁ステータの駆動周波数及び駆動位相とが不一致となっている。このような状態で、駆動電流を最大電流値まで増加させた場合、不一致な駆動位相において意図した駆動トルクがロータに印加されず、回転が停止又は逆回転する可能性がある。一方、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達したことに応じたＰＷＭ信号の状態遷移が６回連続して発生している状態は、ロータの回転周波数及び回転位相と、励磁ステータの駆動周波数及び駆動位相とが一致していることを意味する。従って、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達したことに応じたＰＷＭ信号の状態遷移が６回連続して発生したことに応じて、モータ４が有効な回転状態となったことを判断することで、モータ４に逆回転方向の過剰な駆動トルクが印加されることを防止し、モータ４が逆回転する状態が継続することを防止することができる。
【０１１８】
続いて、モータ４が回転状態になった後のモータ駆動制御プログラムの動作について説明する。実施の形態１にかかるモータ駆動制御プログラムは、ＰＷＭ信号の周期毎にオフステートとしてハイサイドオフステートとローサイドオフステートとを切り換えるオルタネートＰＷＭ方式でモータ４を制御する。そこで、まず、モータ駆動制御プログラムが行うオルタネートＰＷＭ方式について説明する。モータ駆動制御プログラムは、デューティ比によりＰＷＭ信号のオンステートとオフステートとの比を決定する。そして、モータ駆動制御プログラムは、ＰＷＭ信号のオンステート時に電源からモータ４に駆動電流を与える。また、モータ駆動制御プログラムは、ＰＷＭ信号のオフステート時は、モータ４のコイルに流れる電流をドライバ回路３内のトランジスタ及びコイルの寄生抵抗により消費する。
【０１１９】
このオフステートにおいて、ハイサイドオフステートとローサイドオフステートとのいずれか一方のみを採用した場合、センタータップ電圧ＣＴ及び非通電相の駆動信号の電圧レベルが電源電圧側又は接地電圧側のいずれか一方に偏る。そして、この電圧レベルの偏りに起因してセンタータップ電圧ＣＴと非通電相の駆動信号との電圧関係が逆転するゼロクロス点が時間的に前又は後ろにずれる問題が生じる。一方、実施の形態１にかかるモータ駆動制御プログラムは、オルタネートＰＷＭ方式を採用することで、センタータップ電圧ＣＴ及び非通電相の駆動信号の電圧レベルが電源電圧側又は接地電圧側のいずれか一方に偏ることを防止する。具体的には、実施の形態１にかかるモータ駆動制御プログラムでは、センタータップ電圧ＣＴ及び非通電相の駆動信号の電圧レベルが電源電圧側に偏る周期と接地電圧側に偏る周期がＰＷＭ信号の周期毎に繰り返され、一方に偏ることが防止される。さらに、入力されるセンタータップ電圧ＣＴと比較対象検出信号ＳＰ（非通電相の駆動信号）との電圧レベルがＰＷＭ信号の周期毎に上下の偏りを持たせることで、モータ駆動制御装置１のコンパレータ１５が入力オフセットを有していても、入力オフセットによる誤差は、コンパレータ積分値ＣＭＰ＿ＩＮＴＧを算出する段階で相殺される。つまり、実施の形態１にかかるモータ駆動制御プログラムは、オルタネートＰＷＭ方式を採用することでコンパレータ積分値ＣＭＰ＿ＩＮＴＧに基づくＰＷＭ信号の状態遷移タイミングの精度を向上させることができる。
【０１２０】
モータ４は、３相駆動のモータであり、６状態のＰＷＭ信号により制御される。そして、オルタネートＰＷＭ方式による動作を行う場合、回転動作を行うために、ドライバ回路３を構成するトランジスタのいずれをオンさせるかが状態毎に異なる。そこで、図１７〜図２２に状態０〜状態５の各状態のオンステートとオフステートの制御状態を説明するドライバ回路３の回路図を示す。
【０１２１】
ここで、オンステートとオフステートのドライバ回路の制御状態を説明する前に、図１７〜図２２を参照してドライバ回路３の回路について説明する。図１７〜図２２に示すように、ドライバ回路３は、Ｕ相、Ｖ相、Ｗ相の３つの駆動信号を生成するために、３組の駆動段回路を有する。図１７〜図２２に示す例では、３組の駆動段回路は、ＰＭＯＳトランジスタによりハイサイドトランジスタが形成され、ＮＭＯＳトランジスタによりローサイドトランジスタが形成される。
【０１２２】
そして、図１７〜図２２に示すように、Ｕ相の駆動信号を生成する駆動段回路は、ハイサイドトランジスタＰＵとローサイドトランジスタＮＵとが電源配線と接地配線との間に直列に接続される。また、ハイサイドトランジスタＰＵのゲートにはＰＷＭ信号ＵＨが入力され、ローサイドトランジスタＮＵのゲートにはＰＷＭ信号ＵＬが入力される。Ｖ相の駆動信号を生成する駆動段回路は、ハイサイドトランジスタＰＶとローサイドトランジスタＮＶとが電源配線と接地配線との間に直列に接続される。また、ハイサイドトランジスタＰＶのゲートにはＰＷＭ信号ＶＨが入力され、ローサイドトランジスタＮＶのゲートにはＰＷＭ信号ＶＬが入力される。Ｗ相の駆動信号を生成する駆動段回路は、ハイサイドトランジスタＰＷとローサイドトランジスタＮＷとが電源配線と接地配線との間に直列に接続される。また、ハイサイドトランジスタＰＷのゲートにはＰＷＭ信号ＷＨが入力され、ローサイドトランジスタＮＷのゲートにはＰＷＭ信号ＷＬが入力される。
【０１２３】
続いて、オンステートとオフステートのドライバ回路の制御状態を説明する。図１７は、状態０におけるオンステートとオフステートのドライバ回路３の制御状態を示す回路図である。図１７に示すように、状態０のオンステートでは、ハイサイドトランジスタＰＵとローサイドトランジスタＮＶがオン状態となる。そして、モータ４のＵ相のコイルＬＵからＶ相のコイルＬＶに駆動電流が流れる。また、ハイサイドオフステートでは、ハイサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタＰＵが属する駆動段回路のローサイドトランジスタＮＵと、オンステートにおいてオン状態であったローサイドトランジスタＮＶと、がオン状態となる。そして、コイルＬＵ、ＬＶに流れていたフライバック電流はローサイドトランジスタＮＵ、ＮＶにより消費される。また、ローサイドオフステートでは、ローサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタＰＵと、オンステートにおいてオン状態であったローサイドトランジスタＮＶが属する駆動段回路のハイサイドトランジスタＰＶと、がオン状態となる。そして、コイルＬＵ、ＬＶに流れていたフライバック電流はハイサイドトランジスタＰＵ、ＰＶにより消費される。
【０１２４】
図１８は、状態１におけるオンステートとオフステートのドライバ回路３の制御状態を示す回路図である。図１８に示すように、状態１のオンステートでは、ハイサイドトランジスタＰＵとローサイドトランジスタＮＷがオン状態となる。そして、モータ４のＵ相のコイルＬＵからＷ相のコイルＬＷに駆動電流が流れる。また、ハイサイドオフステートでは、ハイサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタＰＵが属する駆動段回路のローサイドトランジスタＮＵと、オンステートにおいてオン状態であったローサイドトランジスタＮＷと、がオン状態となる。そして、コイルＬＵ、ＬＷに流れていたフライバック電流はローサイドトランジスタＮＵ、ＮＷにより消費される。また、ローサイドオフステートでは、ローサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタＰＵと、オンステートにおいてオン状態であったローサイドトランジスタＮＷが属する駆動段回路のハイサイドトランジスタＰＷと、がオン状態となる。そして、コイルＬＵ、ＬＷに流れていたフライバック電流はハイサイドトランジスタＰＵ、ＰＷにより消費される。
【０１２５】
図１９は、状態２におけるオンステートとオフステートのドライバ回路３の制御状態を示す回路図である。図１９に示すように、状態２のオンステートでは、ハイサイドトランジスタＰＶとローサイドトランジスタＮＷがオン状態となる。そして、モータ４のＶ相のコイルＬＶからＷ相のコイルＬＷに駆動電流が流れる。また、ハイサイドオフステートでは、ハイサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタＰＶが属する駆動段回路のローサイドトランジスタＮＶと、オンステートにおいてオン状態であったローサイドトランジスタＮＷと、がオン状態となる。そして、コイルＬＶ、ＬＷに流れていたフライバック電流はローサイドトランジスタＮＶ、ＮＷにより消費される。また、ローサイドオフステートでは、ローサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタＰＶと、オンステートにおいてオン状態であったローサイドトランジスタＮＷが属する駆動段回路のハイサイドトランジスタＰＷと、がオン状態となる。そして、コイルＬＶ、ＬＷに流れていたフライバック電流はハイサイドトランジスタＰＶ、ＰＷにより消費される。
【０１２６】
図２０は、状態３におけるオンステートとオフステートのドライバ回路３の制御状態を示す回路図である。図２０に示すように、状態３のオンステートでは、ハイサイドトランジスタＰＶとローサイドトランジスタＮＵがオン状態となる。そして、モータ４のＶ相のコイルＬＶからＵ相のコイルＬＵに駆動電流が流れる。また、ハイサイドオフステートでは、ハイサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタＰＶが属する駆動段回路のローサイドトランジスタＮＶと、オンステートにおいてオン状態であったローサイドトランジスタＮＵと、がオン状態となる。そして、コイルＬＶ、ＬＵに流れていたフライバック電流はローサイドトランジスタＮＶ、ＮＵにより消費される。また、ローサイドオフステートでは、ローサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタＰＶと、オンステートにおいてオン状態であったローサイドトランジスタＮＵが属する駆動段回路のハイサイドトランジスタＰＵと、がオン状態となる。そして、コイルＬＵ、ＬＶに流れていたフライバック電流はハイサイドトランジスタＰＵ、ＰＶにより消費される。
【０１２７】
図２１は、状態４におけるオンステートとオフステートのドライバ回路３の制御状態を示す回路図である。図２１に示すように、状態４のオンステートでは、ハイサイドトランジスタＰＷとローサイドトランジスタＮＵがオン状態となる。そして、モータ４のＷ相のコイルＬＷからＵ相のコイルＬＵに駆動電流が流れる。また、ハイサイドオフステートでは、ハイサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタＰＷが属する駆動段回路のローサイドトランジスタＮＷと、オンステートにおいてオン状態であったローサイドトランジスタＮＵと、がオン状態となる。そして、コイルＬＵ、ＬＷに流れていたフライバック電流はローサイドトランジスタＮＵ、ＮＷにより消費される。また、ローサイドオフステートでは、ローサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタＰＷと、オンステートにおいてオン状態であったローサイドトランジスタＮＵが属する駆動段回路のハイサイドトランジスタＰＵと、がオン状態となる。そして、コイルＬＵ、ＬＷに流れていたフライバック電流はハイサイドトランジスタＰＵ、ＰＷにより消費される。
【０１２８】
図２２は、状態５におけるオンステートとオフステートのドライバ回路３の制御状態を示す回路図である。図２２に示すように、状態５のオンステートでは、ハイサイドトランジスタＰＷとローサイドトランジスタＮＶがオン状態となる。そして、モータ４のＷ相のコイルＬＷからＶ相のコイルＬＶに駆動電流が流れる。また、ハイサイドオフステートでは、ハイサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタＰＷが属する駆動段回路のローサイドトランジスタＮＷと、オンステートにおいてオン状態であったローサイドトランジスタＮＶと、がオン状態となる。そして、コイルＬＶ、ＬＷに流れていたフライバック電流はローサイドトランジスタＮＶ、ＮＷにより消費される。また、ローサイドオフステートでは、ローサイドトランジスタをすべてオフ状態とし、オンステートにおいてオン状態であったハイサイドトランジスタＰＷと、オンステートにおいてオン状態であったローサイドトランジスタＮＶが属する駆動段回路のハイサイドトランジスタＰＶと、がオン状態となる。そして、コイルＬＶ、ＬＷに流れていたフライバック電流はハイサイドトランジスタＰＶ、ＰＷにより消費される。
【０１２９】
なお、オフステートにおいて、オフされたトランジスタと対になる反対側のトランジスタをオンする動作は、同期整流動作と呼ばれる。つまり、実施の形態１にかかるモータ駆動制御プログラムにおけるオルタネートＰＷＭ方式の動作は、同期整流動作を含む。このような同期整流動作を行うことで、従来は、オフ状態のトランジスタのボディダイオードで消費されたフライバック電流を、オン状態のトランジスタにおいて消費することが可能になり電力効率を向上させることができる。そこで、同期整流動作の有無による入出力特性を比較するグラフを図２３に示す。図２３に示すように、同期整流動作を行った場合、入力される電力が小さい場合の出力（回転速度×トルク）が同期整流動作を行わない場合に比べて低くなっていることがわかる。また、入力電力の範囲が同じである場合、出力の範囲が同期整流動作を行った場合の方が広くなっていることがわかる。
【０１３０】
上記説明より、実施の形態１にかかるモータ駆動制御プログラムでは、オルタネートＰＷＭ方式によりＰＷＭ信号のオフステートの状態を制御する。オフステートの制御としては、オルタネートＰＷＭ方式の他に、ハイサイドオフステートとローサイドオフステートとのいずれか一方の状態のみの制御を行うことも考えられる。しかし、オフステートとしてハイサイドオフステートとローサイドオフステートとのいずれか一方しか行わない場合、センタータップ電圧ＣＴ及び非通電相の駆動信号の電圧レベルが電源電圧側又は接地電圧側のいずれか一方に偏る。また、モータ４の回転速度が低い場合、ハイインピーダンス状態となる非通電相の電位変化の傾きが緩やかになる。そのため、オフステートとしてハイサイドオフステートとローサイドオフステートとのいずれか一方しか行わない場合、モータ４の回転速度が低い状態で、センタータップ電圧ＣＴ及び非通電相の駆動信号の電圧関係が逆転するゼロクロスタイミングのずれが顕著になりゼロクロス点のずれが顕著になる問題がある。
【０１３１】
しかし、実施の形態１にかかるモータ駆動制御プログラムでは、オルタネートＰＷＭ方式を採用することで、センタータップ電圧ＣＴ及び非通電相の駆動信号の電圧レベルのずれ方向がＰＷＭ信号の周期毎に上下する。これにより、コンパレータ１５が入力オフセットを有する場合であっても、入力オフセットに起因するコンパレータ積分値ＣＭＰ＿ＩＮＴＧのずれが、センタータップ電圧ＣＴ及び非通電相の駆動信号の電圧レベルのずれ方向の変動により相殺される。また、コンパレータ１５は、入力ノイズの影響により誤判定を生じることがあるが、オルタネートＰＷＭ方式を採用することでセンタータップ電圧ＣＴ及び非通電相の駆動信号の電圧レベルの上下方向の変動が入力ノイズを相殺する。そのため、実施の形態１にかかるモータ駆動制御プログラムを用いた場合、コンパレータ１５にヒステリシス特性を持たせる必要がない。これにより、実施の形態１にかかるモータ駆動制御プログラムでは、モータ４の回転速度が遅くセンタータップ電圧ＣＴと非通電相の駆動信号との傾きが緩やかな状態であっても、コンパレータ１５の入力オフセット及びヒステリシス特性に起因するゼロクロス検出タイミングのずれの影響を受けることない。そして、実施の形態１にかかるモータ駆動制御プログラムでは、コンパレータ積分値ＣＭＰ＿ＩＮＴＧにより精度の高いタイミングでＰＷＭ信号の状態を遷移させることができる。即ち、実施の形態１にかかるモータ駆動制御プログラムは、低回転速度領域におけるモータの制御性を高めることができる。また、実施の形態１にかかるモータ駆動制御プログラムは、低回転速度側の制御性が高めることで、広い回転速度範囲でモータの制御性を高めることができる。
【０１３２】
このようなオルタネートＰＷＭ方式による動作は、ＰＷＭ信号のデューティ比が１００％未満の状態で行われる。そこで、オルタネートＰＷＭ方式による動作が行われるＰＷＭ信号のデューティ比が５０％である状態を例にモータ駆動制御プログラムの動作について説明する。なお、以下の説明では、モータ駆動制御プログラムの動作に基づき生成されるＰＷＭ信号は、モータ駆動制御装置１から出力されるものであるため、モータ駆動制御プログラムの動作としてモータ駆動制御装置１の動作を説明する。
【０１３３】
ここでは、ＰＷＭ信号の波形と、モータ４を駆動する駆動信号の波形及び駆動信号に応じたモータ駆動制御装置１の動作をより詳細に説明するために、状態０の動作状態を例に、モータ駆動制御装置１の動作について説明する。
【０１３４】
まず、図２４に、モータ駆動制御装置１が生成するＰＷＭ信号、当該ＰＷＭ信号に応じて生成されるモータ４の駆動信号及びモータ４のセンタータップ電圧ＣＴのタイミングチャートを示す。図２４に示すように、モータ駆動制御装置１では、デューティ比が５０％となる基準ＰＷＭ信号を生成する。そして、モータ駆動制御装置１は、基準ＰＷＭ信号に基づき３相の駆動信号を生成するための６つのＰＷＭ信号ＵＨ、ＵＬ、ＶＨ、ＶＬ、ＷＨ、ＷＬを生成する。
【０１３５】
状態０は、Ｕ相からＶ相に向かって駆動電流を流す状態である。また、状態０では、Ｗ相の駆動信号はハイインピーダンス状態（Ｚステート）となる。そこで、状態０では、モータ駆動制御装置１は、基準ＰＷＭ信号のオンステート（ハイレベルの期間）においてＰＷＭ信号ＵＨ、ＵＬをローレベルとする。また、状態０では、モータ駆動制御装置１は、基準ＰＷＭ信号のオンステートにおいてＰＷＭ信号ＶＨ、ＶＬをハイレベルとする。さらに、状態０では、モータ駆動制御装置１は、基準ＰＷＭ信号のオンステートにおいてＰＷＭ信号ＷＨをハイレベル、ＰＷＭ信号ＷＬをローレベルとする。これにより、基準ＰＷＭ信号のオンタイムにおいて、Ｕ相の駆動信号はハイレベルとなり、Ｖ相の駆動信号はローレベルとなる。そして、Ｕ相からＶ相に対して駆動電流が流れる。また、Ｗ相の駆動信号はハイインピーダンス状態であるため、Ｕ相の駆動信号とＶ相の駆動信号との間の電圧値になる。このＷ相の駆動信号の電圧値は、ロータの回転位置に従って電圧値が徐々に低下する。
【０１３６】
また、実施の形態１では、オルタネートＰＷＭ方式による動作を行うため、基準ＰＷＭ信号のオフステートとしてハイサイドオフステートと、ローサイドオフステートと、を有する。そして、図２４に示すように、実施の形態１にかかるモータ駆動制御装置１は、ハイサイドオフステートとローサイドオフステートとをＰＷＭ信号の周期毎に切り換える。
【０１３７】
そこで、まず、状態０におけるハイサイドオフステート時のＰＷＭ信号ＵＨ、ＵＬ、ＶＨ、ＶＬ、ＷＨ、ＷＬについて説明する。状態０では、Ｕ相からＶ相に向かって駆動電流を流し、Ｗ相の駆動信号はハイインピーダンス状態となる。そこで、状態０のハイサイドオフステートでは、モータ駆動制御装置１は、基準ＰＷＭ信号のオフステート（ローレベルの期間）においてＰＷＭ信号ＵＨ、ＵＬをハイレベルとする。また、状態０のハイサイドオフステートでは、モータ駆動制御装置１は、基準ＰＷＭ信号のオフステートにおいてＰＷＭ信号ＶＨ、ＶＬをハイレベルとする。さらに、状態０のハイサイドオフステートでは、モータ駆動制御装置１は、基準ＰＷＭ信号のオフステートにおいてＰＷＭ信号ＷＨをハイレベル、ＰＷＭ信号ＷＬをローレベルとする。これにより、基準ＰＷＭ信号のオフタイムにおいて、Ｕ相の駆動信号、Ｖ相の駆動信号及びＷ相の駆動信号はローレベルとなる。そして、Ｕ相とＶ相との間において電流が流れる。
【０１３８】
続いて、状態０におけるローサイドオフステート時のＰＷＭ信号ＵＨ、ＵＬ、ＶＨ、ＶＬ、ＷＨ、ＷＬについて説明する。状態０では、Ｕ相からＶ相に向かって駆動電流を流し、Ｗ相の駆動信号はハイインピーダンス状態となる。そこで、状態０のローサイドオフステートでは、モータ駆動制御装置１は、基準ＰＷＭ信号のオフステート（ローレベルの期間）においてＰＷＭ信号ＵＨ、ＵＬをローレベルとする。また、状態０のローサイドオフステートでは、モータ駆動制御装置１は、基準ＰＷＭ信号のオフステートにおいてＰＷＭ信号ＶＨ、ＶＬをローレベルとする。さらに、状態０のローサイドオフステートでは、モータ駆動制御装置１は、基準ＰＷＭ信号のオフステートにおいてＰＷＭ信号ＷＨをハイレベル、ＰＷＭ信号ＷＬをローレベルとする。これにより、基準ＰＷＭ信号のオフタイムにおいて、Ｕ相の駆動信号、Ｖ相の駆動信号及びＷ相の駆動信号はハイレベルとなる。そして、Ｕ相とＶ相との間において電流が流れる。
【０１３９】
上記説明のように、モータ駆動制御装置１は、ＰＷＭ信号の周期毎にオンステートとオフステートとを切り替える。さらに、モータ駆動制御装置１は、オフステートの制御状態を、ＰＷＭ信号の周期毎にハイサイドオフステートとローサイドオフステートとに切り換える。このような制御を行うことで、モータ駆動制御装置１は、オンステートにおいてＵ相からＶ相に駆動電流を流す。そして、ハイインピーダンス状態となる非通電相（状態０ではＷ相の駆動信号）の電圧は、ハイレベルからローレベルに向かって変化する。この非通電相の電圧変化は、ロータの回転位置に応じて変化する。なお、ＰＷＭ信号の状態が変化した直後は、非通電相にフライバックパルスが生じる。センタータップ電圧ＣＴは、Ｕ相、Ｖ相、Ｗ相の駆動信号の電圧値に基づき生成される。このとき、オンステートにおいてＵ相の駆動信号はハイレベルであり、Ｖ相の駆動信号はローレベルであるため、センタータップ電圧ＣＴは、非通電相のＷ相の駆動信号の電圧に応じた変動を示す。
【０１４０】
続いて、状態０におけるモータ駆動制御装置１のＰＷＭ信号制御処理について説明する。図２５に、デューティ比が５０％のＰＷＭ信号を生成した場合の状態０のモータ駆動制御装置１の動作を説明するタイミングチャートを示す。図２５に示すように、ＰＷＭ信号のデューティ比が５０％である場合、モータ駆動制御装置１は、ＢＥＭＦタイマ割り込みが生じたことに応じて、ＰＷＭ信号をオンステートからオフステートに切り換える。この動作は、図５のステップＳ３２の動作に相当するものである。また、モータ駆動制御装置１は、ＰＷＭ周期割り込みに応じて、ＰＷＭ信号をオフステートからオンステートに切り換える。この動作は、図５のステップＳ３６の動作に相当するものである。なお、モータ駆動制御装置１は、一状態の中でＰＷＭ信号のデューティ比をＰＷＭ信号の周期毎に更新するが、図２５では、説明を簡単にするために全期間に亘りＰＷＭ信号のデューティ比を５０％とした。
【０１４１】
状態０では、非通電相はＷ相の駆動信号である。そのため、モータ駆動制御装置１は、Ｗ相の駆動信号を比較対象検出信号ＳＰとして選択する。つまり、モータ駆動制御装置１のコンパレータ１５には、Ｗ相の駆動信号を比較対象検出信号ＳＰとセンタータップ電圧ＣＴとが入力される。そして、コンパレータ１５は、比較対象検出信号ＳＰがセンタータップ電圧ＣＴよりも高い場合、出力信号ＣＭＰ＿ＯＵＴをハイレベルとし、比較対象検出信号ＳＰがセンタータップ電圧ＣＴよりも低い場合、出力信号ＣＭＰ＿ＯＵＴをローレベルとする。
【０１４２】
そして、モータ駆動制御装置１は、ＢＥＭＦ割り込みが発生するとコンパレータ１５の出力信号ＣＭＰ＿ＯＵＴの値をサンプリングする。この動作は、図５のステップＳ２３の動作に相当するものである。図２５に示す例では、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴとして、ＰＷＭデモジュレータ２１によりサンプリングされた出力信号ＣＭＰ＿ＯＵＴを示した。
【０１４３】
なお、図２５に示す例では、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴが比較対象検出信号ＳＰとセンタータップ電圧ＣＴとの電圧関係を誤判定する期間（例えば、コンパレータ１５の出力信号がパルス状の波形となる期間）が存在する。この現象は、コンパレータ１５に入力されるノイズ、或いは、オルタネートＰＷＭ方式の動作に起因して生じるものである。
【０１４４】
また、モータ駆動制御装置１は、サンプリングされたコンパレータ１５の出力信号ＣＭＰ＿ＯＵＴの値に基づきコンパレータ積分値を増減させる。より具体的には、モータ駆動制御装置１は、フライバックパルスフィルタ処理がなされる期間（例えば、フライバックパルス継続ＰＷＭパルス数ＦＢ＿ＭＡＳＫで示す期間）においては、比較対象検出信号ＳＰとセンタータップ電圧ＣＴとの電圧関係に関わらずコンパレータ積分値ＣＭＰ＿ＩＮＴＧを増加させる。この動作は、図６のステップＳ４４及び図８のステップＳ６３の動作に相当するものである。また、モータ駆動制御装置１は、フライバックパルスフィルタ処理がなされる期間が終了すると、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴがハイレベルである場合コンパレータ積分値ＣＭＰ＿ＩＮＴＧを増加させ、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴがローレベルである場合コンパレータ積分値ＣＭＰ＿ＩＮＴＧを減少させる。この動作は、図９のステップＳ７０〜Ｓ７２の動作に相当するものである。
【０１４５】
また、モータ駆動制御装置１は、ＰＷＭ周期タイマ割り込みが発生する毎にステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳを増加させる。この動作は、図６のステップＳ４１の動作に相当するものである。モータ駆動制御装置１は、第１の条件と第２の条件のいずれか一方を満たした場合、ＰＷＭ信号の状態を次状態に遷移させる。ここで、第１の条件とは、現状態（例えば、状態０）のステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ［０］が移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥに達したことである。なお、また、移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥは、前状態（例えば、状態０）のステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ［０］と、前状態よりも前の５つの状態のステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ［５］〜ＳＴ＿ＰＷＭ＿ＰＬＳ［１］との合計値を状態数である６で除算して得られる値である。また、第２の条件は、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがカウント初期値（例えば、ゼロ）に達したことである。第１の条件に応じて生じる状態の遷移は、図９のステップＳ８４及びステップＳ８５の動作に相当するものである。第２の条件に応じて生じる条件の遷移は、図９のステップＳ７７及びステップＳ７８の動作に相当するものである。図２５に示す例では、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達したこと、つまり、第２の条件を満たしたことに応じてＰＷＭ信号の状態遷移が行われた例を示した。
【０１４６】
続いて、モータ駆動制御装置１がモータ４を一回転させる期間の動作について説明する。モータ駆動制御装置１は、モータ４を一回転させる間にＰＷＭ信号を６回状態遷移させる。そこで、図２６に、モータ駆動制御装置１においてデューティ比が５０％のＰＷＭ信号を生成した場合の状態０〜状態５の駆動信号及びセンタータップ電圧を説明するタイミングチャートを示す。なお、ＰＷＭ信号ＵＨ、ＵＬ、ＶＨ、ＶＬ、ＷＨ、ＷＬの信号波形は、図２４で説明した状態０の信号波形と同等の波形が状態の遷移に対応したものであるあるため、ここでは信号波形についての詳細な説明は省略する。
【０１４７】
図２６に示すように、モータ駆動制御装置１は、状態０において、ＰＷＭ信号ＷＨをハイレベル、ＰＷＭ信号ＷＬをローレベルとすることでＷ相の駆動信号を非通電相とする。一方、モータ駆動制御装置１は、ＰＷＭ信号ＵＨ、ＵＬ、ＶＨ、ＶＬを制御してオンステートにおいてＵ相からＶ相に向かって駆動電流を流し、オフステートにおいてＵ相とＶ相の駆動信号をハイサイドオフステート状態又はローサイドオフステート状態とする。これにより、センタータップ電圧ＣＴは、Ｗ相の駆動信号の電圧変動に対応した電圧変動を生じる。
【０１４８】
また、モータ駆動制御装置１は、状態１において、ＰＷＭ信号ＶＨをハイレベル、ＰＷＭ信号ＶＬをローレベルとすることでＶ相の駆動信号を非通電相とする。一方、モータ駆動制御装置１は、ＰＷＭ信号ＵＨ、ＵＬ、ＷＨ、ＷＬを制御してオンステートにおいてＵ相からＷ相に向かって駆動電流を流し、オフステートにおいてＵ相とＷ相の駆動信号をハイサイドオフステート状態又はローサイドオフステート状態とする。これにより、センタータップ電圧ＣＴは、Ｖ相の駆動信号の電圧変動に対応した電圧変動を生じる。
【０１４９】
また、モータ駆動制御装置１は、状態２において、ＰＷＭ信号ＵＨをハイレベル、ＰＷＭ信号ＵＬをローレベルとすることでＵ相の駆動信号を非通電相とする。一方、モータ駆動制御装置１は、ＰＷＭ信号ＶＨ、ＶＬ、ＷＨ、ＷＬを制御してオンステートにおいてＶ相からＷ相に向かって駆動電流を流し、オフステートにおいてＶ相とＷ相の駆動信号をハイサイドオフステート状態又はローサイドオフステート状態とする。これにより、センタータップ電圧ＣＴは、Ｕ相の駆動信号の電圧変動に対応した電圧変動を生じる。
【０１５０】
また、モータ駆動制御装置１は、状態３において、ＰＷＭ信号ＷＨをハイレベル、ＰＷＭ信号ＷＬをローレベルとすることでＷ相の駆動信号を非通電相とする。一方、モータ駆動制御装置１は、ＰＷＭ信号ＵＨ、ＵＬ、ＶＨ、ＶＬを制御してオンステートにおいてＶ相からＵ相に向かって駆動電流を流し、オフステートにおいてＶ相とＵ相の駆動信号をハイサイドオフステート状態又はローサイドオフステート状態とする。これにより、センタータップ電圧ＣＴは、Ｗ相の駆動信号の電圧変動に対応した電圧変動を生じる。
【０１５１】
また、モータ駆動制御装置１は、状態４において、ＰＷＭ信号ＶＨをハイレベル、ＰＷＭ信号ＶＬをローレベルとすることでＶ相の駆動信号を非通電相とする。一方、モータ駆動制御装置１は、ＰＷＭ信号ＵＨ、ＵＬ、ＷＨ、ＷＬを制御してオンステートにおいてＷ相からＵ相に向かって駆動電流を流し、オフステートにおいてＷ相とＵ相の駆動信号をハイサイドオフステート状態又はローサイドオフステート状態とする。これにより、センタータップ電圧ＣＴは、Ｖ相の駆動信号の電圧変動に対応した電圧変動を生じる。
【０１５２】
また、モータ駆動制御装置１は、状態５において、ＰＷＭ信号ＵＨをハイレベル、ＰＷＭ信号ＵＬをローレベルとすることでＵ相の駆動信号を非通電相とする。一方、モータ駆動制御装置１は、ＰＷＭ信号ＶＨ、ＶＬ、ＷＨ、ＷＬを制御してオンステートにおいてＷ相からＶ相に向かって駆動電流を流し、オフステートにおいてＷ相とＶ相の駆動信号をハイサイドオフステート状態又はローサイドオフステート状態とする。これにより、センタータップ電圧ＣＴは、Ｕ相の駆動信号の電圧変動に対応した電圧変動を生じる。
【０１５３】
続いて、図２７に、モータ駆動制御装置１においてデューティ比が５０％のＰＷＭ信号を生成した場合の状態０〜状態５のモータ駆動制御装置１の動作を説明するタイミングチャートを示す。なお、フライバックパルスフィルタ、コンパレータ積分値ＣＭＰ＿ＩＮＴＧ、ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳに関する動作は、図２５で説明した状態０の動作と同等の動作であるため、ここでは、これらの動作に関する詳細な説明は省略する。
【０１５４】
図２７に示すように、モータ駆動制御装置１は、状態０において比較対象検出信号ＳＰとしてＷ相の駆動信号を選択し、状態１において比較対象検出信号ＳＰとしてＶ相の駆動信号を選択し、状態２において比較対象検出信号ＳＰとしてＵ相の駆動信号を選択し、状態３において比較対象検出信号ＳＰとしてＷ相の駆動信号を選択し、状態４において比較対象検出信号ＳＰとしてＶ相の駆動信号を選択し、状態５において比較対象検出信号ＳＰとしてＵ相の駆動信号を選択する。そして、各状態において、コンパレータ１５により、比較対象検出信号ＳＰとセンタータップ電圧ＣＴとを比較する。
【０１５５】
そして、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴの値に基づきコンパレータ積分値ＣＭＰ＿ＩＮＴＧを算出する。このとき、コンパレータ積分値ＣＭＰ＿ＩＮＴＧは、偶数番目の状態では増加後に減少する変動を示し、奇数番目の状態では減少後に増加する変動を示す。なお、図２７に示す例では、いずれの状態においても、コンパレータ１５が２つの入力信号間の電圧関係を誤判定する状態が生じている。しかし、モータ駆動制御装置１では、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロになったことにより比較対象検出信号ＳＰとセンタータップ電圧ＣＴとの間のゼロクロスを検出して、ロータの位置検出を行うことができる。
【０１５６】
また、モータ駆動制御装置１は、現状態と現状態より以前の５つの状態のステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳの合計値から次状態で利用される移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥを算出する。そして、モータ駆動制御装置１は、ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳが移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥに達したこと、又は、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達したことのいずれか一方の条件が満たされたことに応じてＰＷＭ信号の状態を遷移させる。
【０１５７】
続いて、ＰＷＭ信号のデューティ比を１００％とした場合のモータ駆動制御装置１の動作について説明する。図２８に、デューティ比が１００％のＰＷＭ信号を生成した場合の状態０〜状態５の駆動信号及びセンタータップ電圧を説明するタイミングチャートを示す。図２８に示すように、状態０では、モータ駆動制御装置１は、駆動電流の経路となるハイサイドトランジスタＰＵ及びローサイドトランジスタＮＶを導通状態とする。そのため、モータ駆動制御装置１は、ＰＷＭ信号ＵＨ及びＰＷＭ信号ＶＬのみをオンステートとし、その他のＰＷＭ信号はオフステートとする。これにより、非通電相となるＷ相の駆動信号にロータ位置に従った電位変動が生じる。
【０１５８】
状態１では、モータ駆動制御装置１は、駆動電流の経路となるハイサイドトランジスタＰＵ及びローサイドトランジスタＮＷを導通状態とする。そのため、モータ駆動制御装置１は、ＰＷＭ信号ＵＨ及びＰＷＭ信号ＷＬのみをオンステートとし、その他のＰＷＭ信号はオフステートとする。これにより、非通電相となるＶ相の駆動信号にロータ位置に従った電位変動が生じる。
【０１５９】
状態２では、モータ駆動制御装置１は、駆動電流の経路となるハイサイドトランジスタＰＶ及びローサイドトランジスタＮＷを導通状態とする。そのため、モータ駆動制御装置１は、ＰＷＭ信号ＶＨ及びＰＷＭ信号ＷＬのみをオンステートとし、その他のＰＷＭ信号はオフステートとする。これにより、非通電相となるＵ相の駆動信号にロータ位置に従った電位変動が生じる。
【０１６０】
状態３では、モータ駆動制御装置１は、駆動電流の経路となるハイサイドトランジスタＰＶ及びローサイドトランジスタＮＵを導通状態とする。そのため、モータ駆動制御装置１は、ＰＷＭ信号ＶＨ及びＰＷＭ信号ＵＬのみをオンステートとし、その他のＰＷＭ信号はオフステートとする。これにより、非通電相となるＷ相の駆動信号にロータ位置に従った電位変動が生じる。
【０１６１】
状態４では、モータ駆動制御装置１は、駆動電流の経路となるハイサイドトランジスタＰＷ及びローサイドトランジスタＮＵを導通状態とする。そのため、モータ駆動制御装置１は、ＰＷＭ信号ＷＨ及びＰＷＭ信号ＵＬのみをオンステートとし、その他のＰＷＭ信号はオフステートとする。これにより、非通電相となるＶ相の駆動信号にロータ位置に従った電位変動が生じる。
【０１６２】
状態５では、モータ駆動制御装置１は、駆動電流の経路となるハイサイドトランジスタＰＷ及びローサイドトランジスタＮＶを導通状態とする。そのため、モータ駆動制御装置１は、ＰＷＭ信号ＷＨ及びＰＷＭ信号ＶＬのみをオンステートとし、その他のＰＷＭ信号はオフステートとする。これにより、非通電相となるＵ相の駆動信号にロータ位置に従った電位変動が生じる。
【０１６３】
続いて、図２９に、モータ駆動制御装置１においてデューティ比が１００％のＰＷＭ信号を生成した場合の状態０〜状態５のモータ駆動制御装置１の動作を説明するタイミングチャートを示す。なお、フライバックパルスフィルタ、コンパレータ積分値ＣＭＰ＿ＩＮＴＧ、ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳに関する動作は、図２５で説明した状態０の動作と同等の動作であるため、ここでは、これらの動作に関する詳細な説明は省略する。
【０１６４】
図２９に示すように、モータ駆動制御装置１は、状態０において比較対象検出信号ＳＰとしてＷ相の駆動信号を選択し、状態１において比較対象検出信号ＳＰとしてＶ相の駆動信号を選択し、状態２において比較対象検出信号ＳＰとしてＵ相の駆動信号を選択し、状態３において比較対象検出信号ＳＰとしてＷ相の駆動信号を選択し、状態４において比較対象検出信号ＳＰとしてＶ相の駆動信号を選択し、状態５において比較対象検出信号ＳＰとしてＵ相の駆動信号を選択する。そして、各状態において、コンパレータ１５により、比較対象検出信号ＳＰとセンタータップ電圧ＣＴとを比較する。
【０１６５】
そして、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴの値に基づきコンパレータ積分値ＣＭＰ＿ＩＮＴＧを算出する。このとき、コンパレータ積分値ＣＭＰ＿ＩＮＴＧは、偶数番目の状態では増加後に減少する変動を示し、奇数番目の状態では減少後に増加する変動を示す。なお、図２９に示す例では、いずれの状態においても、コンパレータ１５は２つの入力信号間の電圧関係について誤判定を生じることなく正しく判定している。これは、モータ４の回転速度が高く、一状態の時間が短い（すなわちステートＰＷＭパルス数ＳＴ＿ＰＷＭＰＬＳが小さい）ため、非通電相の電位変化の傾きが大きい。そのため、コンパレータ１５に入力される２つの信号の電位差が小さな期間が小さい。このようなことから、モータ４の回転速度が高い場合、コンパレータ１５が入力信号の電圧関係を誤判定確率が小さくなる。また、非通電相の電位変化の傾きが大きいため、コンパレータ１５の入力オフセットがコンパレータ積分値ＣＭＰ＿ＩＮＴＧに与える影響も少なくなる。なお、モータ駆動制御装置１では、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロになったことにより比較対象検出信号ＳＰとセンタータップ電圧ＣＴとの間のゼロクロスを検出するため、モータ４の回転速度によらず、ロータの位置検出精度を保つことができる。
【０１６６】
また、モータ駆動制御装置１は、現状態と現状態より以前の５つの状態のステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳの合計値から次状態で利用される移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥを算出する。そして、モータ駆動制御装置１は、ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳが移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥに達したこと、又は、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達したことのいずれか一方の条件が満たされたことに応じてＰＷＭ信号の状態を遷移させる。
【０１６７】
続いて、実施の形態１にかかるモータ駆動制御装置１におけるＰＷＭ信号の生成方法について具体的な波形を示して説明する。つまり、実施の形態１にかかるモータ駆動制御装置１における図１５で示したＰＷＭプリモジュレーション処理についてここで説明する。モータ駆動制御装置１は、図１４のレギュレーションループ調停処理において決定されたＰＷＭ信号のオンタイムＰＷＭ＿ＯＮに基づきＰＷＭ信号のデューティ比を決定する。
【０１６８】
まず、レギュレーションループ調停処理において決定されたＰＷＭ信号のデューティ比が最大デューティ設定値よりも大きな場合のＰＷＭ信号のオンタイムＰＷＭの決定手順を示すタイミングチャートを図３０に示す。図３０に示すように、この場合、レギュレーションループ調停処理により決定されたＰＷＭ信号のデューティ比に基づき生成されるオリジナルＰＷＭ信号は、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮが最大デューティ設定値ＭＡＸ＿ＤＵＴＹよりも長くなる。そのため、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮからＰＷＭ信号の周期ＰＷＭ＿ＴＲＭを引いた値を繰越オンタイムＣＲＹ＿ＰＷＭ＿ＯＮとして算出する。そして、周期ＴＲＭ１のＰＷＭ信号のオンタイムＰＷＭ＿ＯＮとしてＰＷＭ信号の周期ＰＷＭ＿ＴＲＭと同じ値を設定する。この場合、モータ駆動制御装置１は、周期ＴＲＭ１のＢＥＭＦタイマ割り込みを周期タイマ割り込みの少し前に発生させることになる。そして、周期ＴＲＭ１の次の周期ＴＲＭ２において、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮに周期ＴＲＭ１で算出された繰越オンタイムＣＲＹ＿ＰＷＭ＿ＯＮを加算して周期ＴＲＭ２のＰＷＭ信号のオンタイムＰＷＭ＿ＯＮを算出する。
【０１６９】
図３０で示したようにＰＷＭ信号のオンタイムＰＷＭ＿ＯＮを決定することで、ハードウェアの限界により決定される最大デューティ比よりも大きなデューディ比のＰＷＭ信号を生成することができる。なお、この処理は、図１５のステップＳ１４０〜Ｓ１４２の処理に該当するものである。
【０１７０】
続いて、レギュレーションループ調停処理において決定されたＰＷＭ信号のデューティ比が最小デューティ設定値よりも小さな場合のＰＷＭ信号のオンタイムＰＷＭの決定手順を示すタイミングチャートを図３１に示す。図３１に示すように、この場合、レギュレーションループ調停処理により決定されたＰＷＭ信号のデューティ比に基づき生成されるオリジナルＰＷＭ信号は、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮが最小デューティ設定値ＭＩＮ＿ＤＵＴＹよりも短くなる。そのため、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮを繰越オンタイムＣＲＹ＿ＰＷＭ＿ＯＮとして算出する。そして、周期ＴＲＭ２のＰＷＭ信号のオンタイムＰＷＭ＿ＯＮとしてゼロを設定する。この場合、モータ駆動制御装置１は、周期ＴＲＭ２においてオンタイムがないためＢＥＭＦタイマ割り込みを発生させない。そして、周期ＴＲＭ２の次の周期ＴＲＭ３において、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮに周期ＴＲＭ２で算出された繰越オンタイムＣＲＹ＿ＰＷＭ＿ＯＮを加算して周期ＴＲＭ２のＰＷＭ信号のオンタイムＰＷＭ＿ＯＮを算出する。
【０１７１】
図３１で示したようにＰＷＭ信号のオンタイムＰＷＭ＿ＯＮを決定することで、ハードウェアの限界により決定される最小デューティ比よりも小さなデューディ比のＰＷＭ信号を生成することができる。なお、この処理は、図１５のステップＳ１４３〜Ｓ１４５の処理に該当するものである。
【０１７２】
続いて、レギュレーションループ調停処理において決定されたＰＷＭ信号のデューティ比が最小デューティ設定値以上、且つ、最大デューティ設定値以下の場合のＰＷＭ信号のオンタイムＰＷＭの決定手順を示すタイミングチャートを図３２に示す。図３２に示すように、この場合、レギュレーションループ調停処理により決定されたＰＷＭ信号のデューティ比に基づき生成されるオリジナルＰＷＭ信号は、ＰＷＭ信号のオンタイムＰＷＭ＿ＯＮが最小デューティ設定値ＭＩＮ＿ＤＵＴＹよりも長く、かつ、最大デューティ設定値よりも短くなる。そのため、モータ駆動制御装置１は、繰越オンタイムＣＲＹ＿ＰＷＭ＿ＯＮにゼロを設定し、オリジナルＰＷＭ信号と同じオンタイムのＰＷＭ信号を生成する。なお、この処理は、図１５のステップＳ１４６の処理に該当するものである。
【０１７３】
上記説明より、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、コンパレータ積分値ＣＭＰ＿ＩＮＴＧに基づきロータの位置検出を行う。そして、ロータの位置検出結果に基づきＰＷＭ信号の状態を遷移させる。ここで、コンパレータ１５は、一般的に、入力オフセット及び入力ノイズ等の誤判定要因を有する。しかし、コンパレータ積分値ＣＭＰ＿ＩＮＴＧでは、コンパレータ１５において誤判定が生じたとしても、ＰＷＭ信号がオルタネートＰＷＭ方式で生成されることによって交流化された複数の誤判定の成分により誤判定の成分が互いに相殺される。そのため、コンパレータ積分値ＣＭＰ＿ＩＮＴＧに基づきロータの位置を検出することで、コンパレータ１５の誤判定要因によらず精度の高いロータの位置検出を行うことができる。特に、モータ４が低速で回転している場合、非通電相の電圧変化が緩やかであり、誤判定が生じる頻度が多くなる。しかし、コンパレータ積分値ＣＭＰ＿ＩＮＴＧに基づきロータの位置を検出することで、モータ４の回転速度が低い場合であっても、ロータの位置検出精度を低下させることがない。このようなことから、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１は、モータ４の回転速度によらず、精度の高いロータ位置検出を行うことが可能であり、モータ４に対する制御性を向上させることができる。
【０１７４】
また、従来のモータ駆動方法では、モータを一回転させる間に利用される複数の状態間の時間差を解消することが難しい問題があった。例えば、従来のモータ駆動方法では、コンパレータを用いてセンタータップ電圧ＣＴと駆動信号とのゼロクロス、又は、基準電圧と駆動信号とのゼロクロスを検出し、当該検出結果に基づきＰＷＭ信号の状態遷移タイミングを算出していた。例えば、コンパレータを用いてセンタータップ電圧ＣＴと駆動信号とのゼロクロスを検出した場合、コンパレータの入力オフセット電圧等に起因して奇数番目の状態と偶数番目の状態とでゼロクロスの検出タイミングがずれて、状態間に時間差が生じる。また、コンパレータを用いて基準電圧と駆動信号とのゼロクロスを検出した場合、ステート毎に動的に基準電圧を変化させることでゼロクロスの検出タイミングのずれを解消できるが、この基準電圧の調整には再帰的な挙動を伴うため安定した状態に収束させることが難しい問題がある。状態間の時間差がある場合、相対的に長い状態では平均電力が大きくなり、相対的に短い状態では平均電力が小さくなるという現象が生じる。そして、このような現象が発生すると、モータが一回転する間の回転トルク及び回転速度が不安定になり、ビートが発生する問題が発生する問題が生じる。また、状態間の時間差がある場合、最大回転トルク又は最大回転速度が相対的に長い状態で発生するが、相対的に短い状態においては最大回転トルク又は最大回転速度を発生できない。つまり、一回転を通じて最大回転トルク又は最大回転速度を発生できず、一回転を通じて発生される平均最大トルク又は最大回転速度が低下する問題が生じる。
【０１７５】
しかし、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、現状態を含む６状態の合計値から次状態で利用される移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥを算出する。そして、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１は、ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳが移動平均ステートＰＷＭパルス数ＳＴ＿ＰＷＭ＿ＰＬＳ＿ＡＶＥに達した場合、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達していなくてもＰＷＭ信号を次状態に遷移させる。このように強制的にＰＷＭ信号の状態を遷移させることで、コンパレータ積分値ＣＭＰ＿ＩＮＴＧがゼロに達するまでの時間がそれ以前の６状態の平均値よりも長い場合にも、ＰＷＭ信号の状態を遷移させ、状態間の時間差を解消することができる。つまり、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、コンパレータ積分値ＣＭＰ＿ＩＮＴＧに基づく制御だけでは相対的に長くなる状態の期間を強制的に短くし、それに伴って、コンパレータ積分値ＣＭＰ＿ＩＮＴＧに基づく制御だけでは相対的に短くなる状態の期間を長くする。このように、状態間の時間差を解消することで、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１は、モータをより低速まで安定して駆動することが可能になる。また、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、一回転を通じて一定の回転トルク又は回転速度を維持できるため、ビートの発生を防止することができる。さらに、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、状態間の時間差を解消できるため、一回転を通じて最大回転トルク又は最大回転速度を発揮することができ、モータの回転効率を向上させることができる。
【０１７６】
また、オルタネートＰＷＭ方式による動作を行うことで、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１は、コンパレータ１５の入力オフセット及び入力ノイズがコンパレータ積分値ＣＭＰ＿ＩＮＴＧに及ぼす影響を低減することができる。これにより、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１は、モータ４が低速で回転している場合におけるＰＷＭ信号の状態遷移タイミングの精度をさらに向上させることが可能である。なお、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１のオルタネートＰＷＭ方式の動作は、同期整流動作を含み、電力効率を向上させる効果がある。
【０１７７】
また、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、ＰＷＭ信号のデューティ比がハードウェア上の最大デューティ比又は最小デューティ比を超えたものであったとしても、複数の周期のＰＷＭ信号を利用して一つのパルスを生成する。これにより、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、ハードウェア上の最大デューティ比又は最小デューティ比の制限を超えたデューティ比のＰＷＭ信号を生成することができる。また、ＰＷＭ信号のデューティ比の設定範囲が広いことから、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１は従来の一般的なモータ制御装置よりもモータ４の制御範囲を拡大することができる。
【０１７８】
また、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、ロータのスタッキングを防止することができる。スタッキングは、ロータの加速量が高すぎると、ロータの回転速度が速度制御を超えてオーバーシュートしロータ回転とステータ回転磁界の位相差が１８０°となる状態で発生する。１８０°位相差を持つ信号が利得１以上で負帰還すると異常発振（ロータスタック）の原因となる。減速時も同様である。しかし、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、図１１のステップＳ１０１で示したように、現在の回転速度に係数を乗じて得られた最大許容加速度又は最大許容減速度に応じて速度誤差の負帰還量を制限する。つまり、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、加速度又は減速度を一定に制限する。つまり、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、加速度/減速度を制限することで、負帰還量を制限し、制御速度から回転速度のオーバーシュート/アンダーシュートを防ぐことができる。つまり、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、ロータがスタックする原因を除去し、ロータのスタッキングを防止することができる。
【０１７９】
さらに、また、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、ロータのスタッキングに伴うモータの唸りを防止することができる。スタッキング発生後の唸り音防止は、速度制御ループによって実施される。スタッキング発生中は、本来の回転速度範囲を超えて回転磁界が発生する(ステートが短時間で高速に変化する)。この時、速度制御ループは、ＰＷＭデューティを低下させる事で回転速度を低下させようとし(ロータが無損失で回転している事と等価なので、実際にはスタッキング中の回転磁界の回転速度は低下しない)、結果としてＰＷＭデューティが限りなくゼロに近づき、駆動電力が低下し唸り音が低下する結果となる。
【０１８０】
また、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、スタックロータ検出設定値よりも６ステート合計ＰＷＭパルス数ＴＴＬ＿ＳＴ＿ＰＷＭ＿ＰＬＳが小さくなったことに応じて、スタッキングが発生したことを検出する。そして、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、モータ４のスタッキングが検出された場合は、再度初期状態から制御を再開することができる（図３のステップＳ７）。これにより、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、モータ４をスタッキング状態から脱出させることができる。
【０１８１】
また、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、タイマ割り込みのみ（上記説明では、ＢＥＭＦタイマ割り込みと周期タイマ割り込み）でＰＷＭ信号のオンステートとオフステート切り換え及びＰＷＭ信号の周期の切り換えを行う。より具体的には、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、ＰＷＭ信号の周期を次周期に移行させる周期タイマ割り込みの発生に応じて、次周期のＰＷＭ信号のデューティ比の決定と、状態を遷移させるか否かについて判断する。また、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、ＢＥＭＦタイマ割り込みに応じて、コンパレータ１５の出力信号ＣＭＰ＿ＯＵＴの値のサンプリング及びＰＷＭ信号のオンステートからオフステートへの切り換えを行う。このように、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、割り込み要因をタイマ割り込みだけとすることで、演算コア１０に要求される演算能力の小さくすることができる。つまり、演算能力の高い演算コアを必要としないため、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１は、より多くのマイクロコンピュータにおいて実行又は実現することができる。
【０１８２】
さらに、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、ＢＥＭＦタイマ割り込みに応じてコンパレータ１５の出力信号ＣＭＰ＿ＯＵＴをサンプリングする。つまり、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、常に、ＰＷＭ信号のオンステートに最も近い時点においてコンパレータ１５の出力信号ＣＭＰ＿ＯＵＴをサンプリングすることができる。一般的に、ＰＷＭ信号のオンステートの終期が最もセンタータップ電圧ＣＴ及び比較対象検出信号ＳＰの値が安定する時点であり、このタイミングでコンパレータ１５の出力信号ＣＭＰ＿ＯＵＴをサンプリングすることで、より精度の高いゼロクロス検出を行うことが可能である。
【０１８３】
ここで、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、ＢＥＭＦタイマ割り込みに応じてコンパレータ１５の出力信号ＣＭＰ＿ＯＵＴをサンプリングするが、これは、ＰＷＭデモジュレーション処理の動作に相当する。このように、ＰＷＭデモジュレーション処理によりコンパレータ１５の出力信号ＣＭＰ＿ＯＵＴをサンプリングことで、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、ＰＷＭ信号のパルスをデジタルサンプリングによるバンドノッチフィルタリングしているのでアナログフィルタを必要としない。これは、ＢＥＭＦタイマ割り込みが発生するタイミングは、ＰＷＭ信号のオンステートの終期の直前であるため、ＰＷＭ信号のオフステートで生成されるパルスの影響がサンプリングする値に影響を与えないためである。このようなことから、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１によれば、ＰＷＭ信号のパルスをフィルタリングするアナログフィルタ等を設ける必要がないため、回路設計の容易化、実装面積の小面積化を実現することができる。
【０１８４】
また、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、セレクタ１４により３つの駆動信号のうち非通電相となる駆動信号を比較対象駆動信号ＳＰとして選択し、１つのコンパレータにより比較対象駆動信号ＳＰとセンタータップ電圧ＣＴとの比較処理を行う。つまり、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、３相の駆動信号に対する比較動作においてチャンネル間誤差が生じない。このようなことから、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１によれば、比較対象駆動信号ＳＰとセンタータップ電圧ＣＴとの比較精度を高めることができる。
【０１８５】
また、従来のモータの制御方法では、ＰＷＭ信号のオンステートからオフステートへの切り換えは、駆動電流のモニタ結果に応じて行われる。例えば、従来のモータの制御方法では、駆動電流が基準電流値を超えたことに応じてＰＷＭ信号をオンステートからオフステートに移行させる。このとき、一般的な制御ループでは、駆動電流をモニタした後、そのモニタ結果が出力に反映されるまでの間に所定の遅延時間が発生する。そして、ＰＷＭ生成を行う場合、この遅延時間により、ＰＷＭ信号の最小デューティ比が決定される。
【０１８６】
ここで、定電流駆動制御を行う場合は、負荷トルクが重くなった場合パルス入力電流を一定に維持しながら平均入力電流を減少させます。このとき、平均出力駆動電流は一定であるためロータの永久磁石が減磁される可能性を防止できます。また、負荷の静止トルクが一定の駆動電流で賄える駆動トルクよりも重い場合、モータ４を回転始動させることは出来ません。また、ロータが機械的に拘束された場合、最小デューティ比よりも短いパルス幅の電流を作ることが出来ない場合、電流制限が機能しなくなる問題が生じます。電流制限が機能しない場合、パワーＭＯＳＦＥＴが焼損する原因となります。また、この状態が継続された場合、ロータの温度上昇により永久磁石が減磁される問題があります。
【０１８７】
また、駆動電流のモニタ結果に基づきＰＷＭ信号をオフステートとする場合、電流制限によるパワーＭＯＳＦＥＴのターンオフタイミングがいつ発生するかが負荷状態により変化する。そのため、非通電相の駆動信号の電圧値をいつのタイミングでサンプリングするのかが不確定となるもう一つ問題点が生じる。結果として定電流駆動制御がアクティブとなったとたん、センサレス回転制御を継続させることが出来なくなり、モータ４の回転が検出できなかった場合、一旦駆動を停止させて時間を置いて再起動させるシーケンスが必要となります。
【０１８８】
一方、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１における定電流駆動制御では、負荷トルクが重くなった時にパルス入力電流が増加しますが平均入力電流を一定に維持することが可能です。そして、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１は、平均出力駆動電流を増加させて定電力でモータ４を回転させる。これにより、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１では、重い静止トルクが負荷となった場合であってもロータを回転させることが可能になる。
【０１８９】
また、モータ４が機械的に拘束され最小デューティ比よりも短いパルス幅の電流が要求された時、実施の形態１にかかるモータ駆動制御プログラム及びモータ駆動制御装置１は、ＰＷＭプリモジュレータが０%デューティのスキップパルスを挿入することにより、結果として平均入力電流が一定に保持される様に制御を行う。これにより、パワーＭＯＳＦＥＴが焼損される可能性を防ぐことができる。
【０１９０】
また、ＰＷＭデモジュレータ２１がＰＷＭモジュレータ２２を駆動する設計では、パワーＭＯＳＦＥＴを何時ターンオフさせるかが確定的である為、定電流駆動制御がアクティブとなった状態においても非通電相の駆動信号の電圧を適切なタイミングでサンプリングさせることが可能であり、回転を継続させることが出来ます。
【０１９１】
実施の形態２
実施の形態２では、実施の形態１で説明したオルタネートＰＷＭ方式の動作の変形例について説明する。そこで、実施の形態２にかかるモータ駆動制御プログラムが生成するＰＷＭ信号に基づくオルタネートＰＷＭ方式の動作を説明するための図を図３３〜図３８に示す。なお、図３３〜図３８は、図１７〜図２２の回路図に対応するものであり、図３３〜図３８において図１７〜図２２に対応するものについては同じ符号を付して説明を省略する。
【０１９２】
図３３は、実施の形態２にかかるモータ駆動制御装置の状態０におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。図３３に示すように、実施の形態２では、状態０のハイサイドオフステートにおいてローサイドトランジスタＮＵ、ＮＶに加えてローサイドトランジスタＮＷをオンさせる。また、実施の形態２では、状態０のローサイドオフステートにおいてハイサイドトランジスタＰＵ、ＰＶに加えてハイサイドトランジスタＰＷをオンさせる。
【０１９３】
図３４は、実施の形態２にかかるモータ駆動制御装置の状態１におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。図３４に示すように、実施の形態２では、状態１のハイサイドオフステートにおいてローサイドトランジスタＮＵ、ＮＷに加えてローサイドトランジスタＮＶをオンさせる。また、実施の形態２では、状態１のローサイドオフステートにおいてハイサイドトランジスタＰＵ、ＰＷに加えてハイサイドトランジスタＰＶをオンさせる。
【０１９４】
図３５は、実施の形態２にかかるモータ駆動制御装置の状態２におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。図３５に示すように、実施の形態２では、状態２のハイサイドオフステートにおいてローサイドトランジスタＮＶ、ＮＷに加えてローサイドトランジスタＮＵをオンさせる。また、実施の形態２では、状態２のローサイドオフステートにおいてハイサイドトランジスタＰＶ、ＰＷに加えてハイサイドトランジスタＰＵをオンさせる。
【０１９５】
図３６は、実施の形態２にかかるモータ駆動制御装置の状態３におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。図３６に示すように、実施の形態２では、状態３のハイサイドオフステートにおいてローサイドトランジスタＮＶ、ＮＵに加えてローサイドトランジスタＮＷをオンさせる。また、実施の形態２では、状態３のローサイドオフステートにおいてハイサイドトランジスタＰＶ、ＰＵに加えてハイサイドトランジスタＰＷをオンさせる。
【０１９６】
図３７は、実施の形態２にかかるモータ駆動制御装置の状態４におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。図３７に示すように、実施の形態２では、状態４のハイサイドオフステートにおいてローサイドトランジスタＮＷ、ＮＵに加えてローサイドトランジスタＮＶをオンさせる。また、実施の形態２では、状態４のローサイドオフステートにおいてハイサイドトランジスタＰＷ、ＰＵに加えてハイサイドトランジスタＰＶをオンさせる。
【０１９７】
図３８は、実施の形態２にかかるモータ駆動制御装置の状態５におけるオルタネートＰＷＭ方式の動作を説明するためのドライバ回路のブロック図である。図３７に示すように、実施の形態２では、状態５のハイサイドオフステートにおいてローサイドトランジスタＮＶ、ＮＷに加えてローサイドトランジスタＮＵをオンさせる。また、実施の形態２では、状態５のローサイドオフステートにおいてハイサイドトランジスタＰＶ、ＰＷに加えてハイサイドトランジスタＰＵをオンさせる。
【０１９８】
このようなオルタネートＰＷＭ方式の動作を行うことで、実施の形態１では、オフ状態であった非通電相に対応した駆動段回路のトランジスタのボディダイオードで消費されたフライバック電流を、オン状態のトランジスタにおいて消費することが可能になる。このような動作は、ロータに対する回生ブレーキとして機能する。そこで、回生ブレーキ動作の有無による入出力特性を比較するグラフを図３９に示す。図３９に示すように、回生ブレーキ動作を行った場合、入力される電力が小さい場合の回転速度が回生ブレーキ動作を行わない場合に比べて低くなっていることがわかる。また、入力電力の範囲が同じである場合、モータ４の回転速度の制御範囲が回生ブレーキ動作を行った場合の方が広くなっていることがわかる。
【０１９９】
ここで、回生ブレーキ動作を伴うオルタネートＰＷＭ方式の動作を行った場合のＰＷＭ信号について説明する。そこで、実施の形態２にかかるモータ駆動制御装置においてデューティ比が５０％のＰＷＭ信号を生成した場合の状態０の駆動信号及びセンタータップ電圧を説明するタイミングチャートを図４０に示す。図４０に示すように、回生ブレーキ動作を行う場合、状態０において非通電相となるＷ相の駆動信号に対応するＰＷＭ信号ＷＨ、ＷＬにもパルスを与える。より具体的には、ＰＷＭ信号ＷＨは、ローサイドオフステートの期間においてローレベルとなり、その他の期間はハイレベルを維持する。また、ＰＷＭ信号ＷＬは、ハイサイドオフステートの期間においてハイレベルとなり、その他の期間はローレベルを維持する。これにより、ハイサイドオフステート期間とローサイドオフステート期間において回生ブレーキ動作が行われる。
【０２００】
続いて、実施の形態２にかかるモータ駆動制御装置においてデューティ比が５０％のＰＷＭ信号を生成した場合の状態０〜状態５の駆動信号及びセンタータップ電圧の動作を説明するタイミングチャートを図４１に示す。図４１に示すように、状態１〜状態５においても状態０と同様に非通電相となる駆動信号に対応するＰＷＭ信号に回生ブレーキ動作のためのパルスが与えられる。
【０２０１】
上記説明より、実施の形態２にかかるモータ駆動制御プログラムによれば、ハイサイドオフステート期間においてローサイドトランジスタをすべてオンさせ、ローサイドオフステート期間においてハイサイドトランジスタをすべてオンさせる。これにより、実施の形態２にかかるモータ駆動制御プログラムは、ハイサイドオフステート期間とローサイドオフステート期間において回生ブレーキ動作を行う。そして、この回生ブレーキ動作により、モータ４の回転速度が抑制されるため、同じ入力電力に対してより低い回転速度でモータ４を回転させることができる。このとき、回生ブレーキの効力は、ＰＷＭ信号のデューティ比が小さいほど大きくなる。つまり、回生ブレーキ動作を行うことで、モータ４の回転速度は、低速側においてより低回転になり、高速側では回生ブレーキ動作がない場合と同等となる。従って、実施の形態２にかかるモータ駆動制御プログラムによれば、同じ入力電力の範囲に対して、モータ４の回転速度の制御範囲を広げることができる。
【０２０２】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本願発明は、別の観点から以下の発明を含む。
【０２０３】
（付記１）
モータの回転位置に応じて生成するＰＷＭ信号の状態を遷移させる演算コアと、
ドライバ回路を介して前記ＰＷＭ信号をモータに出力する出力インタフェースと、
前記ドライバ回路が前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した比較対象検出信号と前記モータのセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、
前記ＰＷＭ信号の現状態の前記ＰＷＭ信号のパルス数をカウントしたＰＷＭ信号カウント数が、前記モータを一回転させる間に遷移した各状態における前記ＰＷＭ信号の平均パルス数を示す平均ＰＷＭ信号パルス数に達したことに応じて前記モータの回転位置が遷移したことを検出し、
当該検出結果に応じて、前記ＰＷＭ信号の状態を次状態に遷移させるモータの駆動制御プログラム。
【０２０４】
（付記２）
前記コンパレータの出力が前記比較対象検出信号よりも前記センタータップ電圧の方が低いことを示す場合はコンパレータ積分値をカウントアップし、前記コンパレータの出力が前記比較対象検出信号よりも前記センタータップ電圧の方が高いことを示す場合はコンパレータ積分値をカウントダウンし、
前記ＰＷＭ信号の現状態の前記ＰＷＭ信号のパルス数をカウントしたＰＷＭ信号カウント数が、前記平均ＰＷＭ信号パルス数に達する前に、前記コンパレータ積分値がカウント初期値に達した場合、前記コンパレータ積分値に基づき前記モータの回転位置が遷移したことを検出し、
当該検出結果に応じて、前記ＰＷＭ信号の状態を次状態に遷移させる付記１に記載のモータの駆動制御プログラム。
【０２０５】
（付記３）
モータの回転位置に応じて生成するＰＷＭ信号の状態を遷移させる演算コアと、
ドライバ回路を介して前記ＰＷＭ信号をモータに出力する出力インタフェースと、
前記ドライバ回路が前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した比較対象検出信号と前記モータのセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、
前記ドライバに流れる駆動電流と電流指示値との間の誤差を示す電流誤差又は前記モータの回転速度と回転速度指示値との間の誤差を示す回転誤差から前記ＰＷＭ信号のデューティ比を算出し、
前記デューティ比から計算される前記ＰＷＭ信号のパルス幅が最小パルス幅を下回った場合、複数の周期の前記ＰＷＭ信号のオン期間を合算して１つのオンパルスを生成し、最大パルス幅を超えた場合、複数の周期の前記ＰＷＭ信号のオフ期間を合算して１つのオフパルスを生成するモータの駆動制御プログラム。
【０２０６】
（付記４）
モータの回転位置に応じて生成するＰＷＭ信号の状態を遷移させる演算コアと、
ドライバ回路を介して前記ＰＷＭ信号をモータに出力する出力インタフェースと、
前記ドライバ回路が前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した比較対象検出信号と前記モータのセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、
前記モータの回転速度と回転速度指示値との間の誤差を示す回転誤差が予め設定される最大許容加速度を超えた場合、前記回転誤差として前記最大許容加速度とし、
前記回転誤差が予め設定される最大許容減速度よりも小さくなった場合、前記回転誤差として前記最大許容減速度とし、
前記回転誤差に基づき前記ＰＷＭ信号のデューティ比を算出し、
当該デューティ比を有する前記ＰＷＭ信号を生成するモータの駆動制御プログラム。
【０２０７】
（付記５）
モータの回転位置に応じて生成するＰＷＭ信号の状態を遷移させる演算コアと、
ドライバ回路を介して前記ＰＷＭ信号をモータに出力する出力インタフェースと、
前記ドライバ回路が前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した比較対象検出信号と前記モータのセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、
前記モータを一回転させる期間に用いられる複数の状態の前記ＰＷＭ信号のパルス数を示す合計ＰＷＭ信号パルス数が予め設定されたロータスタック検出値よりも小さくなったことに応じて前記モータの停止状態を検出するモータの駆動制御プログラム。
【０２０８】
（付記６）
前記ロータスタック検出値は、前記モータに対して規定される最高回転速度で前記モータが一回転する期間に生成される前記ＰＷＭ信号のパルス数が設定される付記５に記載のモータ駆動制御プログラム。
【０２０９】
（付記７）
電源配線と接地配線との間にハイサイドトランジスタとローサイドトランジスタとが直列に接続される３組の駆動段回路を有し、選択された２組の前記駆動段回路の前記ハイサイドトランジスタと前記ローサイドトランジスタとが排他的に導通状態に制御されるドライバ回路に対してＰＷＭ信号を出力し、モータの回転位置に応じて前記ＰＷＭ信号の状態を遷移させる演算コアと、
前記ドライバ回路が前記ＰＷＭ信号に基づき生成した３相の駆動信号のうち非選択の前記駆動段回路が出力する比較対象検出信号と前記モータのセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、
前記ＰＷＭ信号により、
前記３組の駆動段回路のうちの１組の駆動段回路のハイサイドトランジスタを導通状態とし、前記３組の駆動段回路の他の１組の駆動段回路のローサイドトランジスタを導通状態とするオンステートと、
前記オンステートにおいてハイサイドトランジスタが導通状態される駆動段回路のローサイドトランジスタを導通状態とし、前記他の１組の駆動段回路のローサイドトランジスタを導通状態とするハイサイドオフステートと、
前記１組の駆動段回路のハイサイドトランジスタを導通状態とし、前記オンステートにおいてローサイドトランジスタが導通状態される駆動段回路のローサイドトランジスタを導通状態とするローサイドオフステートと、に制御し、
前記ハイサイドオフステートと前記ローサイドオフステートとを前記ＰＷＭ信号の生成サイクル毎に切り換えるモータの駆動制御プログラム。
【０２１０】
（付記８）
前記ＰＷＭ信号を、
前記ハイサイドオフステート駆動において、前記オンステートにおいてハイサイドトランジスタとローサイドトランジスタとがいずれもオフ状態とされる駆動段回路のローサイドトランジスタを導通状態とし、
前記ローサイドオフステート駆動において、前記オンステートにおいてハイサイドトランジスタとローサイドトランジスタとがいずれもオフ状態とされる駆動段回路のハイサイドトランジスタを導通状態とするように生成する付記７のモータの駆動制御プログラム。
【０２１１】
（付記９）
前記電源配線と前記接地配線との間にハイサイドトランジスタとローサイドトランジスタとが直列に接続され、ハイサイドトランジスタとローサイドトランジスタとが排他的に導通状態に制御される３組の駆動段回路を有するドライバ回路にＰＷＭ信号を出力し、モータの回転位置に応じて前記ＰＷＭ信号の状態を遷移させる演算コアと、
前記ドライバ回路が前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した１相の駆動信号と前記モータのセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、
前記ＰＷＭ信号により、ドライバ回路を、前記モータに電流が供給されるオンステートと、前記モータへの前記電流の供給を停止するオフステートと、に制御し、
前記ＰＷＭ信号は、前記オフステートにおいて接地配線を介して前記モータに流れる電流を循環させるハイサイドオフステート駆動と、電源配線を介して前記モータに流れる電流を循環させるローサイドオフステート駆動と、を前記ＰＷＭ信号の生成サイクル毎に切り換えるモータの駆動制御プログラム。
【０２１２】
（付記１０）
モータの回転位置に応じて生成するＰＷＭ信号の状態を遷移させる演算コアと、
ドライバ回路を介して前記ＰＷＭ信号をモータに出力する出力インタフェースと、
前記ドライバ回路が前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した比較対象検出信号と前記モータのセンタータップ電圧とを比較するコンパレータと、
第１、第２の設定値に応じて第１、第２のタイマ割り込み要求を前記演算コアに出力するタイマと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、
前記モータの回転状態に応じて算出される前記ＰＷＭ信号のオンタイム期間に対応する値により、前記第１の設定値を更新し、
前記第１の設定値に基づき生成された第１のタイマ割り込み要求に応じて前記ＰＷＭ信号を前記モータへの駆動電流の供給を指示するオンステートから前記モータへの駆動電流の停止を指示するオフステートに移行させ、
前記第２の設定値に応じて前記ＰＷＭ信号を前記オフステートから前記オンステートに移行させるモータの駆動制御プログラム。
【０２１３】
（付記１１）
前記ＰＷＭ信号のオンタイム期間が前記ＰＷＭ信号の一周期の時間よりも長い場合、前記演算コアは、前記ＰＷＭ信号をオンステートに維持する付記１０に記載のモータの駆動制御プログラム。
【０２１４】
（付記１２）
モータの回転位置に応じて生成するＰＷＭ信号の状態を遷移させる演算コアと、
ドライバ回路を介して前記ＰＷＭ信号をモータに出力する出力インタフェースと、
前記ドライバ回路が前記ＰＷＭ信号に基づき生成した３相の駆動信号から選択した比較対象検出信号と前記３相の駆動信号の中点電圧を示すセンタータップ電圧とを比較するコンパレータと、を有するプロセッサにおいて前記演算コアで実行されるモータの駆動制御プログラムであって、
前記コンパレータの出力信号の値に応じてコンパレータ積分値を増減し、
前記ＰＷＭ信号の一状態が継続する最大期間を規定するタイムアウト検出期間中に前記コンパレータ積分値がカウント初期値に達した場合は、前記コンパレータ積分値がカウント初期値に達したことに応じて前記ＰＷＭ信号の状態を次状態に遷移させ、前記タイムアウト検出期間中に前記コンパレータ積分値がカウント初期値に達しなかった場合は、前記タイムアウト検出期間の経過に応じて前記ＰＷＭ信号の状態を次状態に遷移させ、
前記モータを駆動する駆動電流の初期値をゼロとし、
前記ＰＷＭ信号の状態を遷移させる毎に前記駆動電流を徐々に増加させ、
前記コンパレータ積分値がカウント初期値に達したことに応じた前記ＰＷＭ信号の状態の遷移が６回連続して生じたこと応じて前記モータが有効な回転状態となったと判定するモータ駆動制御プログラム。
【０２１５】
（付記１３）
前記モータ駆動制御プログラムは、さらに、
状態遷移後に生成される前記ＰＷＭ信号のパルス数が前記フライバックパルスフィルタ継続パルス数に達するまでの期間に前記コンパレータの出力信号の値によらず、前記コンパレータ積分値を単調増加又は単調減少させるフライバックパルスフィルタ処理を行い。
前記モータが有効な回転状態となる前の前記フラバックパルスフィルタ継続パルス数を、前記モータが有効な回転状態となった後よりも小さく設定する付記１２に記載のモータ駆動制御プログラム。
【符号の説明】
【０２１６】
ＮＵ、ＮＶ、ＶＷ：ローサイドトランジスタ、ＰＵ、ＰＶ、ＰＷ：ハイサイドトランジスタ、Ｒｉ：電流検出抵抗、ＳＰ：比較対象検出信号、１：モータ駆動制御装置、２：プリドライバ回路、３：ドライバ回路、４：モータ、１０：演算コア、１０：演算コア、１１：プログラムメモリ、１２：ＲＡＭ、１３：出力インタフェース、１４：セレクタ、１５：コンパレータ、１６：アナログデジタル変換器、１７：タイマ、２１：ＰＷＭデモジュレータ、２２：ＰＷＭモジュレータ、２３：定電流駆動制御部、２４：ロータ位置検出部、２５：回転制御部、２６：回転速度制御部、２７：ＰＷＭデューティ制御部
【図１】
0005634330.tif 000002
【図２】
0005634330.tif 000003
【図３】
0005634330.tif 000004
【図４】
0005634330.tif 000005
【図５】
0005634330.tif 000006
【図６】
0005634330.tif 000007
【図７】
0005634330.tif 000008
【図８】
0005634330.tif 000009
【図９】
0005634330.tif 000010
【図１０】
0005634330.tif 000011
【図１１】
0005634330.tif 000012
【図１２】
0005634330.tif 000013
【図１３】
0005634330.tif 000014
【図１４】
0005634330.tif 000015
【図１５】
0005634330.tif 000016
【図１６】
0005634330.tif 000017
【図１７】
0005634330.tif 000018
【図１８】
0005634330.tif 000019
【図１９】
0005634330.tif 000020
【図２０】
0005634330.tif 000021
【図２１】
0005634330.tif 000022
【図２２】
0005634330.tif 000023
【図２３】
0005634330.tif 000024
【図２４】
0005634330.tif 000025
【図２５】
0005634330.tif 000026
【図２６】
0005634330.tif 000027
【図２７】
0005634330.tif 000028
【図２８】
0005634330.tif 000029
【図２９】
0005634330.tif 000030
【図３０】
0005634330.tif 000031
【図３１】
0005634330.tif 000032
【図３２】
0005634330.tif 000033
【図３３】
0005634330.tif 000034
【図３４】
0005634330.tif 000035
【図３５】
0005634330.tif 000036
【図３６】
0005634330.tif 000037
【図３７】
0005634330.tif 000038
【図３８】
0005634330.tif 000039
【図３９】
0005634330.tif 000040
【図４０】
0005634330.tif 000041
【図４１】
0005634330.tif 000042