(実施の形態の概要)
本明細書に開示される一実施の形態は、モータ駆動回路に関する。モータ駆動回路は、上位コントローラからのクロック信号とエンコーダからのパルス信号に応じてDCモータを駆動する。駆動回路は、クロック信号にもとづきロータの目標位置を示す位置指令値を生成する第1検出回路と、パルス信号にもとづきロータの現在位置を示す位置検出値を生成する第2検出回路と、位置検出値が位置指令値に近づくように、トルク指令値を生成するフィードバックコントローラと、位置検出値が位置指令値より大きく、かつトルク指令値が負であるときに、ショートブレーキを掛けるブレーキコントローラと、を備える。
この態様によると、位置超過かつトルク指令が負であることを条件として、ブレーキを掛けることにより、ロータを適切に停止させることができる。
第1検出回路は、クロック信号にもとづきロータの目標回転数を示す速度指令値を生成してもよい。第2検出回路は、パルス信号にもとづきロータの現在の回転速度を示す速度検出値を生成してもよい。ブレーキコントローラは、(i)(ii)に加えて、かつ(iii)速度検出値が速度指令値より大きいときに、ショートブレーキを掛けてもよい。
位置超過、トルク指令が負に加えて、速度超過を条件としてブレーキを掛けることにより、さらに適切に停止させることができる。
なおモータの回転方向を、CW(時計回り)、CCW(反時計回り)で切りかえ可能なプラットフォームにおいては、指示される回転方向を正として、位置超過判定、速度超過判定、トルクの正負判定を扱えばよい。
第1検出回路は、クロック信号に含まれるエッジの個数を積算し、位置指令値を生成し、第2検出回路は、パルス信号のパルスの個数を積算し、位置検出値を生成してもよい。
第1検出回路は、クロック信号の周期にもとづいて速度指令値を生成し、第2検出回路は、パルス信号の周期にもとづいて速度検出値を生成してもよい。
フィードバックコントローラは、位置検出値と位置指令値の差分である位置誤差値を入力とするPI(比例積分)制御器を含んでもよい。PI制御器の出力が、トルク指令値であってもよい。
第1検出回路、第2検出回路、フィードバックコントローラ、ブレーキコントローラは、ロジック回路で構成されてもよい。これらをロジック回路で構成することにより、マイコンやCPUなどのプロセッサが不要となるため、コストを下げることができる。
駆動回路は、トルク指令値に応じたデューティ比を有するPWM(Pulse Width Modulation)信号を生成するパルス幅変調器をさらに備えてもよい。
駆動回路は、ホールセンサからの相補的なホール信号を比較するホールコンパレータと、PWM信号と、ホールコンパレータの出力と、にもとづいて駆動信号を生成する通電ロジックと、をさらに備えてもよい。駆動回路は、DCモータを駆動するインバータを制御するプリドライバをさらに備えてもよい。
駆動回路は、ひとつの半導体基板に一体集積化されてもよい。「一体集積化」とは、回路の構成要素のすべてが半導体基板上に形成される場合や、回路の主要構成要素が一体集積化される場合が含まれ、回路定数の調節用に一部の抵抗やキャパシタなどが半導体基板の外部に設けられていてもよい。回路を1つのチップ上に集積化することにより、回路面積を削減することができるとともに、回路素子の特性を均一に保つことができる。
(実施の形態)
以下、本発明を好適な実施の形態をもとに図面を参照しながら説明する。各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。また、実施の形態は、発明を限定するものではなく例示であって、実施の形態に記述されるすべての特徴やその組み合わせは、必ずしも発明の本質的なものであるとは限らない。
本明細書において、「部材Aが、部材Bと接続された状態」とは、部材Aと部材Bが物理的に直接的に接続される場合や、部材Aと部材Bが、電気的な接続状態に影響を及ぼさず、あるいは機能を阻害しない他の部材を介して間接的に接続される場合も含む。
同様に、「部材Cが、部材Aと部材Bの間に設けられた状態」とは、部材Aと部材C、あるいは部材Bと部材Cが直接的に接続される場合のほか、電気的な接続状態に影響を及ぼさず、あるいは機能を阻害しない他の部材を介して間接的に接続される場合も含む。
図2は、実施の形態に係る駆動IC200を備えるモータ駆動システム100のブロック図である。モータ駆動システム100は、駆動IC200に加えて、DCモータ102、上位コントローラ104、ドライバ106、ホールセンサ110U〜110W、エンコーダ112を備える。各信号の名称と、それが入出力されるピン(端子)、配線には同じ符号を付す。本実施の形態において駆動対象は三相DCモータである。
上位コントローラ104はマイコンやCPU、ASIC(Application Specified IC)、FPGA(Field Programmable Gate Array)などであり、DCモータ102のロータの目標位置(以下、単にモータの位置ともいう)を示すクロック信号CLKを生成する。また上位コントローラ104は、モータの回転方向を指示する方向指示信号(CW_CCW信号)を生成する。これらの信号は、駆動IC200の対応するピンCLK,CW_CCに入力される。たとえばCW_CCW信号のローは第1方向(たとえば時計回り)の回転指示であり、ハイは第2方向の回転指示(たとえば反時計回り)である。
ドライバ106は三相インバータおよびシャント抵抗RSを含む。三相インバータの各相の出力電圧VU〜VWは、駆動IC200のフィードバックピン(U〜W)に入力される。シャント抵抗RSは、三相インバータに流れる電流の経路上に設けられ、電流に比例した電圧降下(検出電圧)が発生する。シャント抵抗RSの電圧降下(電流検出信号)VCLは、駆動IC200のRCL(過電流検出電圧入力)ピンに入力される。電流検出信号VCLは、たとえばパルスバイパルスの電流制限(Current Limit)に用いることができる。
ホールセンサ110U〜110Wは、ロータの位置に応じた三相のホール信号HUP,HUN,HVP,HVN,HWP,HWNを生成する。これらの信号は、駆動IC200の対応するピンに入力される。
ホールセンサ110U〜110Wには、駆動IC200および外付けのトランジスタQ1や抵抗R11,R12によって生成されるホールバイアス信号VHBが供給される。
エンコーダ112は、ロータの位置に関する情報(絶対位置、相対位置もしくは変位量)を示すパルス信号(A相パルス信号EN_AとB相パルス信号EN_B)を生成する。これらのパルス信号は、駆動IC200の対応するピンに入力される。
駆動IC200は、CLK信号、CW_CCW信号、ホール信号HUP〜HWN、パルス信号EN_A,EN_Bにもとづいて、ドライバ106を制御するためのゲート信号を生成し、UH,VH,WH,UL,VL,WLピンから出力する。
ドライバ106のハイサイドトランジスタはNチャンネルであり、ゲート駆動のために、電源電圧VCCより高い電圧が必要である。駆動IC200はチャージポンプを内蔵しており、CP1,CP2およびVGピンには、外付けのキャパシタが接続される。
駆動IC200は、ハードウェア、すなわちロジック回路やアナログ回路の組み合わせで構成される。本明細書における「ロジック回路で構成される」とはCPUやマイコンなどのようにソフトウェア制御が不要なアーキテクチャであることを意味する。
また駆動IC200の電源(VCC)ピンには電源電圧が供給され、接地(GND)ピンは接地される。
図3は、駆動IC200の構成を示すブロック図である。駆動IC200は、複数の入力バッファBUF1〜BUF4、ホールコンパレータHCMPU〜HCMPW、ロジック回路300、プリドライバ250、電源回路群260、保護回路280を備える。
複数の入力バッファBUFはそれぞれ、対応するピンに入力される信号をハイ、ロー2値化する。U相のホールコンパレータHCMPUは、HUPピンとHUNピンに入力される同じU相のホール信号HUP,HUNを比較する。V相、W相のホールコンパレータHHCMPV,HCMPWも同様である。入力バッファBUFおよびホールコンパレータHCMPの出力は、ロジック回路300に入力される。
電源回路群260は、外付けの部品(図2のトランジスタQ11、抵抗R11,R12)とともにホールバイアス回路を構成するオペアンプ262、基準電圧源264を含む。ホールバイアス電圧VHBは、以下の電圧レベルに安定化される。
VHB=VREF×(1+R11/R12)
チャージポンプ266は、CPピン、CNピン、VGピンを介して外付けのキャパシタ(図2のC11,C12)接続される。チャージポンプ266には入力電圧として、電源電圧VCCが供給される。チャージポンプ266は、電源電圧VCCを昇圧し、VGピンに昇圧された高電圧VGを生成する。高電圧VGは、プリドライバ250に供給され、後段のハイサイドのトランジスタ(図2のドライバ106の上側アーム)の駆動に用いられる。
電源回路268はデジタル回路用の電源電圧VREGD(たとえば1.5V)を生成し、ロジック回路300に供給する。電源回路270はアナログ回路用の電源電圧VREG(たとえば5V)を生成し、ロジック回路300およびプリドライバ250に供給する。
保護回路280は、さまざまな保護回路を含む。TSD(Thermal Shut Down)回路282は、過熱状態を検出する。UVLO(Under Voltage Lock Out)回路284は、電源電圧VCCの低い状態を検出する。OVLO(Over Voltage Lock Out)回路286は、電源電圧VCCの過電圧状態を検出する。各回路の出力(検出信号)は、直接的に、あるいはORゲートを介して間接的に、ロジック回路300に入力される。
オシレータ288は、システムクロックCKSYSを生成し、ロジック回路300に供給する。
過電流検出回路290は、RCLピンに入力される検出電圧VCLにもとづく過電流保護のために設けられる。OCP(Over Current Protection)コンパレータ292は、検出電圧VCLをしきい値VTHと比較し、VCL>VTHとなると、OCP信号をアサート(たとえばハイ)する。OCP信号は、ロジック回路300に供給される。
ロジック回路300は、ホールコンパレータHCMPや入力バッファBUFの出力にもとづいて、駆動IC200の後段に接続されるドライバ(三相インバータ)106の駆動信号を生成する。また、各異常状態における保護処理を実行する。たとえばOCP信号がアサートされると、パルスバイパルスの過電流保護をかける。保護回路280において異常が検出されると、モータの駆動を停止する。
プリドライバ250は、ロジック回路300からの駆動信号およびU,V,Wピンにフィードバックされる各相のコイル端電圧VU,VV,VWにもとづいて、後段のドライバ106を駆動する。コイル端電圧VU,VV,VWは、ドライバ106のハイサイドトランジスタのゲート信号のローレベルの生成に使用される。
以上が駆動IC200のブロック図である。続いて、ロジック回路300の構成を説明する。
図4は、ロジック回路300の基本構成を示すブロック図である。ロジック回路300は、主として、誤差検出器310、フィードバックコントローラ330、駆動信号生成部340を備える。
誤差検出器310は、エンコーダからのパルス信号EN_A,EN_Bと、上位コントローラからのクロック信号CKのパルス数の積算値との差分にもとづいて、ロータの目標位置と現在位置の誤差を示す位置誤差値ERRを生成する。
誤差検出器310は、位置指令値生成部312、位置検出値生成部314、減算器316を含む。位置指令値生成部312は、クロック信号CLKおよびCW_CCW信号にもとづいて、ロータの目標位置を示すターゲット値TGTを生成する。より詳しくは、位置指令値生成部312は、クロック信号CLKのポジエッジ(および/またはネガエッジ、以下、単にエッジという)の個数の積算値を生成する。
位置検出値生成部314は、エンコーダ112からのパルス信号EN_A,EN_Bにもとづいて、ロータの現在位置を示すフィードバック値FBを生成する。減算器316は、ターゲット値TGTとフィードバック値FBの差分を生成する。
フィードバックコントローラ330は、位置誤差値ERRの値がゼロに近づくように、制御指令値REFを生成する。たとえばフィードバックコントローラ330は、PI(Proportional Integral)制御器を含むことができる。制御指令値REFは、モータのトルク指令値であってもよい。
駆動信号生成部340は、指令値REFに応じた駆動信号SUH,SUL,SVH,SVL,SWH,SWLを生成する。たとえば駆動信号生成部340は、パルス幅変調器342と、通電ロジック344を含む。パルス幅変調器342は、制御指令値REFに応じたデューティ比を有するPWM(Pulse Width Modulation)信号を生成する。
通電ロジック344は、CW_CCW信号にもとづいて回転方向を決定する。また通電ロジック344は、ホールコンパレータHCMPU〜HCMPWにもとづいて、駆動対象の相(駆動相)を切りかえる(転流制御)。通電方式は特に限定されないが、たとえば120度通電制御(矩形波駆動)を採用することができる。そのほか、180度通電制御(正弦波駆動)などの別の方式を採用してもよい。
通電ロジック344はPWM信号に応じて、駆動信号SUH,SUL,SVH,SVL,SWH,SWLのいずれかを変調する。PWM制御の方式は限定されないが、たとえばローサイ側の駆動信号SUL,SVL,SWLの論理を固定し、ハイサイドの駆動信号SUH,SVH,SWHの論理をPWM信号にもとづいて変調してもよい。反対に、ローサイドの駆動信号を変調してもよいし、両方を変調してもよい。
通電ロジック344は、OCP信号にもとづいて、パルスバイパルスの電流制限をかけてもよい。具体的には、OCP信号がアサートされると、通電中のトランジスタがターンオフするように駆動信号SUH〜SWH,SUL〜SWLを変化させる。
パルス幅変調器342、通電ロジック344の構成は、従来のDCモータの駆動回路のそれらと同様でよく、公知技術を用いればよい。
図5は、誤差検出器310の動作を説明する図である。この例では、CW_CCW信号をローとしている。クロック信号CLKのエッジが発生する度に、ターゲット値TGTが1増加し、その結果、位置誤差値ERRは1増加する。また、パルス信号EN_AとEN_Bの組み合わせによってフィードバック値FBが変化し、その結果、位置誤差値ERRが減少または増加する。
図6(a)〜(c)は、位置指令値生成部312の構成例を示すブロック図である。図6(a)の位置指令値生成部312は、クロック信号CLKのエッジを検出するエッジ検出回路320、エッジごとにカウントアップ/カウントダウンするカウンタ322を含む。回転方向を指示するCW_CCW信号は、カウンタ322のカウントアップ、カウントダウンの選択に用いられる。カウンタ322の出力が、ターゲット値TGTとなる。
図6(b)の位置指令値生成部312は、演算器324、メモリ(レジスタ)325、オペコードセレクタ326を含む。演算器324は、少なくとも加算演算A+Bと、減算演算A−Bが、オペコード(OPECODE)に応じて切りかえ可能である。入力Aには、メモリ325の値(位置誤差値ERR)が入力され、入力Bには固定値1が入力される。オペコードセレクタ326は、クロック信号CLKのエッジが検出されるたびに、オペコードを発行する。オペコードは、CW_CCWが第1レベルのときに加算、CW_CCW信号が第2レベルのときに減算となる。これによりメモリ326には、クロック信号CLKのエッジの個数を積算した値が格納され、これはターゲット値TGTを表す。
図6(c)の位置指令値生成部312は、セレクタ327、加算器328、メモリ329を含む。セレクタ320には、値1と−1が入力されており、CW_CCWの値に応じた一方を選択する。加算器328はクロック信号CLKのエッジに応じて動作し、セレクタ320の出力と、メモリ329の値を加算し、加算結果によりメモリ329の値を更新する。これによりメモリ326には、クロック信号CLKのエッジの個数を積算した値が格納され、これはターゲット値TGTを表す。
以上がロジック回路300の構成である。
実施の形態に係る駆動IC200を用いることにより、従来のシステムにおけるマイコンやCPU(図1の900)が不要となるため、ステッピングモータを安価にDCモータに置き換えることができ、システムの消費電力を低減という利点を享受できる。
続いて、駆動IC200のさらなる特徴を説明する。
(回転制御モードと保持モード)
図7は、回転制御モードと保持モードの切り替えをサポートする駆動IC200Dのブロック図である。
駆動IC200Dは、誤差検出器310、フィードバックコントローラ330、駆動信号生成部340に加えて、モード判定部470を備える。誤差検出器310、フィードバックコントローラ330、駆動信号生成部340の基本的な機能、動作については、図4を参照してすでに説明した。
誤差検出器310は、位置指令値生成部312、位置検出値生成部314、減算器316を含む。位置指令値生成部312は、クロック信号CLKにもとづき、ロータの目標位置を示す位置指令値P_TGTを生成する。位置指令値P_TGTは、図4における位置指令値TGTに相当する。
位置検出値生成部314は、エンコーダからのパルス信号EN_A,EN_Bにもとづき、ロータの現在位置を示す位置検出値P_FBを生成する。位置検出値P_FBは、図4のフィードバック値FBに相当する。
位置指令値P_TGTおよび位置検出値P_FBは、減算器316に入力され、位置誤差値ERRが生成される。
フィードバックコントローラ330は、位置検出値P_FBが位置指令値P_TGTに近づくように、すなわち位置誤差値ERRがゼロに近づくように、トルク指令値T_REFを生成する。トルク指令値T_REFは、図4における指令値REFに相当する。トルク指令値T_REFは、駆動信号生成部340に供給される。
駆動IC200Dは、回転制御モードと保持モードが切りかえ可能に構成される。フィードバックコントローラ330の制御特性は、回転制御モードと保持モードで異なる。
上述のように、フィードバックコントローラ330はPI(Proportional Integral)制御器を含むことができる。回転制御モードと保持モードでは、比例ゲインKPと積分ゲインKIの少なくとも一方、好ましくは両方が異なる。
典型的には、保持モードにおける比例ゲインKPは、回転制御モードにおける比例ゲインKPと等しいか、それより小さい。また保持モードにおける積分ゲインKIは、回転制御モードにおける積分ゲインKIと等しいか、それより小さい。
モード判定部470は、クロック信号CKの入力状態にもとづいて、回転制御モードと保持モードを判定する。モード判定部470は、クロック信号CLKの無入力状態が所定時間持続すると、回転制御モードから保持モードに移行する。また、保持モードにおいてクロック信号CLKのエッジを検出すると、直ちに回転制御モードに移行する。
以上が駆動IC200Dの基本構成である。駆動IC200Dによれば、回転制御モードでは、クロック信号CLKにもとづく回転指令に対する追従性を重視した制御パラメータを与え、保持モードでは、追従性ではなく、安定性を重視した制御パラメータを与えることで、DCモータをステッピングモータのように駆動することが可能となる。
回転制御モードと保持モードが切り替わる際には、PIコントローラにおける積分値をゼロリセットすることが好ましい。これにより制御パラメータ切りかえにともなう不要振動の誘起、安定化時間の長期化を抑制できる。
さらに回転制御モードと保持モードとで、駆動信号生成部340(通電ロジック344)の動作、すなわち駆動信号の生成方法が異なっていてもよい。
たとえば駆動信号生成部340は、回転制御モードにおいては、CW_CCW信号に応じて回転方向を決定し、トルク指令値T_REFが正である場合に、トルク指令値T_REFに応じたデューティ比で、DCモータをPWM駆動する。トルク指令値T_REFが負である場合には、ドライバ106をハイインピーダンスとし、空転制御を行う。
また駆動信号生成部340は、保持モードにおいては、CW_CCW信号に関わらず、トルク指令値T_REFの符号(正負)に応じて、回転方向を決定する。これによりより正確にロータの位置を固定することができる。
図8は、駆動IC200Dの構成例を示すブロック図である。たとえばモード判定部470は、カウンタ472、ステートマシン474を含む。カウンタ472はクロック信号CLKの無入力状態の持続時間を測定し、無入力時間が所定時間τ1を超えるとタイムアップ信号TIMEUP1をアサート(たとえばハイ)する。
カウンタ472の構成は特に限定されないが、たとえばクロック信号CLKのポジエッジによってリセットされるフリーランカウンタで構成してもよい。カウンタ472は、カウント値が判定時間τ1に対応するしきい値TH1に達すると(オーバーフロー)、タイムアップ信号TIMEUP1をアサートする。
ステートマシン474は、タイムアップ信号TIMEUP1のアサートに応答して保持モードに移行する。またステートマシン474は、保持モードにおいてクロック信号CLKのエッジを検出すると、直ちに回転制御モードに移行する。
フィードバックコントローラ330は、第1コントローラ332、第2コントローラ334、セレクタ336を含む。第1コントローラ332は回転制御モードに関連し、トルク指令値T_REF1を生成する。第2コントローラ334は、保持モードに関連し、トルク指令値T_REF2を生成する。上述のように、第1コントローラ332と第2コントローラ334は、比例ゲイン、積分ゲインの少なくとも一方が異なっている。
セレクタ336は、トルク指令値T_REF1,T_REF2を受け、現在のモードに応じた一方を選択し、トルク指令値T_REFとして後段の駆動信号生成部340に供給する。
またステートマシン474は、モードの遷移ごとにリセット信号RESETを出力する。
第1コントローラ332、第2コントローラ334は、リセット信号RESETに応答して、積分値をゼロリセットする。
第1コントローラ332は保持モードの間、停止しておいてもよいし、動作し続けてもよい。また第2コントローラ334は、回転制御モードの間に、停止しておいてもよいし動作し続けてもよい。
図8に示すように、2系統のコントローラ332,334を設けることで、回転制御モードと保持モードとをシームレスに切り替えることができる。
図9は、図8の駆動IC200Dのモードの移行を説明するタイムチャートである。クロック信号CLKが入力される間、回転制御モードが選択されており、第1コントローラ332が生成するトルク指令値T_REF1にもとづいてDCモータが制御される。
カウンタ472は、駆動IC200Dに内蔵されるオシレータが生成する内部クロックCKSYSを利用して、フリーランしている。クロック信号CLKが停止すると、カウンタ472がリセットされずにカウントアップし続ける。時刻t1にカウント値がしきい値TH1に達すると、タイムアップ信号TIMEUP1がアサートされて、保持モードに移行する。
保持モードでは、第2コントローラ334が生成するトルク指令値T_REF2にもとづいてDCモータが制御される。
時刻t2に、上位コントローラからクロック信号CLKが再入力されると、回転制御モードに戻り、第1コントローラ332が生成するトルク指令値T_REF1にもとづいてDCモータが制御される。
回転制御モードと保持モードの切りかえに関する変形例を説明する。
(変形例1)
回転制御モードと保持モードとで、PI制御器のゲインを切りかえる場合を説明したが、その限りでない。たとえば回転制御モードと保持モードとで、制御の方式(P制御、PI制御、PID制御)が異なっていてもよい。
(変形例2)
回転制御モードと保持モードとで、演算周期(ΔT)が異なっていてもよい。すなわち保持モードでは、演算周期ΔTを長くし、回転制御モードでは演算周期ΔTを短くしてもよい。
(変形例3)
駆動IC200Dが、後述の休止モードをサポートし、後述のカウンタ450(図11)が設けられる場合、カウンタ472はカウンタ450と兼用とすることができる。また、カウンタ472における判定時間τ1は、カウンタ450における判定時間τ2と同一か、それより短く設定される。
(変形例4)
図10は、変形例4に係る駆動IC200Dの一部のブロック図である。この変形例では、フィードバックコントローラ330は、単一のPIコントローラ338を含む。PIコントローラ338の比例ゲインKPと積分ゲインKIは、回転制御モード用の値KP1,KI1と、保持モード用の値KP2,KI2が別々に用意され、モード判定部470が指示するモードに応じた値のセットが、PIコントローラ338にロードされ、ゲインが変更される。またPIコントローラ338の積分値を保持するメモリ339の値は、モード判定部470が生成するリセット信号RESETに応じてゼロとなる。
(変形例5)
クロック信号CLKの有無によってモードを切り替えたがその限りでない。上位コントローラから駆動IC200Dに対して、モードを指示する信号を与え、この信号に応じてモードを切り替えてもよい。
(休止モード)
図11は、休止モードをサポートする駆動IC200Cの一部のブロック図である。駆動IC200Cは、誤差検出器310、フィードバックコントローラ330、駆動信号生成部340に加えて、カウンタ450、休止モード判定部460を備える。誤差検出器310、フィードバックコントローラ330、駆動信号生成部340の主な機能、動作については、図4を参照してすでに説明した。
誤差検出器310は、位置指令値生成部312、位置検出値生成部314、減算器316を含む。位置指令値生成部312は、クロック信号CLKにもとづき、ロータの目標位置を示す位置指令値P_TGTを生成する。位置指令値P_TGTは、図4における位置指令値TGTに相当する。
位置検出値生成部314は、エンコーダからのパルス信号EN_A,EN_Bにもとづき、ロータの現在位置を示す位置検出値P_FBを生成する。位置検出値P_FBは、図4のフィードバック値FBに相当する。
位置指令値P_TGTおよび位置検出値P_FBは、減算器316に入力され、位置誤差値ERRが生成される。
フィードバックコントローラ330は、位置検出値P_FBが位置指令値P_TGTに近づくように、すなわち位置誤差値ERRがゼロに近づくように、トルク指令値T_REFを生成する。トルク指令値T_REFは、図4における指令値REFに相当する。トルク指令値T_REFは、駆動信号生成部340に供給される。
DCモータを回転させる必要がない状況では、上位コントローラからのクロック信号CLKが停止する。そこで駆動IC200Cは、クロック信号CLKの無入力状態が所定時間(判定時間τ2という)持続したことを条件として、少なくとも一部の回路ブロックの動作が停止する休止モードに移行する。判定時間は、レジスタを利用して設定可能としてもよい。
カウンタ450は、クロック信号CLKを受け、クロック信号CLKの無入力状態が判定時間τ2持続すると、タイムアップ信号TIMEUP2をアサート(たとえばハイ)する。カウンタ450は、クロック信号CLKの無入力状態の検出以外の目的で設けられたカウンタを流用してもよい。
カウンタ450の構成は特に限定されないが、たとえばクロック信号CLKのポジエッジによってリセットされるフリーランカウンタで構成してもよい。カウンタ450は、カウント値が判定時間に対応するしきい値TH2に達すると(オーバーフロー)、タイムアップ信号TIMEUP2をアサートする。
休止モード判定部460は、タイムアップ信号TIMEUP2のアサートを条件のひとつとして、休止モードに移行する。
図12は、休止モードへの移行を説明するタイムチャートである。カウンタ450は、駆動IC200Cに内蔵されるオシレータが生成する内部クロックCKSYSを利用して、フリーランしている。クロック信号CLKが停止すると、カウンタ450がリセットされずにカウントアップし続ける。時刻t1にカウント値がしきい値THに達すると、タイムアップ信号TIMEUP2がアサートされて、休止モードに移行する。
駆動IC200Cを用いることで、DCモータの停止を維持すべき状態において、駆動IC200Cの消費電力を低減できる。
休止モードでは、カウンタ450を停止することができる。カウンタ450をフリーランし続けると無駄な電力を消費するところ、一旦、休止モードに移行した後は、クロック信号CLKの無入力状態を測定する必要がないため、カウンタ450を停止させることで消費電力を低減できる。
休止モードの間、システムクロックCKSYSが使用されない場合、システムクロックCKSYSを生成するオシレータ(図2のオシレータ288)をさらに停止することができる。
また、DCモータの停止が持続した状態で、フィードバックコントローラ330や駆動信号生成部340を休止せずに、サーボをかけ続けると無駄な電力が消費する。そこで駆動IC200Cは、休止モードにおいて、DCモータへの通電を停止するとよい。この場合、フィードバックコントローラ330や駆動信号生成部340を停止することでさらに消費電力を低減できる。
なお、DCモータに外力が加わるようなアプリケーションでは、サーボを切った状態で外力が加わると、ロータが回転してしまい、位置指令値P_TGTが示す目標位置からずれる場合がある。この場合には、目標位置に戻すようにDCモータを駆動する必要がある。そこで、休止モード判定部460は、位置誤差値ERRを監視し、クロック信号CLKの無入力状態が所定時間持続したことに加えて、位置誤差値ERRがゼロであることを条件として、休止モードに移行してもよい。休止モードの間、トルクを発生する必要がない状況では、フィードバックコントローラ330や駆動信号生成部340をさらに停止することができる。
位置誤差値ERRがゼロである場合には、それ以上、DCモータを駆動する必要は無いため、カウンタに加えて、その他の不要な回路ブロックを停止することが可能となる。
一実施例においては、クロック信号CLKが無入力であり、かつ位置誤差値ERRがゼロの状態が所定時間持続した場合に、休止モードに移行してもよい。
一実施例においては、クロック信号CLKが無入力の状態が第1時間持続した後、位置誤差値ERRゼロである期間に、休止モードとなってもよい。
一実施例においては、クロック信号CLKが無入力の状態が第1時間持続し、その後、位置誤差値ERRがゼロの状態が第2時間持続すると、休止モードに移行してもよい。
一実施例において、休止モード判定部460は、位置誤差値ERRに加えて、またはそれに代えて、トルク指令値T_REFを監視してもよい。位置誤差値ERRのゼロが持続すると、やがてトルク指令値T_REFもゼロとなる。そこで、休止モード判定部460は、トルク指令値T_REFを監視し、クロック信号CLKの無入力状態が所定時間持続したことに加えて、トルク指令値T_REFがゼロであることを条件として、休止モードに移行して、フィードバックコントローラ330、駆動信号生成部340を停止してもよい。
一実施例においては、クロック信号CLKが無入力であり、かつトルク指令値T_REFがゼロの状態が所定時間持続した場合に、休止モードに移行し、フィードバックコントローラ330、駆動信号生成部340を停止する。
一実施例においては、クロック信号CLKが無入力の状態が第1時間持続した後、トルク指令値T_REFがゼロである期間中に、フィードバックコントローラ330、駆動信号生成部340を停止してもよい。
一実施例においては、クロック信号CLKが無入力の状態が第1時間持続し、その後、トルク指令値T_REFがゼロの状態が第2時間持続すると、フィードバックコントローラ330、駆動信号生成部340を停止してもよい。
一実施例において、トルク指令値T_REFと位置誤差値ERRの両方がゼロであることを条件として、休止モードに移行してもよい。
また休止モードの間、フィードバックコントローラ330、駆動信号生成部340に加えて、誤差検出器310を停止してもよい。これによりさらに消費電力を低減できる。
図11には図示しないが、駆動IC200Cは、クロック信号CLKの周波数(周期)にもとづいて速度指令値を検出する回路(図13の速度指令値生成部414)や、エンコーダからのパルス信号EN_A,EN_Bの周波数(周期)にもとづいて、現在のモータの回転速度を検出する回路(図13の速度検出値生成部424)が設けられる場合もある。この場合には、休止モード中、これらの検出回路を停止してもよい。
続いて、休止モードから通常モードへの復帰を説明する。
駆動IC200Cは、休止モードにおいて、クロック信号CLKの入力が検出されると直ちに通常のモードに復帰してもよい。
また駆動IC200Cは、位置誤差値ERRあるいはトルク指令値T_REFが非ゼロとなってことを条件として、直ちに通常のモードに復帰してもよい。
復帰に際しては、速度指令値とトルク指令値の少なくとも一方を、任意の値にリセット可能とすることが望ましい。これにより、復帰直後における回転速度やトルクを自由に決めることができ、DCモータを円滑に再始動させることができる。
(ショートブレーキ)
図13は、ショートブレーキ機能を備える駆動IC200Bの一部のブロック図である。駆動IC200Bは、誤差検出器310B、フィードバックコントローラ330、駆動信号生成部340に加えて、ブレーキコントローラ430を備える。誤差検出器310、フィードバックコントローラ330、駆動信号生成部340の主な機能、動作については、図4を参照してすでに説明した。
誤差検出器310Bは、第1検出回路410、第2検出回路420、減算器316を含む。第1検出回路410は、クロック信号CLKにもとづき、ロータの目標位置を示す位置指令値P_TGTと、ロータの目標回転数を示す速度指令値V_TGTと、を生成する。位置指令値P_TGTは、図4における位置指令値TGTに相当する。速度指令値V_TGTは、クロック信号CLKの周波数に比例し、言い換えればクロック信号CLKの周期に反比例する。
第2検出回路420は、エンコーダからのパルス信号EN_A,EN_Bにもとづき、ロータの現在位置を示す位置検出値P_FBと、ロータの現在の回転速度を示す速度検出値V_FBと、を生成する。位置検出値P_FBは、図4において単にフィードバック値FBとして示される。速度検出値V_FBは、パルス信号EN_A,EN_Bの周波数に比例し、言い換えればパルス信号EN_A,EN_Bの周期に反比例する。
位置指令値P_TGTおよび位置検出値P_FBは、減算器316に入力され、位置誤差値ERRが生成される。また位置指令値P_TGTおよび位置検出値P_FBは、速度指令値V_TGTおよび速度検出値V_FBとともに、ブレーキコントローラ430に供給される。
フィードバックコントローラ330は、位置検出値P_FBが位置指令値P_TGTに近づくように、すなわち位置誤差値ERRがゼロに近づくように、トルク指令値T_REFを生成する。トルク指令値T_REFは、図4における指令値REFに相当する。トルク指令値T_REFは、駆動信号生成部340に供給されるとともに、ブレーキコントローラ430にも供給される。
ブレーキコントローラ430は、位置検出値P_FB、位置指令値P_TGT、速度検出値V_FB、速度指令値V_TGT、トルク指令値T_REFにもとづいて、ブレーキ制御を行う。
具体的には、位置検出値P_FBが位置指令値P_TGTより大きく(すなわち位置超過)、速度検出値V_FBが速度指令値V_TGTより大きく(すなわち速度超過)、かつトルク指令値T_REFが負であるときに、ブレーキ信号BRAKEをアサート(たとえばハイレベル)し、駆動信号生成部340にショートブレーキをかけるように指示する。
ショートブレーキの条件がすべて成立しない場合、すなわちトルクが負であるが、位置超過が発生していない場合には、ドライバ106の出力をハイインピーダンスとする(空転制御)。
ブレーキをかける条件は以下の3つである。
(条件1) 位置超過 P_FB>P_TGT
(条件2) 速度超過 V_FB>V_TGT
(条件3) T_REF<0
なお、マージンを考慮して、条件を以下のように定めてもよい。
(条件1) 位置超過 P_FB>P_TGT+ΔP
(条件2) 速度超過 V_FB>V_TGT+ΔV
(条件3) T_REF<−ΔT
ΔP,ΔV,ΔTはマージンである。
図14は、ブレーキコントローラ430のブロック図である。ブレーキコントローラ430は、位置超過判定部432、速度超過判定部434、負トルク判定部436および論理ゲート438を含んでもよい。
位置超過判定部432は、条件1が満たされると、位置超過信号S1をアサート(たとえばハイ)する。速度超過判定部434は、条件2が満たされると、速度超過信号S2をアサートする。負トルク判定部436は、条件3が満たされると、負トルク判定信号S3をアサートする。論理ゲート438は、たとえばANDゲートであり、3つの条件が同時に成立すると、ブレーキ信号BRAKEをアサートする。
図15(a)、(b)は、ブレーキコントローラ430の動作を説明する図である。はじめに図15(a)を参照して位置超過を説明する。簡単のために初期状態において位置指令値P_TGT、位置検出値P_FBはともにゼロである。クロック信号CLKのポジエッジごとに、位置指令値P_TGTは増大する。またエンコーダからのパルス信号EN_A(EN_B)のパルスごとに、位置検出値P_FBは増大する。位置超過判定部432は、P_FB>P_TGTとなると、言い換えるとERR<0となると、速度超過検出信号S1をアサートする。位置超過の発生は、減算器316の出力である位置誤差値ERRにもとづいて検出してもよい。
図15(b)を参照して速度超過を説明する。速度指令値V_TGTは、クロック信号CLKの周波数fCKに比例し、クロック信号CLKの周期1/fCKに反比例する。同様に速度検出値V_FBは、エンコーダからのパルス信号EN_Aの周波数fFBに比例し、パルス信号EN_Aの周期1/fFBに反比例する。速度超過判定部434は、サイクルごとに対応する周波数fCKとfFB、言い換えれば周期1/fCK,1/fFBを比較し、fFB>fCKのとき、言い換えれば1/fFB<1/fCKのときに、速度超過信号S2をアサートする。
図13に戻る。ブレーキ信号BRAKEのアサートに応答して駆動信号生成部340は、U相、V相、W相のハイサイドトランジスタがすべてオンし、ローサイドトランジスタがすべてオフするように(あるいはその逆にローサイドトランジスタがすべてオン、ハイサイドトランジスタがすべてオフするように)、駆動信号SUH,SUL,SVH,SVL,SWH,SWLを遷移させる。
以上が駆動IC200Bの構成である。
モータ駆動システム100においては、上位コントローラからのクロック信号CLKの周波数の低下が減速指令を意味する。駆動IC200Bは、クロック信号CLKの周波数の低下を条件とするのではなく、上述の条件1〜3の成立を条件として、ブレーキをかける。これにより、DCモータを正確に減速させることができる。
なお、条件1〜3のすべてではなく条件1と3の成立、すなわち、位置超過とトルクが負であることを条件として、ブレーキをかけてもよい。この場合、速度指令値および速度検出値の生成回路を省略できる。
(PIコントローラ)
ステッピングモータを駆動するプラットフォームにおいては、停止したステッピングモータを回転させる際に、モータの回転数の指令値に相当するクロック信号CLKの周波数をいきなり高い周波数とすると、脱調するおそれがある。
そこで多くのプラットフォームでは、ステッピングモータの回転開始時に、クロック信号CLKの周波数を時間とともに緩やかに上昇させる場合が多い。反対に、定速回転するステッピングモータを停止させる際には、クロック信号CLKの周波数(以下、クロック周波数fCKという)を時間とともに緩やかに低下させる場合が多い。したがってクロック周波数fCKは、ステッピングモータの、停止、定速回転、停止の1サイクルにおいて、台形波あるいはそれに類する波形(以下、単に台形波と総称する)にしたがって変化する場合が多い。
本実施の形態のように、ステッピングモータをDCモータに置換したプラットフォームにおいても、上位コントローラ104からのクロック周波数fCKは、台形波状に変化することが想定される。図16は、クロック信号CLKの周波数fCKの波形図である。(i)〜(iii)は、定速時の回転数が異なることを示す。
上述のように、フィードバックコントローラ330は、PI制御器を含み、その制御特性は、比例ゲインKPと積分ゲインKIで規定される。実施の形態に係るフィードバックコントローラ330は、クロック周波数fCKに応じて制御特性(比例ゲイン、積分ゲインの少なくとも一方)を動的に変化させる。これにより、制御特性を固定した場合に比べて、モータの追従性を高めることができる。
フィードバックコントローラ330は、クロック周波数fCKと、制御特性(比例ゲイン、積分ゲイン)の関係を保持するテーブルをメモリに保持している。
より好ましくはDCモータの回転開始後、クロック周波数fCKの上昇中に、積分ゲインKIを一定とし、比例ゲインKPのみをクロック周波数fCKに応じて変化させるとよい。比例ゲインKPはクロック周波数fCKに対して、正の相関を有し、単調増加してもよい。
図17は、モータ駆動システム100の始動時のモータの回転数を示す図である。(i)は、制御特性を固定したときの波形を、(ii)は、比例ゲインKPのみを変化させたときの波形を、(iii)は、比例ゲインKP、積分ゲインKIの両方を変化させたときの波形を示す。(iv)はクロック周波数fCKにもとづく目標回転数である。f1,f2・・・・は、制御特性が切り替わるしきい値を示す。
(i)に示すように、制御特性を固定すると、回転数が目標回転数に到達するまでの時間が長くなる。一方で、(iii)に示すように、比例ゲインと積分ゲインの両方を、変化させると、積分ゲインKIを切りかえるタイミングにおいて、それまで蓄積されていた積分項が増大するため、回転数が振動する(回転ムラ)。そこで(ii)に示すように、積分ゲインを一定としつつ、比例ゲインのみを変化させることで、回転ムラを抑制しつつ、追従性を高めることができる。
ここでは、回転数を上昇させるときの動作を説明したが、回転数を低下させる際も同様であり、積分ゲインKIを一定としながら、比例ゲインKPをクロック周波数fCKに応じて変化させるとよい。
(電子ギア)
続いて、電子ギアについて説明する。上位コントローラ104のスペックによっては、クロック信号CLKの周波数fCKの可変範囲が制約される場合がある。たとえば、クロック周波数fCKの上限fMAXが低いと、その上限fMAXでDCモータの回転数が制約される。上限周波数fMAXで規定される回転数よりも高い回転数でモータを回転させたい場合、従来では機械ギアを用いる必要があり、コストアップの要因となっていた。この問題を解消するために、駆動IC200は、電子ギアの機能を備える。
図18は、電子ギアの機能を説明する図である。上述のように、位置指令値生成部312においては、クロック信号CLKのエッジの個数が積算される。図6(a)〜(c)では、クロック信号CLKのエッジ1個あたりにつき、ターゲット値TGTが1ずつ、インクリメント、あるいはデクリメントされた。
これに対して、電子ギアを備えるロジック回路300Aでは、クロック信号CLKのエッジ1個たりにつきインクリメント/デクリメントする変化量ΔTGTが外部から設定可能である。図18では、ΔTGT=1,2,4の3段階で切りかえたときの動作を示す。
変化量ΔTGTに応じて、クロック信号CLK1パルス当たりの、ロータの回転角を制御することができる。したがって変化量ΔTGTは、電子的なギア比に相当する。電子ギアの機能を実装することで、機械ギアを減らし、あるいは無くすことができるため、装置の低コスト化、小型化が可能であり、また装置の構造が簡素化できるため、故障のリスクを減らすことができる。
図19は、電子ギアの機能を備える駆動IC200Aのブロック図である。駆動IC200Aには、電子ギアの設定のための設定ピンMODEが設けられ、この設定ピンMODEの状態に応じて、変化量ΔTGTが選択される。たとえば設定ピンMODEには、抵抗が外付け可能であり、設定ピンMODEには、抵抗の有無あるいは抵抗の抵抗値に応じた電圧VMODEが発生する。コンパレータCMP1あるいはA/Dコンバータ(不図示)によってこのモード電圧VMODEが検出され、モード電圧VMODEに応じた変化量ΔTGTが選択される。
より詳しくは、電子ギアの機能は、位置指令値生成部312に実装することができる。電子ギアの機能の実装について、図6(a)〜(c)を参照して説明する。たとえば図6(a)の位置指令値生成部312においては、カウンタ322のインクリメント、デクリメント量を、設定ピンMODEの状態に応じて変化させればよい。
図6(b)の位置指令値生成部312においては、演算器324の入力Aに与える値を、設定ピンMODEの状態に応じて、1,2,4…と多値で切りかえ可能とすればよい。
図6(c)の位置指令値生成部312においては、セレクタ327に入力する正負の2値を、設定ピンMODEの状態に応じて1倍、2倍、4倍・・・と切りかえ可能に構成すればよい。
なお、ギア比に相当する変化量ΔTGTの設定方法は、設定ピンMODEを利用したものに限定されず、I2C(Inter IC)インタフェースや、SPI(Serial Peripheral Interface)などを利用して、レジスタに設定値を書き込むようにしてもよい。
なお、ΔTGTの値は、1,2,4・・・には限定されず、任意の整数であってもよい。あるいは、ΔTGTは、1/2,1/4,1/8・・・、あるいは任意の分数であってもよい。ΔTGT<1とすることで、減速制御が可能となる。
図20は、電子ギアの機能を備える駆動IC200Bのブロック図である。駆動IC200Bでは、ターゲット値TGTの変化量は一定であり、EN_A,EN_Bのパルス当たりのフィードバック値FBの変化量ΔFBが変更可能となっている。ΔFBは、整数あるいは非整数の任意の値に決めることができる。EN_A(EN_B信号)の1パルス当たりのΔFBを大きくすると、回転数は遅くできる。反対にEN_A(EN_B信号)の1パルス当たりのΔFBを小さくすると、回転数を速めることができる。ギア比選択部360は図19のコンパレータCMP1(あるいはA/Dコンバータ)に相当するブロックであり、設定ピンMODEの状態に応じてΔFBを選択する。
(用途)
図21は、モータ駆動システム100を備える電子機器を示す図である。図21には、電子機器900の一例として、プリンタを示す。電子機器900は、複数のDCモータ902、904を備える。たとえばDCモータ902は、プリントヘッド910の駆動機構912に用いられる。DCモータ904は、用紙送りの駆動機構914に用いられる。
なおモータ駆動システム100の用途はプリンタには限定されず、さまざまなOA機器、産業機器、産業機械に用いることができる。
以上、本発明について、実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、こうした変形例について説明する。
(変形例1)
実施の形態では、ホールセンサを用いたモータ駆動を説明したが、センサレスであってもよい。この場合、駆動IC200に、逆起電力を検出するコンパレータを実装すればよい。
(変形例2)
実施の形態では、ドライバ106のハイサイドトランジスタのゲート駆動電圧を得るためにチャージポンプを利用したが、ブートストラップ回路を内蔵してもよい。なおドライバ106のハイサイドトランジスタは、Pチャンネルであってもよく、この場合チャージポンプは不要である。
(変形例3)
実施の形態では、ドライバ106が駆動IC200に外付けされたが、ドライバ106を駆動IC200に集積化してもよい。反対に、実施の形態では、プリドライバ250が駆動IC200に集積化されたが、プリドライバ250を駆動IC200の外部に設けてもよく、たとえばドライバ106とプリドライバ250を集積化してもよい。
(変形例4)
実施の形態では、駆動ICをロジック回路で実装したが、その限りでなく、ロジック回路300で示されるブロックを、プロセッサ(CPUやマイコン)とソフトウェアプログラムの組み合わせで構成してもよい。