基于FPGA的直流電機(jī)綜合測(cè)控系統(tǒng)設(shè)計(jì)_第1頁(yè)
基于FPGA的直流電機(jī)綜合測(cè)控系統(tǒng)設(shè)計(jì)_第2頁(yè)
基于FPGA的直流電機(jī)綜合測(cè)控系統(tǒng)設(shè)計(jì)_第3頁(yè)
基于FPGA的直流電機(jī)綜合測(cè)控系統(tǒng)設(shè)計(jì)_第4頁(yè)
基于FPGA的直流電機(jī)綜合測(cè)控系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于FPGA的直流電機(jī)綜合測(cè)控系統(tǒng)設(shè)計(jì)目錄TOC\o"1-2"\h\u32231引言 摘要:隨著直流電機(jī)在眾多領(lǐng)域的廣泛應(yīng)用,其關(guān)鍵地位日益凸顯。面對(duì)不斷提升的高精度、高速度需求,深入研究直流電機(jī)的測(cè)控系統(tǒng)顯得至關(guān)重要。傳統(tǒng)的測(cè)控方案多依賴(lài)于單片機(jī)或者DSP,但這些方案在處理速度和外圍電路復(fù)雜度方面等存在局限。本文設(shè)計(jì)了一種基于FPGA技術(shù)和QuartusII開(kāi)發(fā)平臺(tái)的直流電機(jī)測(cè)控系統(tǒng)。該系統(tǒng)采用自頂向下的設(shè)計(jì)方法,并運(yùn)用VHDL語(yǔ)言對(duì)各個(gè)功能模塊進(jìn)行詳細(xì)描述。通過(guò)計(jì)算機(jī)仿真和實(shí)驗(yàn)驗(yàn)證,該系統(tǒng)基本實(shí)現(xiàn)了直流電機(jī)的一種數(shù)字化PWM調(diào)速、測(cè)速、轉(zhuǎn)向以及實(shí)時(shí)顯示速度等功能,可實(shí)際應(yīng)用于家電產(chǎn)品、交通工具和工業(yè)自動(dòng)化設(shè)備等領(lǐng)域,為設(shè)備提供更為精確、穩(wěn)定的控制。關(guān)鍵詞:直流電機(jī);FPGA;VHDL;PWM1引言選題的研究意義直流電機(jī),作為一種關(guān)鍵的電力設(shè)備,因其高效率、良好的控制性能、快速的動(dòng)態(tài)響應(yīng)以及易于維護(hù)和維修等優(yōu)勢(shì),使得在工業(yè)、民用等不同領(lǐng)域中得到了廣泛應(yīng)用。隨著科技的進(jìn)步和社會(huì)的發(fā)展,直流電機(jī)的研究和應(yīng)用范圍也在不斷擴(kuò)大。在工業(yè)領(lǐng)域,直流電機(jī)用于驅(qū)動(dòng)各種機(jī)械設(shè)備;在交通領(lǐng)域,直流電機(jī)是電動(dòng)汽車(chē)、電動(dòng)公交車(chē)等交通工具的重要?jiǎng)恿υ?;在日常生活領(lǐng)域,直流電機(jī)則廣泛應(yīng)用于風(fēng)扇、洗衣機(jī)等家用器具。除了直流電機(jī)本身,研究的主要重點(diǎn)是其控制系統(tǒng)。直流電機(jī)控制系統(tǒng)能夠?qū)崿F(xiàn)精確控制電機(jī)的轉(zhuǎn)速和轉(zhuǎn)矩,從而提升生產(chǎn)效率和經(jīng)濟(jì)效益,使電機(jī)在運(yùn)行過(guò)程中更加穩(wěn)定可靠;能夠通過(guò)控制電機(jī)的電壓和電流,促進(jìn)能源節(jié)約和減排。在當(dāng)前技術(shù)更新迭代需求的背景下,對(duì)直流電機(jī)本身及其控制系統(tǒng)的深入研究不僅有助于提升其性能和應(yīng)用范圍,更能為社會(huì)的發(fā)展和進(jìn)步作出積極的貢獻(xiàn)。直流電機(jī)控制系統(tǒng)研究現(xiàn)狀隨著行業(yè)的不斷進(jìn)步,人們對(duì)電機(jī)系統(tǒng)的控制要求日益提高。目前市場(chǎng)較多的是采用單片機(jī)(MCU)和數(shù)字信號(hào)處理器(DSP)作為主控芯片。然而,單片機(jī)REF_Ref1560\r\h[1]受限于其內(nèi)部結(jié)構(gòu)和計(jì)算速度,難以應(yīng)用先進(jìn)的控制理論來(lái)完成高效的控制算法。相比之下,數(shù)字信號(hào)處理器REF_Ref25746\r\h[2]在算法實(shí)現(xiàn)方面具有一定優(yōu)勢(shì),但外圍電路復(fù)雜且易受到干擾,仍存在一些局限。隨著可編程邏輯器件的發(fā)展,基于EDA技術(shù)的FPGA器件的開(kāi)發(fā)應(yīng)用可以從根本上解決所遇到的問(wèn)題。通過(guò)硬件編程語(yǔ)言構(gòu)建的FPGA內(nèi)部硬件電路,不僅可以節(jié)省大量的模擬器件,降低功耗,提高可靠性,而且FPGA并行處理能力能顯著提升系統(tǒng)的運(yùn)行效率REF_Ref25821\r\h[3]。因此,F(xiàn)PGA作為主控芯片在實(shí)現(xiàn)直流電機(jī)控制系統(tǒng)中發(fā)揮著重要作用。本課題就是基于FPGA技術(shù),致力于實(shí)現(xiàn)直流電機(jī)的測(cè)速與控制系統(tǒng)。電機(jī)控制器的控制算法經(jīng)歷了不斷的發(fā)展與優(yōu)化。經(jīng)典的PID控制理論REF_Ref25929\r\h[4]難以對(duì)其進(jìn)行精確的數(shù)學(xué)建模,這主要是因?yàn)榇嬖诖罅康姆蔷€(xiàn)性干擾因素。為了提升電機(jī)的轉(zhuǎn)速控制精度,當(dāng)前常采用模糊PID轉(zhuǎn)速控制算法。同時(shí),采用FPGA和霍爾傳感器相結(jié)合的方法,可以準(zhǔn)確地測(cè)量出電機(jī)的電流和位置。國(guó)外學(xué)者也進(jìn)一步對(duì)比研究發(fā)現(xiàn),模型參考自適應(yīng)控制來(lái)控制直流電機(jī)的轉(zhuǎn)速表現(xiàn)出更優(yōu)異的性能,也有基于FPGA的分?jǐn)?shù)階系統(tǒng)和PID控制器的設(shè)計(jì)REF_Ref24577\r\h[5,REF_Ref24603\r\h6]。國(guó)際上,已經(jīng)公開(kāi)發(fā)表了大量關(guān)于電機(jī)控制器集成方面的文章,也有許多采用EDA方法及FPGA器件實(shí)現(xiàn)的電機(jī)控制原理,如電壓空間矢量PWM、基于矢量控制、直接轉(zhuǎn)矩控制等REF_Ref27013\r\h[7]。2直流電機(jī)測(cè)控系統(tǒng)的方案設(shè)計(jì)2.1FPGA簡(jiǎn)介FPGA,即“fieldprogrammablegatearray”的英文縮寫(xiě),其意為現(xiàn)場(chǎng)可編程門(mén)陣列,是由可編程邏輯塊、可編程輸入/輸出塊和可編程互連等結(jié)構(gòu)組合而成。在開(kāi)發(fā)的過(guò)程中,F(xiàn)PGA主要采用自頂向下的設(shè)計(jì)方法,從系統(tǒng)整體結(jié)構(gòu)和功能入手,逐步細(xì)化至更低層次的模塊和電路,以滿(mǎn)足實(shí)際應(yīng)用的需求。如圖1所示,F(xiàn)PGA的開(kāi)發(fā)流程主要包括設(shè)計(jì)輸入、綜合優(yōu)化、適配、仿真驗(yàn)證、編程下載、硬件測(cè)試REF_Ref27072\r\h[8]。原理圖/HDL文本編輯原理圖/HDL文本編輯綜合FPGA適配FPGA器件和電路系統(tǒng)時(shí)序與功能門(mén)級(jí)仿真FPAG編程下載邏輯綜合器結(jié)構(gòu)綜合器功能仿真圖1FPGA設(shè)計(jì)開(kāi)發(fā)流程2.2調(diào)速方案設(shè)計(jì)直流電機(jī)的調(diào)速方法主要有以下幾種:串電阻調(diào)速:借助在電樞外部串聯(lián)電阻來(lái)調(diào)整電機(jī)的轉(zhuǎn)速REF_Ref27118\r\h[9]。盡管此方法簡(jiǎn)單易行,但僅能分檔調(diào)速,且效率較低,因?yàn)殡娮钑?huì)產(chǎn)生額外的能量損耗。變磁調(diào)速:通過(guò)改變電機(jī)主磁通量來(lái)調(diào)整轉(zhuǎn)速。但其調(diào)速范圍有限,動(dòng)態(tài)響應(yīng)速度相對(duì)較慢REF_Ref27118\r\h[9]。調(diào)壓調(diào)速:利用電樞電壓的變化,使電機(jī)轉(zhuǎn)速發(fā)生變化。這種方法因其快速的動(dòng)態(tài)響應(yīng)特性,特別適合應(yīng)用于需要平滑調(diào)速的系統(tǒng)中。通過(guò)對(duì)比分析,將第三種方法作為調(diào)速系統(tǒng)的控制方式。在該方案下,最常采用的是脈沖寬度調(diào)制法(PWM)。其基本原理是利用電機(jī)電樞電壓的接通和斷開(kāi)的時(shí)間(占空比)的變化,對(duì)電機(jī)的運(yùn)行速度進(jìn)行精確地控制。只需按照一定的規(guī)律改變通電、斷電的時(shí)間即可使電機(jī)的運(yùn)行速度達(dá)到和保持平穩(wěn)REF_Ref16843\r\h[10]。在脈沖寬度調(diào)制法中,改變占空比,即可改變一個(gè)周期內(nèi)電樞兩端的平均電壓。設(shè)占空比為α,頻率為F,高電平時(shí)間為t1,低電平時(shí)間為t2,則可得到如下關(guān)系: (1) (2)在PWM調(diào)速時(shí),多采用保持周期T(或頻率F)不變,同時(shí)改變t1和t2來(lái)調(diào)整占空比的方法。由式(2)可知,當(dāng)t1時(shí)間越長(zhǎng),占空比越大,電機(jī)轉(zhuǎn)速就越快。由式(1)可知,若只改變t1或t2,則在調(diào)速時(shí),將改變PWM的頻率。PWM的頻率在機(jī)械固有頻率附近會(huì)產(chǎn)生震蕩。綜上所述,通過(guò)采用電壓調(diào)制并結(jié)合PWM調(diào)速方法,這樣可以實(shí)現(xiàn)對(duì)直流電機(jī)轉(zhuǎn)速的精確、高效控制,滿(mǎn)足各種應(yīng)用場(chǎng)景的需求。2.3測(cè)速方案設(shè)計(jì)直流電機(jī)的速度測(cè)量主要有兩種方法:利用光電技術(shù)進(jìn)行速度測(cè)量光電測(cè)速技術(shù)利用帶有缺口的圓盤(pán)與光電管的結(jié)合來(lái)測(cè)量速度。當(dāng)圓盤(pán)隨直流電機(jī)旋轉(zhuǎn)時(shí),光電管接收脈沖信號(hào)。結(jié)合定時(shí)器和計(jì)數(shù)器,可以計(jì)算在特定時(shí)間內(nèi)接收到的脈沖數(shù)量,進(jìn)而得出電機(jī)的旋轉(zhuǎn)速度。但這種方法對(duì)環(huán)境光線(xiàn)條件較為敏感,且圓盤(pán)缺口位置的變化可能引入測(cè)量誤差。利用霍爾效應(yīng)的速度測(cè)量方法而霍爾效應(yīng)測(cè)速則利用磁場(chǎng)變化和霍爾電路的相互作用。當(dāng)電動(dòng)機(jī)轉(zhuǎn)軸帶動(dòng)轉(zhuǎn)盤(pán)邊的磁鋼旋轉(zhuǎn)時(shí),磁場(chǎng)強(qiáng)度隨之變化?;魻栯娐穼⑦@一變化轉(zhuǎn)換為脈沖信號(hào),并通過(guò)放大和整形處理輸出矩形脈沖。電機(jī)轉(zhuǎn)速的變化直接導(dǎo)致輸出脈沖頻率的改變,從而精確反映電機(jī)的旋轉(zhuǎn)速度。該方法應(yīng)用較多的是霍爾傳感器REF_Ref17218\r\h[11],因其結(jié)構(gòu)簡(jiǎn)單、體積小、價(jià)格適中且可靠性高而廣受青睞。其出色的抗干擾能力使其能在各種環(huán)境條件下穩(wěn)定運(yùn)行。經(jīng)過(guò)對(duì)比分析,本次系統(tǒng)設(shè)計(jì)決定采用霍爾傳感器作為直流電機(jī)的測(cè)速元件。同時(shí),結(jié)合FPGA器件上的脈沖計(jì)數(shù)功能,將能更準(zhǔn)確地測(cè)量電機(jī)地轉(zhuǎn)速。2.4系統(tǒng)整體設(shè)計(jì)基于FPGA的直流電機(jī)測(cè)控系統(tǒng)的整體設(shè)計(jì)框圖如圖2所示。整體電路由FPGA芯片控制,并由數(shù)碼管顯示電路、按鍵電路、驅(qū)動(dòng)電路、測(cè)速電路和直流電機(jī)組成。而FPGA芯片的內(nèi)置電路包括了時(shí)鐘發(fā)生器、轉(zhuǎn)向與啟??刂颇K、PWM控制模塊以及測(cè)速模塊。FPGAFPGA數(shù)碼管顯示數(shù)碼管顯示按鍵電路驅(qū)動(dòng)電路M測(cè)速電路時(shí)鐘發(fā)生器PWM控制模塊測(cè)速模塊轉(zhuǎn)向、啟??刂颇K圖2系統(tǒng)整體設(shè)計(jì)框圖系統(tǒng)的工作過(guò)程為:在系統(tǒng)啟動(dòng)后,首先設(shè)定預(yù)期的運(yùn)行狀態(tài),并將相應(yīng)的信號(hào)發(fā)送到FPGA主控板。此時(shí),PWM模塊會(huì)生成特定的脈寬調(diào)制PWM控制信號(hào)REF_Ref25821\r\h[3],此信號(hào)通過(guò)電機(jī)驅(qū)動(dòng)電路調(diào)節(jié)電機(jī)的工作狀態(tài)。為了確保電機(jī)的穩(wěn)定運(yùn)行,系統(tǒng)會(huì)實(shí)時(shí)檢測(cè)其運(yùn)行狀態(tài)。同時(shí),測(cè)速電路會(huì)不斷檢測(cè)電機(jī)的實(shí)際速度,并將該速度信號(hào)反饋給FPGA。測(cè)速模塊接收速度信號(hào)后,會(huì)進(jìn)行計(jì)數(shù)處理,并通過(guò)數(shù)碼管實(shí)時(shí)顯示當(dāng)前電機(jī)的轉(zhuǎn)速,以此確保直流電機(jī)能以恒定的運(yùn)行速度運(yùn)行。當(dāng)需要進(jìn)行直流電機(jī)的調(diào)速控制時(shí),加速按鍵按下時(shí),PWM模塊中控制信號(hào)占空比會(huì)增大,從而使電機(jī)加速轉(zhuǎn)動(dòng);相反,減速按鍵按下時(shí),控制信號(hào)占空比減小,電機(jī)則會(huì)減速轉(zhuǎn)動(dòng)REF_Ref17346\r\h[12]。在此過(guò)程中,系統(tǒng)還支持通過(guò)按鍵實(shí)現(xiàn)對(duì)電機(jī)的正反轉(zhuǎn)控制。3主要功能模塊設(shè)計(jì)在直流電機(jī)測(cè)控系統(tǒng)的功能設(shè)計(jì)過(guò)程中,選用的工具是Altra公司的QuartusⅡ軟件,系統(tǒng)由FPGA芯片控制,其現(xiàn)場(chǎng)可編程門(mén)陣列器件采用CycloneⅣ系列的EP4CE6F17C8器件。QuartusⅡ軟件以其全面的多平臺(tái)設(shè)計(jì)環(huán)境滿(mǎn)足了復(fù)雜設(shè)計(jì)的多樣化需求,并且提供了豐富的芯片支持包,為設(shè)計(jì)過(guò)程提供了極大的便利。設(shè)計(jì)過(guò)程中,主要采用VHDL語(yǔ)言來(lái)編寫(xiě)系統(tǒng)程序,采用模塊化設(shè)計(jì)理念,其將一個(gè)復(fù)雜的系統(tǒng)分解為若干個(gè)較小的、相對(duì)獨(dú)立的模塊,從而提高代碼的可讀性、維護(hù)性和復(fù)用性。本次設(shè)計(jì)涵蓋了工作時(shí)鐘模塊、PWM控制電路、主控模塊、電機(jī)測(cè)速系統(tǒng)、數(shù)碼管譯碼模塊、觸發(fā)器模塊以及消抖模塊七大核心部分。3.1工作時(shí)鐘模塊3.1.1鎖相環(huán)模塊這主要由鎖相環(huán)PLL模塊擔(dān)任,它能有效同步輸入的時(shí)鐘信號(hào),并以其作為參考信號(hào)實(shí)現(xiàn)鎖相。進(jìn)而,模塊可輸出一至多個(gè)同步倍頻或分頻的片內(nèi)時(shí)鐘,滿(mǎn)足系統(tǒng)應(yīng)用REF_Ref27072\r\h[8]。本系統(tǒng)通過(guò)調(diào)用IP核使用PLL鎖相環(huán)進(jìn)行分頻得到所需的時(shí)鐘信號(hào),如圖3所示,其輸入頻率是50MHz,直接來(lái)自核心板上;輸出一個(gè)頻率:c0=4096Hz。圖3鎖相環(huán)PLL20模塊3.1.2分頻模塊分頻模塊FP通過(guò)處理50MHz時(shí)鐘信號(hào),將其分頻為1KHz和1Hz時(shí)鐘。其中,1KHz的時(shí)鐘被用作數(shù)碼管譯碼模塊的輸入時(shí)鐘,1Hz的時(shí)鐘則為頻率計(jì)控制模塊提供了1秒的時(shí)間基準(zhǔn),如圖4所示。模塊程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFPISPORT(CLK:INSTD_LOGIC;--50M輸入時(shí)鐘CLK1KHz:OUTSTD_LOGIC;--1kHz時(shí)鐘信號(hào)CLK1Hz:OUTSTD_LOGIC);--1Hz時(shí)鐘信號(hào)ENDFP;ARCHITECTUREONEOFFPISSIGNALclk_1KHz:STD_LOGIC;SIGNALclk_1Hz:STD_LOGIC;SIGNALc1:INTEGERRANGE0TO50000;SIGNALc2:INTEGERRANGE0TO10000;BEGINPROCESS(CLK)BEGIN --該部分輸出1KHz的時(shí)鐘信號(hào)IF(CLK'EVENTANDCLK='1')THENIF(c1>=24999)THEN--50M/1000=x,X/2-1=24999c1<=0;clk_1KHz<=NOT(clk_1KHz);--c1計(jì)數(shù)到24999,clk_1KHZ就翻轉(zhuǎn)上一個(gè)值ELSEc1<=c1+1; --c1計(jì)數(shù)ENDIF;ENDIF;CLK1KHz<=clk_1KHz;ENDPROCESS;PROCESS(clk_1KHz)BEGIN --該部分輸出1Hz的時(shí)鐘信號(hào)IF(clk_1KHz'EVENTANDclk_1KHz='1')THENIF(c2>=499)THEN--1000/1=x,X/2-1=499c2<=0;clk_1Hz<=NOT(clk_1Hz);--c2計(jì)數(shù)到499,clk_1HZ就翻轉(zhuǎn)上一個(gè)值ELSEc2<=c2+1; --c2計(jì)數(shù)ENDIF;ENDIF;CLK1Hz<=clk_1Hz;ENDPROCESS;ENDONE;圖4分頻模塊3.2PWM控制電路PWM控制電路由PWM脈寬調(diào)制信號(hào)發(fā)生模塊,8位計(jì)數(shù)器模塊和速度控制模塊組成。3.2.1PWM脈寬調(diào)制信號(hào)發(fā)生模塊PWM脈寬調(diào)制信號(hào)發(fā)生模塊SQU是FPGA內(nèi)部負(fù)責(zé)生成PWM信號(hào)的專(zhuān)門(mén)電路,如圖5所示,其中CIN[7..0]是來(lái)自8位計(jì)數(shù)器模塊,為計(jì)數(shù)值,實(shí)際上形成了一種鋸齒波信號(hào),其頻率即為PWM波的輸出頻率;ADR[7..0]來(lái)自速度控制模塊的設(shè)定值。當(dāng)計(jì)數(shù)值小于設(shè)定值時(shí),OT=1;當(dāng)計(jì)數(shù)值大于設(shè)定值,OT=0,由此產(chǎn)生周期性的PWM波形。模塊程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSQUISPORT(CIN:INSTD_LOGIC_VECTOR(7DOWNTO0);--計(jì)數(shù)值 ADR:INSTD_LOGIC_VECTOR(7DOWNTO0);--設(shè)定值 OT:OUTSTD_LOGIC);ENDSQU;ARCHITECTUREONEOFSQUISBEGINPROCESS(CIN) BEGIN IF(ADR<CIN)THENOT<='1'; ELSEOT<='0'; ENDIF;ENDPROCESS;ENDONE;圖5PWM脈寬調(diào)制信號(hào)發(fā)生模塊3.2.28位計(jì)數(shù)器模塊8位計(jì)數(shù)器模塊是產(chǎn)生PWM波的頻率,如圖6所示。當(dāng)時(shí)鐘信號(hào)CLK每一個(gè)上升沿,使得DOUT[7..0]的輸出值遞增1。模塊程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT8BISPORT(CLK:INSTD_LOGIC;--4096Hz的時(shí)鐘信號(hào)DOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDCNT8B;ARCHITECTUREONEOFCNT8BISSIGNALQ1:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(CLK) BEGIN IFCLK'EVENTANDCLK='1'THEN--時(shí)鐘上升沿到來(lái) Q1<=Q1+1; ENDIF;ENDPROCESS;DOUT<=Q1;ENDONE;圖68位計(jì)數(shù)器模塊3.2.3速度控制模塊速度控制模塊是按鍵控制直流電機(jī)的轉(zhuǎn)速,如圖7所示,其中按鍵key5被設(shè)定為控制檔,當(dāng)?shù)碗娖綍r(shí),代表加速檔;當(dāng)高電平時(shí),代表減速檔。此時(shí)再按下key4鍵,DOUT將輸出當(dāng)前的速度設(shè)定值,這一設(shè)定值會(huì)被PWM脈寬調(diào)制信號(hào)發(fā)生模塊接收并作為CIN的值,同時(shí)LED輸出顯示設(shè)定的速度等級(jí)。模塊部分程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitysuduisport(key4,key5,key1:instd_logic;--key4、key5為按鍵輸入信號(hào),key1為系統(tǒng)復(fù)位信號(hào) DOUT:outstd_logic_vector(7downto0);--計(jì)數(shù)設(shè)定值 LED:outstd_logic_vector(3downto0));--速度等級(jí)endsudu;architectureoneofsuduistypestatesis(st0,st1,st2,st3,st4,st5,st6,st7,st8,st9);signals:states;beginprocess(key1,key4,key5,s) begin ifkey1='0'thens<=st0; elsifkey4'eventandkey4='1'then--上升沿到來(lái)時(shí) casesis --加減速設(shè)定 whenst0=>ifkey5='0'thens<=st1;elses<=st0;endif; whenst1=>ifkey5='0'thens<=st2;elses<=st0;endif; whenst2=>ifkey5='0'thens<=st3;elses<=st1;endif; whenst3=>ifkey5='0'thens<=st4;elses<=st2;endif; whenst4=>ifkey5='0'thens<=st5;elses<=st3;endif; whenst5=>ifkey5='0'thens<=st6;elses<=st4;endif; whenst6=>ifkey5='0'thens<=st7;elses<=st5;endif; whenst7=>ifkey5='0'thens<=st8;elses<=st6;endif; whenst8=>ifkey5='0'thens<=st9;elses<=st7;endif; whenst9=>ifkey5='0'thens<=st9;elses<=st8;endif; endcase; endif;endprocess;process(s) begin casesis --設(shè)置等級(jí)和計(jì)數(shù)設(shè)定值 whenst0=>DOUT<="00000000";LED<="0000"; whenst1=>DOUT<="00110111";LED<="0001"; whenst2=>DOUT<="00111001";LED<="0010"; whenst3=>DOUT<="00111101";LED<="0011"; whenst4=>DOUT<="01000100";LED<="0100"; whenst5=>DOUT<="01001101";LED<="0101"; whenst6=>DOUT<="01010100";LED<="0110"; whenst7=>DOUT<="01100010";LED<="0111"; whenst8=>DOUT<="01101001";LED<="1000"; whenst9=>DOUT<="01101101";LED<="1001"; endcase;endprocess;endone;圖7速度控制模塊3.3主控模塊主控模塊是控制直流電機(jī)轉(zhuǎn)向和啟/停,如圖8所示,其中key2是按鍵控制電機(jī)啟/停,SL是按鍵控制電機(jī)轉(zhuǎn)向,M是PWM脈寬調(diào)制信號(hào)發(fā)生模塊輸出的PWM波。當(dāng)將M賦值給M0時(shí),為了電機(jī)正常運(yùn)轉(zhuǎn),需要將M1設(shè)置為低電平,當(dāng)按鍵第二次按下的時(shí)候,則把M賦值給M1,則M0應(yīng)設(shè)置為低電平。如此反復(fù)的就實(shí)現(xiàn)了電機(jī)的正轉(zhuǎn),反轉(zhuǎn)。當(dāng)按鍵key2被按下時(shí),則電機(jī)停止轉(zhuǎn)動(dòng),當(dāng)key2再次被按下時(shí),則電機(jī)開(kāi)始轉(zhuǎn)動(dòng)。模塊程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYkongzhiISPORT(SL,key2,M:INSTD_LOGIC;--SL為正反轉(zhuǎn)按鍵,key2為啟動(dòng)停止按鍵M0,M1:OUTSTD_LOGIC);--輸出控制電機(jī)ENDkongzhi;ARCHITECTUREONEOFkongzhiISTYPESTATESIS(S0,S1);--正反兩種狀態(tài)SIGNALc_state,next_state:STATES:=S0;BEGINPROCESS(SL) BEGIN IFSL='1'andSL'eventTHENc_state<=next_state;--按鍵按下,次態(tài)變?yōu)楝F(xiàn)態(tài) ENDIF;ENDPROCESS;PROCESS(c_state,M) BEGIN IFkey2='0'THENM0<='0';M1<='0';--如果有低電平,那么M0,M1都為0,則電機(jī)不轉(zhuǎn) ELSE CASEc_stateIS WHENS0=>M0<=M;M1<='0';next_state<=S1; WHENS1=>M1<=M;M0<='0';next_state<=S0; ENDCASE; ENDIF;ENDPROCESS;ENDONE;圖8主控模塊3.4電機(jī)測(cè)速系統(tǒng)準(zhǔn)確測(cè)量電機(jī)轉(zhuǎn)速至關(guān)重要,它不僅能夠直觀反映電機(jī)的運(yùn)行狀態(tài),更關(guān)鍵的是,它可以實(shí)現(xiàn)電機(jī)的閉環(huán)控制,即在設(shè)定好電機(jī)轉(zhuǎn)速后,該系統(tǒng)能在負(fù)載變化時(shí)維持恒定的轉(zhuǎn)速和輸出功率REF_Ref27072\r\h[8]。該電機(jī)測(cè)速系統(tǒng)包括頻率計(jì)控制模塊、電機(jī)脈沖計(jì)數(shù)模塊和鎖存模塊REF_Ref8764\r\h[13],如圖9所示。這個(gè)系統(tǒng)設(shè)計(jì)是用來(lái)在1秒內(nèi)準(zhǔn)確記錄輸入的脈沖數(shù)量。圖9電機(jī)測(cè)速系統(tǒng)的原理圖3.4.1頻率計(jì)控制模塊頻率計(jì)控制模塊TF_CTRL產(chǎn)生測(cè)頻控制信號(hào)的,如圖9所示。此模塊中,CNT_EN信號(hào)啟動(dòng)一個(gè)1秒寬度的周期性脈沖,同步激活頻率計(jì)內(nèi)的脈沖計(jì)數(shù)器CNT10D的啟用端,并生成鎖定存儲(chǔ)信號(hào)LOCK。模塊程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYTF_CTRLISPORT(CLK1HZ:INSTD_LOGIC;--1HZ時(shí)鐘信號(hào) CNT_EN:OUTSTD_LOGIC;--計(jì)數(shù)器時(shí)鐘使能 CLR:OUTSTD_LOGIC; --計(jì)數(shù)器清零 LOCK:OUTSTD_LOGIC);--輸出鎖存信號(hào)ENDTF_CTRL;ARCHITECTUREONEOFTF_CTRLISSIGNALS:STD_LOGIC;BEGINPROCESS(CLK1HZ) BEGIN IFCLK1HZ'EVENTANDCLK1HZ='1'THEN S<=NOTS; ENDIF;ENDPROCESS;PROCESS(CLK1HZ,S) BEGIN IFCLK1HZ='0'ANDS='0'THENCLR<='1';--產(chǎn)生計(jì)數(shù)器清零信號(hào) ELSECLR<='0'; ENDIF;ENDPROCESS;LOCK<=NOTS;CNT_EN<=S;ENDONE;3.4.2電機(jī)脈沖計(jì)數(shù)模塊電機(jī)脈沖計(jì)數(shù)模塊CNT10D,如圖9所示。在enb為高電平時(shí)允許計(jì)數(shù);低電平時(shí)停止計(jì)數(shù),并保持當(dāng)前的脈沖數(shù)。此模塊是由三個(gè)十進(jìn)制計(jì)數(shù)模塊CNT10連接組合而成,如圖10所示,CNT10程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10isPORT(CLK:instd_logic; --時(shí)鐘信號(hào) CLR:instd_logic; --清零信號(hào) enb:instd_logic; --使能信號(hào) Q:outstd_logic_vector(3downto0);--計(jì)數(shù)值 COUT:outstd_logic); --進(jìn)位信號(hào)ENDCNT10;architectureoneofCNT10isbeginprocess(CLK,CLR,enb) variableQ0:std_logic_vector(3downto0); begin ifCLR='1'thenQ0:="0000"; --計(jì)數(shù)器異步復(fù)位 elsifCLK'eventandCLK='1'then--檢測(cè)時(shí)鐘上升沿 ifenb='1'then --檢測(cè)是否允許計(jì)數(shù) ifQ0<10thenQ0:=Q0+1;--允許計(jì)數(shù),檢測(cè)是否小于10 endif; endif; endif; ifQ0="1010"thenQ0:="0000";COUT<='1';--計(jì)數(shù)大于9,計(jì)數(shù)值清零,輸出進(jìn)位信號(hào) elseCOUT<='0'; endif; Q<=Q0; endprocess;endone;圖10電機(jī)脈沖計(jì)數(shù)模塊內(nèi)部原理圖3.4.3鎖存模塊鎖存模塊LOCK12,如圖9所示。鎖存信號(hào)LOCK的上升沿會(huì)將計(jì)數(shù)器在前1秒的計(jì)數(shù)值鎖定在LOCK12鎖存器內(nèi),這樣的設(shè)計(jì)能確保顯示的穩(wěn)定性,防止因周期性清零而產(chǎn)生的閃爍現(xiàn)象。模塊程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYLOCK12ISPORT(D:INSTD_LOGIC_VECTOR(11DOWNTO0);--速度輸入信號(hào) LK:INSTD_LOGIC; --鎖存信號(hào) LEDA:OUTSTD_LOGIC_VECTOR(3DOWNTO0); LEDB:OUTSTD_LOGIC_VECTOR(3DOWNTO0); LEDC:OUTSTD_LOGIC_VECTOR(3DOWNTO0) --速度輸出信號(hào),分別將值賦值給不同的數(shù)碼管 );ENDLOCK12;ARCHITECTUREONEOFLOCK12ISBEGINPROCESS(LK,D)BEGIN IFLK'EVENTANDLK='1'THEN LEDA<=D(11DOWNTO8); LEDB<=D(7DOWNTO4); LEDC<=D(3DOWNTO0); ENDIF;ENDPROCESS;ENDONE;3.5數(shù)碼管譯碼模塊數(shù)碼管譯碼模塊:一是將電機(jī)測(cè)速系統(tǒng)中1s內(nèi)產(chǎn)生的脈沖數(shù)經(jīng)譯碼輸出到數(shù)碼管,實(shí)時(shí)顯示電機(jī)轉(zhuǎn)速;二是將PWM控制電路中通過(guò)按鍵設(shè)定的速度等級(jí)進(jìn)行譯碼,并將結(jié)果顯示在數(shù)碼管上。如圖11所示,模塊程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDisplayIS--數(shù)碼管譯碼模塊PORT(CLK:INSTD_LOGIC;--1KHz時(shí)鐘信號(hào)掃描數(shù)碼管 A1:INSTD_LOGIC_VECTOR(3DOWNTO0); A2:INSTD_LOGIC_VECTOR(3DOWNTO0); A3:INSTD_LOGIC_VECTOR(3DOWNTO0); --電機(jī)的轉(zhuǎn)速 DOUT:INSTD_LOGIC_VECTOR(3DOWNTO0);--速度等級(jí)SEG:OUTSTD_LOGIC_VECTOR(7DOWNTO0);--段選信號(hào)DIG:OUTSTD_LOGIC_VECTOR(5DOWNTO0) --位選信號(hào));ENDDisplay;ARCHITECTUREONEOFDisplayISSIGNALSEG1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)VARIABLEjishu:INTEGERRANGE0TO10;VARIABLEwx:STD_LOGIC_VECTOR(5DOWNTO0);BEGINIFRISING_EDGE(CLK)THENjishu:=jishu+1;IFjishu>3THENjishu:=0;ENDIF;CASEjishuIS WHEN0=>SEG1<=A3(3DOWNTO0);WHEN1=>SEG1<=A2(3DOWNTO0);WHEN2=>SEG1<=A1(3DOWNTO0); WHEN3=>SEG1<=DOUT(3DOWNTO0);WHENOTHERS=>jishu:=0;ENDCASE;CASEjishuIS --位選WHEN0=>wx:="110111";WHEN1=>wx:="101111"; WHEN2=>wx:="011111"; WHEN3=>wx:="111110";WHENOTHERS=>jishu:=0;ENDCASE;DIG<=wx;ENDIF;ENDPROCESS;PROCESS(SEG1)VARIABLEshuxin:STD_LOGIC_VECTOR(7DOWNTO0);BEGINCASESEG1IS 段選WHEN"0000"=>shuxin:="11000000";WHEN"0001"=>shuxin:="11111001";WHEN"0010"=>shuxin:="10100100";WHEN"0011"=>shuxin:="10110000";WHEN"0100"=>shuxin:="10011001";WHEN"0101"=>shuxin:="10010010";WHEN"0110"=>shuxin:="10000010";WHEN"0111"=>shuxin:="11111000";WHEN"1000"=>shuxin:="10000000";WHEN"1001"=>shuxin:="10010000"; WHENothers=>NULL;ENDCASE;SEG<=shuxin;ENDPROCESS;ENDONE;圖11數(shù)碼管譯碼模塊3.6觸發(fā)器模塊在FPGA開(kāi)發(fā)板上,按鍵的設(shè)計(jì)是以低電平觸發(fā)為按下?tīng)顟B(tài),松開(kāi)按鍵則回到高電平狀態(tài)。為了使按鍵按下時(shí)保持低電平,松開(kāi)時(shí)保持高電平的需求,所以在按鍵后增加一個(gè)JK觸發(fā)器模塊,如圖12所示,j、k接高電平,按鍵接CLK,可實(shí)現(xiàn)觸發(fā)器的翻轉(zhuǎn)功能,滿(mǎn)足了按鍵狀態(tài)轉(zhuǎn)換的需求。模塊程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYjkffISPORT(j,k:INSTD_LOGIC; --輸入信號(hào) CLK:INSTD_LOGIC; --按鍵輸入信號(hào) Q,Qn:OUTSTD_LOGIC); --輸出信號(hào)ENDjkff;ARCHITECTUREONEOFjkffISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK) BEGIN IFCLK'EVENTANDCLK='1'THEN --按鍵按下時(shí) IFj='1'ANDk='0'THENQ1<='0'; ELSIFj='0'ANDk='1'THENQ1<='1'; ELSIFj='1'ANDk='1'THENQ1<=NOTQ1; --Q1翻轉(zhuǎn) else Q1<=Q1; --Q1保持前一個(gè)狀態(tài) ENDIF; ENDIF;ENDPROCESS;Q<=Q1;Qn<=NOTQ1;ENDONE;圖12JK觸發(fā)器模塊3.7消抖模塊按鍵在閉合和斷開(kāi)的瞬間,往往會(huì)伴隨一系列的抖動(dòng),如圖13所示。這種現(xiàn)象可能會(huì)導(dǎo)致意外的輸入或觸發(fā)錯(cuò)誤,為了避免這一問(wèn)題,應(yīng)當(dāng)在按鍵之后接入一個(gè)消抖模塊ERZP,如圖14所示。此消抖模塊采用的是定時(shí)方式去毛刺。系統(tǒng)中,當(dāng)CLK計(jì)數(shù)達(dá)到12時(shí),識(shí)別為有效的高電平狀態(tài),而當(dāng)計(jì)數(shù)達(dá)到7時(shí),則被視為有效的低電平狀態(tài)。模塊程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYERZPISPORT(CLK:INSTD_LOGIC;--時(shí)鐘信號(hào) KIN:INSTD_LOGIC;--按鍵輸入信號(hào)KOUT:OUTSTD_LOGIC);--消抖后的輸出信號(hào)ENDERZP;ARCHITECTUREONEOFERZPISSIGNALKINL,KINH:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK,KIN,KINL,KINH) BEGIN IFCLK'EVENTANDCLK='1'THEN--上升沿到來(lái)IF(KIN='0')THENKINL<=KINL+1;--低電平時(shí)計(jì)數(shù)ELSEKINL<="0000";ENDIF;IF(KIN='1')THENKINH<=KINH+1;--高電平時(shí)計(jì)數(shù)ELSEKINH<="0000";ENDIF;IF(KINH>"1100")THENKOUT<='1';--高電平計(jì)數(shù)為12時(shí),輸出高電平ELSIF(KINL>"0111")THENKOUT<='0';--低電平計(jì)數(shù)為7時(shí),輸出低電平ENDIF; ENDIF;ENDPROCESS;ENDONE;鍵按下鍵按下前沿抖動(dòng)后沿抖動(dòng)鍵穩(wěn)定圖13按鍵抖動(dòng)圖圖14消抖模塊3.8頂層模塊連接頂層系統(tǒng)的設(shè)計(jì)就是在完成各模塊的編譯和仿真驗(yàn)證后,再編寫(xiě)一個(gè)頂層文件,將所有單元模塊連接成一個(gè)完整的電路。經(jīng)過(guò)編譯和保存,最終得到了頂層文件的工作原理圖。如圖15所示,直流電機(jī)綜合測(cè)控系統(tǒng)主要由工作時(shí)鐘模塊、電機(jī)測(cè)速系統(tǒng)、PWM控制電路、主控模塊和數(shù)碼管譯碼模塊這五個(gè)部分組成,再結(jié)合每個(gè)按鍵后所需的消抖模塊或者觸發(fā)器模塊共同形成完整的電路結(jié)構(gòu)。其中主控模塊的輸入連接兩個(gè)按鍵,分別控制電機(jī)啟停和正反轉(zhuǎn),輸出連接驅(qū)動(dòng)模塊。速度控制模塊輸入連接三個(gè)按鍵,控制電機(jī)的加減速和系統(tǒng)復(fù)位。數(shù)碼管譯碼模塊的輸出連接三個(gè)數(shù)碼管,三個(gè)數(shù)碼管顯示電機(jī)速度,一個(gè)數(shù)碼管顯示等級(jí)。圖15頂層文件的原理圖4系統(tǒng)外圍電路設(shè)計(jì)4.1驅(qū)動(dòng)電路驅(qū)動(dòng)電路的核心設(shè)計(jì)依賴(lài)于控制芯片MX1919,它采用了高效的H橋電路結(jié)構(gòu)REF_Ref17643\r\h[14],并結(jié)合了高可靠性的功率管技術(shù),能夠直接驅(qū)動(dòng)線(xiàn)圈、步進(jìn)電機(jī)和直流電機(jī)。MX1919通過(guò)主控芯片上的I/O接口接收控制指令,進(jìn)而直接調(diào)整電源電壓,實(shí)現(xiàn)對(duì)電機(jī)正反轉(zhuǎn)、啟動(dòng)/停止及PWM速度的精確調(diào)控,其電路布局簡(jiǎn)潔,操作簡(jiǎn)便。整個(gè)驅(qū)動(dòng)電路包括P1-P3排針、U1芯片、C1-C2電容、D1穩(wěn)壓管、R1電阻,如圖16所示。其中,P1接供電電源,P2接開(kāi)發(fā)板,P3接電機(jī)。該電路工作過(guò)程為:首先,外部提供的電源電壓經(jīng)過(guò)電源部分的轉(zhuǎn)換,生成適用于驅(qū)動(dòng)直流電機(jī)的電壓和電流。隨后,根據(jù)控制邏輯電路的指令,驅(qū)動(dòng)部分將這些轉(zhuǎn)換后的信號(hào)傳遞給直流電機(jī)。這些信號(hào)包含了電壓和電流的大小及方向等關(guān)鍵參數(shù),用以調(diào)控直流電機(jī)的運(yùn)動(dòng)狀態(tài)。在此電路中,R1主要起限制電流的作用,而D1則負(fù)責(zé)維持電壓穩(wěn)定,通過(guò)串聯(lián)的限流電阻來(lái)防止電流超過(guò)預(yù)設(shè)的安全閾值。然而,這種保護(hù)機(jī)制僅對(duì)單次過(guò)流有效,如果電流過(guò)大,可能導(dǎo)致雪崩擊穿,從而引發(fā)短路。圖16驅(qū)動(dòng)電路原理圖主要驅(qū)動(dòng)芯片MX1919的控制功能如表1所示,INA1(或INA2)和INB1(或INB2)分別是1通道(或2通道)正轉(zhuǎn)和反轉(zhuǎn)邏輯輸入;OUTA1(或OUTA2)和OUTB1(或OUTB2)分別是1通道(或2通道)正轉(zhuǎn)和反轉(zhuǎn)輸出,控制電機(jī)。表1控制功能INAxINBxOUTAxOUTBx功能LLZZ停止HLHL正轉(zhuǎn)LHLH反轉(zhuǎn)HHLL剎車(chē)注:x代表1或者2。4.2測(cè)速電路測(cè)速電路的設(shè)計(jì)主要借助霍爾傳感器ES3144REF_Ref17721\r\h[15]和LM393芯片。ES3144是一款基于雙極半導(dǎo)體工藝制造的霍爾元件,其工作電壓和溫度適應(yīng)范圍廣泛,特別適用于汽車(chē)、工業(yè)及家庭電器中的電子開(kāi)關(guān)應(yīng)用。LM393芯片是一種電壓比較器,具有寬工作電壓、低靜態(tài)電流等特點(diǎn),常被用于模擬與數(shù)字電路之間的轉(zhuǎn)換和信號(hào)處理電路中。整個(gè)測(cè)速電路包括P1排針、U1芯片、U2霍爾傳感器、C1-C2電容、R1-R6電阻、D1-D2的LED燈,如圖17所示,其中P1接開(kāi)發(fā)板。在此電路中,U2輸出的信號(hào)如圖18所示。該信號(hào)在U1中與2號(hào)引腳上的分壓電阻產(chǎn)生的模擬電壓比較后輸出TTL高低電平,如圖19所示。其中C1和C2為濾波電容:C1負(fù)責(zé)穩(wěn)定電源輸出,而C2則確保模擬信號(hào)的穩(wěn)定。R2和R3起限制電流的作用。R4是一個(gè)上拉電阻,它不僅可以將不確定的信號(hào)固定在高電平,還起到了限流作用。圖17測(cè)速電路原理圖VtVtVt圖18霍爾傳感器的輸出信號(hào) 圖19經(jīng)電壓比較器的輸出信號(hào)測(cè)速電路的核心原理在于采用頻率測(cè)量法,即在特定的時(shí)間窗口內(nèi)對(duì)信號(hào)進(jìn)行計(jì)數(shù),從而確定其頻率,如圖20所示。此方法基于電機(jī)旋轉(zhuǎn)產(chǎn)生的脈沖數(shù)量n,在規(guī)定時(shí)間間隔內(nèi)來(lái)測(cè)定轉(zhuǎn)速REF_Ref17218\r\h[11]REF_Ref17218\r\h。值得注意的是,輸出信號(hào)的強(qiáng)度取決于霍爾傳感器在電機(jī)外部的安裝位置。為了獲得最佳的信號(hào)效果,需要通過(guò)實(shí)驗(yàn)來(lái)確定傳感器的理想安裝點(diǎn)REF_Ref17218\r\h[11]。每當(dāng)直流電機(jī)的轉(zhuǎn)軸完成一周的旋轉(zhuǎn),霍爾傳感器會(huì)檢測(cè)到磁鋼的信號(hào),并隨之產(chǎn)生一個(gè)脈沖信號(hào)。這些脈沖信號(hào)經(jīng)過(guò)放大和整形處理后,會(huì)轉(zhuǎn)化為高低電平信號(hào),隨后被送往FPGA芯片進(jìn)行計(jì)數(shù)。通過(guò)計(jì)數(shù)這些信號(hào),我們能夠精確地計(jì)算出直流電機(jī)的轉(zhuǎn)速。FPGA信號(hào)源規(guī)定時(shí)間內(nèi)計(jì)數(shù)FPGA信號(hào)源規(guī)定時(shí)間內(nèi)計(jì)數(shù)圖20測(cè)速原理圖5實(shí)物測(cè)試與仿真5.1主要模塊仿真5.1.1PWM控制電路(1)PWM脈寬調(diào)制發(fā)生模塊ADR來(lái)源于8位計(jì)數(shù)器的輸入計(jì)數(shù)值,CIN為按鍵輸入的設(shè)定值,OT為輸出值。為了確保穩(wěn)定的波形觀察,ADR被設(shè)定為從00000000計(jì)數(shù)至11111111,并在到達(dá)此值后循環(huán)重新開(kāi)始,其整個(gè)計(jì)數(shù)周期固定為1ns。在圖21中,CIN被設(shè)定為00011111。當(dāng)ADR的值小于CIN時(shí),OT輸出高電平;當(dāng)ADR的值達(dá)到或超過(guò)CIN時(shí),OT則輸出低電平。在整個(gè)過(guò)程中,OT輸出的頻率保持穩(wěn)定,從而形成PWM波形。進(jìn)一步觀察圖22和圖23,隨著OT設(shè)定值逐漸增加——分別設(shè)定為00111111和01111111,OT輸出的高電平持續(xù)時(shí)間相應(yīng)延長(zhǎng)。這反映了PWM波的占空比隨著設(shè)定值的增加而增大,進(jìn)而導(dǎo)致電機(jī)速度的提升。圖21PWM占空比12.16%的仿真圖圖22PWM占空比24.71%的仿真圖圖23PWM占空比49.80%的仿真圖(2)速度控制模塊key1為系統(tǒng)復(fù)位,key4和key5為按鍵輸入,DOUT為輸出信號(hào),LED為輸出的速度等級(jí)。從仿真圖24看出,key1為低電平時(shí),LED和DOUT信號(hào)均被清零。當(dāng)key5為低電平時(shí),即選擇了加速檔。此時(shí)每當(dāng)key4上升沿觸發(fā)時(shí),LED從0000每次遞增1,直至1001;DOUT信號(hào)會(huì)更新為L(zhǎng)ED當(dāng)前顯示等級(jí)所對(duì)應(yīng)的設(shè)定值。當(dāng)key5為高電平時(shí),即選擇了減速檔,從圖24中看出,此時(shí)每當(dāng)key4上升沿觸發(fā)時(shí),LED從1001依次減1,最多減為0000;DOUT信號(hào)也會(huì)更新為L(zhǎng)ED當(dāng)前顯示等級(jí)所對(duì)應(yīng)的設(shè)定值。圖24速度控制模塊仿真圖5.1.2主控模塊key2和SL為按鍵輸入,分別控制電機(jī)的啟停和正反轉(zhuǎn);M為PWM波的輸入信號(hào);M0和M1為輸出信號(hào),控制電機(jī)。當(dāng)SL的上升沿第一次被檢測(cè)到時(shí),M1的輸出與M同步,同時(shí)M0輸出低電平;當(dāng)SL的上升沿第二次被檢測(cè)到時(shí),M0的輸出與M同步,M1則輸出低電平。此過(guò)程中不斷交替進(jìn)行。當(dāng)key2為低電平時(shí),M0和M1均輸出低電平。主控模塊仿真波形如圖25所示。圖25主控模塊仿真圖5.1.3電機(jī)測(cè)速系統(tǒng)(1)頻率計(jì)控制模塊:CLK1HZ為1HZ的輸入時(shí)鐘信號(hào);CNT_EN、CLR、LOCK為輸出信號(hào),分別為計(jì)數(shù)器時(shí)鐘使能、計(jì)數(shù)器清零、鎖存信號(hào)REF_Ref8764\r\h[13]。從仿真圖26看出,為了展示波形,CLK1HZ時(shí)鐘周期設(shè)置為80ns,與實(shí)際要求不同。在此設(shè)置下,CNT_EN、CLR和LOCK的輸出周期均為160ns。每當(dāng)CLK1HZ的上升沿出現(xiàn)時(shí),CLR和LOCK的狀態(tài)交替變化:第一次上升沿時(shí),CNT_EN為高電平,LOCK為低電平;第二次上升沿時(shí),CNT_EN變?yōu)榈碗娖?,LOCK變?yōu)楦唠娖?。?dāng)CNT_EN和CLK1HZ均為低電平時(shí),CLR輸出高電平,即產(chǎn)生清零信號(hào)。圖26頻率計(jì)控制模塊仿真圖(2)電機(jī)脈沖計(jì)數(shù)模塊:CLK為輸入的時(shí)鐘信號(hào),enb和CLR為輸入信號(hào),分別為計(jì)數(shù)使能信號(hào)和清零信號(hào);q為計(jì)數(shù)輸出信號(hào)。從仿真圖27看出,當(dāng)enb信號(hào)為高電平時(shí),q隨著CLK上升沿的到來(lái)進(jìn)行遞增計(jì)數(shù);當(dāng)enb信號(hào)為低電平時(shí),q停止計(jì)數(shù)。當(dāng)CLR信號(hào)為高電平時(shí),則q=000000000000。當(dāng)q的低4位值到達(dá)1001時(shí),就向高位進(jìn)1,q=000000010000,q的低4位值又從0000計(jì)數(shù)到1001,再次觸發(fā)進(jìn)位,q=000000100000。這一過(guò)程持續(xù)進(jìn)行,形成一個(gè)有效的3位十進(jìn)制計(jì)數(shù)器。圖27電機(jī)脈沖計(jì)數(shù)模塊仿真圖(3)鎖存模塊:D和LK為輸入信號(hào),分別為電機(jī)轉(zhuǎn)速計(jì)數(shù)值、鎖存信號(hào);LEDA、LEDB和LEDC為輸出信號(hào)。從仿真圖28看出,LK為高電平時(shí),D中的計(jì)數(shù)值將被鎖存,并且這個(gè)值會(huì)被分別賦值給三個(gè)輸出信號(hào)。具體來(lái)說(shuō),D的高4位會(huì)賦給LEDA,中間4位賦給LEDB,低4位賦給LEDC。圖28鎖存模塊仿真圖5.1.4觸發(fā)器模塊CLK為按鍵輸入,j、k為輸入信號(hào);Q、Qn為輸出信號(hào)。為方便觀察波形,CLK設(shè)定為固定周期80ns,從仿真圖29看出,當(dāng)j=1,k=0時(shí),Q=0,Qn=1;當(dāng)j=0,k=1時(shí),Q=1,Qn=0;當(dāng)j=1,k=1時(shí),Q和Qn翻轉(zhuǎn)上一個(gè)狀態(tài)值;當(dāng)j=0,k=0時(shí),Q和Qn保持上一個(gè)狀態(tài)值。圖29觸發(fā)器模塊仿真圖5.1.5消抖模塊CLK為4096HZ的輸入時(shí)鐘信號(hào),KIN為按鍵輸入信號(hào);KOUT為消抖后的輸出信號(hào)。為了簡(jiǎn)化波形觀察和分析,從仿真圖30看出,設(shè)定CLK時(shí)鐘周期為5ns,與實(shí)際要求不同。當(dāng)KIN為高電平時(shí),CLK的計(jì)數(shù)達(dá)到12時(shí),KOUT會(huì)輸出高電平;當(dāng)KIN為低電平時(shí),CLK的計(jì)數(shù)達(dá)到7時(shí),KOUT會(huì)輸出為低電平。圖30消抖模塊仿真圖5.2結(jié)果測(cè)試在完成外圍電路與FPGA開(kāi)發(fā)板相關(guān)引腳的連接之后,通過(guò)下載器將已編寫(xiě)的程序燒錄至芯片中,系統(tǒng)即可進(jìn)入正常運(yùn)行模式。此外,將生成的sof文件轉(zhuǎn)化為jic文件,并通過(guò)JTAG接口將其下載

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論