以下、本発明の一つの実施形態による遊技機に搭載される直流モータ制御装置を、図を参照しつつ説明する。この直流モータ制御装置は、上位の制御装置から、遊技機の可動役物といった可動体を駆動する直流モータの目標回転量及び目標回転速度を指定する制御コマンドを受信すると、その目標回転速度で直流モータを回転させる。そしてこの直流モータ制御装置は、直流モータが所定角度回転する度に検知信号を出力する回転角センサからの検知信号に基づいて、その制御コマンドについて直流モータが回転開始してからの総回転量を表すステップ数をカウントし、そのステップ数が目標回転量に達した時点で直流モータを静止させる。これにより、この直流モータ制御装置は、直流モータが駆動する可動体を、目標回転速度に応じた速度で、目標回転量に応じた移動目的地まで移動させることができる。そしてこの直流モータ制御装置は、制御コマンドで指定された間引き率に応じた回数だけ、回転角センサから検知信号を受信する度に、ステップ数を1インクリメントすることで、ステップ数の取り得る範囲を狭くして、回路規模の増大を抑制する。
図1(a)及び図1(b)を参照しつつ、間引き率の設定による直流モータの目標回転量に応じたステップ数の抑制について説明する。図1(a)及び図1(b)は、それぞれ、本発明の一つの実施形態による直流モータ制御装置による制御対象となる直流モータが、互いに異なるギア比を持つギアを介して可動体を駆動する場合の、直流モータと可動体の概略配置を示す図である。図1(a)に示される例では、直流モータ2−1からの回転は、ウォームギア201及びギア202〜204を介して、可動体210の一端に固定的に取り付けられたギア205に伝達される。そして可動体210は、ギア205の回転軸で回転可能に支持されている。そのため、可動体210は、ギア205の回転に応じて、その長手方向が水平方向を向く状態から垂直方向を向く状態となるまで回転移動する。また、直流モータ2−1の回転軸には、ロータリーエンコーダが4−1が取り付けられており、直流モータ2−1が所定角度回転する度に検知信号を出力する。図1(a)に示される例では、ウォームギア201及びギア202〜205によるギア比が相対的に低いので、可動体210の長手方向が水平方向を向いた状態から垂直方向を向いた状態となるまでにロータリーエンコーダ4−1から10000回の検知信号のパルスが出力される。
一方、図1(b)に示される例では、直流モータ2−2からの回転は、ウォームギア221及びギア222を介して、可動体230の一端に固定的に取り付けられたギア223に伝達される。そして可動体230は、ギア223の回転軸で回転可能に支持されている。そのため、可動体230は、ギア223の回転に応じて、その長手方向が水平方向を向く状態から垂直方向を向く状態となるまで回転移動する。また、直流モータ2−2の回転軸には、ロータリーエンコーダが4−2が取り付けられており、直流モータ2−2が所定角度回転する度に検知信号を出力する。図1(b)に示される例では、ウォームギア221及びギア222〜223によるギア比が相対的に高いので、可動体230の長手方向が水平方向を向いた状態から垂直方向を向いた状態となるまでにロータリーエンコーダ4−2から3000回の検知信号のパルスが出力される。
そこで、例えば、図1(a)に示される例では、直流モータ制御装置は、間引き率を1/4に設定することで、可動体210の移動範囲全体にわたるステップ数を2500(=10000/4)に抑制できる。一方、図1(b)に示される例では、直流モータ制御装置は、間引き率を1に設定しても、可動体230の移動範囲全体にわたるステップ数を3000とすることができる。このように、可動体の移動範囲全体に相当する直流モータの目標回転量が大きいほど、間引き率を高く設定することで、直流モータ制御装置は、ステップ数の取り得る範囲を抑制できる。
図2は、本発明の一つの実施形態に係る遊技機に搭載される、第1の実施形態に係る直流モータ制御装置の概略構成図である。図2に示されるように、直流モータ制御装置1は、通信インターフェース回路10と、通信回路11と、二つのレジスタ12−1、12−2と、二つのセンサインターフェース回路13−1、13−2と、二つのステップ数カウント回路14−1、14−2と、二つの制御回路15−1、15−2と、二つの駆動信号生成回路16−1、16−2とを有する。
直流モータ制御装置1が有するこれらの各部は、それぞれ、別個の回路として回路基板(図示せず)上に実装されてもよく、あるいは、これらの各部が集積された集積回路として回路基板上に実装されてもよい。また、レジスタ12−1、センサインターフェース回路13−1、ステップ数カウント回路14−1、制御回路15−1及び駆動信号生成回路16−1は、駆動部17−1に含まれ、直流モータ2−1を駆動するために利用される。一方、レジスタ12−2、センサインターフェース回路13−2、ステップ数カウント回路14−2、制御回路15−2及び駆動信号生成回路16−2は、駆動部17−2に含まれ、直流モータ2−2を駆動するために利用される。
直流モータ制御装置1は、上位の制御装置から受信した制御コマンドに従って、駆動部17−1により直流モータ2−1を制御するか、または、駆動部17−2により直流モータ2−2を制御する。具体的には、直流モータ制御装置1は、その制御コマンドで指定されたチャネルフラグに従って、駆動対象となる直流モータが直流モータ2−1か直流モータ2−2か、すなわち、制御コマンドの制御対象となる駆動部が駆動部17−1か駆動部17−2かを判定する。そして直流モータ制御装置1は、駆動対象となる直流モータを、その制御コマンドで指定された目標回転速度で回転させる。本実施形態では、直流モータ制御装置1は、直流モータ2−1または直流モータ2−2に対する電流の供給のオン/オフを切り替える駆動信号を、パルス幅変調(PWM)方式により生成する。そして直流モータ制御装置1は、その制御コマンドに従って、生成した駆動信号を、直流モータ2−1へ電流供給するモータ駆動回路3−1または直流モータ2−2へ電流供給するモータ駆動回路3−2へ出力することで、直流モータ2−1または直流モータ2−2の回転速度を制御する。そして直流モータ制御装置1は、直流モータ2−1の回転量を調べるためのロータリーエンコーダ4−1から、直流モータ2−1の回転軸(図示せず)が所定の角度回転する度に、その所定の角度回転したことを示す検知信号を受信し、検知信号の受信回数を間引き率に応じてカウントすることで回転開始からの総回転量を表すステップ数をカウントする。同様に、直流モータ制御装置1は、直流モータ2−2の回転量を調べるためのロータリーエンコーダ4−2から、直流モータ2−2の回転軸(図示せず)が所定の角度回転する度に、その所定の角度回転したことを示す検知信号を受信し、検知信号の受信回数を間引き率に応じてカウントすることで回転開始からのステップ数をカウントする。そして直流モータ制御装置1は、直流モータ2−1または直流モータ2−2について、ステップ数が制御コマンドで指定された目標回転量に達すると、直流モータ2−1または直流モータ2−2を静止させる。
駆動部17−1に含まれる各部と駆動部17−2に含まれる各部は、同一の構成及び同一の機能を有することができる。また、直流モータ2−1を駆動するモータ駆動回路3−1と、直流モータ2−2を駆動するモータ駆動回路3−2は、同一の構成及び同一の機能を有することができる。さらに、ロータリーエンコーダ4−1とロータリーエンコーダ4−2は、同一の構成及び同一の機能を有することができる。そこで以下では、駆動部17−1に含まれる各部、モータ駆動回路3−1及びロータリーエンコーダ4−1について説明し、駆動部17−2含まれる各部、モータ駆動回路3−2及びロータリーエンコーダ4−2についての詳細な説明は省略する。
図3は、モータ駆動回路3−1の回路図である。モータ駆動回路3−1は、4個のスイッチTR1〜TR4を有する。なお、各スイッチは、例えば、トランジスタまたは電界効果トランジスタとすることができる。このうち、二つのスイッチTR1及びTR3が、電源とグラウンドとの間に直列に接続される。同様に、二つのスイッチTR2及びTR4が、電源とグラウンドとの間に直列に接続される。そして直流モータ2−1の正極側端子は、スイッチTR1とTR3の間に接続され、一方、直流モータ2−1の負極側端子は、スイッチTR2とTR4の間に接続される。そして各スイッチTR1〜TR4のスイッチ端子(例えば、スイッチTR1〜TR4がトランジスタであれば、ベース端子に相当し、スイッチTR1〜TR4が電界効果トランジスタであれば、ゲート端子に相当)は、それぞれ、駆動信号生成回路16−1に接続される。そして駆動信号生成回路16−1からの駆動信号は、各スイッチTR1〜TR4のスイッチ端子に入力される。
図4は、各スイッチに印加される駆動信号と直流モータ2−1の回転方向との関係を表すテーブルの一例を示す図である。
テーブル400に示されるように、直流モータ2−1を正転させる場合、スイッチTR1のスイッチ端子とスイッチTR4のスイッチ端子とに、PWM方式に従って設定された、直流モータ2−1の回転速度に応じたパルス幅を持つ、周期的なパルスを含む駆動信号が印加される。一方、スイッチTR2のスイッチ端子及びスイッチTR3のスイッチ端子には駆動信号が印加されない。これにより、直流モータ2−1には、スイッチTR1とスイッチTR4とにパルスが印加されている間のみ、正極側端子に電源電圧が印加されるので、直流モータ2−1は、そのパルス幅に応じた速度で正転する。
なお、直流モータ2−1を正転させる場合、スイッチTR1とTR4のうちの何れか一方に駆動信号を印加し、他方を常時オンとしてもよい。
一方、直流モータ2−1を逆転させる場合、スイッチTR2のスイッチ端子とスイッチTR3のスイッチ端子とに、PWM方式に従って設定された、直流モータ2−1の回転速度に応じた周期的なパルスを持つ駆動信号が印加される。一方、スイッチTR1のスイッチ端子及びスイッチTR4のスイッチ端子には駆動信号が印加されない。これにより、直流モータ2−1には、スイッチTR2とスイッチTR3とにパルスが印加されている間のみ、負極側端子に電源電圧が印加されるので、直流モータ2−1は、そのパルス幅に応じた速度で逆転する。
なお、直流モータ2−1を逆転させる場合、スイッチTR2とTR3のうちの何れか一方に駆動信号を印加し、他方を常時オンとしてもよい。
また、直流モータ2−1にブレーキをかける場合、スイッチTR3のスイッチ端子とスイッチTR4のスイッチ端子とがオンにされ、スイッチTR1のスイッチ端子とスイッチTR2のスイッチ端子とがオフにされる。
さらに、直流モータ2−1を駆動しない場合には、各スイッチのスイッチ端子はオフにされる。
ロータリーエンコーダ4−1は、回転角センサの一例であり、例えば、光学式のロータリーエンコーダとすることができる。そしてロータリーエンコーダ4−1は、例えば、直流モータ2−1の回転軸に取り付けられた、その回転軸を中心とする円周方向に沿って複数のスリットを有する円盤と、その円盤を挟んで対向するように配置された光源と受光素子とを有する。そして光源と受光素子との間に何れかのスリットが位置する度に、光源からの光が受光素子に達することで、ロータリーエンコーダ4−1は、パルス状の検知信号を出力する。これにより、ロータリーエンコーダ4−1は、直流モータ2−1が所定角度回転する度に検知信号を、直流モータ制御装置1へ出力する。例えば、直流モータ2−1の回転軸を中心とする円周方向に沿って、円盤に50個のスリットが設けられることで、ロータリーエンコーダ4−1は、直流モータ2−1の回転軸が1回転する間に50個の検知信号を出力する。
なお、ロータリーエンコーダ4−1は、直流モータ2−1の回転方向を検知できるように、直流モータ2−1の回転軸を中心とする、円周方向に沿って並ぶスリットの列を、同心円状に2列有していてもよい。そして各列に含まれるスリットの数は同じであり、スリット列ごとに、発光素子と受光素子が設けられる。さらに、中心に近い方の列における各スリットの位置が、例えば、中心からの遠い方の列の対応するスリットの位置に対して、円周方向に、スリットの幅の半分だけずれるように各スリットが形成される。これにより、直流モータ2−1の回転方向に応じて、中心に近い方のスリット列に対応する受光素子が検知信号を出力するタイミングと中心から遠い方のスリット列に対応する受光素子が検知信号を出力するタイミングとが異なるので、直流モータ制御装置1は、そのタイミングの差に応じて直流モータ2−1の回転方向を識別することが可能となる。
以下、直流モータ制御装置1の各部について説明する。
通信インターフェース回路10及び通信回路11は、通信部の一例である。そして通信インターフェース回路10は、例えば、直流モータ制御装置1を上位の制御装置と接続する。上位の制御装置は、例えば、直流モータ制御装置1が実装された遊技機の演出用CPUである。そして通信インターフェース回路10は、上位の制御装置から、シリアル伝送される複数のビットを持つ制御コマンドを受信する。さらに、通信インターフェース回路10は、制御コマンドを解析するために、制御コマンドに含まれる複数のビットのそれぞれと同期を取るためのクロック信号も、上位の制御装置から受信してもよい。そして通信インターフェース回路10は、受信した制御コマンド及びクロック信号を通信回路11へ渡す。また通信インターフェース回路10は、通信回路11から受け取った、命令完了信号などを上位の制御装置へ送信する。
通信回路11は、制御コマンドを解析して、その制御コマンドが直流モータ2−1及び直流モータ2−2の何れを制御するためのコマンドかを判定する。そして通信回路11は、その制御コマンドが直流モータ2−1を制御するためのコマンドである場合、その制御コマンドに含まれる動作情報をレジスタ12−1に書き込む。一方、通信回路11は、その制御コマンドが直流モータ2−2を制御するためのコマンドである場合、その制御コマンドに含まれる動作情報をレジスタ12−2に書き込む。
制御コマンドは、例えば、直流モータ2−1、2−2が駆動する可動体の移動量に相当する、直流モータ2−1、2−2の目標回転量といった、直流モータ2−1、2−2の動作を特定するための動作情報を含む。
クロック信号は、例えば、制御コマンド中の所定数のビットごとに、矩形状のパルスを持つ信号とすることができる。
図5は、動作情報を含む制御コマンドのフォーマットの一例を示す図である。図5に示されるように、動作情報を含む制御コマンド500は、先頭から順に、STARTフラグ501と、デバイスアドレス502と、チャネルフラグ503と、間引き情報504と、回転方向フラグ505と、速度データ506と、回転量データ507と、ENDフラグ508とを有する。このうち、間引き情報504、回転方向フラグ505、速度データ506及び回転量データ507が動作情報に相当する。さらに、制御コマンド500は、隣接するフラグ、アドレス及びデータ間に、例えば'0'の値を持つ1ビットのスペーサを含んでもよい。
STARTフラグ501は、制御コマンド500の先頭であることを表すビット列であり、本実施形態では、'1'の値を持つ9個のビットが連続したビット列である。なお、STARTフラグ501は、制御コマンド500内の任意の他の何れのビット列とも一致しないビット列であればよい。
デバイスアドレス502は、制御コマンド500が制御対象とする直流モータ制御装置を特定するための識別情報であり、本実施形態では、8ビット長のビット列で表される。デバイスアドレス502は、通信回路11により、例えば、上位の制御装置から別途受信するか、あるいは、予め設定された識別アドレスと一致するか否か判定され、一致する場合、直流モータ制御装置1が制御コマンド500の制御対象であると判定される。一方、デバイスアドレス502が識別アドレスと一致しない場合、制御コマンド500は、直流モータ制御装置1の制御対象でない。そのため、通信回路11は、制御コマンド500を廃棄してもよい。
チャネルフラグ503は、制御コマンド500が制御対象とする直流モータ(及び駆動部)を識別するための1ビットのフラグである。本実施形態では、チャネルフラグ503が'0'であれば、制御コマンドは直流モータ2−1の動作情報を含み、チャネルフラグ503が'1'であれば、制御コマンドは直流モータ2−2の動作情報を含む。
間引き情報504は、ロータリーエンコーダ4−1またはロータリーエンコーダ4−2からの検知信号の受信に対する間引き率を表す3ビット長のビット列であり、'0'〜'3'の何れかの値をとなる。本実施形態では、間引き情報504が'0'であれば、間引き率が1、すなわち、検知信号を受信する度にステップ数が1インクリメントされることを表す。また、間引き情報504が'1'であれば、間引き率が1/2、すなわち、検知信号を2回受信する度にステップ数が1インクリメントされることを表す。同様に、間引き情報504が'2'であれば、間引き率が1/4、すなわち、検知信号を4回受信する度にステップ数が1インクリメントされることを表す。そして間引き情報504が'3'であれば、間引き率が1/8、すなわち、検知信号を8回受信する度にステップ数が1インクリメントされることを表す。
回転方向フラグ505は、直流モータ2−1または直流モータ2−2の回転方向を表す1ビットのフラグである。本実施形態では、回転方向フラグ505が'0'であれば、直流モータ制御装置1は、直流モータ2−1または直流モータ2−2を正転させ、一方、回転方向フラグ505が'1'であれば、直流モータ制御装置1は、直流モータ2−1または直流モータ2−2を逆転させる。
速度データ506は、直流モータ2−1または直流モータ2−2の目標回転速度を表す。本実施形態では、速度データ506は4ビット長のビット列であり、'0'〜'15'の何れかの値となる。速度データ506が'0'であれば直流モータ2−1または直流モータ2−2にブレーキをかける、すなわち、モータ駆動回路3−1またはモータ駆動回路3−2のスイッチTR3及びTR4をオンにするブレーキ信号を出力することを表す。速度データ506が'1'〜'15'であれば、その速度データ506の値により設定される目標回転速度で直流モータ2−1または直流モータ2−2を回転させることを表す。なお、この例では、速度データ506の値が大きいほど、目標回転速度も速くなる。
回転量データ507は、直流モータ2−1または直流モータ2−2の目標回転量を表す。本実施形態では、回転量データ507は13ビット長のビット列である。そして回転量データ507は、目標回転量をステップ数で表す。すなわち、回転量データ507に示された値に、ロータリーエンコーダ4−1、4−2の隣接スリット間の中心角を乗じ、かつ、間引き情報504で示される間引き率の逆数を乗じた値が、直流モータ2−1または直流モータ2−2の実際の目標回転量となる。
ENDフラグ508は、制御コマンド500の終端であることを表すビット列である。ENDフラグ508は、制御コマンドに含まれる、STARTフラグ及び他のビット列と一致しないビット列であればよい。
さらに、通信回路11は、直流モータ2−1について、レジスタ12−1に記憶されているコマンドセットが一つ実行されると、すなわち、そのコマンドセットに含まれる目標回転量だけ直流モータ2−1が回転すると、そのコマンドセットが実行されたことを示す命令完了信号を、通信インターフェース回路10を介して上位の制御装置へ出力してもよい。同様に、通信回路11は、直流モータ2−2について、レジスタ12−2記憶されているコマンドセットが一つ実行されると、そのコマンドセットが実行されたことを示す命令完了信号を、通信インターフェース回路10を介して上位の制御装置へ出力してもよい。なお、命令完了信号は、例えば、直流モータ2−1か直流モータ2−2かを識別するための複数のビットと、命令完了を表す一つのビットとを含む信号とすることができる。
レジスタ12−1は、直流モータ2−1の動作情報を少なくとも一つ記憶可能な記憶容量を持つ、いわゆる先入れ先出し(FIFO)方式のメモリ回路を有する。レジスタ12−1が有するメモリ回路は、例えば、揮発性の読み書き可能な半導体メモリ回路により構成される。
レジスタ12−1は、通信回路11により書き込まれた動作情報を記憶する。そしてその動作情報が制御回路15−1により読み出されるとその動作情報を消去する。
センサインターフェース回路13−1は、ロータリーエンコーダ4−1からの検知信号を受信するインターフェース回路を有する。そしてセンサインターフェース回路13−1は、検知信号を受信する度に、その検知信号をステップ数カウント回路14−1へ出力する。
ステップ数カウント回路14−1は、制御コマンドに含まれる間引き情報に示された間引き率に応じた回数の検知信号を受信する度に、カウント信号を制御回路15−1へ出力する。
図6は、ステップ数カウント回路14−1の構成図である。ステップ数カウント回路14−1は、間引き率設定レジスタ21と、カウンタ22と、比較回路23とを有する。
間引き率設定レジスタ21は、レジスタ12−1に記憶されている動作情報のうち、最も古い動作情報に含まれる間引き情報を読みとり、その間引き情報で示された間引き率を設定する。そして間引き率設定レジスタ21は、設定した間引き率の逆数であるカウント閾値を比較回路23へ出力する。すなわち、間引き率が1/n(nは1以上の整数)である場合、カウント閾値はnとなる。
カウンタ22は、センサインターフェース回路13−1から検知信号を受信する度に、検知信号の受信回数を表すカウント値を1インクリメントする。そしてカウンタ22は、センサインターフェース回路13−1から検知信号を受信する度に、インクリメント後のカウント値を比較回路23へ出力する。またカウンタ22は、比較回路23からリセット信号を受信すると、カウント値を0にリセットする。
比較回路23は、カウンタ22からカウント値を受け取る度に、そのカウント値とカウント閾値とを比較する。そして比較回路23は、カウント値がカウント閾値に達する度に、ステップ数が1増えたことを表すカウント信号を制御回路15−1へ出力するとともに、リセット信号をカウンタ22へ出力する。一方、カウント値がカウント閾値未満である場合、比較回路23は、特に何も出力しない。
このように、ステップ数カウント回路14−1は、間引き率に応じて、一回のカウント信号の出力に必要な検知信号の受信回数を調節する。そのため、間引き率を適切に設定することで、ステップ数の最大値、すなわち、ステップ数の値が取り得る範囲を抑制することができる。
制御回路15−1は、例えば、プロセッサ及び不揮発性のメモリ回路を有する。制御回路15−1は、レジスタ12−1に記憶されている動作情報のうち、最も古い動作情報を読み出す。そして制御回路15−1は、読み出した動作情報に含まれる回転方向フラグを参照して、直流モータ2−1の回転方向を決定する。また制御回路15−1は、その動作情報に示された目標回転速度に従って、駆動信号のデューティ比を決定する。そして制御回路15−1は、回転方向及びデューティ比を表す制御信号を駆動信号生成回路16−1へ通知する。
駆動信号のデューティ比を決定するために、制御回路15−1は、例えば、自身が有するメモリ回路に予め記憶されている、目標回転速度の値とデューティ比との対応関係を表した速度テーブルを参照することで、目標回転速度に対応するデューティ比を求める。
また制御回路15−1は、制御コマンドを実行する度に、その制御コマンドの実行により直流モータ2−1が回転を開始した後に、ステップ数カウント回路14−1から受信したカウント信号の数をカウントし、そのカウントの合計を、一つの制御コマンドの実行の際における、直流モータ2−1の回転開始からの総回転量に相当するステップ数とする。そして制御回路15−1は、そのステップ数をメモリ回路に記憶する。
制御回路15−1は、ステップ数を更新する度に、制御コマンドの動作情報に含まれる目標回転量とステップ数とを比較する。そして制御回路15−1は、ステップ数が目標回転量に達すると、直流モータ2−1を静止させることを示す(例えば、デューティ比を0に設定する、あるいは、ブレーキを掛けることを指定する)制御信号を駆動信号生成回路16−1へ出力することで、直流モータ2−1を静止させる。これにより、制御回路15−1は、直流モータ2−1を目標回転量だけ回転させることができる。
駆動信号生成回路16−1は、例えば、出力するパルスの幅を変更可能な可変パルス生成回路と、可変パルス生成回路により生成された、駆動信号である周期的なパルス信号を、モータ駆動回路3−1の何れのスイッチへ出力するかを切り替えるスイッチ回路とを有する。そして駆動信号生成回路16−1は、制御回路15−1から通知されたデューティ比に従って、直流モータ2−1を駆動するための駆動信号をPWM方式に従って生成し、その駆動信号をモータ駆動回路3−1の何れかのスイッチへ出力する。なお、駆動信号の1周期の長さは、例えば、50μsecである。例えば、制御回路15−1から通知された回転方向が正転である場合、駆動信号生成回路16−1は、モータ駆動回路3−1のスイッチTR1とTR4へ周期的なパルス信号を出力する。一方、制御回路15−1から通知された回転方向が逆転である場合、駆動信号生成回路16−1は、モータ駆動回路3−1のスイッチTR2とTR3へ周期的なパルス信号を出力する。
図7は、直流モータ制御装置1により実行される直流モータ制御処理の動作フローチャートである。この直流モータ制御処理は、直流モータ制御装置1が上位の制御装置から制御コマンドを受け取る度に実行される。なお、以下では、制御対象の直流モータが駆動部17−1により駆動される直流モータ2−1である場合について説明する。制御対象の直流モータが駆動部17−2により駆動される直流モータ2−2である場合も、同様の動作フローチャートに従って直流モータ制御処理が実行される。
ステップ数カウント回路14−1は、レジスタ12−1に記憶された動作情報を読み込み、その動作情報に含まれる間引き情報に示された間引き率を間引き率設定レジスタ21に書き込む(ステップS101)。また制御回路15−1は、レジスタ12−1に記憶されたその動作情報を読み込み、その動作情報に含まれる、目標回転速度、目標回転量及び回転方向フラグを、制御回路15−1のメモリ回路に記憶する(ステップS102)。そして制御回路15−1は、その動作情報をレジスタ12−1から消去する。また制御回路15−1は、ステップ数を0にリセットする。
制御回路15−1は、動作情報に含まれる回転方向フラグを参照して直流モータ2−1の回転方向を決定し、駆動信号生成回路16−1へその回転方向を通知する(ステップS103)。さらに、制御回路15−1は、動作情報に含まれる目標回転速度に相当するデューティ比を表す制御信号を駆動信号生成回路16−1へ出力する(ステップS104)。駆動信号生成回路16−1は、そのデューティ比に応じたパルス幅を持つ駆動信号を生成し、その駆動信号をモータ駆動回路3−1へ出力する。これにより、直流モータ2−1は回転を開始する。
ステップ数カウント回路14−1は、センサインターフェース回路13−1を介して、動作情報で指定された間引き率に応じた数の検知信号をロータリーエンコーダ4−1から受け取る度に、カウント信号を制御回路15−1へ出力する(ステップS105)。制御回路15−1は、ステップ数カウント回路14−1からカウント信号を受け取る度に、ステップ数を1インクリメントする(ステップS106)。そして制御回路15−1は、ステップ数が動作情報で指定された目標回転量に達したか否か判定する(ステップS107)。ステップ数が目標回転量に達していなければ(ステップS107−No)、直流モータ制御装置1は、ステップS105以降の処理を繰り返す。
一方、ステップ数が目標回転量に達していれば(ステップS107−Yes)、制御回路15−1は、デューティ比を0に設定することで直流モータ2−1を静止させることを示す制御信号を駆動信号生成回路16−1へ出力して、直流モータ2−1を静止させる(ステップS108)。その後、直流モータ制御装置1は、直流モータ制御処理を終了する。
以上に説明してきたように、この直流モータ制御装置は、ロータリーエンコーダを用いて直流モータの回転開始からの実際の回転量を求めることで、直流モータの回転量を制御する。その際、この直流モータ制御装置は、制御コマンドで指定された間引き率に応じて、直流モータの回転量を表すステップ数を1インクリメントするのに必要な、ロータリーエンコーダからの検知信号の受信回数を調節する。そのため、この直流モータ制御装置は、直流モータが駆動する可動体の移動範囲及び直流モータと可動体の間に設けられるギアのギア比によらず、ステップ数が取り得る値の範囲を抑制できる。その結果として、この直流モータ制御装置は、回路規模の増大を抑制できる。
次に、第2の実施形態による直流モータ制御装置について説明する。第2の実施形態による直流モータ制御装置は、実際に直流モータで可動体を駆動させて可動体をその移動範囲の一端から他端まで移動させたときのステップ数が上限値以下となるように、間引き率を決定する。第2の実施形態による直流モータ制御装置は、第1の実施形態による直流モータ制御装置と比較して、制御回路15−1、15−2による処理の一部が異なる。また第1の実施形態と同様に、駆動部17−1と駆動部17−2は同一の構成を有する。そこで以下では、制御回路15−1による処理のうち、第1の実施形態による処理と異なる部分及び直流モータ制御装置のその他の構成要素の関連部分について説明する。
通信回路11は、上位制御装置から通信インターフェース回路10を介して間引き率の設定要求を含む制御コマンドを受信すると、その制御コマンドに含まれるチャネルフラグを参照して、レジスタ12−1、12−2のうち、制御コマンドを書き込むレジスタを特定する。そして通信回路11は、制御コマンドに含まれる間引き率設定要求情報を、特定したレジスタに書き込む。
図8は、間引き率設定要求情報を含む制御コマンドのフォーマットの一例を示す図である。図8に示されるように、間引き率設定要求情報を含む制御コマンド800は、先頭から順に、STARTフラグ801と、デバイスアドレス802と、チャネルフラグ803と、間引き率設定要求フラグ804と、ダミーデータ805と、ENDフラグ806とを有する。このうち、間引き率設定要求フラグ804及びダミーデータ805が間引き率設定要求情報に相当する。さらに、制御コマンド800は、隣接するフラグ、アドレス及びデータ間に、例えば'0'の値を持つ1ビットのスペーサを含んでもよい。また、制御コマンド800に含まれる、STARTフラグ801、デバイスアドレス802、チャネルフラグ803及びENDフラグ806は、図5に示された動作情報を含む制御コマンドのSTARTフラグ、デバイスアドレス、チャネルフラグ及びENDフラグと同一である。そこで以下では、間引き率設定要求情報に含まれる間引き率設定要求フラグ804及びダミーデータ805について説明する。
間引き率設定要求フラグ804は、図5に示された、動作情報を含む制御コマンド500が有する間引き情報と同様に、3ビット長のビット列である。ただし、間引き率設定要求フラグ804は、間引き情報とは異なる値、例えば、'7'を有する。そのため、制御回路15−1、15−2は、そのビット列に表されているのが間引き情報か間引き率設定要求フラグかを識別することができる。
ダミーデータ805は、制御コマンド800の長さが、動作情報を含む制御コマンドの長さと等しくなるだけのビット長を持つ。なお、ダミーデータ805には、何も設定されないので、ダミーデータ805は、任意の値を持っていてもよい。
制御回路15−1は、レジスタ12−1から読み込んだ情報が間引き率設定要求情報である場合、間引き率設定処理を開始する。
図9は、間引き率設定処理の動作フローチャートである。
制御回路15−1は、駆動信号生成回路16−1を制御して、直流モータ2−1が駆動する可動体をその移動範囲の一端(以下、便宜上、始点と呼ぶ)へ移動させる。また制御回路15−1は、ステップ数カウント回路14−1の間引き率設定レジスタ21に記憶される間引き率を1にリセットし、かつ、直流モータ2−1の回転量を表すステップ数を0にリセットする(ステップS201)。
可動体が始点に移動すると、制御回路15−1は、直流モータ2−1が正転するように駆動信号生成回路16−1を制御する(ステップS202)。そして制御回路15−1は、ステップ数のカウントを開始する。
なお、制御回路15−1は、可動体が始点に移動したことを、例えば、その始点に設置された近接センサなどからの検知信号をセンサインターフェース回路13−1を介して受信することで検知することができる。
制御回路15−1は、可動体が移動範囲の他端(以下、便宜上、終点と呼ぶ)に達したか否か判定する(ステップS203)。この場合も、制御回路15−1は、可動体が終点に移動したことを、例えば、その終点に設置された近接センサなどからの検知信号をセンサインターフェース回路13−1を介して受信することで検知することができる。可動体が終点に達していない場合(ステップS203−No)、制御回路15−1は、ステップ数カウント回路14−1からカウント信号を受け取ったか否か判定する(ステップS204)。カウント信号を受け取っていなければ(ステップS204−No)、制御回路15−1は、ステップS204は、ステップS204の処理を繰り返す。一方、カウント信号を受け取ると(ステップS204−Yes)、制御回路15−1は、ステップ数を1インクリメントする(ステップS205)。
制御回路15−1は、ステップ数が上限値(例えば、5000)以下であるか否か判定する(ステップS206)。なお、ステップ数の上限値は、制御回路15−1の回路の規模、仕様などに応じて予め設定される。ステップ数が上限値以下であれば(ステップS206−Yes)、制御回路15−1は、ステップS203以降の処理を繰り返す。
一方、ステップ数が上限値を超えた場合(ステップS206−No)、制御回路15−1は、現在設定されている間引き率では、可動体の移動範囲全体に相当する直流モータ2−1の回転量を管理できない。そこで制御回路15−1は、間引き率を1段階高くする(ステップS207)。例えば、現在の間引き率が(1/n)である場合、制御回路15−1は、間引き率を(1/(2n))に変更する。そして制御回路15−1は、ステップ数カウント回路14−1の間引き率設定レジスタ21に記憶される間引き率を変更後の間引き率に書き換える。
また制御回路15−1は、駆動信号生成回路16−1を制御して、直流モータ2−1が駆動する可動体を始点へ移動させ、かつ、ステップ数を0にリセットする(ステップS208)。その後、制御回路15−1は、ステップS202以降の処理を繰り返す。
一方、ステップS203において、可動体が終点に達している場合(ステップS203−Yes)、可動体を始点から終点まで移動させる場合のステップ数が上限値以下なので、制御回路15−1は、現在設定されている間引き率で可動体の移動範囲に相当する直流モータ2−1の回転量を管理できる。そこで制御回路15−1は、ステップ数カウント回路14−1の間引き率設定レジスタ21に記憶されている間引き率を使用する間引き率に設定する(ステップS209)。そして制御回路15−1は、その間引き率を通信回路11に通知する。通信回路11は、設定した間引き率を表す情報と、駆動部17−1か駆動部17−2かを示すフラグとを含む間引き率設定信号を生成する。なお、間引き率を表す情報は、例えば、制御コマンドに含まれる動作情報内の間引き情報と同様の情報とすることができる。通信回路11は、通信インターフェース回路10を介して、間引き率設定信号を上位制御装置へ送信する。そして制御回路15−1は、間引き率設定処理を終了する。
なお、制御回路15−1は、可動体が終点に達したときのステップ数も通信回路11へ通知してもよい。そして通信回路11は、そのステップ数を間引き率設定信号に含めてもよい。この場合、上位制御装置は、予め、直流モータ2−1が駆動する可動体が移動範囲の一端から他端まで移動するのに要する直流モータ2−1の回転量を知らない場合でも、間引き率設定信号を参照することで、その回転量に応じたステップ数を知ることができる。そのため、上位制御装置は、動作情報を含む制御コマンドを生成する際に、間引き率設定信号に含まれるステップ数を利用して、目標回転量を決定することができる。
また、第2の実施形態によれば、間引き率設定処理が実行されることにより、使用する間引き率がステップ数カウント回路14−1の間引き率設定レジスタ21に登録される。そのため、動作情報を含む制御コマンドにおいて、間引き情報は省略されてもよい。
上記の各実施形態の変形例によれば、制御回路は、制御コマンドで指定された目標回転量と可動体の移動開始からのステップ数との差が所定の閾値(例えば、100)以下となったときに、設定されている間引き率を低下させてもよい。例えば、設定されている間引き率が(1/n)である場合に、制御回路は、間引き率を(1/(n/2))または1としてもよい。これにより、可動体が移動目的地に近づくと、制御回路は、より精密に直流モータの回転量を制御することができる。
また他の変形例によれば、制御コマンドは、複数の目標回転速度と、各回転速度に対応する切替回転量を含んでいてもよい。この場合、制御回路は、ステップ数が何れかの切替回転量に達する度に、直流モータの回転速度を、その切替回転量に応じた目標回転速度に設定し、その目標回転速度に応じたデューティ比を表す制御信号を駆動信号生成回路へ出力する。
さらに他の変形例によれば、直流モータ制御装置が有する駆動部の数は2個に限られない。直流モータ制御装置が有する駆動部の数は1個でもよく、あるいは、3個以上であってもよい。
上記の実施形態または変形例による直流モータ制御装置は、弾球遊技機または回胴遊技機といった遊技機に搭載されてもよい。
図10は、上記の実施形態または変形例による直流モータ制御装置を備えた弾球遊技機100の概略斜視図である。また図11は、弾球遊技機100の概略背面図である。図10に示すように、弾球遊技機100は、上部から中央部の大部分の領域に設けられ、遊技機本体である遊技盤101と、遊技盤101の下方に配設された球受け部102と、ハンドルを備えた操作部103と、遊技盤101の略中央に設けられた表示装置104とを有する。
また弾球遊技機100は、遊技の演出のために、遊技盤101の前面において遊技盤101の下方に配置された固定役物部105と、遊技盤101と固定役物部105との間に配置された可動役物部106とを有する。また遊技盤101の側方にはレール107が配設されている。また遊技盤101上には多数の障害釘(図示せず)及び少なくとも一つの入賞装置108が設けられている。
操作部103は、遊技者の操作によるハンドルの回動量に応じて図示しない発射装置より所定の力で遊技球を発射する。発射された遊技球は、レール107に沿って上方へ移動し、多数の障害釘の間を落下する。そして遊技球が何れかの入賞装置108に入ったことを、図示しないセンサにより検知すると、遊技盤101の背面に設けられた主制御回路110は、遊技球が入った入賞装置108に応じた所定個の遊技球を玉払い出し装置(図示せず)を介して球受け部102へ払い出す。さらに主制御回路110は、遊技盤101の背面に設けられた演出用CPU111を介して表示装置104に様々な映像を表示させる。
可動役物部106は、遊技の状態に応じて移動する可動体の一例であり、遊技盤101の背面に設けられた、本発明の実施形態またはその変形例による直流モータ制御装置112により制御される直流モータ125(図12(a)〜(c)を参照)によって駆動される。
図12(a)は、固定役物部105を透過して見た、直流モータ制御装置112により駆動される可動役物部106の概略正面図であり、図12(b)は、固定役物部105の背面側から見た、可動役物部106が移動可能範囲の一端に位置する場合の概略背面図であり、図12(c)は、固定役物部105の背面側から見た、可動役物部106が移動可能範囲の他端に位置する場合の概略背面図である。
この実施形態では、可動役物部106は、星型の装飾部材121と、その装飾部材121を一端にて支持する棒状の支持部材122とを有する。支持部材122は、固定役物部105の背面側に、遊技盤101の左下端から右上方へ向けて斜め方向に、支持部材122の下端と接するように設けられたレール123と係合し、そのレール123に沿って直進移動可能に保持されている。この例では、図12(b)に示されるように、可動役物部106がその移動可能範囲の左下方側の端部に位置する場合、遊技盤101の前面側から見て、装飾部材121が固定役物部105の背後に隠れて遊技者から見えなくなる。一方、図12(c)に示されるように、可動役物部106がその移動可能範囲の右上方側の端部に位置する場合、装飾部材121全体が固定役物部105よりも遊技盤101の中央側に位置することとなり、遊技者が装飾部材121全体を視認可能となる。
支持部材122の上面側には、直線歯車としての歯が形成されており、この歯が、移動可能範囲の右上方側の端部に可動役物部106が位置する場合の支持部材122の左下端側の端部の位置近傍に設置された減速ギア124と係合する。また減速ギア124は、直流モータ125の回転軸126に取り付けられたギア127と係合している。そのため、直流モータ125が所定角度回転することにより、ギア127及び減速ギア124を介して、その回転角度に対応する所定の移動量だけ可動役物部106が移動する。そして直流モータ125は、直流モータ制御装置112により制御される。
主制御回路110から演出用CPU111に伝達された遊技の状態を表す状態信号に基づいて、演出用CPU111は、可動役物部106の目標座標を決定し、その決定に従った制御コマンドを生成する。そして演出用CPU111は、生成した制御コマンドを直流モータ制御装置112へ出力する。例えば、遊技球が入賞装置108に入る前は、演出用CPU111は、可動役物部106が固定役物部105に隠れるように、可動役物部106をその現在地から移動可能範囲の左下方の端部までの移動距離に相当する直流モータ125の回転量を目標回転量として指定する制御コマンドを直流モータ制御装置112へ送信する。一方、遊技球が入賞装置108に入ったことが検知され、そのことを示す状態信号が主制御回路110から演出用CPU111に入力されると、演出用CPU111は、可動役物部106をその現在地から移動可能範囲の右上方の端部までの移動距離に相当する直流モータ125の回転量を目標回転量として指定する制御コマンドを生成し、その制御コマンドを直流モータ制御装置112へ送信する。
直流モータ制御装置112は、上記の実施形態またはその変形例による直流モータ制御装置であり、演出用CPU111から受け取った制御コマンドと、ロータリーエンコーダ128から受け取った検知信号に基づいて、直流モータ125が目標回転量だけ回転したところで静止するように、直流モータ125を制御する。その際、直流モータ制御装置112は、ロータリーエンコーダ128から間引き率に応じた回数の検知信号を受信する度にステップ数を1インクリメントすることで、そのステップ数により、直流モータ125の回転量を管理する。これにより、直流モータ制御装置112は、回路規模を大きくすることなく、可動役物部106を、演出に応じた移動目的地まで正確に移動させることができる。
なお、星型の装飾部材121は、棒状の支持部材122により回転可能に支持されてもよい。そしてその装飾部材121も、直流モータ制御装置112により制御される他の直流モータ(図示せず)により駆動されてもよい。この場合、その装飾部材121を駆動する直流モータの回転量を表すステップ数をカウントするために、直流モータ制御装置112は、直流モータ125に適用する間引き率と異なる間引き率を適用してもよい。
このように、当業者は、本発明の範囲内で、実施される形態に合わせて様々な変更を行うことができる。