実験の目的

手でステッピングモータの励磁パルスを作るのでは、あまり実用的ではなく回転速度も上げられない。次にプログラムが起動するとモータが回り続けるようなプログラムを作成する。

実験手順

実験回路の結線

回路の接続は実験3と同じである。


プログラム

以下のプログラムよりHEXファイルを作成し、PICにプログラムせよ。

;
;               実験4 1相励磁ステッピングモータ駆動プログラム
;
; CONFIG1
 __CONFIG _CONFIG1, _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CCPMX_RB0 & _CP_OFF
; CONFIG2
 __CONFIG _CONFIG2, _FCMEN_ON & _IESO_ON

                list            p=16F87
                #include        <p16F87.inc>


                ORG             0x000           ; リセットベクタを 0番地に指定

                BSF             STATUS,RP0      ; STATUSのビットPR0をセット(BANK 1)
                MOVLW           B'00001111'     ; WレジスタにB'00001111'を転送
                MOVWF           TRISA           ; Aポートの下位4bitを入力に設定
                CLRF            TRISB           ; Bポートを全て出力に設定

                BCF             STATUS,RP0      ; STATUSのビットPR0をセット(BANK 0)

COUNT1          EQU             0x20
COUNT2          EQU             0x21

LOOP0           MOVLW           B'00001'        ; WレジスタにB'00001'を転送
                MOVWF           PORTB           ; Wレジスタの値をBポートに転送
                CALL            WAIT
                MOVLW           B'00010'        ; WレジスタにB'00010'を転送
                MOVWF           PORTB           ; Wレジスタの値をBポートに転送
                CALL            WAIT
                MOVLW           B'00100'        ; WレジスタにB'00100'を転送
                MOVWF           PORTB           ; Wレジスタの値をBポートに転送
                CALL            WAIT
                MOVLW           B'01000'        ; WレジスタにB'01000'を転送
                MOVWF           PORTB           ; Wレジスタの値をBポートに転送
                CALL            WAIT
                GOTO            LOOP0           ; ラベルLOOP0へジャンプ

;               無駄時間待ち処理 WAIT

WAIT            MOVLW           0xFF            ; Wレジスタに0xFFを転送(回転数調整用)
                MOVWF           COUNT1          ; COUNT1にWレジスタの内容を転送
LOOP1           CALL            WAIT1           ; WAIT1をサブルーチンコール
                DECFSZ          COUNT1,F        ; COUNT1を減算してCOUNT1に格納
                GOTO            LOOP1           ; COUNT1が0でなければ繰り返す
                RETURN                          ; COUNT1が0になったら戻る。

WAIT1           MOVLW           0xFF            ; Wレジスタに0xFFを転送(回転数調整用)
                MOVWF           COUNT2          ; COUNT2にWレジスタの内容を転送
LOOP2           NOP                             ; 1命令サイクル消費
                DECFSZ          COUNT2,F        ; COUNT2を減算してCOUNT2に格納
                GOTO            LOOP2           ; COUNT2が0でなければ繰り返す
                RETURN                          ; COUNT2が0になったら戻る。
                END

List.2 1相励磁ステッピングモータ駆動プログラム


MPLAB IDEでアセンブルする際、[Source Files]下にファイルが複数あるとエラーが発生することがある。その場合は使わないファイルを右クリックし[Remove]を選択し削除する必要がある。

動作させると、ステッピングモータが回り続ける(図4-1)

図4-1

図4-1 ステッピングモータ動作の様子

励磁波形の観測ならびに回転数の測定

オシロスコープにより、X、X、Y、Y の各相の励磁波形を観測せよ(図4-2)。また、この励磁波形より、ステッピングモータの回転数を求めよ。

図4-2

図4-2 励磁波形の観測

応用

  1. 回転数を変化させてみなさい。このとき、プログラムの各設定値と、これに対する回転数を記録しておくこと。
  2. 回転方向を逆にしてみなさい。このときの励磁波形を記録しておくこと。