基于XC2267M的儀表盤步進電機控制
比如,最低的速度等級元素為100,則在主循環(huán)里,Move_One_Step_Enable被置為1,Move-time賦值為100。在此后的第一個中斷里,電機運行一步,Move_One_Step_Enable=0,同時Move-time減為99。此后,主程序和中斷程序都不進行任何操作,直到第100次中斷發(fā)生,Move-time減為0,才再一次進入主循環(huán)對Move-time賦值。也就是說,在(200×100)μs的時間里,步進電機只行動了一次。相反,如果速度等級高,則Move-time的賦值相應小,電機會在更短的時間內再次行動,使步進電機轉速看上去“提高”了。本文引用地址:http://m.butianyuan.cn/article/163231.htm
為保證速度之間過渡的平滑性,防止突變對步進電機造成的損傷,每3次進入主循環(huán)才允許更改一次速度等級,即每個速度等級步進電機至少走3步。
4 主函數詳解
首先判斷指針是否需要轉動,如果否,直接跳到結束,等待新一輪判斷。如果判定結果為需要轉動,繼續(xù)判斷上一步是正向還是反向運動。
圖2 主函數流程圖
若判定結果為正向運動,進入正向運動模塊,繼續(xù)判斷當前位置和目標位置是否一致。
如果目標位置和當前位置一致,則表明指針已到達指定位置,此時進入防抖模塊,并將Move-time 置為1。
如果目標位置和當前位置不一致,則要進一步判斷目標位置是否大于當前位置。如果目標位置小于當前位置,則表明在步進電機的正向運動中檢測到反向運動的請求。此時,進入反向運動需求相應模塊,逐漸減小步進電機轉速,最后改變步進電機運行方向標志位。
如果目標位置大于當前位置,則表示運動需求仍為正向,此時需要判斷目標位置和當前位置之差的大小。如果位置差很大,而步進電機轉速沒有到達最大,則提速;如果轉速已達到最大,則保持該速度。如果位置差小于某一特定值,則進入減速狀態(tài)。
評論