<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 汽車電子 > 設計應用 > 在HCS08系列MCU上用軟件實現(xiàn)儀表步進電機的驅(qū)動

          在HCS08系列MCU上用軟件實現(xiàn)儀表步進電機的驅(qū)動

          作者:傅志強 飛思卡爾半導體成都分公司 時間:2010-05-21 來源:電子產(chǎn)品世界 收藏

            

          本文引用地址:http://www.ex-cimer.com/article/109228.htm

            本為應用程序提供的接口函數(shù)有三個:

            1.InitStepper:初始化函數(shù),對驅(qū)動所用到的I/O口和定時器進行設置,并讓轉(zhuǎn)到初始位置——使儀表的指針指到零點的位置。

            函數(shù)原型:void InitStepper(void);

            參數(shù):無;

            返回值:無。

            2.SetStepperTarget:設定的目標位置,也就是要讓儀表的指針轉(zhuǎn)到哪個位置(以相對于零點的角度來表示),整個轉(zhuǎn)動的過程(如需要轉(zhuǎn)多少步,往哪個方向轉(zhuǎn)等)應用程序無需知道,而且應用程序可以指定任意目標位置。

            函數(shù)原型:void SetStepperTarget(word wTargetDegree);

            參數(shù):word wTargetDegree,目標位置相對于零點的角度,其值是以(1/12)度(等于微步方式下的步距)為單位的;

            返回值:無。

            3.GetStepperCurrent:得到步進電機的當前位置。

            函數(shù)原型:word GetStepperCurrent(void);

            參數(shù):無;

            返回值:返回儀表的指針當前所指的位置(以相對于零點的角度來表示),其值也以(1/12)度(等于微步方式下的步距)為單位。

            另外,在頭文件Stepper.h中定義了選擇驅(qū)動方式的宏,使用者修改宏定義就可以選擇分步驅(qū)動方式或微步驅(qū)動方式,如下:

            #define STEPPER_PARTIAL_MODE 0

            #define STEPPER_MICRO_MODE !STEPPER_PARTIAL_MODE

            如前所述,驅(qū)動信號的變化速度不能太快,每次變化后都必須保持一段時間不變,為了讓占用的CPU的處理時間更少,就需要用到一個定時器。除了上面的三個接口函數(shù)外,驅(qū)動程序的其余部分都在定時器的中斷服務程序中運行。

            在驅(qū)動程序中,用兩個靜態(tài)變量來保存步進電機的目標位置和當前位置,其值是到零點的步數(shù)。定時器中斷由SetStepperTarget函數(shù)使能,在中斷服務程序中根據(jù)目標位置和當前位置的差值來決定步進電機轉(zhuǎn)動的方向和步數(shù),然后根據(jù)選擇的驅(qū)動方式執(zhí)行相應的轉(zhuǎn)動程序。

          pwm相關文章:pwm是什么




          評論


          相關推薦

          技術(shù)專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();