在HCS08系列MCU上用軟件實(shí)現(xiàn)儀表步進(jìn)電機(jī)的驅(qū)動(dòng)
本驅(qū)動(dòng)程序為應(yīng)用程序提供的接口函數(shù)有三個(gè):
1.InitStepper:初始化函數(shù),對(duì)驅(qū)動(dòng)所用到的I/O口和定時(shí)器進(jìn)行設(shè)置,并讓步進(jìn)電機(jī)轉(zhuǎn)到初始位置——使儀表的指針指到零點(diǎn)的位置。
函數(shù)原型:void InitStepper(void);
參數(shù):無(wú);
返回值:無(wú)。
2.SetStepperTarget:設(shè)定步進(jìn)電機(jī)的目標(biāo)位置,也就是要讓儀表的指針轉(zhuǎn)到哪個(gè)位置(以相對(duì)于零點(diǎn)的角度來(lái)表示),整個(gè)轉(zhuǎn)動(dòng)的過(guò)程(如需要轉(zhuǎn)多少步,往哪個(gè)方向轉(zhuǎn)等)應(yīng)用程序無(wú)需知道,而且應(yīng)用程序可以指定任意目標(biāo)位置。
函數(shù)原型:void SetStepperTarget(word wTargetDegree);
參數(shù):word wTargetDegree,目標(biāo)位置相對(duì)于零點(diǎn)的角度,其值是以(1/12)度(等于微步方式下的步距)為單位的;
返回值:無(wú)。
3.GetStepperCurrent:得到步進(jìn)電機(jī)的當(dāng)前位置。
函數(shù)原型:word GetStepperCurrent(void);
參數(shù):無(wú);
返回值:返回儀表的指針當(dāng)前所指的位置(以相對(duì)于零點(diǎn)的角度來(lái)表示),其值也以(1/12)度(等于微步方式下的步距)為單位。
另外,在頭文件Stepper.h中定義了選擇驅(qū)動(dòng)方式的宏,使用者修改宏定義就可以選擇分步驅(qū)動(dòng)方式或微步驅(qū)動(dòng)方式,如下:
#define STEPPER_PARTIAL_MODE 0
#define STEPPER_MICRO_MODE !STEPPER_PARTIAL_MODE
如前所述,驅(qū)動(dòng)信號(hào)的變化速度不能太快,每次變化后都必須保持一段時(shí)間不變,為了讓驅(qū)動(dòng)程序占用的CPU的處理時(shí)間更少,就需要用到一個(gè)定時(shí)器。除了上面的三個(gè)接口函數(shù)外,驅(qū)動(dòng)程序的其余部分都在定時(shí)器的中斷服務(wù)程序中運(yùn)行。
在驅(qū)動(dòng)程序中,用兩個(gè)靜態(tài)變量來(lái)保存步進(jìn)電機(jī)的目標(biāo)位置和當(dāng)前位置,其值是到零點(diǎn)的步數(shù)。定時(shí)器中斷由SetStepperTarget函數(shù)使能,在中斷服務(wù)程序中根據(jù)目標(biāo)位置和當(dāng)前位置的差值來(lái)決定步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的方向和步數(shù),然后根據(jù)選擇的驅(qū)動(dòng)方式執(zhí)行相應(yīng)的轉(zhuǎn)動(dòng)程序。
pwm相關(guān)文章:pwm是什么
評(píng)論