直流無刷電機控制綜合實驗_第1頁
直流無刷電機控制綜合實驗_第2頁
直流無刷電機控制綜合實驗_第3頁
直流無刷電機控制綜合實驗_第4頁
直流無刷電機控制綜合實驗_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、東南大學(xué)自動化學(xué)院實 驗 報 告課程名稱: DSP原理及C程序開發(fā) 實驗名稱: 直流無刷電機控制綜合實驗 院 (系): 自動化學(xué)院 專 業(yè): 自動化 姓 名: 楊明亮 學(xué) 號: 08009117 實 驗 室: 實驗組別: 同組人員: 實驗時間:2012 年 5 月 20 日評定成績: 審閱教師: 直流無刷電機綜合控制實驗一、實驗?zāi)康睦肍28335核心板與ICETEK-MOTOR-E運動控制板,實現(xiàn)直流無刷電機的驅(qū)動與轉(zhuǎn)速控制,利用小鍵盤或電位器對直流無刷電機進行轉(zhuǎn)速調(diào)節(jié),并利用液晶屏顯示轉(zhuǎn)速等狀態(tài)信息。二、實驗要求1. 基本功能掌握F28335核心板與ICETEK-MOTOR-E運動控制板的

2、使用方法,接線正確,能捕獲并證實霍爾傳感器狀態(tài)變化規(guī)律(表1);能正確總結(jié)出正/反轉(zhuǎn)控制表(表2),從而控制電機正轉(zhuǎn)/反轉(zhuǎn);能通過修改占空比,用示波器觀察pwm口輸出波形的變化。2. 提高功能能通過閱讀學(xué)習(xí)“ICETEK-Motor-E使用說明書.pdf”,發(fā)現(xiàn)ICETEK-MOTOR-E運動控制板中的電位器信號,編制程序從DSP相應(yīng)的ADC輸入端口采集該電位器信號,能用CCS圖形顯示AD變換結(jié)果曲線;能編制程序,利用AD變換結(jié)果調(diào)節(jié)PWM占空比,從而對直流無刷電機進行調(diào)速;能設(shè)計基本的人機接口軟件,即編制程序,利用小鍵盤進行正轉(zhuǎn)、反轉(zhuǎn)、停止功能選擇,利用液晶屏顯示(示意)正轉(zhuǎn)、反轉(zhuǎn)、停止等狀

3、態(tài)信息,并可自行擴展其它輔助功能。三、實驗原理1直流無刷電動機 ICETEK-F2812-BCM實驗箱采用的直流無刷電機是三相方波控制型直流無刷電機(BLDCM),如果按照一定順序給電機的各相通入方波即可使電機轉(zhuǎn)動,轉(zhuǎn)動的速度及力矩與通入電機定子繞組的電壓、電流成正比關(guān)系。2. 電機驅(qū)動與控制通過ICETEK-F2812-BCM實驗箱,ICETEK-F2812-A板與電機驅(qū)動板及直流無刷電機連接,通過編程,TMS320F2812輸出的控制信號能夠控制電機轉(zhuǎn)動。具體控制信號連接如下所示:電機驅(qū)動模塊的內(nèi)部結(jié)構(gòu)如下所示: 各PWM管腳按如下順序完成信號的輸出可使電機轉(zhuǎn)動: 其中,PWM代表輸出一定

4、占空比的PWM波,0常關(guān)或強制低,1常開或強制高。PhaseA、PhaseB和PhaseC的相應(yīng)輸出為: PWM1-6控制:如果要電機轉(zhuǎn)動則連接電機的PhaseA、PhaseB和PhaseC的輸出需要滿足上面圖2-2給出的波形,每相電壓在±24V之間變動并滿足上述時序關(guān)系。而要實現(xiàn)這一輸出,需要在PWM1-6管腳上輸出滿足上面圖描述的波形和時序關(guān)系。3. D4、D5、D6的變化順序決定電機正反轉(zhuǎn)。D6 D5 D4 正轉(zhuǎn)(俯視電機主軸,順時針轉(zhuǎn)動)1 0 01 0 10 0 10 1 10 1 01 1 0D6 D5 D4 反轉(zhuǎn)(俯視電機主軸,逆時針轉(zhuǎn)動)1 0 01 1 00 1 0

5、0 1 10 0 11 0 1轉(zhuǎn)速控制:如上所述,電機轉(zhuǎn)動需要安裝一定頻率送狀態(tài)0-5控制字,而送電機控制信號的速度(頻率)則在一定程度上決定了電機轉(zhuǎn)速,0-5各狀態(tài)切換得快,則電機可以快些運行。但還有一個因素,即送電機輸出的電流,送給電機定子的三相繞組的電流直接決定了電機轉(zhuǎn)子能產(chǎn)生多大的轉(zhuǎn)矩。當(dāng)控制狀態(tài)由一種切換到下一種時,電流發(fā)生的力矩是否能讓轉(zhuǎn)子轉(zhuǎn)動到位,這決定了電機在下一個狀態(tài)電流到來時是否能順利轉(zhuǎn)動下去。如果電流弱,不足以使轉(zhuǎn)子轉(zhuǎn)動到位,電機將“失步”或根本無法轉(zhuǎn)動;如果電流過大,在下一個狀態(tài)到來前早就到位,電機轉(zhuǎn)子將在當(dāng)前電流控制下在此位置“剎車”,如果在慣性的驅(qū)動下稍微轉(zhuǎn)動過位時

6、,就會反向轉(zhuǎn)回來,導(dǎo)致電機轉(zhuǎn)子在運行時會產(chǎn)生不同程度的震動,甚至電機繞組發(fā)熱。由此,我們需要選擇好電機狀態(tài)切換的頻率,也要控制好送電機驅(qū)動信號的電流大小,亦即控制好切換PWM控制字的頻率。四、實驗內(nèi)容及結(jié)果1、插好電機驅(qū)動板,連接好霍爾傳感器接頭,先不連接驅(qū)動電源和電機的abc三項電源,給dsp試驗板上電,則霍爾傳感器即可工作。手動轉(zhuǎn)動電機,電機不加電,觀察正轉(zhuǎn)和反轉(zhuǎn)時指示燈D4、D5、D6等的變化順序。(1) 先進行霍爾傳感器的狀態(tài)讀入測試,在工程管理器的include下面找到build.h文件,將編譯開關(guān)#define BUILDLEVEL LEVEL? 的設(shè)置設(shè)為LEVEL0,然后編譯程

7、序、運行程序測試。注意在中斷服務(wù)程序的LEVEL0處理分支下,使用變量nNowStatus給pwm指針賦值。程序生成PWM的原理參見“準(zhǔn)備實驗2”: pwm1.CmtnPointer = nNowStatus;/0-5 pwm1.DutyFunc = (int16)rmp2.Out; pwm1.update(&pwm1);在變量觀察窗口中改變nNowStatus的值(0-5之間),在變量觀察窗口里觀察變量hallcap的變化。觀察指示燈的狀態(tài)和hallcap的數(shù)值的變化對應(yīng)關(guān)系,總結(jié)出指示燈和霍爾傳感器讀入的狀態(tài)的對應(yīng)關(guān)系,然后總結(jié)出正轉(zhuǎn)hallcap的變化順序,和反轉(zhuǎn)時的變化順序。D

8、6 D5 D4 正轉(zhuǎn)(俯視電機主軸,順時針轉(zhuǎn)動)1 0 01 0 10 0 10 1 10 1 01 1 0D6 D5 D4 反轉(zhuǎn)(俯視電機主軸,逆時針轉(zhuǎn)動)1 0 01 1 00 1 00 1 10 0 11 0 1(2) 總結(jié)對應(yīng)關(guān)系填寫下表, :俯視電機主軸,順時針轉(zhuǎn)動. (D6D4燈亮為1,滅為0)表1 正轉(zhuǎn)關(guān)系nNowStatusHallcap對應(yīng)捕獲端口數(shù)據(jù)D6D5D40410015101210013301142010561102. 根據(jù)捕獲狀態(tài)驅(qū)動電機運轉(zhuǎn)(1)目的:在程序中添加內(nèi)容完成使電機正/反方向轉(zhuǎn)動。(2)分析:根據(jù)實驗原理,我們只需要控制送給PWM波形發(fā)生模塊pwm1的

9、狀態(tài)輸入順序即可改變電機轉(zhuǎn)動方向。根據(jù)準(zhǔn)備實驗1中總結(jié)出的正反轉(zhuǎn)順序可知,如果當(dāng)前電機鎖定狀態(tài)為5狀態(tài),欲正轉(zhuǎn),則電機須鎖定到1狀態(tài),所以pwm.Cmtnpointer賦值為2,若想反轉(zhuǎn),則電機須鎖定到4狀態(tài),所以pwm指針賦值為0。因此得出正反轉(zhuǎn)數(shù)組下標(biāo)(下標(biāo)為當(dāng)前霍爾傳感器讀入狀態(tài),數(shù)組值為向下一狀態(tài)轉(zhuǎn)動pwm所賦數(shù)值),與pwm指針對應(yīng)數(shù)組為:表2 正/反轉(zhuǎn)控制表轉(zhuǎn)向正反正反正反正反正反正反霍爾狀態(tài)123456Pwm指針410352253014(3)修改程序: 以上表為參考修改BLDCMControl.c程序中的相關(guān)變量定義:Uint16 fanzhuan6=1,3,2,5,0,4; U

10、int16 zhengzhuan6=4,0,5,2,3,1; /注意BLDCMControl.c中的代碼,并嘗試讓電機反轉(zhuǎn)。 nISRWork1=(int16)hall1.HallGpio; bISRWork=( nISRWork1>0 && nISRWork1<7 )?(1):(0); if ( bISRWork ) nNowStatus=zhengzhuannISRWork1-1;/正轉(zhuǎn)nNowStatus=fanzhuannISRWork1-1;/反轉(zhuǎn) /補充代碼,以nISRWork1為索引,查找表zhengzhuan或fanzhuan,并將值賦給nNowSt

11、atus 3. 能通過修改PWM的周期,即改變pwm1.DutyFunc的值來調(diào)速,并用示波器觀察pwm口輸出波形的變化。4. 能通過閱讀學(xué)習(xí)“ICETEK-Motor-E使用說明書.pdf”,發(fā)現(xiàn)ICETEK-MOTOR-E運動控制板中的電位器信號,編制程序從DSP相應(yīng)的ADC輸入端口采集該電位器信號,能用CCS圖形顯示AD變換結(jié)果曲線;5. 能編制程序,利用AD變換結(jié)果調(diào)節(jié)PWM占空比,從而對直流無刷電機進行調(diào)速;6. 設(shè)計基本的人機接口軟件,即編制程序,利用小鍵盤進行正轉(zhuǎn)、反轉(zhuǎn)、停止功能選擇,利用液晶屏顯示(示意)正轉(zhuǎn)、反轉(zhuǎn)、停止等狀態(tài)信息,并可自行擴展其它輔助功能。按“1”電機正轉(zhuǎn),第

12、一行顯示速度值,第二行顯示狀態(tài),“1”表示正轉(zhuǎn)按“2”電機正轉(zhuǎn),第一行顯示速度值,第二行顯示狀態(tài),“2”表示反轉(zhuǎn)按“3”電機停轉(zhuǎn),第一行顯示速度值為,第二行顯示狀態(tài),“0”表示停轉(zhuǎn)五、實驗程序主要代碼:1.main函數(shù)void main(void)/*#if (DSP_TARGET=F28335)InitSysCtrl(); InitXintf16Gpio(); EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; EDIS; EALLOW; / This is needed to write to EALLOW protected registers

13、SysCtrlRegs.HISPCP.all = 0x0000; / SYSCLKOUT/1 EDIS; / This is needed to disable write to EALLOW protected registers / Disable and clear all CPU interrupts:DINT;IER = 0x0000;IFR = 0x0000;nISRWork1=0;InitPieCtrl();InitPieVectTable(); InitCpuTimers(); ConfigCpuTimer(&CpuTimer0, 100, SYSTEM_FREQUEN

14、CY*10/ISR_FREQUENCY); StartCpuTimer0();EALLOW;/ This is needed to write to EALLOW protected registersPieVectTable.TINT0 = &MainISR;EDIS; / This is needed to disable write to EALLOW protected registers PieCtrlRegs.PIEIER1.all = M_INT7;IER |= M_INT1;#endif/*/ Initialize PWM module pwm1.PeriodMax =

15、 (SYSTEM_FREQUENCY/PWM_FREQUENCY)*1000; / Asymmetric PWM pwm1.DutyFunc = DFuncDesired; / DutyFunc = Q15 pwm1.init(&pwm1); / Initialize DATALOG module dlog.iptr1 = &DlogCh1; dlog.iptr2 = &DlogCh2; dlog.iptr3 = &DlogCh3; dlog.iptr4 = &DlogCh4; dlog.trig_value = 0x01; dlog.size = 0x

16、400; dlog.prescalar = 1; dlog.init(&dlog);/ Initialize ADC module adc1.ChSelect = 0x7777;/6543; / for DMC1500 and eZdsp2812/eZdsp2808 boardsadc1.init(&adc1);/ Initialize enable drive module / drv1.init(&drv1);/ Initialize the SPEED_PR module (150 MHz, N = 1 event period/rev) speed1.Input

17、Select = 0; speed1.BaseRpm = 120*(BASE_FREQ/P); speed1.SpeedScaler = (Uint32)(ISR_FREQUENCY/(1*BASE_FREQ*0.001);/ Initialize RMPCNTL module rc1.RampDelayMax = 20; rc1.RampLowLimit = _IQ(0); rc1.RampHighLimit = _IQ(1);/ Initialize Hall module hall1.DebounceAmount = 5; hall1.Revolutions = -10; hall1.i

18、nit(&hall1);/ Initialize RMP2 modulermp2.Out = (int32)DFuncDesired;rmp2.Ramp2Delay = 0x00000050; rmp2.Ramp2Max = 0x00007FFF; rmp2.Ramp2Min = 0x0000000F;EINT; / Enable Global interrupt INTMERTM;/ Enable Global realtime interrupt DBGM/*CTRGR=0x80;/ 初始化ICETEK-CTRCTRGR=0x0;CTRGR=0x80;CTRLR=0;/ 關(guān)閉東西方

19、向的交通燈CTRLR=0x40;/ 關(guān)閉南北方向的交通燈CTRLR=0xc1;uPort8000=CTRLCDCR;/ 清鍵盤緩沖區(qū)TurnOnLCD();/ 打開顯示LCDCLS();/ 清除顯示內(nèi)存for ( nCount=0;nCount<8;nCount+ )ledbufnCount=0x0ff;/ 顯示為空白ledxnCount=(nCount<<4);/ 生成顯示列控制字control=0;nSpeed=0;direction=0;DFuncDesired=0;h=0;RefreshLEDArray();nCount=nCursorCount=0;CTRLCDCM

20、DR=LCDCMDPAGE;/ 設(shè)置操作頁=0Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDVERADDRESS;/ 起始列=0Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);cKey=0;cOldKey=0;/*for (;)nScanCode=CTRLCDCMDR;nScanCode&=0x0ff;uPort8000=CTRLCDCR;if ( nScanCode!=0 ) cKey=nScanCode;/*在此編程*/if(cKey!=cOldKey)/readKey=

21、ConvertScanToChar(nScanCode);switch ( cKey )case 1:direction=1; break;case 2:direction=2;break;case 3:direction=0; break;CTRLCDCMDR=LCDCMDPAGE;/ 設(shè)置操作頁=0Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDVERADDRESS;/ 起始列=0Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);if(direction!=0)tempSpeed=l

22、nADCValues;elsetempSpeed=0;sx0=tempSpeed/1000%10;sx1=tempSpeed/100%10;sx2=tempSpeed/10%10;sx3=tempSpeed%10;for (i=0;i<8;i+ )CTRLCDLCR=ledkeysx0i;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);for (i=0;i<8;i+ )CTRLCDLCR=ledkeysx1i;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);for (i=0;i<8;i+ )CTRLC

23、DLCR=ledkeysx2i;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);for (i=0;i<8;i+ )CTRLCDLCR=ledkeysx3i;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDPAGE+1;/ 設(shè)置操作頁=0 顯示電機轉(zhuǎn)的方向Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDVERADDRESS;/ 起始列=0Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDD

24、ELAY);for (i=0;i<8;i+ )CTRLCDLCR=ledkeydirectioni;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY); 2.定時中斷interrupt void MainISR(void)#if (BUILDLEVEL=LEVEL0) rmp2.DesiredInput = (int32)DFuncDesired; rmp2.calc(&rmp2);hall1.read(&hall1);hallcap=hall1.HallGpio;i=0; pwm1.CmtnPointer =nNowStatus;/0-

25、5 pwm1.DutyFunc = (int16)rmp2.Out; pwm1.update(&pwm1);#endif / (BUILDLEVEL=LEVEL0)/*#if (BUILDLEVEL=LEVEL1)#endif / (BUILDLEVEL=LEVEL1)/*#if (BUILDLEVEL=LEVEL2) adc1.read(&adc1); lnADCValues=adc1.Ch1Out; lnADCValues+=adc1.Ch2Out; lnADCValues+=adc1.Ch3Out; lnADCValues+=adc1.Ch4Out; lnADCValue

26、s/=4; SampleTablearray_index+= lnADCValues;if(array_index=1024) array_index=0; lnADCValues=(lnADCValues-2150)*10; if ( lnADCValues<100 )lnADCValues=0;hall1.HallMapPointer = (int16)mod1.Counter; hall1.read(&hall1); mod1.TrigInput =(int32)hall1.CmtnTrigHall; mod1.Counter = (int32)hall1.HallMapP

27、ointer; mod1.calc(&mod1); rmp2.DesiredInput = (int32)DFuncDesired; rmp2.calc(&rmp2); nISRWork1=(int16)hall1.HallGpio; bISRWork=( nISRWork1>0 && nISRWork1<7 )?(1):(0); if ( bISRWork ) if(direction=1) nNowStatus=zhengzhuannISRWork1-1; else if(direction=2) nNowStatus=fanzhuannISRW

28、ork1-1; if ( bISRWork ) pwm1.CmtnPointer = nNowStatus; if(direction=0) pwm1.DutyFunc = 0; else pwm1.DutyFunc = lnADCValues+600; pwm1.update(&pwm1); nISRWork1=(int16)rmp2.Out;#endif / (BUILDLEVEL=LEVEL2)/*VirtualTimer+;VirtualTimer &= 0x00007FFF; dlog.update(&dlog);mmexit:/*#if (DSP_TARGE

29、T=F28335)/ Acknowledge interrupt to recieve more interrupts from PIE group 1PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;#endif/*#if (DSP_TARGET=F2812)EvaRegs.EVAIMRB.bit.T2PINT = 1; EvaRegs.EVAIFRB.all = BIT0;#endif/*六、實驗總結(jié)1. 在本次實驗中我們實現(xiàn)了基本功能和提高功能的所有要求, 實現(xiàn)了滿足了用CCS圖形顯示AD變換結(jié)果曲線,利用電位器對直流無刷電機進行轉(zhuǎn)速調(diào)節(jié),用鍵盤控制電機的正反轉(zhuǎn)和停轉(zhuǎn),并利用液晶屏

溫馨提示

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

評論

0/150

提交評論