標題: 請教如下程序哪里寫錯了 [打印本頁]

作者: mercurydawn    時間: 2013-6-14 22:16
標題: 請教如下程序哪里寫錯了
寫了個步進電機小程序, 不知道哪里出問題了,請教各位大神。
說明: P0.0正轉按鍵, P0.1反轉按鍵。  步進電機接P1引腳的高4位。
癥狀: 當按下反轉鍵時, 電機正常反轉, 但是如果按下正轉, 電機內部在運行,但是不轉,可以感覺到震動。
于是就把P1的高4位連接到LED上看脈沖時序。
結果發(fā)現, 當按下反轉時, 電機是按照P2.7-P2.6-P2.5-P2.4    -P2.7-P2.6-P2.5-P2.4.......這樣的順序發(fā)出脈沖,電機是正常在反轉。
但是按下正轉鍵時, 電機是按照P2.7-P2.6-P2.5-P2.4-P2.5-P2.6-P2.7-P2.6-P2.5-P2.4-P2.5..........是迂回的順序,所以電機雖然震動,內部轉自在轉,卻是幾步在往復運動,所以不轉。

請各位看看, 我哪里寫錯了。謝謝了。

ORG 0000H
    LJMP START
    ORG 0100H
START:   MOV R2,#00H
    MOV R3,#00H
    MOV R4,#00H
    MOV P0,#00H
    MOV P1,#00H
SCAN:   MOV P0,#03H
    JNB P0.0, ZZ
    JNB P0.1, FZ
    SJMP SCAN
ZZ:    MOV R2,#00H
LOOP1:   MOV A,R2
    MOV DPTR,#TAB1
    MOVC A,@A+DPTR
    JZ ZZ
    MOV P1,A
    LCALL DELAY
    INC R2
    LCALL SCN
    LJMP LOOP1
FZ:    MOV R2,#00H
LOOP2:   MOV A,R2
    MOV DPTR,#TAB2
    MOVC A,@A+DPTR
    JZ FZ
    MOV P1,A
    LCALL DELAY
    INC R2
    LCALL SCN
    LJMP LOOP2
SCN:   JNB P0.0,LOOP1
    JNB P0.1,LOOP2
    RET
DELAY:    MOV R3,#60H
M1:    MOV R4,#60H
    DJNZ R4,$
    DJNZ R3,M1
    RET
TAB1:   DB 80H,40H,20H,10H
TAB2:   DB 10H,20H,40H,80H
    END

作者: ahshmj    時間: 2013-6-15 08:49
本帖最后由 ahshmj 于 2013-6-15 08:51 編輯

可能是失步了。
引用:“步進電機有一個技術參數:空載啟動頻率,即步進電機在空載情況下能夠正常啟動的脈沖頻率,如果脈沖頻率高于該值,電機不能正常啟動,可能發(fā)生丟步或堵轉。在有負載的情況下,啟動頻率應更低。如果要使電機達到高速轉動,脈沖頻率應該有加速過程,即啟動頻率較低,然后按一定加速度升到所希望的高頻(電機轉速從低速升到高速)!

步進電機從正傳突然轉入反轉,比一般的負荷都重,所以會這樣。
你可以在轉入反轉時,加一點延時。

作者: mercurydawn    時間: 2013-6-15 12:44
謝謝回復。
我程序中LOOP1和LOOP2兩段是完全一樣的程序。
如果說是轉向的時候阻力大導致失步可能性不大,因為即使我上來第一次按的就是正轉, 電機也不轉。
相反, 反轉鍵隨時按都可以正常運作。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1