以下に、本発明の好適な実施形態について、実施例を挙げて図面を参照しながら詳細に説明する。なお、本発明は、以下で説明する実施例に何ら限定されるものではなく、本発明と実質的に同一な構成を有し、かつ、同様な作用効果を奏しさえすれば、多様な変更が可能である。
例えば、以下の実施例1〜3では、ドライバに5つの出力端子が設けられている場合について説明するが、本発明においてドライバに設けられる出力端子の数は5つに限定されるものではなく、任意に変更することが可能であるが、少なくとも5つの出力端子がドライバに設けられることが好ましい。また、出力端子の数が変更される場合、ドライバに設けられる後述のスイッチング素子、ゲートドライバ、及び電流検出部の数、並びに、後述のFPGAに設けられるアドレスカウンタ、電流基準値レジスタ、電流検出値レジスタ、及びPWM処理部の数も、出力端子の数に対応してそれぞれ変更される。
図1は、ドライバの内部構成を示すブロック図である。図2は、5相ステッピングモータのコイルと、各コイルに流すモータ電流の方向とを定義する模式図であり、図3は、5相ステッピングモータのコイルにモータ電流が流れたときに各コイルが生成するトルクベクトルの関係を定義する模式図である。図4は、5相ステッピングモータに対して各出力端子から出力する電流の電気角一周分の比率を示す模式図であり、図6は、基本角位置において各出力端子から出力する電流の比率(正弦波の位相差)を示す図である。
図1に示すモータ駆動装置(ドライバ)10は、ステッピングモータ1に接続され、コントローラ等の図示しない外部機器からの外部指令パルスが入力されることにより、ステッピングモータ1をステップ駆動させる。本実施例1では、図1のドライバ10が、ペンダゴン結線方式のHB型5相ステッピングモータ1に接続されている場合について説明する。
ここで、ペンタゴン結線方式を採用した5相ステッピングモータ1に関して、図2に示すように、ステッピングモータ1に配される5つのコイル(励磁コイル)を、第1コイル1a,第2コイル1b,第3コイル1c,第4コイル1d,第5コイル1eとそれぞれ定義する。また、第1コイル1a〜第5コイル1eのそれぞれに流れるモータ電流を、それぞれモータ電流A,a;モータ電流B,b;モータ電流C,c;モータ電流D,d;モータ電流E,eで表す。また、第1コイル1a〜第5コイル1eに接続されるドライバ10の後述する第1出力端子11a〜第5出力端子11eの位置も図2に示すように設定される。
この場合、モータ電流A,B,C,D,Eと、モータ電流a,b,c,d,eとは、互いに対応するアルファベットについて、第1コイル1a〜第5コイル1eのそれぞれにおいて反対の向きに流れる電流を示す。また、例えば第1コイル1aにモータ電流Aを流したときを励磁コイル(励磁相)Aと表し、反対向きのモータ電流aを流したときを励磁コイル(励磁相)aと表す。第2コイル1b〜第5コイル1eについても、第1コイル1aの場合と同様とする。
更に、図3に示すように、5相ステッピングモータ1の第1コイル1a〜第5コイル1eに、モータ電流A,a;B,b;C,c;D,d;E,eがそれぞれ流れたときに生成されるトルクベクトルを、モータ電流の各アルファベットに対応させて、それぞれトルクベクトルVA,Va;VB,Vb;VC,Vc;VD,Vd;VE,Veと定義する。すなわち、第1コイル1aにモータ電流Aが流れたときに生じるトルクベクトルVAと、モータ電流aが流れたときに生じるトルクベクトルVaとは、互いに逆方向のベクトルとなる。
図1のドライバ10には、外部指令パルスとして、CWP(Clock Wise Pulse)方向の指令パルス又はCCWP(Counter Clock Wise Pulse)方向の指令パルスが図示しない外部機器から入力される。ここで、CWP方向の指令パルスは、ステッピングモータ1のモータ回転軸(ロータ)を時計回りに正転させるための指令パルスであり、CCWP方向の指令パルスは反時計回りに逆転させるための指令パルスである。
また、ドライバ10には、図示しない分解能セレクトスイッチと相数セレクトスイッチとが設けられており、分解能セレクトスイッチの位置によって、ステッピングモータ1をマイクロステップ駆動させるときの分解能(フルステップ角の分割数)を決定する分解能指令が、後述するFPGA40に入力される。また、相数セレクトスイッチの位置によって、複数の出力端子11の中から、ステッピングモータ1に電流を出力する出力端子11を決定する指令がFPGA40に入力される。
図1のドライバ10は、ステッピングモータ1に接続される5つの出力端子11と、各スイッチング素子21のON/OFFにより各出力端子11に所望の電流を流すことが可能な出力段20と、出力段20に後述するPWM制御信号を出力するFPGA40と、外部指令パルス(CWP方向の指令パルス及びCCWP方向の指令パルス)を受け付けてFPGA40に入力するフォトカプラインターフェイス回路15と、出力端子11ごとに配されるとともに各出力端子11の電流を検出する5つの電流検出部(電流検出回路)30とを有する。また、ドライバ10には電圧が入力され、この入力電圧は、ステッピングモータ1に印加するモータ駆動電圧DVと、FPGA40の電源(3.3V)及び電流検出部30の電源(5V)とを含むコントロール電源とに用いられる。また、コントロール電源は、フォトカプラインターフェイス回路15にも使われる。
このドライバ10は、出力端子11として、第1出力端子11a〜第5出力端子11eを有しており、本実施例1では、第1出力端子11a〜第5出力端子11eの全てが、5相ステッピングモータ1の5つのコイル1a〜1eに接続されるとともに、相数セレクトスイッチでの5相の選択により、第1出力端子11a〜第5出力端子11eから、それぞれ制御された電流を出力可能に設定されている。
ドライバ10の出力段20は、第1出力端子11a〜第5出力端子11eごとに2つ一組で配されるスイッチング素子(パワーMOS FET)21と、一組のスイッチング素子21を駆動するゲートドライバ22とを備えている。スイッチング素子21は、出力端子11ごとに、電源側に接続される上側(ハイサイド)のスイッチング素子21と、接地側に接続される下側(ローサイド)のスイッチング素子21とを有する。
出力段20のゲートドライバ22は、FPGA40と一組のスイッチング素子21とを接続しており、一組のスイッチング素子21は、ゲートドライバ22を介して、FPGA40から出力されるPWM制御信号に基づいて、そのON/OFFが切り換えられる。この出力段20では、上側のスイッチング素子21をONにすることにより、その出力端子11からステッピングモータ1に電流が流れ、下側のスイッチング素子21をONにすることにより、ステッピングモータ1から出力端子11に電流を戻すことができる。
また本実施形態において、第1出力端子11a〜第5出力端子11eごとに配される一組のスイッチング素子21は、一方のスイッチング素子21(例えば上側のスイッチング素子21)をONにした場合には他方のスイッチング素子21(例えば下側のスイッチング素子21)をOFFにし、他方のスイッチング素子21をONにした場合には一方のスイッチング素子21をOFFにするように制御される。このため、各出力端子11a〜11eにそれぞれ配される一組のスイッチング素子21の両方を同時にONにすることも、OFFにすることもない。
電流検出部30は、第1出力端子11a〜第5出力端子11eのそれぞれに設けられており、各出力端子11の電流を単位周期毎に検出可能に形成されている。各電流検出部30は、下側(ローサイド)のスイッチング素子21のソースに設けられたセンシング抵抗(シャント抵抗)31と、センシング抵抗31を介して検出されるアナログ電圧を増幅して出力する差動増幅回路32とを有しており、各出力端子11で下側のスイッチング素子21がONの状態のときの下側のスイッチング素子21に流れる電流を検出する。各電流検出部30の出力(アナログ電圧)は、A/Dコンバータ33によってデジタル変換されて、A/Dコンバータ33からシリアル通信によってFPGA40に入力される。なお、A/Dコンバータ33とFPGA40との間の通信方式には、シリアル通信ではなく、パラレル通信を用いることも可能である。
FPGA40は、周期タイミングブロック50と、アドレスブロック60と、電流基準データブロック70と、電流検出データブロック80と、PWM出力ブロック90とを有する。
周期タイミングブロック50は、一定の時間の単位周期を管理するサイクルカウンタ51を有しており、各ブロック間のデータ処理のタイミングや、各ブロック内のデータ処理のタイミングは、サイクルカウンタ51における単位周期のカウンタ値によって定められる。また、FPGA40には、時間軸に沿って左右対称的な三角形状の三角波をサイクルカウンタ51の単位周期で生成する三角波発生回路(三角波発生部)41が設けられている。この三角波発生回路41で生成される三角波は、PWM出力ブロック90に出力される。この場合、サイクルカウンタ51で管理される単位周期は、PWMサイクルと呼ばれることもある。
FPGA40のアドレスブロック60は、第1出力端子11a〜第5出力端子11eに対応して設けられる第1アドレスカウンタ61a〜第5アドレスカウンタ61eを有しており、本実施例1の場合は、相数セレクトスイッチにて上述のように5相に選択されているため、第1アドレスカウンタ61a〜第5アドレスカウンタ61eの全てが使用される。また、アドレスブロック60の第1アドレスカウンタ61a〜第5アドレスカウンタ61eは、それぞれ電気角位置(ステップ位置)に対応するアドレスを管理しており、管理されるアドレスの数は、マイクロステップの分解能に応じて設定される。
例えば本実施例1の場合、5相ステッピングモータ1における電気角一周(360°)は、機械角(モータ回転軸の回転角)の7.2°に相当し、電気角一周を50回繰り返すことにより、機械角を1周(モータ回転軸の1回転)させることができる。
また、CWP方向の指令パルスが入力される場合、5相ステッピングモータ1で単位周期毎に励磁されるコイル(励磁相)は、例えば図6に示すように、励磁相ABCD(0°の電気角位置)→BCDE(36°の電気角位置)→CDEa(72°の電気角位置)→DEab(108°の電気角位置)→Eabc(144°の電気角位置)→abcd(180°の電気角位置)→bcde(216°の電気角位置)→cdeA(252°の電気角位置)→deAB(288°の電気角位置)→eABC(324°の電気角位置)の順序で10回切り換えて変更される。これによって、5相ステッピングモータ1のモータ回転軸を機械角で0.72°(電気角で36°)ずつ10回ステップ駆動(歩進)させて、電気角一周となる7.2°の機械角を回転(正転)させる。
この場合、機械角の0.72°(=電気角の36°)が基本角ステップ(フルステップとも言う)となり、基本角ステップの10回の歩進を50回繰り返すことにより(基本角ステップの10回×50)、上述のようにモータ回転子を機械角で360°、すなわち機械角で1回転させることができる。なお、CCWP方向の指令パルスが入力されるときは、5相ステッピングモータ1の励磁コイルが上記とは逆方向の順序で変更され、それによって、モータ回転子を逆転させることができる。
また本実施例1では、ステッピングモータ1における基本角ステップの分解能が、後述するように基本角ステップの角度(機械角の0.72°=電気角の36°)を100分割する「1/100」に設定される。この場合、第1アドレスカウンタ61a〜第5アドレスカウンタ61eで管理されるアドレス(基数)の数は、電気角一周分となる「000」〜「999」の1000個(5相ステッピングモータ1の基本角ステップ10回分×マイクロステップ分割数100)に設定される。
すなわち、5相ステッピングモータ1の場合、CWP方向の指令パルスが1000回入力されることにより、モータ回転軸を、電気角一周の7.2°回転させることができ、更に、CWP方向の指令パルスが50000回(電気角一周×50回)入力されることにより、モータ回転軸を、機械角で360°(1回転)回転させることができる。なお、本実施例1のドライバ10において、基本角ステップの分解能は、上述した分解能セレクトスイッチを切り換えることにより、ユーザーが所定の範囲で任意に設定することが可能であり、その設定された分解能に基づいて、第1アドレスカウンタ61a〜第5アドレスカウンタ61eにおいてアドレス(基数)の数がそれぞれ設定される。
このアドレスブロック60では、ドライバ10の電源が入れられたときにイニシャライズ処理として、FPGA40が相数セレクトスイッチの選択位置を読み取ることによって、相数セレクトスイッチで選択されたステッピングモータ1の相数に対する出力端子11の数に応じたギャップを、第1アドレスカウンタ61a〜第5アドレスカウンタ61e間に設け、その上で、第1アドレスカウンタ61a〜第5アドレスカウンタ61eが各アドレスの管理を行う。
例えば本実施例1の場合、ステッピングモータ1の相数は「5」であるため、第1アドレスカウンタ61a〜第5アドレスカウンタ61e間において、各アドレスカウンタ61a〜61eが管理する「1000」のアドレス数を出力端子11の数である「5」で除した「200」のギャップが、第1アドレスカウンタ61aと第2アドレスカウンタ61bの間、第2アドレスカウンタ61bと第3アドレスカウンタ61cの間、第3アドレスカウンタ61cと第4アドレスカウンタ61dの間、第4アドレスカウンタ61dと第5アドレスカウンタ61eの間、及び第5アドレスカウンタ61eと第1アドレスカウンタ61aの間にそれぞれ設けられた上で、第1アドレスカウンタ61a〜第5アドレスカウンタ61eがそれぞれアドレスの管理を行う。このため、例えば第1アドレスカウンタ61aのアドレスの数値が「000」の場合、第2アドレスカウンタ61b〜第5アドレスカウンタ61eのアドレスの数値は、それぞれ「200」、「400」、「600」、「800」となり、互いに「200」のギャップずつずらされたものとなる。
更に、第1アドレスカウンタ61a〜第5アドレスカウンタ61eは、CWP方向の指令パルスが入力される毎に、それぞれが管理するアドレスの数値をインクリメントし、また、CCWP方向の指令パルスが入力される毎に、それぞれが管理するアドレスの数値をデクリメントする。また、アドレスブロック60では、第1アドレスカウンタ61a〜第5アドレスカウンタ61eのそれぞれで管理されているアドレスの数値が、サイクルカウンタ51が指定するタイミングで、すなわち、サイクルカウンタ51で管理されている単位周期(PWMサイクル)毎に、電流基準データブロック70により読み出される。
電流基準データブロック70は、アドレスブロック60で管理されているアドレスを格納するアドレスレジスタ71と、電流基準値のデータが予め格納されているROM72と、アドレスレジスタ71に取り込まれたアドレスが示す電流基準値のデータをROM72から読み出して格納する第1電流基準値レジスタ73a〜第5電流基準値レジスタ73eとを有する。
この電流基準データブロック70では、アドレスブロック60の第1アドレスカウンタ61a〜第5アドレスカウンタ61eで管理されているそれぞれのアドレスを、サイクルカウンタ51の単位周期毎に同時に取り込んで、アドレスレジスタ71に格納する。
電流基準データブロック70のROM72には、単位電流値を「i」とし、電気角を「θ」としたときに「i×sinθ」で表される電流基準値のデータが、アドレスブロック60で管理されるアドレスの数値と関連付けが可能な形式で格納されている。この場合、単位電流値「i」は、ステッピングモータ1の定格電流値に応じて設定される。例えば電流を設定するダイアル(不図示)がドライバ10に設けられている場合、そのダイアルの位置によって、定格電流値に基づく大きさ(倍率)の単位電流値「i」が設定される。また、単位電流値「i」の倍率の変更により、後述する電流値のサインカーブにおける振幅を変えることができる。
このROM72には、第1出力端子11a〜第5出力端子11eのそれぞれから電流をsinカーブの一周分で出力可能なデータが、言い換えると、「i×sinθ」表される電流基準値の電気角一周分(θが0°≦θ<360°の範囲)に相当するデータが格納されている。この場合、ROM72には、0°≦θ<360°の範囲の少なくとも1/4の範囲(例えば0°≦θ<90°の範囲)における電流基準値のデータが格納されていれば、電気角一周分に相当する電流基準値のデータをROM72から読み出すことが可能である。
電流基準データブロック70の第1電流基準値レジスタ73a〜第5電流基準値レジスタ73eは、それぞれ第1出力端子11a〜第5出力端子11eに対応して設けられている。この電流基準データブロック70では、FPGA40が相数セレクトスイッチの選択位置を読み取ることによって、第1電流基準値レジスタ73a〜第5電流基準値レジスタ73eにおけるどの電流基準値レジスタを使用するかが選択される。本実施例1の場合、第1電流基準値レジスタ73a〜第5電流基準値レジスタ73eの5つの使用が選択される。
電流基準データブロック70では、アドレスレジスタ71に保持されている第1アドレスカウンタ61a〜第5アドレスカウンタ61eのそれぞれのアドレスが示す電流基準値のデータ「i×sinθ」をROM72からそれぞれ読み出して、その読み出した各電流基準値のデータを、対応する第1電流基準値レジスタ73a〜第5電流基準値レジスタ73eにそれぞれ同時にセットする。また、第1電流基準値レジスタ73a〜第5電流基準値レジスタ73eにセットされる各電流基準値のデータは、サイクルカウンタ51で管理されている単位周期(PWMサイクル)毎に更新される。
この場合、第1電流基準値レジスタ73a〜第5電流基準値レジスタ73eに同時にセットされる各電流基準値のデータには、第1アドレスカウンタ61a〜第5アドレスカウンタ61e間に設けたアドレスのギャップ(すなわち、「200」分のギャップ)に対応した正弦波の位相差が、第1電流基準値レジスタ73aと第2電流基準値レジスタ73bの間、第2電流基準値レジスタ73bと第3電流基準値レジスタ73cの間、第3電流基準値レジスタ73cと第4電流基準値レジスタ73dの間、第4電流基準値レジスタ73dと第5電流基準値レジスタ73eの間、及び第5電流基準値レジスタ73eと第1電流基準値レジスタ73aの間にそれぞれ設けられている。
FPGA40の電流検出データブロック80は、第1出力端子11a〜第5出力端子11eに対応する第1電流検出値レジスタ81a〜第5電流検出値レジスタ81eと、A/Dコンバータ33からの入力を受け付けるA/Dコンバータインターフェイス回路82とを有する。
この電流検出データブロック80では、電流検出部30で検出された第1出力端子11a〜第5出力端子11eの各電流検出値(電流検出部30の出力)が、A/Dコンバータ33によってA/D変換されて入力されるため、その入力された第1出力端子11a〜第5出力端子11eの各電流検出値を、対応する第1電流検出値レジスタ81a〜第5電流検出値レジスタ81eにそれぞれ格納する。この場合、第1電流検出値レジスタ81a〜第5電流検出値レジスタ81eに格納される各電流検出値のデータは、サイクルカウンタ51で管理されている単位周期毎に更新される。
FPGA40のPWM出力ブロック90は、第1出力端子11a〜第5出力端子11eに対応する第1PWM処理部91a〜第5PWM処理部91eを有する。第1PWM処理部91a〜第5PWM処理部91eでは、それぞれ個別に且つ並列的に処理が行われており、各PWM処理部91a〜91eにおいて、第1電流基準値レジスタ73a〜第5電流基準値レジスタ73eにそれぞれ格納されている電流基準値と、第1電流検出値レジスタ81a〜第5電流検出値レジスタ81eにそれぞれ格納されている電流検出値とを対応させて単位周期(PWMサイクル)毎に比較し、両者の誤差を演算(減算)する。
また、第1PWM処理部91a〜第5PWM処理部91eのそれぞれには、2点移動平均フィルタ92が設けられており、この2点移動平均フィルタ92で移動平均処理を行うことによって電流基準値と電流検出値との2点平均誤差を演算し、更に、当該単位周期における2点平均誤差と、1つ前の2点平均誤差との差分を計算した上で、電流基準値と電流検出値との誤差と、2点平均誤差の差分との和を演算する。
具体的に説明すると、例えば、当該単位周期での電流基準値と電流検出値との誤差を「e1(t)」とし、1つ前の単位周期での電流基準値と電流検出値との誤差を「e1(t−1)」とし、2つ前の単位周期での電流基準値と電流検出値との誤差を「e1(t−2)」とした場合、第1PWM処理部91a〜第5PWM処理部91eは、単位周期(PWMサイクル)毎に、対応する電流基準値と電流検出値との誤差e1(t−2),e1(t−1),e1(t)を演算する。
また、第1PWM処理部91a〜第5PWM処理部91eは、それぞれの2点移動平均フィルタ92で移動平均処理を行うことにより、当該単位周期における2点平均誤差として、「{e1(t)+e1(t−1)}/2」を演算する。更に、第1PWM処理部91a〜第5PWM処理部91eの各差分演算回路93において、2点移動平均フィルタ92で演算した当該単位周期における2点平均誤差「{e1(t)+e1(t−1)}/2」と、1つ前の単位周期の際に移動平均フィルタで演算した2点平均誤差「{e1(t−1)+e1(t−2)}/2」との差分を演算する。この場合、上述の差分は、{e1(t)+e1(t−1)}/2−{e1(t−1)+e1(t−2)}/2={e1(t)−e1(t−2)}/2、となる。
更に、第1PWM処理部91a〜第5PWM処理部91eは、各差分演算回路93で演算した2点平均誤差の差分「{e1(t)−e1(t−2)}/2」の演算結果を増幅回路94で増幅し、その増幅した2点平均誤差の差分と、当該単位周期での電流基準値と電流検出値との誤差「e1(t)」との和を演算し、その上で、その演算された和と、三角波発生回路41で生成されて第1PWM処理部91a〜第5PWM処理部91eに入力された三角波とを、それぞれのPWM回路95で比較する。このように2点平均誤差の差分を利用することにより、第1コイル1a〜第5コイル1eのインダクタンス成分による誤差の影響を小さくしている。
そして、PWM回路95では、例えば図5にPWM回路における比較とスイッチング素子のON/OFFに関する概念図を示すように、上記比較の結果、当該単位周期での誤差と2点平均誤差の差分との和<三角波の関係が成立する場合には、第1出力端子11a〜第5出力端子11eに対応して配される一組のスイッチング素子21のうちの上側(ハイサイド)のスイッチング素子21をONにする(言い換えると、下側(ローサイド)のスイッチング素子21をOFFにする)PWM制御信号を、対応する第1出力端子11a〜第5出力端子11eのそれぞれについて生成する。
一方、当該単位周期での誤差と2点平均誤差の差分との和≧三角波の関係が成立する場合には、第1出力端子11a〜第5出力端子11eに対応して配される一組のスイッチング素子21のうちの下側のスイッチング素子21をONにする(言い換えると、上側のスイッチング素子21をOFFにする)PWM制御信号を、対応する第1出力端子11a〜第5出力端子11eのそれぞれについて生成する。そして、第1PWM処理部91a〜第5PWM処理部91eの各PWM回路95が生成したPWM制御信号を、出力段20に対して単位周期ごとに同時に出力する。
これにより、出力段20では、第1PWM処理部91a〜第5PWM処理部91eからの各PWM制御信号に従って、各スイッチング素子21のON/OFFを制御する。この場合、例えば電流基準値と電流検出値に基づいて演算される「誤差と誤差の差分との和」が小さくなると、図5に示したような比較において「誤差と誤差の差分との和」の位置が三角波の位置に対して下降し、それによって、上側のスイッチング素子21をONにする時間が相対的に長くなる(ON幅が広がる)。一方、「誤差と誤差の差分との和」が大きくなると、図5のような比較において「誤差と誤差の差分との和」の位置が三角波の位置に対して上昇し、それによって、上側のスイッチング素子21をONにする時間が相対的に短くなる(ON幅が狭くなる)。その結果、第1出力端子11a〜第5出力端子11eに流れる電流の向きをPWM制御信号に従ったタイミングで個別に変えることができるため、第1出力端子11a〜第5出力端子11eのそれぞれでは、単位周期毎に正弦波の位相差(サインカーブにおける72°の位相差)に相当する比率の電流値で電流を流すことができる。
特にこの場合、第1出力端子11a〜第5出力端子11eのそれぞれに対しては、他の出力端子11a〜11eとの関係に影響されることなく、電流基準値のデータと電流検出値のデータとの誤差に基づいてPWM制御を行うことができ、それによって、各出力端子11a〜11eに流す電流に、正弦波の位相差(72°の位相差)を安定して設けることができる。
従って、第1出力端子11a〜第5出力端子11eが接続されたステッピングモータ1の第1コイル1a〜第5コイル1eには、正弦波の位相差が互いに設けられた電流が第1出力端子11a〜第5出力端子11eに流れることによって生成される電流を、それぞれ流すことができる。すなわち、ステッピングモータ1の第1コイル1a〜第5コイル1eには、各コイル1a〜1eの両端部に接続された出力端子11に流れるそれぞれの電流が差し引きされることにより生成されるモータ電流を(言い換えると、第1出力端子11a〜第5出力端子11eのそれぞれに流れる電流の向き及びその電流を流す時間に従って生成されるモータ電流を)所定のタイミングで流すことができ、それによって、第1コイル1a〜第5コイル1eが適宜励磁されて所要のトルクを発生させることができる。
また本実施例1において、コイル1a〜1eの両端に接続された2つの出力端子11に対して、上記位相差に基づいて同じ大きさの電流が流れる場合(例えば図7における第2出力端子11bと第3出力端子11cの場合、又は図8における第4出力端子11dと第5出力端子11eの場合)は、各出力端子11に対応して配される一組のスイッチング素子21のON/OFF状態が同じになるため、そのコイルには電流が流れず、その結果、コイルが非励磁状態に保持される。なお、本発明において、第1PWM処理部91a〜第5PWM処理部91eに設けるフィルタは、2点移動平均フィルタ92に限定されるものではなく、その他のフィルタに変更することも可能である。
次に、上述した図1のドライバ10を用いて、5相ステッピングモータ1をステップ駆動する方法について説明する。
先ず、ドライバ10の電源が入れられると、イニシャライズ処理として、ドライバ10に設けた図示しない相数セレクトスイッチの選択位置と、図示しない分解能セレクトスイッチの選択位置とを、FPGA40が読み取る。本実施例1の場合、相数セレクトスイッチで「5相」が選択されているとともに、分解能セレクトスイッチで、基本角ステップの分解能として「1/100」が選択されている。
このため、FPGA40は、これらの信号を読み取って、初期設定として、アドレスブロック60における第1アドレスカウンタ61a〜第5アドレスカウンタ61eの5つのアドレスカウンタを使用する設定を行う。また、第1アドレスカウンタ61a〜第5アドレスカウンタ61eで管理するアドレス数として、「000」〜「999」の1000個(5相ステッピングモータ1の基本角ステップ10回分×マイクロステップ分割数100)を設定するとともに、第1アドレスカウンタ61a〜第5アドレスカウンタ61eに、出力端子11の個数に応じた上述したギャップ「200」が設けられたアドレス(基数)の数値を設定する。例えば第1アドレスカウンタ61a〜第5アドレスカウンタ61eのアドレスには、上述したように、それぞれ「000」、「200」、「400」、「600」、「800」の数値を設定する。
FPGA40の初期設定終了後、図示しない外部機器からCWP方向又はCCWP方向の指令パルスが入力されることにより、アドレスブロック60の第1アドレスカウンタ61a〜第5アドレスカウンタ61eは、それぞれが管理するアドレスの数値を、指令パルスの入力毎にインクリメント又はデクリメントする。この場合、第1アドレスカウンタ61a〜第5アドレスカウンタ61eは、アドレスのインクリメント又はデクリメントを並列して同時に行うため、第1アドレスカウンタ61a〜第5アドレスカウンタ61e間に設けた「200」のギャップは維持される。
またFPGA40は、外部機器からの指令パルスを受け付けながら、サイクルカウンタ51で一定の単位周期(PWMサイクル)を管理するとともに、その単位周期を、三角波発生回路41、電流基準データブロック70、及び電流検出データブロック80に出力する。また、三角波発生回路41では、サイクルカウンタ51の単位周期毎に三角波を生成するとともに、生成した三角波をPWM出力ブロック90に出力する。
FPGA40の電流基準データブロック70では、サイクルカウンタ51から単位周期(PWMサイクル)が入力されるとともに、その単位周期ごとに、第1アドレスカウンタ61a〜第5アドレスカウンタ61eで管理されているそれぞれのアドレスを同時に取り込んで、アドレスレジスタ71に格納する。更に、電流基準データブロック70は、電流基準値のデータ「i×sinθ」(0°≦θ<360°)が予め格納されているROM72から、アドレスレジスタ71に保持されている第1アドレスカウンタ61a〜第5アドレスカウンタ61eの各アドレスに対応した電流基準値のデータをそれぞれ読み出して、その読み出した各電流基準値のデータを、対応する第1電流基準値レジスタ73a〜第5電流基準値レジスタ73eにそれぞれ同時にセットする。
このとき、第1電流基準値レジスタ73a〜第5電流基準値レジスタ73eに同時にセットされる各電流基準値のデータには、第1アドレスカウンタ61a〜第5アドレスカウンタ61e間に設けたアドレスのギャップに対応した正弦波の位相差(72°の位相差)が設けられている。
また、電流基準データブロック70において上述の処理が行われると同時に、FPGA40の電流検出データブロック80では、サイクルカウンタ51から単位周期(PWMサイクル)が入力される。更に、電流検出部30で検出されてA/Dコンバータ33を介して入力される第1出力端子11a〜第5出力端子11eの各電流検出値のデータを、第1電流検出値レジスタ81a〜第5電流検出値レジスタ81eに単位周期ごとに格納する(更新する)。
更に、FPGA40のPWM出力ブロック90は、第1電流基準値レジスタ73a〜第5電流基準値レジスタ73eに格納されている電流基準値と、第1電流検出値レジスタ81a〜第5電流検出値レジスタ81eに格納されている電流検出値とを、サイクルカウンタ51の単位周期(PWMサイクル)毎に読み出して、対応する値同士を比較する。
この場合、PWM出力ブロック90では、上述したように増幅した2点平均誤差の差分と、当該単位周期での電流基準値と電流検出値との誤差「e1(t)」との和を演算した上で、その演算された和と、三角波発生回路41で生成された三角波とを比較する(図5を参照)。更に、三角波との比較結果に基づいて、第1出力端子11a〜第5出力端子11eのそれぞれに対するPWM制御信号を、第1PWM処理部91a〜第5PWM処理部91eから単位周期ごとに出力段20に出力する。
これによって、出力段20は、FPGA40からのPWM制御信号に従って各出力端子11に配される一組のスイッチング素子21のON/OFFを切り換えるため、ドライバ10の第1出力端子11a〜第5出力端子11eでは、流れる方向及び大きさが制御された電流を所定のタイミングで流すことができる。この場合、第1出力端子11a〜第5出力端子11eにそれぞれ流れる電流の大きさ(電流値)は、電流基準値の「i×sinθ」の大きさに対応しており、例えば単位周期における上側のスイッチング素子21をONにする時間(ON幅)の長さを変えることにより制御される。また、第1出力端子11a〜第5出力端子11eの各電流値は、相互に正弦波の位相差に相当する比率を有する。
具体的に説明すると、例えば本実施例1の5相ステッピングモータ1において、例えばモータ回転軸を0°の電気角位置にステップ駆動させる場合には、図2に示したステッピングモータ1にモータ電流A,B,C,Dを単位周期内に流して、VA+VB+VC+VDのトルクベクトル(以下、このトルクベクトルを、トルクベクトルABCDとする)を発生させる。
このとき、本実施例1では、ドライバ10の制御によって、第1出力端子11a〜第5出力端子11eに流れる電流の大きさに、正弦波における72°(=360°/(出力端子11の使用する数「5」))の位相差を設けることができる(位相を72°でずらすことができる)。すなわち、図6及び図7に示したように、第1出力端子11aからは、5相ステッピングモータ1に向けて、i×sin162°(=+0.309×i)の大きさ(比率)の電流を流すとともに、第2出力端子11b、第3出力端子11c、第4出力端子11d及び第5出力端子11eからは、5相ステッピングモータ1に向けて、i×sin234°(=−0.809×i)、i×sin306°(=−0.809×i)、i×sin18°(=+0.309×i)、及びi×sin90°(=+1.000×i)の大きさ(比率)を備えた電流をそれぞれ流すことができる。なお、電流の大きさが−(マイナス)の場合は、5相ステッピングモータ1のコイルから出力端子11に電流が戻ることを表している。
上述のような位相差を設けて第1出力端子11a〜第5出力端子11eに電流を流すことにより、図7に示したように、ステッピングモータ1の第1コイル1aと第4コイル1dとには、第5出力端子11eから第4出力端子11dと第1出力端子11aとに向けて、モータ電流A及びモータ電流Dが流れる。この場合、第1コイル1aと第4コイル1dとには、計算上、比率が+0.500×iとなるモータ電流A及びモータ電流Dが流れる。
また、第2コイル1bには、第1出力端子11aから第2出力端子11bに向けてモータ電流Bが流れ、計算上、モータ電流Bの比率は、第5出力端子11eからの+0.500×iの比率の電流と第1出力端子11aからの+0.309×iの比率の電流とが合計された+0.809×iとなる。第3コイル1cには、第4出力端子11dから第3出力端子11cに向けてモータ電流Cが流れ、計算上、モータ電流Cの比率は、第5出力端子11eからの+0.500×iの比率の電流と第4出力端子11dからの+0.309×iの比率の電流とが合計された+0.809×iとなる。そして、第2コイル1b及び第3コイル1cに流れた電流は、第2出力端子11b及び第3出力端子11cに戻されるため(言い換えると、第2出力端子11b及び第3出力端子11cにおける正弦波の位相差に基づく電流の大きさが同じであるため)、第5コイル1eには電流が流れない。すなわち、モータ電流E=0となる。
これにより、5相ステッピングモータ1の第1コイル1a〜第4コイル1dを単位周期内で適切なタイミングで励磁して、トルクベクトルABCDを発生させることができるため、モータ回転軸を0°の電気角位置にステップ駆動させることができる。また、次のCWP方向又はCCWP方向の指令パルスがドライバ10に入力されるまでは、ドライバ10のFPGA40から出力段20に向けて同じPWM制御信号が単位周期毎に出力されるため、モータ回転軸を0°の電気角位置に保持できる。
更に、電気角位置が0°の状態から、CWP方向(又はCCWP方向)の指令パルスがドライバ10に入力されると、第1アドレスカウンタ61a〜第5アドレスカウンタ61eのアドレスがインクリメント(又はデクリメント)されるとともに、第1アドレスカウンタ61a〜第5アドレスカウンタ61eで管理されるアドレスに応じて、FPGA40が上述した処理と同様の処理を行う。それによって、第1PWM処理部91a〜第5PWM処理部91eから単位周期毎に出力段20に所定のPWM制御信号を出力して、出力段20の各スイッチング素子21のON/OFFを制御する。
その結果、例えば図6に基本角ステップにおける電流の比率を示すように、第1出力端子11a〜第5出力端子11eには、第1アドレスカウンタ61a〜第5アドレスカウンタ61eで管理されているアドレスの電気角位置に対応し、且つ、各出力端子11間で正弦波における72°の位相差(アドレスブロック60に設けたギャップに対応した位相差)が設けられた所定の比率の電流を流すことができる。
より具体的に説明すると、例えば電気角位置が0°の状態から、ドライバ10にCWP方向の指令パルスが100回入力されたときには、第1アドレスカウンタ61a〜第5アドレスカウンタ61eのアドレスは、それぞれ「100」、「300」、「500」、「700」、「900」にインクリメントされ、これらのアドレスに対応してFPGA40が所定の処理を行う。これによって、ステッピングモータ1のモータ回転軸を36°の電気角位置、すなわち、トルクベクトルBCDEを発生させる位置にステップ駆動させるPWM制御信号がFPGA40から出力段20に出力される。
その結果、ドライバ10の第1出力端子11a〜第5出力端子11eには、図6及び図8に示したように、i×sin198°(=−0.309×i)、i×sin270°(=−1.000×i)、i×sin342°(=−0.309×i)、i×sin54°(=+0.809×i)、及びi×sin126°(=+0.809×i)の大きさの電流をそれぞれ流すことができる。それによって、ステッピングモータ1の第1コイル1a〜第5コイル1eに対しては、計算上、図8に示した比率のモータ電流A〜モータ電流Eをそれぞれ流すことができる。このように第1出力端子11a〜第5出力端子11eに流す電流に位相差72°を設けることにより、5相ステッピングモータ1の第2コイル1b〜第5コイル1eを単位周期内で適切なタイミングで励磁して、トルクベクトルBCDE(VB+VC+VD+VE)を発生させることができ、それによって、モータ回転軸を36°の電気角位置にステップ駆動させることができる。
また本実施例1では分解能が「1/100」に設定されているため、例えば電気角位置が0°の状態から、ドライバ10に対してCWP方向の指令パルスが1回入力されてステッピングモータ1のマイクロステップ駆動を行う場合には、第1アドレスカウンタ61a〜第5アドレスカウンタ61eのアドレスは、それぞれ「001」、「201」、「401」、「601」、「801」にインクリメントされる。それとともに、これらのアドレスに対応してFPGA40が処理を行うことによって、電気角位置が0.36°(基本角ステップ36°の1/100の大きさ)となるように、ドライバ10のFPGA40から出力段20にPWM制御信号が出力される。それによって、第1出力端子11a〜第5出力端子11eには、各出力端子11間で正弦波における72°の位相差(アドレスブロック60に設けたギャップに対応した位相差)が設けられた所定の比率のモータ電流A,a;B,b;C,c;D,d;E,eを流すことができ、その結果、モータ回転軸をマイクロステップ駆動させることができる。
また本実施例1の場合、ドライバ10の制御によって第1出力端子11a〜第5出力端子11eのそれぞれから出力する電流について、電気角θが0°≦θ<360°の範囲における電流値の変動を見ると、例えば図4の右側に示すように、第1出力端子11a〜第5出力端子11eから出力する各電流は、ROM72に格納されている電気角一周分の電流基準値のデータに対応してそれぞれ正弦曲線を示すように制御されるとともに、各出力端子11間で互いに72°の位相差が設けられている。なお、第1出力端子11a〜第5出力端子11eから出力する各電流は、電気角一周で元の出力状態に戻る。
以上のように、図1に示した構成を有するドライバ10では、例えば前述の特許文献2及び特許文献3等の従来のドライバのような「励磁パターン」を用いてモータの駆動制御を行うのではなく、「正弦波の位相差」を利用してモータの駆動制御を行う。従って、図1のドライバ10に、本実施例1のように5相ステッピングモータ1が接続された場合、FPGA40にてドライバ10の5つの第1出力端子11a〜第5出力端子11eに関する処理を並列的に同時に行うことができ、それによって、ドライバ10の5つの第1出力端子11a〜第5出力端子11eから、5つの相に対応した正弦波の位相差(72°の位相差)がもたらす比率の電流を安定して出力できる。このため、ドライバ10に入力されるCWP方向及びCCWP方向の指令パルスに従って、5相ステッピングモータ1を円滑にステップ駆動させることができる。
図9は、3相ステッピングモータのコイルと、各コイルに流す電流の方向とを定義する模式図であり、図10は、3相ステッピングモータのコイルに電流が流れたときに各コイルが生成するトルクベクトルの関係を定義する模式図である。図11は、3相ステッピングモータに対して、ドライバの各出力端子から出力する電流の電気角一周分の比率を示す模式図であり、図12は、3相ステッピングモータの基本角位置で、ドライバの各出力端子から出力する電流の比率(正弦波の位相差)を示す図である。
本実施例2では、図1のドライバ10が、放射状に結線した3相ステッピングモータ2に接続されている場合について説明する。なお、本実施例2において、3相ステッピングモータ2に接続するドライバ10は、前述の実施例1で用いたドライバ10と同じものである。
ここで、3相ステッピングモータ2については、図9に示すように、ステッピングモータ2に配される3つのコイル(励磁コイル)を、第1コイル2a,第2コイル2b,及び第3コイル2cと定義する。また、第1コイル2a〜第3コイル2cに流れるモータ電流を、それぞれモータ電流A,a;モータ電流B,b;モータ電流C,cで表す。この場合、モータ電流A,B,Cと、モータ電流a,b,cとは、互いに対応するアルファベットについて、第1コイル2a〜第3コイル2cのそれぞれにおいて反対の向きに流れる電流を示す。また、第1コイル2a〜第3コイル2cに接続されるドライバ10の第1出力端子11a〜第3出力端子11cの位置も図9に示すように設定される。
更に、図10に示すように、3相ステッピングモータ2の第1コイル2a〜第3コイル2cに、モータ電流A,a;B,b;C,cがそれぞれ流れたときに生成されるトルクベクトルを、モータ電流の各アルファベットに対応させて、それぞれトルクベクトルVA,Va;VB,Vb;VC,Vcと定義する。すなわち、第1コイル2aにモータ電流Aが流れたときに生じるトルクベクトルVAと、モータ電流aが流れたときに生じるトルクベクトルVaとは、互いに逆方向のベクトルとなる。
本実施例2では、図1のドライバ10を用いて、3相ステッピングモータ2をステップ駆動する場合について説明する。なお、本実施例2では、ドライバ10における図示しない相数セレクトスイッチで、「3相」が予め選択されているとともに、図示しない分解能セレクトスイッチで、基本角ステップの分解能として「1/100」が予め選択されている場合について説明する。
またこの場合、ドライバ10は、第1出力端子11a〜第5出力端子11eのうちの第1出力端子11a〜第3出力端子11cが、図9に示すように3相ステッピングモータ2の3つの第1コイル2a〜第3コイル2cに接続されている。更に、相数セレクトスイッチにより3相が選択されているため、第1出力端子11a〜第3出力端子11cからそれぞれ電流を出力可能に設定されるとともに、第4出力端子11d及び第5出力端子11eは不使用に設定される。
また図1のドライバ10において、FPGA40のアドレスブロック60は、前述したように、第1アドレスカウンタ61a〜第5アドレスカウンタ61eを有するものの、相数セレクトスイッチの「3相」の選択により、アドレスブロック60では第1アドレスカウンタ61a〜第3アドレスカウンタ61cが使用される。
3相ステッピングモータ2において、電気角一周(360°)は、機械角(モータ回転軸の回転角)の7.2°に相当し、電気角一周を50回繰り返すことにより、機械角を1周(モータ回転軸を1回転)させる。また、CWP方向の指令パルスが入力される場合、3相ステッピングモータ2で励磁されるコイル(励磁相)は、例えば図12に示すように、励磁相コイルAc(0°の電気角位置)→cB(60°の電気角位置)→Ba(120°の電気角位置)→aC(180°の電気角位置)→Cb(240°の電気角位置)→bA(300°の電気角位置)の順序で6回切り換えて変更される。
これによって、3相ステッピングモータ2のモータ回転軸を機械角で1.2°(電気角で60°)ずつ6回ステップ駆動(歩進)させて、電気角一周となる7.2°の機械角を回転(正転)させる。この場合、機械角の1.2°(=電気角の60°)が基本角ステップとなり、基本角ステップの6回の歩進を50回繰り返すことにより(基本角ステップの6回×50)、上述のようにモータ回転子を機械角で360°、1回転させることができる。
また本実施例2では、ステッピングモータ2における基本角ステップの分解能が、上述したように基本角ステップを100分割する「1/100」に設定される。この場合、第1アドレスカウンタ61a〜第3アドレスカウンタ61cで管理されるアドレス(基数)の数は、電気角一周分となる「000」〜「599」の600個(3相ステッピングモータ2の基本角ステップ6回分×マイクロステップ分割数100)に設定される。
すなわち、3相ステッピングモータ2の場合、CWP方向の指令パルスが600回入力されることにより、モータ回転軸を、電気角一周の7.2°回転させることができ、更に、CWP方向の指令パルスが30000回(電気角一周×50回)入力されることにより、モータ回転軸を、機械角で360°(1回転)回転させることができる。
更に本実施例2の場合、ステッピングモータ2の相数は「3相」であるため、第1アドレスカウンタ61a〜第3アドレスカウンタ61c間に、各アドレスカウンタが管理するアドレス数の「600」を、出力端子11の使用する数の「3」で除した「200」のギャップを、第1アドレスカウンタ61aと第2アドレスカウンタ61bの間、第2アドレスカウンタ61bと第3アドレスカウンタ61cの間、及び第3アドレスカウンタ61cと第1アドレスカウンタ61aの間にそれぞれ設けて、その上で、第1アドレスカウンタ61a〜第3アドレスカウンタ61cがそれぞれアドレスの管理を行う。このため、例えば第1アドレスカウンタ61aのアドレスの数値が「000」の場合、第2アドレスカウンタ61b及び第3アドレスカウンタ61cのアドレスの数値は、それぞれ「200」及び「400」となる。
従って、本実施例2においてドライバ10の電源が入れられると、イニシャライズ処理として、ドライバ10のFPGA40が、相数セレクトスイッチの選択位置と分解能セレクトスイッチの選択位置とを読み取ることによって、第1アドレスカウンタ61a〜第3アドレスカウンタ61cで管理するアドレス数として、「000」〜「599」の600個を設定するとともに、第1アドレスカウンタ61a〜第3アドレスカウンタ61cに、出力端子11の数に応じたギャップ「200」を設けたアドレス(基数)の数値を設定する。
FPGA40の初期設定後、CWP方向又はCCWP方向の指令パルスがドライバ10に入力されることにより、アドレスブロック60の第1アドレスカウンタ61a〜第3アドレスカウンタ61cは、それぞれが管理するアドレスの数値を、指令パルスの入力毎にインクリメント又はデクリメントする。また、FPGA40は、第1アドレスカウンタ61a〜第3アドレスカウンタ61cで管理されるアドレスに応じて、前述した実施例1で説明した処理と実質的に同様の処理を行う。
簡単に説明すると、電流基準データブロック70は電流基準値のデータ「i×sinθ」(0°≦θ<360°)が予め格納されているROM72から、アドレスレジスタ71に保持されている第1アドレスカウンタ61a〜第3アドレスカウンタ61cのアドレスに対応する電流基準値のデータをそれぞれ読み出して、その読み出した各電流基準値のデータを、対応する第1電流基準値レジスタ73a〜第3電流基準値レジスタ73cにそれぞれ同時にセットする。このとき、第1電流基準値レジスタ73a〜第3電流基準値レジスタ73cに同時にセットされる各電流基準値のデータには、第1アドレスカウンタ61a〜第3アドレスカウンタ61c間に設けたアドレスのギャップに対応した正弦波の位相差(120°の位相差)が設けられている。
また、FPGA40のPWM出力ブロック90は、第1電流基準値レジスタ73a〜第3電流基準値レジスタ73cに格納されている電流基準値と、第1電流検出値レジスタ81a〜第3電流検出値レジスタ81cに格納されている電流検出値とを、サイクルカウンタ51の単位周期(PWMサイクル)毎に読み出して、対応する値同士を比較し、前述の実施例1の場合と同様に所定の演算及び比較を出力端子11毎に個別に且つ並列的に行うことによって、第1PWM処理部91a〜第3PWM処理部91cから、出力段20に向けて、第1出力端子11a〜第3出力端子11cのそれぞれに対するPWM制御信号を単位周期ごとに同時に出力する。これにより、出力段20は、PWM出力ブロック90から出力されるPWM制御信号に従って、各スイッチング素子21のON/OFFを行う。
これによって、ドライバ10の第1出力端子11a〜第3出力端子11cに、流れる方向及び大きさが制御された電流を所定のタイミングで流すことができる。この場合、第1出力端子11a〜第3出力端子11cにそれぞれ流れる電流の大きさ(電流値)は、電流基準値の「i×sinθ」の大きさに対応しており、相互に正弦波の位相差(120°の位相差)に相当する比率を有する。
例えば、本実施例2の3相ステッピングモータ2において、モータ回転軸を0°の電気角位置にステップ駆動させる場合には、図9に示したステッピングモータ2にモータ電流A及びモータ電流cを流して、トルクベクトルAc(VA+Vc)を発生させる。このとき、本実施例2では、ドライバ10の制御によって、第1出力端子11a〜第3出力端子11cに対し、第1アドレスカウンタ61a〜第3アドレスカウンタ61cで管理されているアドレスの電気角位置に対応し、且つ、各出力端子11間で正弦波における120°(=360°/出力端子11の使用する数「3」)の位相差が設けられた所定の比率の電流を流す。
具体的には、モータ回転軸を0°の電気角位置にステップ駆動させる場合、ドライバ10の第1出力端子11a〜第3出力端子11cには、図12に示したように、i×sin240°(=−0.866×i)、i×sin120°(=+0.866×i)、i×sin0°(=0.000×i)の大きさの電流をそれぞれ流し、これによって、ステッピングモータ2の図9に示した第1コイル2a及び第3コイル2cに対して、モータ電流A及びモータ電流cをそれぞれ流すことができる。これにより、3相ステッピングモータ2の第1コイル2a及び第3コイル2cを単位周期内で励磁して、トルクベクトルAc(VA+Vc)を発生させるため、モータ回転軸を0°の電気角位置にステップ駆動させることができる。
また電気角位置が0°の状態から、CWP方向(又はCCWP方向)の指令パルスがドライバ10に入力されると、第1アドレスカウンタ61a〜第3アドレスカウンタ61cのアドレスがインクリメント(又はデクリメント)されるとともに、第1アドレスカウンタ61a〜第3アドレスカウンタ61cで管理されるアドレスに応じてFPGA40が所定の処理を行う。これによって、ドライバ10の第1出力端子11a〜第3出力端子11cに、正弦波における120°の位相差(アドレスブロック60に設けたギャップに対応した位相差)が設けられた所定の比率のモータ電流A,a;B,b;C,cを単位周期毎にそれぞれ流すことができる。
更に、ドライバ10の制御によって第1出力端子11a〜第3出力端子11cのそれぞれから出力する電流について、電気角θが0°≦θ<360°の範囲における電流値の変動を見ると、例えば図11の右側に示すように、第1出力端子11a〜第3出力端子11cから出力する各電流は、ROM72に格納されている電気角一周分の電流基準値のデータに対応してそれぞれ正弦曲線を示すように制御されるとともに、各出力端子11間で互いに120°の位相差が設けられている。
以上のように、図1に示した構成を有するドライバ10に、本実施例2の3相ステッピングモータ2が接続された場合でも、FPGA40にてドライバ10の3つの第1出力端子11a〜第3出力端子11cに関する処理を並列的に同時に行うことができ、それによって、ドライバ10の第1出力端子11a〜第3出力端子11cから、3つの相に対応した正弦波の位相差(120°の位相差)がもたらす比率の電流を安定して出力できる。このため、ドライバ10に入力されるCWP方向及びCCWP方向の指令パルスに従って、3相ステッピングモータ2を円滑にステップ駆動させることができる。
図13は、2相ステッピングモータのコイルと、各コイルに流す電流の方向とを定義する模式図であり、図14は、2相ステッピングモータのコイルに電流が流れたときに各コイルが生成するトルクベクトルの関係を定義する模式図である。図15は、2相ステッピングモータに対して、ドライバの各出力端子から出力する電流の電気角一周分の比率を示す模式図であり、図16は、2相ステッピングモータの基本角位置で、ドライバの各出力端子から出力する電流の比率(正弦波の位相差)を示す図である。
本実施例3では、図1のドライバ10が、バイポーラ型の2相ステッピングモータ3に接続されている場合について説明する。なお、本実施例3において、2相ステッピングモータ3に接続するドライバ10は、前述の実施例1及び実施例2で用いたドライバ10と同じものである。
ここで、2相ステッピングモータ3については、図13に示すように、ステッピングモータ3に配される2つのコイル(励磁コイル)を、第1コイル3a及び第2コイル3bと定義する。また、第1コイル3a及び第2コイル3bのそれぞれに流れるモータ電流を、それぞれモータ電流A,a;モータ電流B,bで表す。この場合、モータ電流A,Bと、モータ電流a,bとは、互いに対応するアルファベットについて、第1コイル3a及び第2コイル3bのそれぞれにおいて反対の向きに流れる電流を示す。また、第1コイル3a及び第2コイル3bに接続されるドライバ10の第1出力端子11a〜第4出力端子11dの位置も図13に示すように設定される。
更に、図14に示すように、2相ステッピングモータ3の第1コイル3a及び第2コイル3bに、モータ電流A,a;B,bがそれぞれ流れたときに生成されるトルクベクトルを、モータ電流の各アルファベットに対応させて、それぞれトルクベクトルVA,Va;VB,Vbと定義する。すなわち、第1コイル3aにモータ電流Aが流れたときに生じるトルクベクトルVAと、モータ電流aが流れたときに生じるトルクベクトルVaとは、互いに逆方向のベクトルとなる。
本実施例3では、図1のドライバ10を用いて、2相ステッピングモータ3をステップ駆動する場合について説明する。なお、本実施例3では、ドライバ10における図示しない相数セレクトスイッチで、「2相」が予め選択されているとともに、図示しない分解能セレクトスイッチで、基本角ステップの分解能として「1/100」が予め選択されている場合について説明する。
またこの場合、ドライバ10は、第1出力端子11a〜第5出力端子11eのうちの第1出力端子11a〜第4出力端子11dが、図13に示すように2相ステッピングモータ3の2つのコイル3a,3bにそれぞれ接続されている。更に、相数セレクトスイッチにより「2相」が選択されているため、第1出力端子11a〜第4出力端子11dからそれぞれ電流を出力可能に設定されるとともに、第5出力端子11eは不使用に設定される。
また図1のドライバ10において、FPGA40のアドレスブロック60は、前述したように、第1アドレスカウンタ61a〜第5アドレスカウンタ61eを有するものの、相数セレクトスイッチの「2相」の選択により、アドレスブロック60では第1アドレスカウンタ61a〜第4アドレスカウンタ61dが使用される。
2相ステッピングモータ3における電気角一周(360°)は、機械角(モータ回転軸の回転角)の7.2°に相当し、電気角一周を50回繰り返すことにより、機械角を1周(モータ回転軸の1回転)させる。また、CWP方向の指令パルスが入力される場合、2相ステッピングモータ3で励磁されるコイル(励磁相)は、例えば図16に示すように、励磁相bA(0°の電気角位置)→AB(90°の電気角位置)→Ba(180°の電気角位置)→ab(270°の電気角位置)の順序で4回切り換えて変更される。
これによって、2相ステッピングモータ3のモータ回転軸を機械角で1.8°(電気角で90°)ずつ4回ステップ駆動(歩進)させて、電気角一周となる7.2°の機械角を回転(正転)させる。この場合、機械角の1.8°(=電気角の90°)が基本角ステップとなり、基本角ステップの4回の歩進を50回繰り返すことにより(基本角ステップの4回×50)、上述のようにモータ回転子を機械角で360°、1回転させることができる。
また本実施例3では、ステッピングモータ3における基本角ステップの分解能が、上述したように基本角ステップを100分割する「1/100」に設定される。この場合、第1アドレスカウンタ61a〜第4アドレスカウンタ61dで管理されるアドレス(基数)の数は、電気角一周分となる「000」〜「399」の400個(2相ステッピングモータ3の基本角ステップ4回分×マイクロステップ分割数100)に設定される。
すなわち、2相ステッピングモータ3の場合、CWP方向の指令パルスが400回入力されることにより、モータ回転軸を、電気角一周の7.2°回転させることができ、更に、CWP方向の指令パルスが20000回(電気角一周×50回)入力されることにより、モータ回転軸を、機械角で360°(1回転)回転させることができる。
更に本実施例3の場合、ステッピングモータ3の相数は「2相」であるため、第1アドレスカウンタ61a〜第3アドレスカウンタ61c間に、各アドレスカウンタが管理するアドレス数の「400」を出力端子11の使用する数の「4」で除した「100」のギャップを、第1アドレスカウンタ61aと第2アドレスカウンタ61bの間、第2アドレスカウンタ61bと第3アドレスカウンタ61cの間、第3アドレスカウンタ61cと第4アドレスカウンタ61dの間、及び第4アドレスカウンタ61dと第1アドレスカウンタ61aの間にそれぞれ設けて、その上で、第1アドレスカウンタ61a〜第4アドレスカウンタ61dがそれぞれアドレスの管理を行う。このため、例えば第1アドレスカウンタ61aのアドレスの数値が「000」の場合、第2アドレスカウンタ61b、第3アドレスカウンタ61c、及び第4アドレスカウンタ61dのアドレスの数値は、それぞれ「100」、「200」及び「300」となる。
従って、本実施例3においてドライバ10の電源が入れられると、イニシャライズ処理として、ドライバ10のFPGA40が、相数セレクトスイッチの選択位置と分解能セレクトスイッチの選択位置とを読み取ることによって、第1アドレスカウンタ61a〜第4アドレスカウンタ61dで管理するアドレス数として、「000」〜「399」の400個を設定するとともに、第1アドレスカウンタ61a〜第4アドレスカウンタ61dに、出力端子11の使用する数に応じたギャップ「100」を設けたアドレス(基数)の数値を設定する。
FPGA40の初期設定後、CWP方向又はCCWP方向の指令パルスがドライバ10に入力されることにより、アドレスブロック60の第1アドレスカウンタ61a〜第4アドレスカウンタ61dは、それぞれが管理するアドレスの数値を、指令パルスの入力毎にインクリメント又はデクリメントする。また、FPGA40は、第1アドレスカウンタ61a〜第4アドレスカウンタ61dで管理されるアドレスに応じて、前述した実施例1で説明した処理と実質的に同様の処理を行う。
簡単に説明すると、電流基準データブロック70は電流基準値のデータ「i×sinθ」(0°≦θ<360°)が予め格納されているROM72から、アドレスレジスタ71に保持されている第1アドレスカウンタ61a〜第4アドレスカウンタ61dのそれぞれのアドレスに対応する電流基準値のデータをそれぞれ読み出して、その読み出した各電流基準値のデータを、対応する第1電流基準値レジスタ73a〜第4電流基準値レジスタ73dにそれぞれ同時にセットする。このとき、第1電流基準値レジスタ73a〜第4電流基準値レジスタ73dに同時にセットされる各電流基準値のデータには、第1アドレスカウンタ61a〜第4アドレスカウンタ61d間に設けたアドレスのギャップに対応した正弦波の位相差(90°の位相差)が設けられている。
また、FPGA40のPWM出力ブロック90は、第1電流基準値レジスタ73a〜第4電流基準値レジスタ73dに格納されている電流基準値と、第1電流検出値レジスタ81a〜第4電流検出値レジスタ81dに格納されている電流検出値とを単位周期(PWMサイクル)毎に読み出して、対応する値同士を比較し、前述の実施例1の場合と同様に所定の演算及び比較を出力端子11毎に個別に且つ並列的に行うことによって、第1PWM処理部91a〜第4PWM処理部91dから、出力段20に向けて、第1出力端子11a〜第4出力端子11dのそれぞれに対するPWM制御信号を単位周期ごとに同時に出力する。これにより、出力段20は、PWM出力ブロック90から出力されるPWM制御信号に従って、各スイッチング素子21のON/OFFを行う。
これによって、ドライバ10の第1出力端子11a〜第4出力端子11dに、流れる方向及び大きさが制御された電流を所定のタイミングで流すことができる。この場合、第1出力端子11a〜第4出力端子11dにそれぞれ流れる電流の大きさ(電流値)は、電流基準値の「i×sinθ」の大きさに対応しており、相互にアドレスブロック60に設けたギャップに対応した正弦波の位相差(90°の位相差)に相当する比率を有する。
例えば、本実施例3の2相ステッピングモータ3において、モータ回転軸を0°の電気角位置にステップ駆動させる場合には、図13に示したステッピングモータ3にモータ電流b及びモータ電流Aを流して、トルクベクトルbA(Vb+VA)を発生させる。このとき、本実施例3では、ドライバ10の制御によって、第1出力端子11a〜第4出力端子11dに対し、第1アドレスカウンタ61a〜第4アドレスカウンタ61dで管理されているアドレスの電気角位置に対応し、且つ、各出力端子11間で正弦波における90°(=360°/出力端子11の使用する数「4」)の位相差が設けられた所定の比率の電流を流す。
具体的には、モータ回転軸を0°の電気角位置にステップ駆動させる場合、ドライバ10の第1出力端子11a〜第4出力端子11dには、図16に示したように、i×sin45°(=+0.707×i)、i×sin135°(=+0.707×i)、i×sin225°(=−0.707×i)、及びi×sin315°(=−0.707×i)の大きさの電流をそれぞれ流すことができ、これによって、ステッピングモータ3の図13に示した第1コイル3a及び第2コイル3bに対して、モータ電流A及びモータ電流bをそれぞれ流すことができる。これにより、2相ステッピングモータ3の第1コイル3a及び第2コイル3bを単位周期内で励磁して、トルクベクトルbA(Vb+VA)を発生させるため、モータ回転軸を0°の電気角位置にステップ駆動させることができる。
また電気角位置が0°の状態から、CWP方向(又はCCWP方向)の指令パルスがドライバ10に入力されると、第1アドレスカウンタ61a〜第4アドレスカウンタ61dのアドレスがインクリメント(又はデクリメント)されるとともに、第1アドレスカウンタ61a〜第4アドレスカウンタ61dで管理されるアドレスに応じてFPGA40が所定の処理を行う。これによって、ドライバ10の第1出力端子11a〜第4出力端子11dに、正弦波における90°の位相差(アドレスブロック60に設けたギャップに対応した位相差)が設けられた所定の比率のモータ電流A,a;B,bを単位周期毎にそれぞれ流すことができる。
更に、ドライバ10の制御によって第1出力端子11a〜第4出力端子11dのそれぞれから出力する電流について、電気角θが0°≦θ<360°の範囲における電流値の変動を見ると、例えば図15の右側に示すように、第1出力端子11a〜第4出力端子11dから出力する各電流は、ROM72に格納されている電気角一周分の電流基準値のデータに対応してそれぞれ正弦曲線を示すように制御されるとともに、各出力端子11間で互いに90°の位相差が設けられている。
以上のように、図1に示した構成を有するドライバ10に、本実施例3の2相ステッピングモータ3が接続された場合でも、FPGA40にてドライバ10の4つの第1出力端子11a〜第4出力端子11dに関する処理を並列的に同時に行うことができ、それによって、ドライバ10の第1出力端子11a〜第4出力端子11dから、2つの相に対応した正弦波の位相差(90°の位相差)がもたらす比率の電流を安定して出力できる。このため、ドライバ10に入力されるCWP方向及びCCWP方向の指令パルスに従って、2相ステッピングモータ3を円滑にステップ駆動させることができる。
そして、以上の実施例1〜実施例3に示したように、図1に示した本発明のドライバ10は、前述の特許文献2及び特許文献3等の従来のドライバのような「励磁パターン」を用いてモータの駆動制御を行うのではなく、正弦波における電流を流す出力端子11の個数で360°を除した角度の位相差を利用して(正弦波の位相をずらして)モータの駆動制御を行う。これにより、ステッピングモータ1,2,3のステップ駆動の滑らかさや静穏性を向上できるとともに、図1に示した一つのドライバ10で、実施例1の5相ステッピングモータ1、実施例2の3相ステッピングモータ2、及び実施例3の2相ステッピングモータ3の何れに対してもステップ駆動させることが可能となる。
このように相数の異なるステッピングモータ1,2,3に対応できるドライバ10であれば、例えば各種装置に複数のステッピングモータを用いる際に、専用の複数種類のドライバを用いる必要がなくなるため、ドライバに要する費用を抑えられる。また、ドライバの種類を1つに統一した上で、ステッピングモータを自由に選択することができるため、その仕様に対してより最適なステッピングモータを選択することが可能となる。
特に、相数の異なるステッピングモータに対してドライバの種類を1つに統一できることにより、ステッピングモータの相数が異なる場合でもドライバの駆動に起因する特性の違いは生じない。このため、ステッピングモータの選択を、より簡単な条件から行うことができるようになり、その結果、装置設計の自由度を格段に拡げることができる。
更に、ドライバが1つに統一されることにより、ドライバが配置される制御ボックス内の設計が行い易くなるとともに、制御ボックス内を整然と綺麗に仕上げることができる。また仕様変更や設計変更が生じて、装置に既設されているステッピングモータを新しいものに取り換える場合にドライバの変更を不要にすることも可能となる。その結果、労力、費用、時間の削減を図ることができるとともに、ドライバの変更に伴うリスクをなくすことができる。
またドライバが1つに統一されることにより、装置のメンテナンスのための部品管理に要する負担が軽減されるとともに、メンテナンス作業の精確性や効率を向上させることができる。その上、ステッピングモータの相数の違いによるドライバ開発費の分散を防止できる。また、ドライバ製造における部材調達、製造、検査、及び管理上の負担も軽減され、その結果、ドライバをより安価に提供することが可能となる。