• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 用單片機控制直流電機

    用單片機控制直流電機

    作者: 時間:2011-05-01 來源:網絡 收藏

    系統主函數流程如圖三:

    ①PWM脈寬:本設計中采用軟件延時方式對脈沖寬度進行,延時程序函數如下:
    void delay(unsigned char dlylevel){
    int i=50*dlylevel;
    while(--i);}
    此函數為帶參數DLYLEVEL,約產生DLYLEVEL*400us的延時,因此一個脈沖周期可以由高電平持續時間系數hlt和低電平持續時間系數llt組成,本設計中采用的脈沖頻率為25Hz,可得hlt+llt=100,占空比為hlt/(hlt+llt),因此要實現定頻調寬的調速方式,只需通過程序改變全局變量hlt,llt的值,該子程序流程圖如圖四。
    ②鍵盤中斷處理子程序:采用中斷方式,按下鍵,P3.2腳產生一負跳沿,響應該中斷處理程序,完成延時去抖動、鍵碼識別、按鍵功能執行。


    調速檔、持續加/減速:調速檔通過(0-6)共七檔固定占空比,即相應檔位相應改變hlt,llt的值,以實現調速檔位的實現。而要實現按住加/減速鍵不放時恒加或恒減速直到放開停止,就需在判斷是否松開該按鍵時,每進行一次增加/減少1%占空比(即hlt++/--;llt--/++),其程序流程圖如圖五。
    ③顯示子程序:利用數組方式定義顯示緩存區,緩存區有8位,分別存放各個LED管要顯示的值。顯示子程序為一帶參子程序,參數為顯示緩存的數組名,通過for(i=0;i8;i++)方式對每位加上位選碼,送到P0口并進行一兩毫秒延時。
    該顯示子程序只對各個LED管分別點亮一次,因此在運行過程中,每秒執行的次數不應低于每秒24次。
    ④定時中斷處理程序:采用定時方式1,因為使用12M晶振,可產生最高約為65.5ms的延時。對定時器置初值3CB0H可定時50ms,即系統時鐘精度可達0.05s。當50ms定時時間到,定時器溢出則響應該定時中斷處理程序,完成對定時器的再次賦值,并對全局變量time加1,這樣,通過變量time可計算出系統的運行時間。
    對于一個數的顯示,先應轉成BCD碼,即取出每一個位,分別送入顯示緩存區,對于轉BCD的算法,應對一個數循環除10取模,直至為0,程序如下:
    do{dispbuff[bcd_p]=bechange%10;//dispbuff為顯示緩沖區數組
    bcd_p++;}while(bechange/=10) //disp_p為數組指針
    軟件設計中的特點:
    1、對于的啟停,在PWM上使用漸變的脈寬調整,即開啟后由停止勻加速到默認速度,停止則由于當前速度逐漸降至零。這樣有利于保護,如運用于小車上,在啟動上采用此方式也可加大啟動速度,防止打滑。
    2、對于運行時間的計算、顯示。配合傳感器技術可用于計算距離,速度等重要的運行數據。
    3、鍵盤處理上采用中斷方式,不必使程序對鍵盤反復掃描,提高了程序的效率。

    三、測試結果與分析:

    結束語
    本設計在硬件上采用了基于PWM技術的H型橋式驅動電路,解決了電機馬驅動的效率問題,在軟件上也采用較為合理的系統結構及算法,提高了的使用效率,且具有一定的防飛能力。但該設計也有不足之處,主要是在關于速度的反饋上,無法提供較為直觀的速度表示方式,因此,有必要引入傳感器技術對速度進行反饋,以rpm或rps表達當前的轉速進行顯示。


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 青神县| 洪湖市| 内黄县| 五峰| 图片| 桦南县| 马公市| 白城市| 化德县| 郸城县| 宣恩县| 长乐市| 凤阳县| 沈丘县| 庆城县| 台江县| 洪湖市| 庄河市| 车致| 土默特左旗| 宁南县| 顺昌县| 乐至县| 普宁市| 时尚| 台南市| 平阳县| 昌江| 昭觉县| 新宁县| 长岛县| 柞水县| 长兴县| 门头沟区| 张家界市| 临江市| 克拉玛依市| 吉首市| 聊城市| 兴业县| 原平市|