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

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Proteus和AVR單片機(jī)的無刷直流電機(jī)控制系統(tǒng)仿真

          基于Proteus和AVR單片機(jī)的無刷直流電機(jī)控制系統(tǒng)仿真

          作者: 時(shí)間:2016-10-16 來源:網(wǎng)絡(luò) 收藏

          摘要:文中設(shè)計(jì)的控制系統(tǒng)選擇ATmega128單片機(jī)作為主控芯片,使用了EDA工具軟件設(shè)計(jì)了的控制系統(tǒng),并進(jìn)行了仿真實(shí)驗(yàn)。在仿真實(shí)驗(yàn)中利用軟件的仿真功能,進(jìn)行了電機(jī)轉(zhuǎn)速控制的實(shí)驗(yàn),控制系統(tǒng)的可行性以及轉(zhuǎn)速控制效果得到了驗(yàn)證。實(shí)驗(yàn)過程中能直觀地看到實(shí)驗(yàn)結(jié)果,所設(shè)計(jì)的系統(tǒng)滿足了轉(zhuǎn)速控制的要求,電機(jī)運(yùn)行穩(wěn)定,在硬件電路和軟件設(shè)計(jì)都有一定的輔助作用。

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

          關(guān)鍵詞;;無刷直流電機(jī);仿真;控制系統(tǒng)

          永磁無刷直流電動(dòng)機(jī)不使用電刷和換向器組成的機(jī)械換向機(jī)構(gòu)而是使用電子的直流電動(dòng)機(jī)。永磁無刷直流電機(jī)首先不會(huì)出現(xiàn)諸如電刷引起的摩擦和電火花、因機(jī)械換相機(jī)構(gòu)而導(dǎo)致的壽命短等問題;其次無刷直流電機(jī)在結(jié)構(gòu)上有一定的簡(jiǎn)化,轉(zhuǎn)子上安裝永磁體,定子上安裝電樞繞組,因而在導(dǎo)熱方面效果更好。這樣既能保持直流電動(dòng)機(jī)在啟動(dòng)和調(diào)速方面的出色特性,同時(shí)又在運(yùn)行穩(wěn)定性和能量轉(zhuǎn)換效率等方面保持一定的優(yōu)勢(shì),進(jìn)而提高電機(jī)運(yùn)行的經(jīng)濟(jì)性。單片機(jī)盡管在性能上不如DSP芯片,但卻有更低的價(jià)格,外部電路設(shè)計(jì)簡(jiǎn)單,在通常狀況下單片機(jī)的控制功能和處理速度也可以達(dá)到的需求,所以這里選擇單片機(jī)作為直流無刷電機(jī)驅(qū)動(dòng)控制系統(tǒng)的主控芯片。

          Proteus軟件目前在單片機(jī)仿真及其他相關(guān)的外圍器件的仿真方面,Proteus是一個(gè)非常實(shí)用的工具軟件。可以使用Proteus完成硬件電路的設(shè)計(jì),可以對(duì)單片機(jī)在內(nèi)的一些微處理器進(jìn)行編程,在微處理器上實(shí)現(xiàn)不同的控制算法,并且仿真過程中的控制效果可以直觀觀測(cè)。文中采用Proteus仿真平臺(tái)設(shè)計(jì)了以為控制核心的無刷直流電機(jī)仿真控制器,把有效的理論實(shí)踐基礎(chǔ)應(yīng)用到實(shí)際系統(tǒng)的設(shè)計(jì)當(dāng)中。

          1 Proteus中的無刷直流電機(jī)模型

          無刷直流電機(jī)模型是在直流電機(jī)模型基礎(chǔ)之上建立的,根據(jù)應(yīng)用需要可在Proteus軟件中對(duì)電機(jī)的參數(shù)進(jìn)行設(shè)定,包括電機(jī)的額定使用電壓、空載狀態(tài)轉(zhuǎn)速、轉(zhuǎn)子的轉(zhuǎn)動(dòng)慣量、定子繞組的阻抗及定子繞組間的互感等參數(shù)。軟件提供定子繞組為星型連接(STAR)和三角形連接(TRIANGIE)兩種模型,在此選用星型連接的無刷直流電機(jī)模型,該電機(jī)模型中自帶有3個(gè)霍爾位置傳感器,用于轉(zhuǎn)子位置的檢測(cè)。

          2 硬件電路設(shè)計(jì)

          硬件電路主要包括單片機(jī)的硬件電路、電機(jī)的驅(qū)動(dòng)電路、功率逆變電路、運(yùn)行電流檢測(cè)電路、轉(zhuǎn)速檢測(cè)電路等。原理框圖如圖1所示。

          a.jpg

          2.1 主控制電路

          主控芯片選擇ATmega128單片機(jī),電路如圖2所示。ATmega128芯片采用RISC結(jié)構(gòu),穩(wěn)定性高,應(yīng)用廣泛。其外設(shè)具有6路分辨率可編程  (2~16位)的PWM,8路10位ADC。其具備的功能可用于無刷直流電機(jī)的驅(qū)動(dòng)控制。ATmega128芯片具有輸入捕獲功能,能檢測(cè)到來自的外部中斷信號(hào)。將電機(jī)模型中自帶的霍爾位置傳感器A.B,C分別接入單片機(jī)的PD0,PD1,PD2引腳,隨著電機(jī)轉(zhuǎn)子位置的改變,3個(gè)霍爾傳感器會(huì)輸出不同的電平信號(hào)。當(dāng)發(fā)生中斷時(shí),單片機(jī)的輸入引腳可讀取來自霍爾傳感器的電平狀態(tài),在查詢對(duì)應(yīng)的霍爾換相真值表后即可得到當(dāng)前的換相信息,進(jìn)而實(shí)現(xiàn)換相控制。

          b.jpg

          2.2 功率驅(qū)動(dòng)電路

          無刷直流電機(jī)的功率驅(qū)動(dòng)如采用三相半橋方式,其電路部分器件相對(duì)較少,電機(jī)繞組的任一相只靠一個(gè)功率管即可控制電流通斷,每相繞組的通電時(shí)間與關(guān)斷時(shí)間之比為1:2,這使得每相繞組的利用率不高。三相全橋的電路部分器件的數(shù)量上是半橋式的兩倍,但每相繞組可通電240&deg;電角度,繞組利用率相應(yīng)得到很大提高。三相橋式逆變器是由6個(gè)N溝道功率MOSFET管構(gòu)成。IR2101是雙通道、柵極驅(qū)動(dòng)、高壓高速功率驅(qū)動(dòng)器,因?yàn)镮R2101采用了高度集成的電平轉(zhuǎn)換技術(shù),使邏輯電路對(duì)功率器件的控制要求得到簡(jiǎn)化。功率MOSFET管采用二二導(dǎo)通方式,6個(gè)功率管在電機(jī)運(yùn)行過程中的通斷狀態(tài)共有6個(gè)。圖3所示的功率驅(qū)動(dòng)電路是其中一相繞組對(duì)應(yīng)的橋臂。主控制器輸出的PWM脈沖方波分別加載到功率驅(qū)動(dòng)芯片IR2101的HIN和LIN引腳,用于驅(qū)動(dòng)相應(yīng)功率  MOSFET管的通斷。

          c.jpg

          2.3 相電流檢測(cè)電路

          為了檢測(cè)相電流,選擇ACS712ELCTR-30A-T串入全橋公共端,然后將VIOUT端與主控芯片的A/D輸入端口PF0連接。  ACS712是線性電流傳感器,該器件內(nèi)置有精確的低偏置的線性霍爾傳感器電路,其輸出電壓與被檢測(cè)電流成比例。ACS712ELCTR-30A-T霍爾電流傳感器輸出范圍是0.5~4.5  V,而主控芯片ATmega128的A/D轉(zhuǎn)換參考電壓選為VCC,即5 V,電流傳感器輸出不超過A/D轉(zhuǎn)換參考電壓,如圖4所示。

          2.4 速度檢測(cè)電路

          Proteus的無刷直流電機(jī)模型自帶3個(gè)霍爾傳感器,霍爾傳感器在空間上呈120&deg;分布,用于確定電機(jī)轉(zhuǎn)子位置,而且3個(gè)霍爾傳感器在電機(jī)運(yùn)行時(shí)其中兩相輸出信號(hào)相差120&deg;,轉(zhuǎn)子每轉(zhuǎn)過360&deg;電角度時(shí),3個(gè)霍爾傳感器的輸出信號(hào)組合在一起對(duì)應(yīng)換相的6種編碼狀態(tài)。每當(dāng)電機(jī)轉(zhuǎn)子轉(zhuǎn)過了60&deg;角,3個(gè)霍爾傳感器的輸出狀態(tài)就會(huì)相應(yīng)變化一次。于是,電機(jī)的轉(zhuǎn)速就可以通過計(jì)算單位時(shí)間T內(nèi)捕獲的霍爾傳感器輸出變化的次數(shù)n換算出來,轉(zhuǎn)速換算公式為V=60  n/T。由此,要測(cè)量到電機(jī)的轉(zhuǎn)速,就通過主控芯片的輸入捕獲功能獲取到3個(gè)霍爾傳感器中的一路輸出信號(hào)的周期,然后由轉(zhuǎn)速換算公式計(jì)算出電機(jī)轉(zhuǎn)速即可。

          3 軟件設(shè)計(jì)

          系統(tǒng)采用開環(huán)控制和轉(zhuǎn)速電流雙閉環(huán)PID控制,進(jìn)行對(duì)比仿真實(shí)驗(yàn)。開環(huán)控制無論硬件電路還是控制程序都較閉環(huán)PID控制簡(jiǎn)單且易實(shí)現(xiàn),一般在恒定負(fù)載應(yīng)用中采用。在變化負(fù)載應(yīng)用中,當(dāng)電機(jī)轉(zhuǎn)速在一定范圍內(nèi)時(shí),負(fù)載會(huì)發(fā)生變化。需要轉(zhuǎn)速控制精度和良好的動(dòng)態(tài)響應(yīng),因而使用高級(jí)控制算法,但也增加了控制器的復(fù)雜性。閉環(huán)控制采用轉(zhuǎn)速電流雙閉環(huán)增量式PID控制策略,兩種控制方式的程序框圖如圖5所示,其中(a)為開環(huán)控制程序框圖,(b)為閉環(huán)控制程序。

          d.jpg

          4 Proteus仿真結(jié)果及分析

          在AVR  Studio開發(fā)環(huán)境下,用C語言進(jìn)行程序設(shè)計(jì)。然后在Proteus仿真環(huán)境下,向ATmega128單片機(jī)導(dǎo)入編譯生成的hex文件,運(yùn)行仿真即可直觀地觀察無刷直流電機(jī)的運(yùn)行情況。

          Proteus中的無刷直流電機(jī)模型可以直接顯示轉(zhuǎn)速,設(shè)定期望轉(zhuǎn)速為200  r/min,并先后導(dǎo)入開環(huán)控制程序和閉環(huán)控制程序,進(jìn)行對(duì)比觀察,無刷直流電機(jī)的運(yùn)行情況見圖6。圖6中(a)為開環(huán)控制的仿真結(jié)果,開環(huán)控制不能得到穩(wěn)定的轉(zhuǎn)速,這里只是截取了過程中的一個(gè)狀態(tài);圖6中(b)為閉環(huán)控制仿真結(jié)果,通過以上的對(duì)比,閉環(huán)控制中因有PID(比例和積分)控制直流無刷電機(jī)的速度能穩(wěn)定在期望轉(zhuǎn)速值。顯然閉環(huán)PID控制在電機(jī)運(yùn)行轉(zhuǎn)速上具有更好的控制效果。但軟件的實(shí)時(shí)性在仿真環(huán)境下有所降低,出現(xiàn)了一定程度的延時(shí),在仿真實(shí)驗(yàn)中電機(jī)的轉(zhuǎn)速與設(shè)定的轉(zhuǎn)速仍然有少量偏差。

          5 結(jié)束語

          文中在Proteus仿真軟件中設(shè)計(jì)了無刷直流電機(jī)仿真控制系統(tǒng),完成了包含主控制器電路、功率驅(qū)動(dòng)電路、功率逆變電路、電流檢測(cè)電路等硬件電路的設(shè)計(jì),使用C語言編程并導(dǎo)入單片機(jī),在Proteus仿真環(huán)境下進(jìn)行了仿真實(shí)驗(yàn)。通過實(shí)驗(yàn)的直接觀察,實(shí)現(xiàn)了電機(jī)轉(zhuǎn)速的穩(wěn)定控制,并且通過兩種控制策略的對(duì)比,表明閉環(huán)控制在電機(jī)轉(zhuǎn)速控制方面更加穩(wěn)定。該系統(tǒng)能夠滿足無刷直流電機(jī)轉(zhuǎn)速控制的設(shè)計(jì)要求,達(dá)到了預(yù)期的控制效果,對(duì)實(shí)際硬件電路的設(shè)計(jì)和軟件控制策略的選擇都具有一定的參考價(jià)值和輔助作用。



          評(píng)論


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

          關(guān)閉
          看屁屁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); })();