目次
前
次
パルスモータの動かし方
2相のパルスモータは、4本の制御ピンをもち、この4ピンに
決まったパターンのパルスを出力すると回転する。
パルスは、パルスモータ内部の電磁石を励磁するために利用する。
各ピンのパルスのHレベルが重ならないように励磁する方式と
90°ずつパルスのHレベルが重なるように制御する方式がある。
Hレベルが重ならないように励磁する場合は、単相励磁と呼ぶ。
90°ずつパルスのHレベルが重なる場合は、1−2相励磁と呼ぶ。
単相励磁
単相励磁は、Hレベルが重ならないようにするので、以下のように
パルスを出力する。
(A、B、nA、nB)の組み合わせは、次のようになる。
正転の場合
- (A、B、nA、nB)=(1、0、0、0)
- (A、B、nA、nB)=(0、1、0、0)
- (A、B、nA、nB)=(0、0、1、0)
- (A、B、nA、nB)=(0、0、0、1)
逆転の場合
- (A、B、nA、nB)=(0、0、0、1)
- (A、B、nA、nB)=(0、0、1、0)
- (A、B、nA、nB)=(0、1、0、0)
- (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)の組み合わせは、次のようになる。
正転の場合
- (A、B、nA、nB)=(0、0、1、1)
- (A、B、nA、nB)=(1、0、0、1)
- (A、B、nA、nB)=(1、1、0、0)
- (A、B、nA、nB)=(0、1、1、0)
逆転の場合
- (A、B、nA、nB)=(0、0、1、1)
- (A、B、nA、nB)=(0、1、1、0)
- (A、B、nA、nB)=(1、1、0、0)
- (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 ;
}
目次
前
次