目次

パルスモータの動かし方

 2相のパルスモータは、4本の制御ピンをもち、この4ピンに  決まったパターンのパルスを出力すると回転する。  パルスは、パルスモータ内部の電磁石を励磁するために利用する。  各ピンのパルスのHレベルが重ならないように励磁する方式と  90°ずつパルスのHレベルが重なるように制御する方式がある。  Hレベルが重ならないように励磁する場合は、単相励磁と呼ぶ。  90°ずつパルスのHレベルが重なる場合は、1−2相励磁と呼ぶ。

単相励磁

 単相励磁は、Hレベルが重ならないようにするので、以下のように  パルスを出力する。  (A、B、nA、nB)の組み合わせは、次のようになる。  正転の場合
  1. (A、B、nA、nB)=(1、0、0、0)
  2. (A、B、nA、nB)=(0、1、0、0)
  3. (A、B、nA、nB)=(0、0、1、0)
  4. (A、B、nA、nB)=(0、0、0、1)
 逆転の場合
  1. (A、B、nA、nB)=(0、0、0、1)
  2. (A、B、nA、nB)=(0、0、1、0)
  3. (A、B、nA、nB)=(0、1、0、0)
  4. (A、B、nA、nB)=(1、0、0、0)
 マイコンのポートに、A、B、nA、nBの順でパルスモータの励磁  ピンが接続されていた場合は、配列を利用してパターンを保存し  そのパターンを出力すればよい。 typedef unsigned char UBYTE ; UBYTE pulse_for_pat[4] = {0x08,0x04,0x02,0x01} ; UBYTE pulse_rev_pat[4] = {0x01,0x02,0x04,0x08} ;  タイマー割込み処理で、パターンを出力する。 UBYTE cnt ; void timer_handler(void) { UBYTE tmp ; /* 割込み始末 */ /* パルス出力 */ tmp = *(pulse_for_pat + cnt) ; if ( REVERSE == ON ) { tmp = *(pulse_rev_pat + cnt) ; } PULSE_BITS = tmp ; cnt++ ; cnt &= 0x03 ; }

1−2相励磁

 1−2相励磁は、90°ずつパルスのHレベルが重なるので、次の  ようにパルスを出力する。  (A、B、nA、nB)の組み合わせは、次のようになる。  正転の場合
  1. (A、B、nA、nB)=(0、0、1、1)
  2. (A、B、nA、nB)=(1、0、0、1)
  3. (A、B、nA、nB)=(1、1、0、0)
  4. (A、B、nA、nB)=(0、1、1、0)
 逆転の場合
  1. (A、B、nA、nB)=(0、0、1、1)
  2. (A、B、nA、nB)=(0、1、1、0)
  3. (A、B、nA、nB)=(1、1、0、0)
  4. (A、B、nA、nB)=(1、0、0、1)
 マイコンのポートに、A、B、nA、nBの順でパルスモータの励磁  ピンが接続されていた場合は、配列を利用してパターンを保存し  そのパターンを出力すればよい。 typedef unsigned char UBYTE ; UBYTE pulse_for_pat[4] = {0x03,0x09,0x0c,0x06} ; UBYTE pulse_rev_pat[4] = {0x03,0x06,0x0c,0x09} ;  タイマー割込み処理で、パターンを出力する。 UBYTE cnt ; void timer_handler(void) { UBYTE tmp ; /* 割込み始末 */ /* パルス出力 */ tmp = *(pulse_for_pat + cnt) ; if ( REVERSE == ON ) { tmp = *(pulse_rev_pat + cnt) ; } PULSE_BITS = tmp ; cnt++ ; cnt &= 0x03 ; }
目次

inserted by FC2 system