當前位置:首頁 » 自動清洗 » 步進電機怎樣對時間進行定時
擴展閱讀
怎樣可以防盜蘋果手機 2025-06-21 12:08:51
怎樣做獅子面具圖片 2025-06-21 12:00:40

步進電機怎樣對時間進行定時

發布時間: 2022-09-26 16:19:30

㈠ 如何用單片機控制步進電機運行時間

時間要求准確一點的話,用單片機的定時器實現定時4S,定時時間到後產生中斷,停止步進電機,同時再定時2S,定時時間到後產生中斷,運行步進電機。要求不高的話直接軟體延時即可。

㈡ 怎樣控制步進電機的轉動時間

步進電機控制的是步數,單位時間走不同的步數也就是不同的速度。因此,控制步與步之間的時間間隔達到你所需的速度是控制的實質。那麼在某個速度下正反向都轉同樣的步數也就實現了你的要求。

㈢ 怎麼用PLC控制步進電機每5分鍾運行一次

加入一個時間模塊,在模塊的參數為300秒,在時間模塊後面加一個觸發器,在來一個時間延時模塊就搞定就可以了

㈣ 步進電機,怎麼控制每分鍾多少轉,用什麼指令

每分鍾多少轉是可以計算的:
首先知道你的步進電機的步進角,0.18°,0.72°還是0.072°等等,設這個量是d0;
其次知道你的步進電機是否配備減速機,確認減速比,設這個量是d1;
再次你的指令頻率是多少,靠程序可以寫的,設這個量是d2;
下面開始計算:
步進角d0,馬達轉動一周所需要脈沖量為360/d0;
減速機的減速比為d1,外部機構轉動一周所需亞id脈沖量為馬達一周脈沖量乘以減速比,
即(360/d0)*d1;
指令頻率的單位為pls/s,即1秒所發脈沖數,所以每分鍾的脈沖數為60d2;
外部機構每分鍾轉數為60d2/[(360/d0)*d1]
***************補充說明************
d0和d1已經是已知條件了,你設定的轉數n=60d2/[(360/d0)*d1]
裡面就一個未知量d2,也就是你的脈沖數,所以根據你要求的轉數,和已知條件d0和d1,你就可以求出來你的轉速了,然後寫入程序就可以了。
不過有一點,沒有考慮馬達由零速啟動到目標轉速所需要的時間,因為時間為毫秒級,很短,可以忽略不計,所以就沒有考慮了。
****************************************************
希望你能完全看懂,順便祝你成功!

㈤ 步進電機基本控制方法

進電機的基本控制方法有幾下幾種情況:1、採用專用晶元,這樣控制簡單,成本就低,但一般工作電流不大約2A左右,工作電壓不高,36VDC左右;2、採用MCU+功率器件的方式,電流通過模擬電路來控制,MCU提供細分環形分配器,這種方式,控制相對簡單,工作電流和電壓都可以做大,但控制參數一般比較固定,應用不靈活;3、採用DSP實現全數字式控制,控制比較復雜,但控制演算法靈活,可以自動整定不同電機的控制參數。

㈥ 步進電機高手請進!!

四相電機.驅動如下: 圖1是35BY型永磁步進電機的外形圖,圖2是該電機的接線圖,從圖中可以看出,電機共有四組線圈,四組線圈的一個端點連在一起引出,這樣一共有5根引出線。要使用步進電機轉動,只要輪流給各引出端通電即可。將COM端標識為C,只要AC、 C、BC、 C,輪流加電就能驅動步進電機運轉,加電的方式可以有多種,如果將COM端接正電源,那麼只要用開關元件(如三極體),將A、 、B、 輪流接地。
下表列出了該電機的一些典型參數:
表1 35BY48S03型步機電機參數
型號 步距角 相數 電壓 電流 電阻 最大靜轉距 定位轉距 轉動慣量
35BY48S03 7.5 4 12 0.26 47 180 65 2.5
有了這些參數,不難設計出控制電路,因其工作電壓為12V,最大電流為0.26A,因此用一塊開路輸出達林頓驅動器(ULN2003)來作為驅動,通過P1.4~P1.7來控制各線圈的接通與切斷,電路如圖3所示。開機時,P1.4~P1.7均為高電平,依次將P1.4~P1.7切換為低電平即可驅動步進電機運行,注意在切換之前將前一個輸出引腳變為高電平。如果要改變電機的轉動速度只要改變兩次接通之間的時間,而要改變電機的轉動方向,只要改變各線圈接通的順序。

圖1 35BY48S03型步進電機外形圖

圖2 35BY48S03型步進電機的接線圖

圖3 單片機控制35BY48S03型步進電機的電路原理圖
三、步進電機的驅動實例
要求:控制電路如圖3所示,開機後,電機不轉,按下啟動鍵,電機旋轉,速度為25轉/分,按下加1鍵,速度增加,按下減1鍵,速度降低,最高速度為100轉/分,最低轉帶為25轉/分,按下停止鍵,電機停轉。速度值要求在數碼管上顯示出來。

1.要求分析
按上面的分析,改變轉速,只要改變P1.0~P1.3輪流變低電平的時間即可達到要求,這個時間不應採用延時來實現,因為會影響到其他功能的實現。這里以定時的方式來實現。下面首先計算一下定時時間。
按要求,最低轉速為25轉/分,而上述步進電機的步距角為7.5,即每48個脈沖為1周,即在最低轉速時,要求為1200脈沖/分,相當於50ms/脈沖。而在最高轉速時,要求為100轉/分,即48000脈沖/分,相當於12.5ms/脈沖。可以列出下表
表1 步進電機轉速與定時器定時常數關系
速度 單步時間(us) TH1 TL1 實際定時(us)
25 50000 76 0 49996.8
26 48077 82 236 48074.18
27 46296 89 86 46292.61
28 44643 95 73 44640.155
… … … … …
100 12500 211 0 12499.2
表中不僅計算出了TH1和TL1,而且還計算出了在這個定時常數下,真實的定時時間,可以根據這個計算值來估算真實速度與理論速度的誤差值。
表中TH1和TL1是根據定時時間算出來的定時初值,這里用到的晶振是11.0592M。有了上述表格,程序就不難實現了,使用定時/計數器T1為定時器,定時時間到後切換輸出腳即可。

2.程序實現
定義DSB-1A實驗板的S1為啟動鍵,S2為停止鍵,S3為加1鍵,S4為減1鍵,程序如下:

StartEnd bit 01H ;起動及停止標志
MinSpd EQU 25 ;起始轉動速度
MaxSpd EQU 100 ;最高轉動速度
Speed DATA 23H ;流動速度計數
DjCount DATA 24H ;控制電機輸出的一個值,初始為11110 111
Hidden EQU 10H ;消隱碼
Counter DATA 57H ;顯示計數器
DISPBUF DATA 58H ;顯示緩沖區

ORG 0000H
AJMP MAIN
ORG 000BH
JMP DISP
ORG 001BH
JMP DJZD
ORG 30H
MAIN:
MOV SP,#5FH
MOV P1,#0FFH
MOV A,#Hidden
MOV DispBuf,A
MOV DispBuf+1,A
MOV DispBuf+2,A

MOV DjCount,#11110111B
MOV SPEED,#MinSpd ;起始轉動速度送入計數器
CLR StartEnd ;停轉狀態
MOV TMOD,#00010001B ;
MOV TH0,#HIGH(65536-3000)
MOV TL0,#LOW(65536-3000)
MOV TH1,#0FFH;
MOV TL1,#0FFH
SETB TR0
SETB EA
SETB ET0
SETB ET1

LOOP: ACALL KEY ;鍵盤程序
JNB F0,m_NEXT1 ;無鍵繼續
ACALL KEYPROC ;否則調用鍵盤處理程序
m_NEXT1:
MOV A,Speed
MOV B,#10
DIV AB
MOV DispBuf+5,B ;最低位
MOV B,#10
DIV AB
MOV DispBuf+4,B
MOV DispBuf+3,A
JB StartEnd,m_Next2
CLR TR1 ;關閉電機
JMP LOOP
ORL P1,#11110000B
m_Next2:
SETB TR1 ;啟動電機
AJMP LOOP ;主程序結束
;---------------------------------------
D10ms:
……
;---------延時程序,鍵盤處理中調用
KEYPROC:
MOV A,B ;獲取鍵值
JB ACC.2,StartStop ;分析鍵的代碼,某位被按下,則該位為1
JB ACC.3,KeySty
JB ACC.4,UpSpd
JB ACC.5,DowSpd
AJMP KEY_RET
StartStop:
SETB StartEnd ;啟動
AJMP KEY_RET
KeySty:
CLR StartEnd; ;停止
AJMP KEY_RET
UpSpd:
INC SPEED;
MOV A,SPEED
CJNE A,#MaxSpd,K1 ;到了最多的次數?
DEC SPEED ;是則減去1,保證下次仍為該值
K1:
AJMP KEY_RET
DowSpd:
DEC SPEED
MOV A,SPEED
CJNE A,#MAXSPD,KEY_RET ;不等(未到最大值),返回
MOV SPEED,#MinSpd;
KEY_RET:
RET

KEY:
……獲取鍵值的程序
RET

DjZd: ;定時器T1用於電機轉速控制
PUSH ACC
PUSH PSW
MOV A,Speed
SUBB A,#MinSpd ;減基準數
MOV DPTR,#DjH
MOVC A,@A+DPTR
MOV TH1,A
MOV A,Speed
SUBB A,#MinSpd
MOV DPTR,#DjL
MOVC A,@A+DPTR
MOV TL1,A
MOV A,DjCount
CPL A
ORL P1,A
MOV A,DjCount
JNB ACC.7,d_Next1
JMP d_Next2
d_Next1:
MOV DjCount,#11110111B
d_Next2:
MOV A,DjCount
RL A
MOV DjCount,A ;回存
ANL P1,A
POP PSW
POP ACC
RETI

DjH: DB 76,82,89,95,100,106,110,115,119,123,12……
DjL: DB 0,236,86,73,212,0,214,96,163,165
……

DISP: ;顯示程序
POP PSW
POP ACC
……
RETI
BitTab: DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBH
DISPTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
END

3.程序分析
本程序主要由鍵盤程序、顯示器程序、步進電機驅動程序三部份組成,主程序首先初始化各變數,將顯示器的高3位消隱,步進電機驅動的各引腳均輸出高電平,然後調用鍵盤程序,並作判斷,如果有鍵按下,則調用鍵盤處理程序,否則直接轉下一步。下一步是將當前的轉速值轉換為BCD碼,送入顯示緩沖區;接著判斷StartEnd這個位變數,是「1」還是「0」,如果是「1」,則開啟定時器T1,否則關閉定時器T1,為防止關閉時某一相線圈長期通電,因此,在關閉定時器T1時,將P1.0~P1.3均置高。至此,主程序的工作即結束。這里為簡便起見,這里沒有做高位「0」消隱的工作,即如果速度為10轉/分,則顯示值「010」,讀者可以自行加入相關的代碼來處理這一工作。
步進電機的驅動工作是在定時器T1的中斷服務程序中實現的,由前述分析,每次的定時時間到達以後,需要將P1.0~P1.3依次接通,程度中用了一個變數DjCntr來實現這一功能,在主程序初始化時,該變數被賦予初值11110111B,進入到定時中斷以後,將該變數取出送ACC累加器,並在累加器中進行左移,這樣,該數值就變為1110 1111,然後將該數與P1相「與」,此時,P1.4即輸出低電平,第二次進入中斷時,先將該數取反,成為 0001 0000,然後將該數與P1相「或」,這樣,P1.4即輸出高電平,關斷了相應的線圈,然後將該數重新取出,並作左移,即 1110,1111右移成為1101 1111,將該數與P1相「與」,這樣P1.5即輸出低電平,依次類推,P1.7~P1.4即循環輸出低電平。當這一數據變為0111 1111後,需要作適當的改動,將數據重新變回 1111 0111,進行第二次循環,相關代碼,請讀者自行分析。
定時時間又是如何確定的呢?這里用的是查表的方法,首先用Excel計算得出在每一種轉速下的TH值和TL值,然後,分別放入DjH和DjL表中,在進入T1中斷程序之後,將速度值變數Speed送入累加器ACC,然後減去基數25,使其基數從0開始計數,然後分別查表,送入TH1和TL1,實現重置定時初值的目的。
看完這一部份內容以後,請讀者自行完成以下工作:

1. 更改程序,將S1定義為「啟動/停止」,而S2定義為「方向」,按下S2,切換電機旋轉方向。

2. 更改程序,要求轉速從1到100。

3. 更改程序,實現首位無效零消隱。

㈦ 步進電機如何設定加減速時間,1.8度電機,4細分

比較容易啊,你在定時器里設置一個變數作為你步進電機的加速時間,比如2.5ms為最大(2500),如果你開始啟動的時候,設置為5ms(5000),那麼,這個加速時間假如為:speed_add_time,運轉換相時間a-b-c-d為move_phase_time;初始化為move_phase_time =5000;
則在1ms定時器里:
sys_timer1ms++;
if(sys_timer1ms>=30) //每30ms減少換相時間1次
{
sys_timer1ms=0;
if(speed_add_time>2500) //如果大於2.5ms。
{
speed_add_time -=50; //每次減50,即從5000減少到2500的過程;
}
else
{ speed_add_time = 2500;move_flag=1;}

}

以上僅提供給您思路而已。