新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種基于C8051F單片機的直流無刷電機轉速控制系統

        一種基于C8051F單片機的直流無刷電機轉速控制系統

        作者: 時間:2011-02-28 來源:網絡 收藏
        [摘要]:該文以C8051F020為例介紹了C8051F在無刷直流電機轉速控制中的應用、實現方法、硬件結構及軟件結構等。
        [關鍵詞]:、無刷直流電機、轉速控制
        [Abstract]:,configuration of software and hardware.
        [Keywords] ,direct current and brushless motor, rotate speed Control
        The article introduces application of C8051F020 in rotate speed Control of direct current and brushless motor, realization method
        引言:
        具有梯形反電動勢的永磁同步電動機通常被稱為無刷直流電動機,它具有結構簡單、體積小、重量輕、效率高、高功率密度、啟動扭矩大、慣量小和響應快等其它種類直流電機無法比擬的特性。采用電子換向器替代了傳統直流電動機的機械換向裝置,從而克服了電刷和換向器所引起的噪聲、火花、電磁干擾、壽命短等一系列弊病。由于無刷直流電動機既具備交流電動機的結構簡單、運行可靠、維護方便等一系列優點,又具有直流電動機的運行效率高、無勵磁損耗以及調速性能好等諸多優點,故其在在家用消費類產品(空調、冰箱、洗衣機)和IT周邊產品(打印機、軟驅、硬驅)中得到廣泛的應用。
        C8051F是美國Silabs公司推出的一種與51系列單片機內核兼容的單片機,具有高速、高性能、高集成度。以C8051F020為例,具有如下特點:
        C8051F020片上系統單片機片內資源:
        一、模塊外設
        (1)逐次逼近型8路12位ADC0
        轉換速率最大100ksps
        可編程增益放大器PGA
        溫度傳感器
        (2)8路8位ADC1輸入與P1口復用
        轉換速率500ksps
        可編程增益放大器PGA
        (3)兩個12 位DAC
        (4)兩個模擬電壓比較器
        (5)電壓基準內部提供2.43V
        外部基準可輸入
        (6)精確的VDD監視器
        二、高速8051微控制器內核
        流水線式指令結構速度可達25MIPS
        22個矢量中斷源
        三、存儲器
        片內4352字節數據RAM
        64KBFlash程序存儲器可作非易失性存儲
        外部可擴展的64KB 數據存儲器接口
        四、數字外設
        8個8位的端口I/O
        I2CSPI2個增強型UART串口
        可編程的16位計數器/定時器陣列(PCA)
        5個通用16位計數器/定時器
        專用的看門狗WDT
        五、JTAG調試和邊界掃描接口,可實現在線實時動態調試。
        由以上特點可以看出,C8051F單片機具有豐富的片上硬件資源及高運算速度,這為實現復雜的控制算法提供了保障,而且幾乎不需系統擴展即可滿足控制系統對硬件資源的需求,極大地提高了系統可靠性。
        硬件部分:
        硬件部分主要由電機、電機驅動電路及單片機及顯示塊組成。其功能框圖如下:

        電機驅動采用美國安森美公司開發的高性能第二代單元無刷直流電機控制器MC33035。該芯片內部具有定頻調寬PWM電路,它集譯碼、過熱、過流、欠壓保護、正反轉控制等諸多功能于一身,是一種功能齊全的電機控制器。
        通過脈寬調制PWM來控制電動機電樞電壓可以實現調速。在正常情況下,誤差放大器輸出與振蕩器輸出鋸齒波信號比較后,產生脈寬調制(PWM)信號如下圖所示。改變輸出脈沖寬度,相當于改變供給電動機繞組的平均電壓,從而控制其轉速。所以我們可以通過單片機控制DAC0的輸出,控制輸入到直流無刷電機的電壓,進而控制PWM波的占空比達到控制電機轉速的目的。
        MC33035的脈寬調節原理圖

        軟件部分
        無刷直流電機內置3個霍爾效應傳感器,用來檢測轉子的位置,也決定電機的換相,并可以根據該信號來計算電機的轉速。當電機正常運行時,通過霍爾傳感器可得到3個脈寬為180度電角度的互相重疊的信號,而電機轉速的改變可以從位置傳感器輸出脈沖頻率的改變上反映出來,因此可以利用單片機對這個脈沖信號進行監測得到電機轉速。因頻率和轉速成正比測量,所以測出輸出脈沖的頻率即可計算出轉速。另外,為了提高精度,高速(>/1000HZ)采用測頻法,低速(1000HZ)采用測周法。
        將脈沖信號輸出與INT0連接,采用INT0中斷對轉速脈沖計數,每1s讀一次計數值,將此值與預設的轉速值比較,若大于預設的轉速值,則減小DAC0的數值;若小于預設的轉速值,則增加DAC0的值,調整電機的轉速直到轉速值等于預設定的值。電機當前的轉速值可在七段數碼管上顯示,在電機的可控范圍內控制電機轉速等于預設值。
        程序框圖:

        單片機程序采用C51完成,部分源程序如下:
        一、系統時鐘初始化,采用18.432MHZ外部晶振:
        void SYSCLK_Init (void)
        {
        int i; //延時計數器
        OSCXCN=0x67; //開啟外部振蕩器18.432MHz晶體
        for(i=0;i256;i++) ; //等待振蕩器啟振
        while(!(OSCXCN0x80)) ; //等待晶體振蕩器穩定
        OSCICN=0x88; //選擇外部振蕩器為系統時鐘源并允許丟失時鐘檢測器
        }
        二、IO口初始化
        void PORT_Init (void)
        {
        XBR0 =0x07; //使能SMBus,SPI0,和UART0
        XBR1 =0x04; //P1.0---int0
        XBR2 =0x40; //使能數據交叉開關和弱上拉
        EMI0CF =0x27;
        EMI0TC =0x21;
        P74OUT =0xFF;
        P0MDOUT =0x15;
        P1MDOUT |=0x3C; //P1.2-P1.5推挽輸出
        P1 = 0xc3;//P1.2-P1.5=0
        }
        三、定時器0初始化,定時時間為1ms
        void Timer0_Init (void)
        {
        CKCON|=0x8;
        TMOD|=0x1; //16位
        Count1ms=10;
        TR0 = 0; //停止定時器0
        TH0 = (-SYSCLK/1000) >> 8; //設初值,1ms時溢出
        TL0 = -SYSCLK/1000;
        TR0 = 1; //開啟定時器0
        IE|= 0x2;
        }
        四、Timer0中斷:
        void Timer0_ISR (void) interrupt 1
        {
        TH0 = (-SYSCLK/1000) >> 8;
        TL0 = -SYSCLK/1000;
        if (Count1ms) Count1ms--;
        if (Count1s) Count1s--; //Count1s初值為1000
        else
        {
        Count1s=1000;
        SaveMotorCount=MotorCount; //MotorCount為測得每秒脈沖個數
        MotorCount=0;
        SD=SaveMotorCount/2-SetSpeed; //常量SetSpeed的值為轉速的預設值,單位為轉/秒
        SaveMotorCount*=30; //轉/分
        if (SD)
        {
        if ((SD>5)||(SD-5))
        iDAC0-=SD*4;
        else
        iDAC0-=SD;
        DAC0=iDAC0; }
        }
        }
        五、外部0中斷:
        void Int0_ISR (void) interrupt 0
        { MotorCount++;}
        軟件仿真調試方法:
        (1)觀察DAC0的窗口,改變DAC0的數值觀察電機轉速的變化
        (2)使用示波器觀察CKMOT的頻率計算出電機的轉速與七段數碼管顯示的數值比較,比較速度測量的準確性
        (3)改變常量SetSpeed的值(轉速的預設值),觀察速度穩定后七段數碼管的數值
        (4)可將斷點設在外部中斷INT0的入口和T0中斷的入口運行程序觀察程序運行是否正常。
        結束語:
        由于C8051F020的高集成度,因此只需少量外圍電路。另外,C8051F020內核與普通51系列兼容,且指令簡單易學,可縮短系統開發周期。實踐證明,本控制系統精度高,穩定性好,硬件簡單且工作可靠,具有很好的推廣價值。

        關鍵詞:單片機、無刷直流電機、轉速控制

        霍爾傳感器相關文章:霍爾傳感器工作原理


        霍爾傳感器相關文章:霍爾傳感器原理
        脈寬調制相關文章:脈寬調制原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 渭南市| 通道| 故城县| 广丰县| 淅川县| 河东区| 将乐县| 玛曲县| 和林格尔县| 武山县| 合作市| 永康市| 昭通市| 海晏县| 原平市| 揭东县| 南澳县| 澄江县| 苍梧县| 长寿区| 祁东县| 中卫市| 柞水县| 常德市| 内丘县| 璧山县| 乌兰察布市| 唐海县| 额敏县| 全南县| 麻阳| 缙云县| 织金县| 绥棱县| 福贡县| 凤城市| 通城县| 乃东县| 商洛市| 大石桥市| 寻乌县|