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