基于TMS320F2812的無刷直流電機控制_第1頁
基于TMS320F2812的無刷直流電機控制_第2頁
基于TMS320F2812的無刷直流電機控制_第3頁
基于TMS320F2812的無刷直流電機控制_第4頁
基于TMS320F2812的無刷直流電機控制_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

.PAGE...WORD完美格式....專業(yè)知識編輯整理..基于TMS320F2812的無刷直流電機控制以前一個項目里有一部分是使用2812控制無刷直流電機,這里分享一下軟硬件設(shè)計和程序代碼:1.無刷直流電機的結(jié)構(gòu)和換相原理無刷直流電機的本體在結(jié)構(gòu)上與永磁同步電動機相似,但沒有籠型繞組和其他啟動裝置。其轉(zhuǎn)子采用永磁材料制成,而定子上有多相電樞繞組,繞組相數(shù)分為兩相、三相、四相和五相,但應(yīng)用最多的是三相和四相。各相繞組分別與外部的電力電子開關(guān)電路中相應(yīng)的功率開關(guān)器件連接,位置傳感器的跟蹤轉(zhuǎn)子與電動機轉(zhuǎn)軸相連接。當(dāng)定子繞組的某一相通電時,該相電流與轉(zhuǎn)子永久磁鋼的磁極所產(chǎn)生的磁場相互作用產(chǎn)生轉(zhuǎn)矩,驅(qū)動轉(zhuǎn)子旋轉(zhuǎn),再由位置傳感器將轉(zhuǎn)子位置變換成電信號去控制電力電子開關(guān)電路,從而使定子各相繞組按一定次序?qū)?定子相電流隨轉(zhuǎn)子位置的變化而按一定的次序換相,這就是直流無刷電動機的換流原理。由于電力電子開關(guān)電路的導(dǎo)通次序是與轉(zhuǎn)子轉(zhuǎn)角同步的,因而起到了機械換相器的換相作用?;赥MS320F2812的無刷直流電機控制系統(tǒng)結(jié)構(gòu)圖如圖1所示。圖1中,直流電源通過開關(guān)電路相電動機定子繞組供電,位置傳感器采用了霍爾傳感器,可不斷檢測轉(zhuǎn)子當(dāng)前位置,DSP控制器根據(jù)當(dāng)前位置信息來判斷哪一相繞組被接通,進而控制開關(guān)管的導(dǎo)通與截止,實現(xiàn)電機的換相。圖1直流無刷電動機控制系統(tǒng)結(jié)構(gòu)圖圖2電子換相器的工作原理圖圖2給出了一個三相無刷直流電機電子換相原理圖。圖中符號H1、H2和H3表示三個霍爾位置傳感器,它們輸出電平信號。當(dāng)電機的轉(zhuǎn)子運行到x-u平面的正半周〔圖中虛線標(biāo)出的區(qū)間,則H1傳感器輸出高電平。同理,當(dāng)電機的轉(zhuǎn)子分別運行到y(tǒng)-v和z-w,平面的正半周〔圖中虛線標(biāo)出的區(qū)間,則對應(yīng)的H2和H3分別輸出高電平。由圖可見,H1、H2和H3輸出高電平的區(qū)間是互有重疊的,如果將H1、H2和H3的輸出電平組合成一個向量[H1H2H3],則可以得到6種有效組合:[001]、[010]、[011]、[100]、[110]和[101],每種組合覆蓋整個圓周的1/6〔即60°??刂破鞲鶕?jù)這六個狀態(tài)組合來決定開關(guān)電路的哪一相被接通以維持電機的運行,當(dāng)狀態(tài)發(fā)生變化時,就必須進行相位的切換。對于電機的三相繞組,A、B和C,采用ANC表示直流母線電壓施加到A-C繞組之間;CNA則表示直流母線電壓施加到C-A繞組之間,其他類似。注意ANC電流從A→C,而CAN電流從C→A,作為直流電機,繞組電流相反意味著受力是相反的,會導(dǎo)致電機反向轉(zhuǎn)動。圖3給出了6種狀態(tài)組合下對應(yīng)的通電繞組的情況,例如在狀態(tài)[001]通電繞組是ANB。如果電機正轉(zhuǎn),則下一個組合狀態(tài)為[101],故應(yīng)將通電繞組切換為ANC;同理,如果電機反轉(zhuǎn),則下一個組合狀態(tài)為[101],故通電繞組應(yīng)該切換為CNB,以次類推。表1給出了電機正向旋轉(zhuǎn)時,轉(zhuǎn)子位置傳感器輸出的狀態(tài)組合[H1H2H3]與下一個導(dǎo)通繞組之間的對應(yīng)關(guān)系。表2給出了電機反轉(zhuǎn)時的情況。圖3基于TMS320F2812無刷直流電動機控制系統(tǒng)原理圖表1無刷直流電機正轉(zhuǎn)相序表當(dāng)前位置下一個導(dǎo)通相各開關(guān)管工作狀態(tài)H1H2H3V1V2V3V4V5V6101BNC000110100BNA100100110CNA100001010CNB001001011ANB011000001ANC010010表2無刷直流電機反轉(zhuǎn)相序表當(dāng)前位置下一個導(dǎo)通相各開關(guān)管工作狀態(tài)H1H2H3V1V2V3V4V5V6101ANB011000100CNB001001110CNA100001010BNA100100011BNC000110001ANC0100102.三相無刷直流電機的DSP控制圖3給出了本設(shè)計中采用的基于TMS320F2812A和三相全橋開關(guān)電路構(gòu)成的無刷直流電機控制器的原理圖。在無刷直流電機內(nèi)部空間間隔120°分布的三個霍爾傳感器H1、H2和H3的輸出信號經(jīng)整形隔離電路后分別與TMS320F2812時間管理器EVA的三個捕獲引腳CAP1/IOPA3,CAP2/IOPA4和CAP3/IOPA5相連,當(dāng)[H1H2H3]狀態(tài)組合發(fā)生變化的時候,將觸發(fā)捕獲單元的中斷,在中斷服務(wù)程序內(nèi),DSP讀取當(dāng)前[H1H2H3]的狀態(tài),根據(jù)表1和表2內(nèi)列出的導(dǎo)通相順序?qū)θ珮螂娐愤M行控制,從而實現(xiàn)換相。例如,當(dāng)[H1H2H3]被讀取的當(dāng)前狀態(tài)為101時,在正轉(zhuǎn)的情況下,應(yīng)該選擇下一個導(dǎo)通相為BNC。這就意味著在圖3中,要控制開關(guān)V4、V5導(dǎo)通,這樣直流母線電壓就施加到B-C繞組之間〔直流電流從B繞組流向C繞組;如果控制反轉(zhuǎn),則應(yīng)該選擇下一個導(dǎo)通相為ANB,這需要控制V2和V3導(dǎo)通。圖3中三相全橋主電路采用3片IR公司的MOSFET器件TRF7317來構(gòu)成,TRF7317內(nèi)部有兩個MOSFET的開關(guān),一個NMOS和一個PMOS,其中NMOS用于構(gòu)成橋臂的下管,而PMOS則用于構(gòu)成橋臂的上管,由于是12V的電機控制系統(tǒng),這種配置使得驅(qū)動電路比較簡單。三相全橋電路每個橋路的上下兩個開關(guān)是不能同時導(dǎo)通的,否則會引起直通短路。MOSFET的開關(guān)控制通過DSP的EVA單元的輸出PWM1-PWM6來實現(xiàn),圖3中給出了PWM1和PWM2同時發(fā)出高電平脈沖導(dǎo)致經(jīng)過幾級邏輯轉(zhuǎn)換變成互相反相的控制脈沖V1和V2,由于V1控制NMOS,而V2控制PMOS,故兩管都會導(dǎo)通引起直通短路??傊?PWM1-PWM6獨立控制三相全橋的6個MOSFET,并且高電平控制導(dǎo)通,而低電平控制截止,為了防止直流短路,不允許出現(xiàn)同一個橋臂上下兩管的控制脈沖同時為高電平的情況。3.PWM信號實現(xiàn)電機調(diào)速的原理無刷直流電機的轉(zhuǎn)速控制是通過控制施加到三相繞組上的直流電壓的大小來實現(xiàn)的,為了實現(xiàn)轉(zhuǎn)速的變化,就需要通過三相全橋開關(guān)電路產(chǎn)生可變的直流電壓,這將通過脈寬調(diào)制原理〔PWM來實現(xiàn)。PWM信號是一系列周期固定、脈寬可變的脈沖電壓,這些脈沖信號的平均值的大小取決于其占空比,這個固定周期稱為PWM的載波周期。將PWM脈沖信號施加到三相全橋電路,其輸出電壓作用于一個慣性設(shè)備〔如一個LC濾波器或者電機等,則控制作用只取決于平均電壓的大小〔慣性設(shè)備類似于一個低通濾波器,而此平均電壓正是由PWM信號的占空比來控制的。于是,不斷修改PWM信號的脈沖寬度即可控制平均電壓的大小,進而不斷控制直流電機的轉(zhuǎn)速。在直流無刷電動機控制中,兩個功率器件〔上級和下級被串聯(lián)放在一個功率轉(zhuǎn)換支路中,為了避免擊穿失效,兩個器件的打開周期必須不能重疊,這樣就經(jīng)常需要一對非重疊的PWM輸出來正確地開關(guān)這兩個器件。在一個三極管的關(guān)斷和另一個三極管導(dǎo)通之間插入一段死區(qū),這段時間延遲允許一個三極管在別的三極管導(dǎo)通之前完全關(guān)斷。這個所需的延遲時間由功率三極管的開關(guān)特性和特定應(yīng)用中的負載特性來決定的。4.軟件設(shè)計軟件采用模塊化設(shè)計,主要有以下5個模塊組成:換相及轉(zhuǎn)向控制模塊、轉(zhuǎn)速控制模塊、轉(zhuǎn)速測量模塊、鍵盤控制模塊和液晶顯示模塊。實現(xiàn)了無刷直流電機的閉環(huán)PID控制,主程序流程圖如圖4所示。圖4閉環(huán)PID控制主程序流程圖4.1換相及轉(zhuǎn)向控制相控制是通過不斷檢測無刷直流電機的轉(zhuǎn)子位置,然后按照預(yù)先安排的相序表動態(tài)控制三相全橋開關(guān)的導(dǎo)通及關(guān)斷,從而使電機能夠連續(xù)運行。轉(zhuǎn)向控制則通過更換相序表來實現(xiàn)。程序設(shè)計步驟如下:配置系統(tǒng)時鐘和外設(shè)時鐘,初始化中斷向量表和中斷控制寄存器。配置GPIOA的多路轉(zhuǎn)換器寄存器GPAMUX,使PWM1~PWM6作為PWM控制引腳,CAP1~CAP3作為捕獲單元輸入引腳。初始化EVA的通用定時器T1,設(shè)置PWM載波周期〔通過T1PR和初始占空比〔通過比較寄存器CMP1、CMP2、CMP3設(shè)置初始占空比為50%,設(shè)置比較控制寄存器COMCONA使能全比較操作,但暫不啟動定時器T1。配置CAP1~CAP3的捕獲中斷為上下沿跳變觸發(fā)方式。檢測CAP1~CAP3引腳的當(dāng)前狀態(tài),判斷當(dāng)前電機轉(zhuǎn)子的空間位置,根據(jù)轉(zhuǎn)向要求選擇合適的初始控制相序并據(jù)此配置ACTRA寄存器,然后啟動定時器T1并開放中斷。主程序進入等待狀態(tài)。創(chuàng)建捕獲中斷的中斷服務(wù)程序,在中斷服務(wù)程序中實時檢測當(dāng)前電機轉(zhuǎn)子的空間位置,然后根據(jù)轉(zhuǎn)向要求和預(yù)先安排的相序表選擇合適的開關(guān)控制時序,并動態(tài)控制ACTRA寄存器,使得電機能夠連續(xù)運行。流程圖如圖5所示:圖5換相及轉(zhuǎn)向控制流程圖4.2轉(zhuǎn)速測量轉(zhuǎn)速的測量可以通過在標(biāo)準(zhǔn)的定時時間間隔內(nèi)對換相控制的次數(shù)進行統(tǒng)計來實現(xiàn)。由于所用的電機轉(zhuǎn)一圈換相6次,故設(shè)置定時器T2定時0.1s,在此定時時間內(nèi)換相次數(shù)記為N,則轉(zhuǎn)速即為100N/min。流程圖如下圖6示:圖6轉(zhuǎn)速測量程序流程圖4.3鍵盤控制與液晶顯示圖7鍵盤程序流程圖鍵盤則用于設(shè)定給定轉(zhuǎn)速。其程序流程圖如圖7所示。液晶顯示主要分為兩部分:說明文字的顯示及參數(shù)值的顯示。無論是文字還是參數(shù)值的顯示,都需要生成16進制代碼,利用字模軟件zimo221生成,取字模時選擇"縱向取模,字節(jié)倒序"。然后調(diào)用相關(guān)函數(shù)即可將其顯示出來。程序設(shè)計步驟如下所示:〔1進行初始化,清屏〔2顯示"轉(zhuǎn)速:"〔3實時顯示參數(shù)值〔轉(zhuǎn)速、占空比流程圖如下圖8所示:圖8液晶顯示流程圖5.硬件設(shè)備本設(shè)計采用的主要設(shè)備包括:〔112W無刷直流電動機FL57BLS005-12V;〔2MOTOR-E背板,該背板包括驅(qū)動無刷直流電機的三相全橋開關(guān)電路、霍爾傳感器輸出信號的整形和隔離電路以及來自TMS320F2812的6個PWM控制信號〔PWM1~PWM6的隔離和驅(qū)動電路;〔3TMS320F2812開發(fā)板;〔4LPS-305型可調(diào)線型穩(wěn)壓電源,調(diào)試過程調(diào)節(jié)此電源輸出+12V,輸出限流值1.5A,用于為無刷直流電機供電。由于在調(diào)試中會頻繁出現(xiàn)短路情況,故采用帶輸出限流保護的電源,以限制短路時過流引起MOSFET損壞的問題。6.總結(jié)本設(shè)計以TMS320F2812DSP芯片為核心,來實現(xiàn)對無刷直流電機的PID控制,可以控制電機自動加減速,自動換向,測量轉(zhuǎn)速值并實時顯示在液晶屏上。本系統(tǒng)采用CCS編程,利用PWM信號實現(xiàn)電機調(diào)速,開關(guān)主電路同一相上下橋臂PWM波形如圖9所示。圖9同一相上下橋臂PWM波形圖調(diào)試中遇到了不少問題,主要如下:〔1電機不能自行啟動,需要用手撥一下才能轉(zhuǎn)起來。解決辦法:增大初始占空比,但不能過大,否則會導(dǎo)致過流?!?如何實時顯示轉(zhuǎn)速值?解決辦法:將0~9十個數(shù)字的字模放入一個10維的數(shù)組,分別求出測得轉(zhuǎn)速值的各位上的數(shù)字并分別調(diào)用顯示函數(shù),將各位數(shù)字分別顯示出來,即可實現(xiàn)轉(zhuǎn)速的實時顯示?!?實時檢測到的電機轉(zhuǎn)速精度不夠,只顯示到了百位。解決辦法:這是由于T1的計時周期設(shè)為了0.1s,更改了CPU時鐘周期,同時更改了與定時器時鐘有關(guān)的寄存器以后,可顯示到個位。..附:源程序代碼#include"DSP281x_Device.h" //DSP281xHeaderfileIncludeFile#include"DSP281x_Examples.h" //DSP281xExamplesIncludeFileinterruptvoidCAPINT_ISR<void>;interruptvoidT2_ISR<void>;voidInitEv<void>;voidHallDrv<void>;Uint16 hall_status=0x0000;Uint16 hall;Uint16 direction; //電動機轉(zhuǎn)動方向指示,0為正轉(zhuǎn),1為反轉(zhuǎn)Uint16 direc; //撥碼開關(guān)1,位置在上為0,在下為1Uint32 counter=0; //換相數(shù)Uint32 speed=0; //實際速度int16 givespeed=0; //給定速度int32 Espeed=0; //速度差值Uint16 null,keycode,key;int16 Duty;Uint16 watchduty=0; //占空比float Kp=0; //PID參數(shù)float Ki=0;float Kd=0;float Last=0; //傳遞上次變量float LLast=0; //傳遞上上次變量float PidResult=0; #defineDIPS<*<<unsignedint*>0xc0001>> //定義撥碼開關(guān)寄存器地址和類型#defineCTRKEY<*<<unsignedint*>0x108001>> //定義鍵盤數(shù)據(jù)回讀寄存器地址#definePeriod0x0753 //載波周期main<>{ InitSysCtrl<>; //初始化DSP運行時鐘 InitPieCtrl<>; //初始化pie寄存器 DINT; //關(guān)總中斷 IER=0x0000; //禁止所有的中斷 IFR=0x0000; //清除所有的CPU級中斷請求標(biāo)志 InitPieVectTable<>; //初始化PIE中斷向量表 InitEv<>; //初始化EVA模塊 EALLOW; PieVectTable.CAPINT1=&CAPINT_ISR; //將捕獲單元的中斷服務(wù)程序入口地址填寫到PIE向量表中 PieVectTable.CAPINT2=&CAPINT_ISR; PieVectTable.CAPINT3=&CAPINT_ISR; PieVectTable.T2PINT=&T2_ISR; //將T2的中斷服務(wù)程序入口地址填寫到PIE向量表中 EDIS; EvaRegs.EVAIFRC.all=0xFFFF; //EVA中斷標(biāo)志復(fù)位 EvaRegs.EVAIFRB.all=0xFFFF; EvaRegs.EVAIMRC.all=0x0007; //使能CAP1,2,3雙沿中斷<換向>,外設(shè)級 EvaRegs.EVAIMRB.all=0x0001; //使能T2周期匹配中斷,外設(shè)級 //使能PIE中組3的第1,5,6,7個中斷 PieCtrlRegs.PIEIER3.bit.INTx5=1; //CAPINT1 PieCtrlRegs.PIEIER3.bit.INTx6=1; //CAPINT2 PieCtrlRegs.PIEIER3.bit.INTx7=1; //CAPINT3 PieCtrlRegs.PIEIER3.bit.INTx1=1; //T2PINT direc=DIPS; direction=direc&0x0001; HallDrv<>; Kp=;Ki=;Kd=; //初始化PID參數(shù) givespeed=3000; IER|=M_INT3; //使能EVA對應(yīng)的CPU級中斷請求INT3 EINT; //使能全局中斷 ERTM; EvaRegs.T1CON.bit.TENABLE=1; //啟動定時器T1 EvaRegs.T2CON.bit.TENABLE=1; //啟動定時器T2 PieCtrlRegs.PIEACK.all=PIEACK_GROUP3; //允許CPU對PIE中斷請求進行響應(yīng) Lcd_Init<>; //LCD初始化 LcdClear<>; //LCD清屏 LcdWrite<>; //LCD寫入 //等待中斷 while<1> { keycode=CTRKEY; //讀鍵盤碼 null=CTRLCDCR; //清鍵碼鎖存器 key=keycode&0x00FF; switch<key> { case1:givespeed++;break; //鍵盤按鍵1按下,則給定轉(zhuǎn)速增加1r/min case2:givespeed--;break; //鍵盤按鍵2按下,則給定轉(zhuǎn)速減小1r/min case3:givespeed+=10;break; //鍵盤按鍵3按下,則給定轉(zhuǎn)速增加10r/min case4:givespeed-=10;break; //鍵盤按鍵4按下,則給定轉(zhuǎn)速減小10r/min case5:givespeed+=100;break; //鍵盤按鍵5按下,則給定轉(zhuǎn)速增加100r/min case6:givespeed-=100;break; //鍵盤按鍵6按下,則給定轉(zhuǎn)速減小100r/min case7:givespeed+=1000;break; //鍵盤按鍵7按下,則給定轉(zhuǎn)速增加1000r/min case8:givespeed-=1000;break; //鍵盤按鍵8按下,則給定轉(zhuǎn)速減小1000r/min default:break; } if<givespeed<0>{givespeed=0;} if<givespeed>=10000>{givespeed=9999;} PutValue<72,17,givespeed>; //顯示給定速度 PutValue<72,33,speed>; //顯示實際速度 watchduty=<Uint16><<1-<float>Duty/Period>*100>; PutValue<72,49,watchduty>; //顯示占空比 }}voidInitEv<void>{ EALLOW; GpioMuxRegs.GPAMUX.all=0xFFFF; //設(shè)定EVA的引腳為外設(shè) EDIS; EvaRegs.T1CON.all=0x0804; //連續(xù)增/減計數(shù)模式,暫不啟動定時器T1的運行 EvaRegs.T1PR=0x0753; //設(shè)置T1定時器的周期寄存器值 EvaRegs.T1CNT=0x0000; //清零T1定時器的計數(shù)寄存器 EvaRegs.ACTRA.all=0x0000; //PWM1~PWM6強制低,在換向程序中再更改 EvaRegs.ACTRA.all=0x0000; //pwm1~pwm6強制低;在換向程序中需再更改// EvaRegs.DBTCONA.all=0x0170; //死區(qū)設(shè)為1個CPU時鐘周期 EvaRegs.COMCONA.all=0xA6E0; //使能全比較單元,在周期和下溢時重載 EvaRegs.CMPR1=0x0521; //初始占空比30% EvaRegs.CMPR2=0x0521; //初始占空比30% EvaRegs.CMPR3=0x0521; //初始占空比30% EvaRegs.CAPCONA.all=0x36FC; //選定時器1,使能CAP1,2,3,檢測兩個邊沿 EvaRegs.CAPFIFOA.all=0x0000; //清空FIFO EvaRegs.T2CON.all=0x1704; //連續(xù)增計數(shù)模式,暫不啟動定時器T2 EvaRegs.T2PR=0xE4E2; //每100ms中斷一次 EvaRegs.T2CNT=0x0000; } voidHallDrv<void>{ hall=GpioDataRegs.GPADAT.all; hall_status=hall&0x0700; //檢測CAP1~CAP3引腳的當(dāng)前狀態(tài) if<direction==0> //正轉(zhuǎn)換向 switch<hall_status> { case0x0500:EvaRegs.ACTRA.all=0x0038;break; //PWM2/PWM3101→ANB case0x0100:EvaRegs.ACTRA.all=0x0830;break; //PWM6/PWM3001→ANC case0x0300:EvaRegs.ACTRA.all=0x0803;break; //PWM6/PWM1011→CNA case0x0200:EvaRegs.ACTRA.all=0x0083;break; //PWM4/PWM1010→CNB case0x0600:EvaRegs.ACTRA.all=0x0380;break; //PWM4/PWM5110→BNC case0x0400:EvaRegs.ACTRA.all=0x0308;break; //PWM2/PWM5100→ANC default:break; } else //反轉(zhuǎn)換向 switch<hall_status> { case0x0100:EvaRegs.ACTRA.all=0x0380;break; //PWM4/PWM5001→ANC case0x0500:EvaRegs.ACTRA.all=0x0083;break; //PWM4/PWM1101→BNC case0x0400:EvaRegs.ACTRA.all=0x0803;break; //PWM

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論