本発明者らは、異なる特性のモータに付け替えた場合でも容易にモータの制御信号を変更して目的の制御信号を生成できるようにするために、専用ハードウエアではなく、マイクロコントローラのソフトウェアによりモータを制御する半導体装置(モータ制御装置)、及びモータ制御方法について検討した。
まず、以下の比較例に示す半導体装置(モータ制御装置)によるモータ制御方法について検討した。比較例となる半導体装置(モータ制御装置)によるモータ制御方法について説明する。
(比較例)
図14に、比較例のモータ制御システム112の一例の概略構成図を示す。
比較例のモータ制御システム112は、マイクロコントローラ120と、モータ駆動部122と、モータ124と、を備えている。モータ駆動部122は、マイクロコントローラ120からの制御信号(PWM(Pulse Width Modulation:パルス幅変調)信号)に応じた電流をモータ124のコイル125に流すための機能を有している。モータ124は、コイル125及びホール素子126を備えている。ホール素子126は、モータ124に備えられた回転子(図示省略)の回転位置を検出するための機能を有している。ホール素子126により、回転子の位置に応じて相補的に変化するホール信号H+、H−が生成され、マイクロコントローラ120のコンパレータ144に出力される。
マイクロコントローラ120は、PWM装置130、CPU136、ROM138、タイマ140、周期カウントタイマ142、及びコンパレータ144を備えている。
ROM138には、マイクロコントローラ120全体を制御するためのソフトウェア139が格納されている。なお、ROM138は、格納されているソフトウェア139を書き換えることが可能な不揮発性メモリであってもよい。タイマ140は、ソフトスイッチングのタイミングを設定するための機能を有している。周期カウントタイマ142は、モータ124の回転周期を測定するための機能を有している。また、コンパレータ144は、ホール信号H+とホール信号H−との大小を比較した比較結果に応じてハイ(H)レベルまたはロー(L)レベルの信号を出力する機能を有している。
PWM装置130は、制御信号(PWM信号)を生成し、モータ駆動部122に出力する機能を有しており、PWM生成部132及びPWM設定レジスタ134を備えている。PWM設定レジスタ134は、PWM信号の信号波形を制御するための情報を格納する機能を有している。PWM設定レジスタ134の一例の概略構成図を図15に示す。図15に示すように、PWM設定レジスタ134は、周期レジスタ150、及びデューティレジスタ152を備えている。周期レジスタ150は、PWM信号の周期を設定するためのものである。デューティレジスタ152は、PWM信号のデューティ比(以下、単にデューティという)の値を設定するためのものである。PWM生成部132は、PWM設定レジスタ134に格納された情報に基づいて、PWM信号を生成する。
比較例のモータ制御システム112の動作の一例について説明する。図16に、当該動作におけるタイミングチャートの一例を示す。
PWM設定レジスタ134の周期レジスタ150及びデューティレジスタ152に、所望の周期とデューティを設定し、PWM装置130の動作を開始させると、PWM装置130が、周期レジスタ150及びデューティレジスタ152の設定値に応じてPWM生成部132でPWM信号を生成して、モータ駆動部122に出力する。なお、PWM信号は、出力端子P0または出力端子P1のいずれかから出力される。モータ駆動部122により、PWM信号に応じた電流がモータ124のコイル125に供給され、モータが回転を開始する。
回転が開始されると、回転子に取り付けられたホール素子126により、回転と同期したホール信号H+及びホール信号H−が生成される。コンパレータ144は、ホール信号H+とホール信号H−との大小を比較した比較結果に応じて、ハイ(H)レベルまたはロー(L)レベルの出力信号を出力する。周期カウントタイマ142では、コンパレータ144の出力信号のパルス幅を測定することにより、モータ124の回転周期を算出する。
また、コンパレータ144の出力信号のレベルの切り替えと同時に割り込みを発生させる。PWM装置130は、コンパレータ144の出力信号レベルの切り替わりのタイミング、すなわちコンパレータ144の出力の半周期毎に、2つの出力端子P0と、出力端子P1との間で、出力先を相補的に切り替えて出力する。具体的には、最初、出力端子P0にPWM信号を出力していた場合、コンパレータ144からの割り込みを検出したソフトウェア139により、一端、PWM装置130の出力を停止させた後、PWM装置130の出力信号の出力先を出力端子P1に変更して、周期レジスタ150及びデューティレジスタ152に所望の周期とデューティを設定し、PWM装置130の動作を開始させる。
コンパレータ144の出力の半周期(モータの回転周期)の末尾で、例えば、ソフトスイッチングにより、PWM装置130から出力されるPWM信号のデューティを一定の傾きで減少させる場合の動作について説明する。図17に、比較例のモータ制御システム112によるソフトスイッチング動作の一例の流れを表すフローチャートを示す。また、図18に、出力されるPWM信号のデューティの一例のタイミングチャートを示す。なお、図18は、図16 に示したタイムチャートにおいて、点線xで囲まれた部分の拡大図にあたる。
ソフトウェア139(CPU136)により、測定したモータの回転周期から、モータの特性に応じたソフトスイッチング開始位置(開始タイミング)t1を決定する(図17、ステップ400)。
タイマ140は、モータの回転周期の開始位置(図16、t0参照)からの経過時間を測定し、当該経過時間がt1になった時点(図17、ステップ402でY)で、ソフトウェア139(CPU136)による割り込みを発生させるために、タイマ140を設定する(図17、ステップ401)。割り込みが発生する(図17、ステップ402でY)と、ソフトウェア139により、PWM装置130の出力信号(デューティ)を減少させる傾きに応じた間隔(以下、デューティ更新周期という)で割り込みを発生させるようにタイマ140を設定する(図17、ステップ404)。そして、当該割り込みが発生する(図17、ステップ406でY)と、ソフトウェア139でデューティレジスタ152の値を一定の値(以下、デューティ更新値という)だけ減少した値に更新する(図17、ステップ408)。さらに、タイマの設定、割り込みの発生、及びデューティの更新を繰り返し(図17、ステップ410でN)、所望の値(ここでは、デューティ=0)になるとソフトスイッチング動作を終了(図17、ステップ410でY)する。
ソフトスイッチング開始位置t1、デューティ更新周期及びデューティ更新値は、モータの種類や、回転周期、その他の状況に応じてソフトウェア139により任意の値を設定することができるため、任意のモータ制御信号(PWM信号)を生成することができる。しかしながら、この方法では、ソフトスイッチング開始後は、デューティ更新のための割り込みが頻繁に発生することになる。一般に、小型で安価なファンモータでは、使用されるマイクロコントローラは、比較的安価で処理能力が低い8ビット程度のマイクロコントローラが使用されることが多い。このようなマイクロコントローラでは、ソフトスイッチング動作中に頻繁に発生する割り込みによりソフトウェアによる処理の負荷が重くなり、処理が追いつかなくなる可能性が出てくるという問題が生じた。
そこで、本発明者らは、小型で安価なファンモータへも適用できるよう、比較的安価で処理能力の低いマイクロコントローラでも任意のモータ制御信号を容易に生成できるように、頻繁に割り込みを発生させずとも、ソフトスイッチングを行えるモータ制御システムを検討した。検討の結果、以下の実施の形態において説明する半導体装置、及びモータ制御方法を見出した。以下、本発明の実施の形態について詳細に説明する。
[第1の実施の形態]
以下、本実施の形態の半導体装置であるモータ制御装置について、図面を参照して説明する。図1に、本実施の形態の半導体装置(モータ制御装置)によるモータ制御システムを備えた電子機器の一例の概略構成図を示す。図1に示すように、本実施の形態では、半導体装置(マイクロコントローラ)20によりモータ24を駆動するモータ制御システム12を備えた電子機器について説明する。
本実施の形態の電子機器10は、マイクロコントローラ20、モータ駆動部22、及びモータ24を有するモータ制御システム12と、モータ24により駆動(回転)される駆動部材14と、その他装置16と、を備えている。具体的一例としては、電子機器10がパソコン(パーソナルコンピュータ)であり、その他装置16がパソコンの駆動に必要とされるマザーボード等の他の装置(回路)等であり、モータ24により駆動される駆動部材14がその他装置16等の発熱部分を冷却するための冷却ファンである場合が挙げられる。
本実施の形態のモータ制御システム12では、PWM(Pulse Width Modulation:パルス幅変調)信号によりモータ24の駆動を制御する。本実施の形態のモータ制御システム12の一例の概略構成図を図2に示す。
本実施の形態のモータ制御システム12は、上述したように、マイクロコントローラ20と、モータ駆動部22と、モータ24と、を備えている。モータ駆動部22は、マイクロコントローラ20からの制御信号(PWM信号)に応じた電流をモータ24のコイル25に流すための機能を有している。モータ24は、コイル25及びホール素子26を備えている。ホール素子26は、モータ24に備えられた回転子(図示省略)の回転位置を検出するための機能を有している。ホール素子26により、回転子の位置に応じて相補的に変化するホール信号H+、H−が生成され、マイクロコントローラ20のコンパレータ44に出力される。
モータ24の駆動を制御するモータ制御装置であるマイクロコントローラ20は、PWM装置30、CPU36、ROM38、タイマ40、周期カウントタイマ42、及びコンパレータ44を備えている。
ROM38には、マイクロコントローラ20全体を制御するためのソフトウェア39が格納されている。なお、ROM38は、格納されているソフトウェア39を書き換えることが可能な不揮発性メモリであってもよい。CPU36は、ソフトウェア39を読み出して実行することにより、マイクロコントローラ20全体を制御する機能を有している。
タイマ40は、ソフトスイッチングのタイミングを設定するための機能を有している。また、周期カウントタイマ42は、モータ24の回転周期を測定するための機能を有している。また、コンパレータ44は、モータ24のホール素子26から出力されたホール信号H+とホール信号H−との大小を比較し、比較結果に応じてハイ(H)レベルまたはロー(L)レベルの信号を出力する機能を有している。
PWM装置30は、制御信号(PWM信号)を生成し、モータ駆動部22に出力する機能を有している。本実施の形態のPWM装置30は、PWM生成部32及びPWM設定レジスタ34を備えている。PWM設定レジスタ34は、PWM信号の信号波形を制御するための情報を格納する機能を有している。PWM生成部32は、PWM設定レジスタ34に格納された情報に基づいて、動作クロックに応じたタイミングでPWM信号を生成する。
本実施の形態のPWM設定レジスタ34の一例の概略構成図を図3に示す。図3に示すように、PWM設定レジスタ34は、周期レジスタ50、デューティレジスタ52、デューティ更新周期レジスタ54、デューティ更新値レジスタ56、及びデューティ更新回数レジスタ58を備えている。周期レジスタ50は、PWM信号の周期を設定するためのものである。デューティレジスタ52は、PWM信号のデューティ比(以下、単にデーティという)の値を設定するためのものである。
デューティ更新周期レジスタ54は、デューティの変更周期を設定するためのものである。デューティ更新値レジスタ56は、デューティの変化量を設定するためのものである。デューティ更新回数レジスタ58は、変化させる周期の繰り返し回数を設定するためのものである。このように本実施の形態では、デューティ更新周期レジスタ54、デューティ更新値レジスタ56、及びデューティ更新回数レジスタ58に、PWM信号のデューティを自動的に変化させる際の設定値が格納される。これにより、PWM装置30(PWM生成部32)が生成して出力するPWM信号のデューティの値を一定周期で設定した繰り返し回数分だけ自動的に変化させることができる。すなわち、本実施の形態では、ソフトスイッチングを行う際に、デューティ更新周期レジスタ54、デューティ更新値レジスタ56、及びデューティ更新回数レジスタ58の設定に応じて、PWM信号のデューティの値を一定周期で設定した繰り返し回数分だけ自動的に変化させる。
次に、本実施の形態のモータ制御システム12の動作の一例について説明する。図4に、本実施の形態のモータ制御システム12の全体動作の一例の流れを表すフローチャートを示す。また、図5に、マイクロコントローラ20により出力されるPWM信号のデューティの一例のタイミングチャートを示す。
駆動部材14を駆動させるためにモータ24を回転させる場合、まず、PWM設定レジスタ34の周期レジスタ50及びデューティレジスタ52に、所望の周期とデューティを設定する(図4、ステップ100)。なお、本実施の形態では、所望の周期やデューティは、予めROM38内に格納させておくようにしている。CPU36は、ソフトウェア39の実行によりROM38から読み出した所望の周期とデューティをそれぞれ周期レジスタ50及びデューティレジスタ52に設定する。
周期レジスタ50及びデューティレジスタ52を設定した後、PWM装置30の動作が開始される(図5、t0参照)。PWM装置30では、周期レジスタ50及びデューティレジスタ52の設定値に応じてPWM生成部32でPWM信号を生成して、モータ駆動部22に出力する(図4、ステップ102)。本実施の形態では、PWM生成部32の出力端子P0または出力端子P1のいずれかからPWM信号が出力される(図5、P0出力、P1出力参照)。モータ駆動部22により、出力されたPWM信号に応じた電流がモータ24のコイル25に供給される(図4、ステップ104)。モータ24では、コイル25の両端に電圧が供給されることにより、回転磁界が形成され、回転子が回転を開始する(図4、ステップ106)。
回転が開始されると、回転子に取り付けられたホール素子26により、回転と同期したホール信号H+及びホール信号H−が生成され、マイクロコントローラ20のコンパレータ44に出力される(図4、ステップ108)。コンパレータ44では、ホール信号H+とホール信号H−との大小を比較し、当該比較結果に応じて、ハイ(H)レベルまたはロー(L)レベルの出力信号を出力する(図4、ステップ110)。
コンパレータ44の出力信号のレベルが切り替わるまでは、当該状態を維持する(図4、ステップ114でN)。一方、出力信号のレベルが切り替わる(図4、ステップ114でY、図5、t2参照)と同時に割り込みを発生させる(図4、ステップ116)。周期カウントタイマ42では、コンパレータ44の出力信号のパルス幅を測定する(図4、ステップ107、115)。測定されたパルス幅により、モータ24の回転周期が算出される。
PWM装置30は、コンパレータ44の出力信号のレベルの切り替わりのタイミング、すなわちコンパレータ44の出力の半周期毎に、2つの出力端子P0とP1との間で、出力先を相補的に切り替えて出力することができる。具体的には、図5に示すように、最初、出力端子P0にPWM信号を出力していたとすると、コンパレータ44からの割り込みを検出したソフトウェア39(CPU36)により、一端、PWM装置30の出力を停止させる(図4、ステップ118)。その後、PWM装置30の出力(PWM信号)の出力先を出力端子P1に変更する(図4、ステップ120)。さらに、周期レジスタ50及びデューティレジスタ52のそれぞれに所望の周期とデューティを設定し(図4、ステップ122)、PWM装置30の動作を開始させ、PWM装置30からPWM信号を出力させる(図4、ステップ124)。以降、モータ24の回転を停止させるまで、図4のステップ108〜ステップ124の動作が繰り返される。
ここで、コンパレータ44の出力の半周期(モータの回転周期)の末尾で、例えば、ソフトスイッチングにより、PWM装置30から出力されるPWM信号のデューティを一定の傾きで減少させる場合の動作について説明する。図6に、本実施の形態のモータ制御システム12によるソフトスイッチング動作の一例の流れを表すフローチャートを示す。
ソフトウェア39(CPU36)により、周期カウントタイマ42で測定したモータの回転周期から、モータの特性に応じたソフトスイッチング開始位置(開始タイミング)t1を決定する(図6、ステップ200)。なお、ソフトスイッチング開始位置t1の決定方法としては、特に限定されないが、例えば、回転周期とソフトスイッチング開始位置t1との対応関係を予めROM38に格納させておき、当該対応関係に基づいて決定するようにしてもよい。
タイマ40は、モータの回転周期の開始位置(図5、t0参照)からの経過時間を測定し、当該経過時間がt1になった時点(図6、ステップ202でY)で、ソフトウェア39(CPU36)によりPWM設定レジスタ34のデューティ更新周期レジスタ54、デューティ更新値レジスタ56、及びデューティ更新回数レジスタ58に、モータの特性に応じた任意の値を設定する。
本実施の形態のPWM装置30は、デューティ更新回数レジスタ58に「1」以上の値が設定された場合に、デューティレジスタ52に設定されているデューティの現在値を、デューティ更新周期レジスタ54に設定された時間が経過する毎(図6、ステップ206でY)に、デューティ更新値レジスタ56に設定された値だけ更新する(図6、ステップ208)動作を、デューティ更新回数レジスタ58に設定された回数分だけ実行する。
このようにしてデューティレジスタ52に設定されているデューティの値が更新されると、PWM装置30で生成、出力されるPWM信号に反映される。具体的には、PWM装置30は、更新されたデューティに応じたパルス幅のPWM信号を生成して出力する。デューティ更新回数レジスタ58に設定された値は、デューティの更新を1回行う毎に1ずつ減少させる(図6、ステップ210)。設定された値が「0」になるまでデューティレジスタ52の更新が繰り返され(図6、ステップ212でN)、「0」になった場合は、それ以降のデューティレジスタ52の更新は行わない(図6、ステップ212でY)。
なお、本実施の形態では、このようにデューティの更新を1回行う毎にデューティ更新回数レジスタ58に設定された値を1ずつ減少させ、「0」になった場合にデューティレジスタ52の更新を行わないように構成しているが、これに限らない。例えば、デューティの更新を1回行う毎にデューティ更新回数レジスタ58に設定された値を1ずつ増加させ、所定値になった場合や所定値を超えた場合にデューティレジスタ52の更新を行わないように構成してもよい。
モータの回転周期の末尾でPWM信号のデューティを減少させる場合の具体的一例を示す。デューティレジスタ52の値が「80」、デューティ更新周期レジスタ54の値が「100」、デューティ更新値レジスタ56の値が「−10」、及びデューティ更新回数レジスタ58の値が「8」に設定されている場合について説明する。この場合に出力されるPWM信号のデューティの一例のタイミングチャートを図7に示す。なお、図7は、図5に示したタイムチャートにおいて、点線xで囲まれた部分の拡大図にあたる。
PWM装置30の出力信号(PWM信号)のデューティが、デューティ更新周期レジスタ54に設定された100カウント(本実施の形態ではPWM装置30の動作クロックでカウントする)経過する毎に、70、60、50、・・・、10、0というように、デューティ更新値レジスタ56に設定された値である−10ずつ、デューティ更新回数レジスタ58に設定された回数8回だけ変化する。図7からもわかるように、この場合におけるデューティ更新期間は、800カウント(デューティ更新周期100×デューティ更新回数8=800)となる。
なお、上記では、モータの回転周期の末尾でPWM信号のデューティを減少させる場合について説明したが、モータの回転周期の先頭(図5、t0参照)でPWM信号のデューティを0から増加させるように設定することもできる。この場合の具体的一例として、回転周期の先頭でデューティ更新周期レジスタ54の値が「100」、デューティ更新値レジスタ56の値が「+10」、及びデューティ更新回数レジスタ58の値が「8」に設定されている場合について説明する。PWM装置30の出力信号(PWM信号)のデューティが、デューティ更新周期レジスタ54に設定された100カウント(本実施の形態ではPWM装置30の動作クロックでカウントする)経過する毎に、10、20、30、・・・、70、80というように、デューティ更新値レジスタ56に設定された値である+10ずつ、デューティ更新回数レジスタ58に設定された回数8回だけ変化する。上記と同様に、この場合におけるデューティ更新期間は、800カウント(デューティ更新周期100×デューティ更新回数8=800)となる。
また、上記のようにデューティを段階的に変化させている途中の任意のタイミングにおいて、デューティ更新周期レジスタ54、デューティ更新値レジスタ56、及びデューティ更新回数レジスタ58の値を変更して、段階的に変化させている途中からデューティの変化量を変更するように構成してもよい。この場合、途中でデューティ更新回数レジスタ58の値を「0」に設定すると、その時点で、デューティの更新を停止することができる。
モータの回転数を上げる場合、PWM装置30が出力するPWM信号のデューティを大きくすることになるが、この際、コンパレータ44の出力信号の周期が変わり、PWM装置30がPWM信号を出力している途中で、コンパレータ44からの割り込みが発生する場合がある。この場合、従来技術と同様に、割り込みを検出したソフトウェア39により、PWM装置30の出力を停止させ、それまでPWM信号を出力していた出力端子(P0またはP1)からもう一方の出力端子(P1またはP0)に切り替えて新たに信号を出力させることができる。
以上説明したように、本実施の形態のモータ制御システム12のマイクロコントローラ20は、PWM装置30がPWM設定レジスタ34を備えている。PWM設定レジスタ34は、デューティ更新周期レジスタ54、デューティ更新値レジスタ56、及びデューティ更新回数レジスタ58を備えている。PWM生成部32は、PWM設定レジスタ34の各レジスタに設定された値に応じて、PWM信号を生成し、出力する。
これにより、PWM装置30がソフトスイッチング動作を行う際に、ソフトウェア39(CPU36)による割り込みがなくても、PWM生成部32で、PWM設定レジスタ34に設定された設定値に応じて、自動的に、PWM信号を生成して出力することができる。従って、ソフトウェア39(CPU36)の処理の負荷を軽減することができる。
またソフトウェア39にて、モータの特性やその他の動作条件に応じて、任意のタイミングで、ソフトスイッチング動作の開始タイミングを設定することができる。また、PWM信号のデューティの変化量を任意に制御することができる。これにより、モータ24を別の種類のものに取り替えた場合でも、ソフトウェア39の処理を差し替えることにより、ハードウエアを変更することなく、モータの種類や特性に応じたモータ制御信号の合わせこみを容易に行うことができる。
従って、比較的安価で処理能力の低いマイクロコントローラでも任意の制御信号を容易に生成することができる。
[第2の実施の形態]
本実施の形態は、第1の実施の形態と同様の構成及び動作を含むため、同様の構成及び動作については、その旨を記し、詳細な説明を省略する。モータ制御システム12を備えた電子機器10の全体構成は、第1の実施の形態(図1参照)と同様のため、説明を省略する。
本実施の形態では、モータ制御システム12が備えるマイクロコントローラ20の構成が第1の実施の形態と異なるため、モータ制御システム12及びマイクロコントローラ20の構成について説明する。図8に、本実施の形態のモータ制御システム12の一例の概略構成図を示す。
本実施の形態のモータ制御システム12は、第1の実施の形態のモータ制御システム12が備えていたタイマ40に替わり、デューティ更新テーブル60が備えられている。具体的には、デューティ更新テーブル60が格納されたメモリ61を備えている。デューティ更新テーブル60は、PWM設定レジスタ34のデューティ更新周期レジスタ54、デューティ更新値レジスタ56、及びデューティ更新回数レジスタ58に、順次、転送するためのデータを格納したテーブルである。デューティ更新テーブル60の具体的一例を図9に示す。図9に示したデューティ更新テーブル60では、デューティ更新周期、デューティ更新値、及びデューティ更新回数との対応関係(テーブル)が複数、具体的には1番〜4番まで、4種類格納されている。
次に、本実施の形態のモータ制御システム12の動作の一例について説明する。本実施の形態のモータ制御システム12の全体動作の流れは、第1の実施の形態と同様である。本実施の形態では、PWM装置30におけるソフトスイッチング動作を含むPWM制御信号を生成する動作が異なるため、PWM装置30におけるPWM制御信号を生成する動作について説明する。
図10に、本実施の形態のPWM装置30でPWM制御信号を生成する動作の一例の流れを表すフローチャートを示す。また、図11に、マイクロコントローラ20により出力されるPWM信号のデューティの一例のタイミングチャートを示す。さらに、図12に、図11における点線x及び点線yで囲まれたソフトスイッチング動作部分の拡大図を示す。
まず、ソフトウェア39(CPU36)により、周期カウントタイマ42で測定したモータの回転周期から、モータの特性に応じたソフトスイッチング開始位置(開始タイミング)t1や、ソフトスイッチ時のデューティ変化量等、モータの回転周期におけるデューティの変化に応じたデューティ更新テーブル60を登録する(図10、ステップ300)。なお、本実施の形態では、デューティ更新テーブル60は、予めROM38に格納されており、ROM38から読み出して、登録するように構成している。
モータ24が回転を始めると、PWM装置30は、回転周期の開始位置(図11、t0参照)において、デューティ更新テーブル60の最初のデータ(図9の番号1のデータ)を読み出す(図10、ステップ302)。さらに読み出した各値を、デューティ更新周期レジスタ54、デューティ更新値レジスタ56、及びデューティ更新回数レジスタ58の各々に設定する(図10、ステップ304)。PWM生成部32では、設定された値に基づいて、PWM信号の生成を開始し、生成したPWM信号を出力する。
PWM信号の生成が開始されると、第1の実施の形態で説明した図6のステップ206〜ステップ212と同様に動作する。すなわち、デューティレジスタ52に設定されているデューティの現在値を、デューティ更新周期レジスタ54に設定された時間が経過する毎(図10、ステップ306でY)に、デューティ更新値レジスタ56に設定された値だけ更新する(図10、ステップ308)動作を行うと、デューティ更新回数レジスタ58の値を1減少(図10、ステップ310)させる処理を、デューティ更新回数レジスタ58が「0」になるまで繰り返し実行する(ステップ312)。
デューティ更新回数レジスタ58が「0」になると、デューティ更新テーブル60に次のデータが有るか判断する(図10、ステップ314)。図9に示したデューティ更新テーブル60では、1番〜3番に基づいてPWM信号を生成していた場合、次のデータが有ると判断して(図10、ステップ314でY)、デューティ更新テーブル60から次の番号のデータを読み出す(図10、ステップ316)した後、上記ステップ304に戻り以降の本動作を繰り返す。
一方、4番に基づいてPWM信号を生成していた場合、次の番号のデータが無いため、PWM生成部32の動作を一端停止させる。
図9に示したデューティ更新テーブル60における動作について詳細に説明する。モータの回転周期の開始位置(図11、図12、t0参照)から、番号1のデータに基づいて、PWM装置30の出力信号(PWM信号)のデューティが、デューティ更新周期レジスタ54に設定された100カウント(本実施の形態ではPWM装置30の動作クロックでカウントする)経過する毎に、20、40、60、80というように、デューティ更新値レジスタ56に設定された値である+20ずつ、デューティ更新回数レジスタ58に設定された回数4回だけ変化させる。図11及び図12に示すようにタイミングt0〜t1の間、デューティ更新テーブル60の1番のデータに基づいてPWM信号を生成し、出力する。
次に、2番のデータに基づいて、PWM信号のデューティを、デューティ更新周期レジスタ54に設定された10000カウント経過すると、デューティ更新値レジスタ56に設定された値である−10、デューティ更新回数レジスタ58に設定された回数1回だけ変化させる。より具体的には、PWM生成部32は、タイミングt1〜t2の間、デューティ更新テーブル60の2番のデータに基づいてデューティが70のPWM信号を生成して、出力する。
次に、3番のデータに基づいて、PWM信号のデューティが、デューティ更新周期レジスタ54に設定された200カウント経過する毎に、60、50、40というように、デューティ更新値レジスタ56に設定された値である−10ずつ、デューティ更新回数レジスタ58に設定された回数3回だけ変化させる。PWM生成部32は、タイミングt2〜t3の間、デューティ更新テーブル60の3番のデータに基づいてPWM信号を生成して、出力する。
次に、4番のデータに基づいて、PWM信号のデューティが、デューティ更新周期レジスタ54に設定された100カウント経過する毎に、20、0というように、デューティ更新値レジスタ56に設定された値である−20ずつ、デューティ更新回数レジスタ58に設定された回数2回だけ変化させる。PWM生成部32は、タイミングt3〜t4の間、デューティ更新テーブル60の4番のデータに基づいてPWM信号を生成して、出力する。
なお、デューティ更新テーブル60を読み出してデューティ更新周期レジスタ54、デューティ更新値レジスタ56、及びデューティ更新回数レジスタ58へ各データを転送する方法は、CPU36を介さずに直接的に行う、いわゆるDMA(Direct Memory Access)のような仕組みを用いてもよい。このような仕組みを用いることにより、よりCPU36の処理負荷を低減することができる。
なお、図9に示したデューティ更新テーブル60は一例であり、デューティ更新テーブル60の定義の仕方は、特に限定されるものではない。例えば、図9に示したデューティ更新テーブル60と同等のソフトスイッチング動作を示したデューティ更新テーブル60の一例を図13に示す。図13に示したデューティ更新テーブル60は、図9に示したデューティ更新テーブル60と、2番のデータ及び3番のデータが異なっているが、いずれも図12に示したように、PWM信号が生成される。
以上説明したように、本実施の形態では、PWM設定レジスタ34のデューティ更新周期レジスタ54、デューティ更新値レジスタ56、及びデューティ更新回数レジスタ58に設定する値を予めデューティ更新テーブル60に複数登録しておき、自動的に続けてこれらの設定値を各レジスタに読み込んで反映させることがきる。
これにより、モータの回転周期の区間全体において、どのようにデューティを更新していくかをPWM装置30の動作開始時に一度設定しておけば、自動的に任意のPWM信号を得ることができる。従って、第1の実施の形態で得られた効果に加えて、さらにソフトウェア39(CPU36)の処理負荷を軽減することができ、より比較的安価で処理能力の低いマイクロコントローラでも任意の制御信号を容易に生成することができる。
なお、上記各実施の形態において、一度、デューティ更新回数レジスタ58に設定された値の回数分のデューティ更新が終了した際に、PWM装置30からCPU36へ割り込みを発生させることもできる。上記第1の実施の形態では、当該割り込み発生のタイミングでソフトウェア39にてデューティ更新周期レジスタ54、デューティ更新値レジスタ56、及びデューティ更新回数レジスタ58に続けて、新たな値を設定することにより、設定された新たな値により、デューティの更新処理を継続することができる。また、上記第2の実施の形態においても同様に、デューティ更新テーブル60から読み込まれた一組のデータに従ってデューティの更新処理が終了した際に、割り込みを発生させることができる。当該割り込み発生のタイミングでソフトウェア39にてデューティ更新テーブル60に新たなデータを追加することにより、続けてその値がデューティ更新周期レジスタ54、デューティ更新値レジスタ56、及びデューティ更新回数レジスタ58に読み込まれ、デューティの更新処理を継続して行うことができる。
また、上記各実施の形態において、PWM装置30で生成されるPWM信号のデューティをあげてモータの回転速度をあげた場合、PWM信号の出力途中でコンパレータ44の出力信号のレベルが切り替わり割り込みが発生し、割り込みを検出したソフトウェア39により、PWM装置30の出力を停止させるようにしているがこれに限らない。例えば、割り込みを検出したPWM装置30自身が自動的に出力を停止し、出力先の出力端子(P0またはP1)を他方の出力端子に切り替えるようにしてもよい。このように構成することにより、ソフトウェア39によるPWM装置30の停止処理と、出力端子の切り替え処理を省略することができ、次のコンパレータ44出力の半周期分の出力設定(PWM設定レジスタ34への各値の設定)と出力開始処理だけを行えばよいため、PWM装置30の出力の停止と出力先の切り替え処理の応答速度をあげることができる。
なお、PWM設定レジスタ34に格納される情報は、上記各実施の形態に限定されない。PWM設定レジスタ34に格納される情報は、PWM生成部32でPWM信号を生成するための制御情報であればよく、少なくとも、生成するPWM信号を表す情報と、PWM信号の更新(変更)を表す情報とが含まれていればよい。上記各実施の形態では、PWM信号を表す情報として、デューティ更新値を用いているが、このように現在のデューティからの変化量を示す情報に限らず、例えば、変更後のデューティそのものであってもよい。また、上記各実施の形態では、PWM信号の更新を表す情報として、デューティ更新周期及びデューティ更新回数を用いているがこれに限らない。例えば、デューティを更新する全てのタイミングであってもよい。また例えば、デューティの閾値を更新情報とし、更新されたデューティと当該閾値とを比較し、閾値を超えたタイミングを更新タイミングとするように構成してもよい。
なお、上記各実施の形態におけるモータ24は、特に限定されない。例えば、単相のブラシレスDCモータであってもよい。また、マイクロコントローラ20が複数のPWM装置30を備える場合は、多相のモータを制御するように構成することができる。例えば、3相モータを駆動する場合、モータの3つのコイルに対して、PWM装置30を3チャンネル搭載し、各モータ24のコイル25に対してPWM設定レジスタ34の設定値に従って任意のPWM信号を出力するモータ制御システム12を構成することも可能である。
また、上記各実施の形態では、PWM設定レジスタ34には、レジスタを用い、デューティ更新テーブル60には、メモリ61を用いているが、各々、必要な情報(値)を格納できるものであれば、特に限定されない。なお、レジスタを用いる場合、メモリに比べて高速化することができる。
また、電子機器10において、駆動部材14が別のものに変更された場合、マイクロコントローラ20のCPU36が当該駆動部材14の変更を検出して、駆動部材14に応じてモータ24を動作させるよう、PWM設定レジスタ34に設定される値、またはデューティ更新テーブル60の設定・登録を行うようにしてもよい。
また、上述各実施の形態で説明した電子機器10、モータ制御システム12、マイクロコントローラ20、PWM装置30等の構成、動作等は一例であり、本発明の主旨を逸脱しない範囲内において状況に応じて変更可能であることは言うまでもない。