




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、題目:基于STM32單片機SPWM單相逆變電源設計 第一章 緒論1.1課題的研究背景及意義新世紀以來,人們越發(fā)注重對環(huán)境的保護,所以都致力于減少化石能源的采集改而研究各種新能源。在這樣的社會背景下,對新能源進行高效開發(fā)利用就成為了新世紀的科技發(fā)展方向。相較于不能夠再生的石油、天然氣和煤,可再生能源和太陽能這些新能源更加的綠色低碳環(huán)保,能源主體的變換帶來的是發(fā)電方式的變革,相應的由新能源所生產(chǎn)的電能并入電網(wǎng),需要的就是逆變技術。如今這項技術更多地融入了日常的生產(chǎn)生活。逆變通俗來說把直流電轉變?yōu)榻涣麟姷倪M程,方便解決了一些能源發(fā)電所出現(xiàn)的直流與交流不通的問題,而這種完成逆變過程的電路叫做逆變電路。
2、逆變電源則早就誕生在1960年代,隨著新理論、新技術、新工藝的不斷出現(xiàn),以及和微電子技術的日益結合,逆變電源具有了高可靠性、高穩(wěn)定性、占用空間小和功耗低的優(yōu)勢,所以隨著科技的日新月異而發(fā)展壯大。1.2逆變電源的發(fā)展從二十世紀六十年代誕生以來,伴隨著元器件的更新?lián)Q代逆變電源技術也取得了長足的進步。以所用的電力電子開關器而言,作為一個功率半導體器件,對電能進行轉換控制,實現(xiàn)電能的調(diào)節(jié)。逆變電源主要有如下三代發(fā)展:第一代逆變電源,由于時間較早科技所限,當時所使用元器件是晶閘管(SCR)。由于一開始技術不成熟所以其本身不能進行關閉,因而就加大了整體電路復雜程度、體積重量大、高噪聲高污染以及效率低下的問
3、題,因而第一代的發(fā)展并未有多少成就。第二代逆變電源,隨著元器件的發(fā)展,第二代使用上了全控器件,有些也是一代晶閘管的衍生產(chǎn)品,諸多的高速器件的應用,同時采用了SPWM控制技術,這就是第二代逆變電源的進步。同樣的第二代也有著不足之處:(1)無法很好地匹配非線性負載的使用;(2)波形質(zhì)量無法得到保證,不穩(wěn)定;(3)無法實現(xiàn)良好的動作質(zhì)量;(4)不能夠被三相電所使用的。第三代逆變電源,是通過對第二代進行控制技術改進,取得實時的數(shù)據(jù)反饋達到控制目的,方法:1)反復多次進行控制;2)通過其他波形進行補償以完善控制;3)通過無差拍方式進行控制;4)進行極短時間的一個電壓值進行控制;5)組成雙環(huán)反饋電路進行控
4、制。這些方式也或多或少地存在一些缺陷,但隨著科技的發(fā)展,會有更好更完善的逆變電源技術得以實現(xiàn)。接下來的時間里科技不斷完善也將帶動著逆變電源技術不斷發(fā)展,向著高效綠色進發(fā),成為新能源電源的主力軍。1.3本課題的目標與任務本課題參考著生產(chǎn)實踐,結合國內(nèi)外的文獻研究成果,結合自身對于逆變電源技術和STM32的理解與使用,完成基于STM32單片機SPWM單相逆變電源的設計任務。第二章:首先介紹分析SPWM技術的原理方法,然后進行分析兩種極性電源調(diào)制方案,最后根據(jù)需求確定本課題所需要的控制方案。第三章:逆變電源的硬件電路設計,主要包括:選取逆變電路結構,進行電源電路、數(shù)據(jù)和采集電路以及驅(qū)動電路等的設計分
5、析。第四章:逆變電源的軟件程序設計,主要闡述STM32單片機開發(fā)環(huán)境,SPWM信號產(chǎn)生模塊設計,控制算法等。第五章:對系統(tǒng)整體調(diào)試和對結果分析。第六章:得出課題結論,對問題進行總結指出不足與改進的方向逆變電源控制方案研究該控制系統(tǒng)由逆變電源采用,其功能是調(diào)節(jié)逆變電源參數(shù)或外部因素,使整個變頻器過程完成電能的轉換,并滿足輸出波形的要求。本文分析并比較了SPWM技術以及單極性和雙極性PWM控制模式,并將最終選擇了單極性SPWM。2.1 SPWM技術簡介二十世紀六十年代由德國科學家使用脈寬調(diào)制即PWM(Pulse Width Modulation)技術改進逆變電源。隨著多年的發(fā)展改進,衍生了自然采樣
6、、按照一定規(guī)律采樣、通過諧波進行補償?shù)日{(diào)制方法,到如今PWM技術已經(jīng)日益完善了,得以正確地使用。正弦脈寬調(diào)制也就是我們課題中提到的SPWM。這項技術產(chǎn)生于首先是在,通信領域得到的發(fā)展。SPWM的原理是在比較參考波和載波之后,能夠得到一組所需的矩形波。而這些矩形波的振幅相同的情況下,所得的脈寬是由作為參考作用的波形的三大參數(shù)(相位、幅值、頻率)所影響的。因此這些矩形脈沖就獲得了如下的特點,其脈沖中點也就在相應的載波的中點的位置,同時還符合了面積等效原理。得到了圖2-1。通俗地來說SPWM波,脈沖寬度是呈現(xiàn)著正弦波規(guī)則的變化趨勢,而且受到系數(shù)所以影響發(fā)生相應改變,最直接的表現(xiàn)就是幅值變化。采用了這
7、種技術之后,系統(tǒng)將會有著如下這些主要優(yōu)勢:(1)對于輸出波形的三大參數(shù)(頻率、幅值、相位)能夠同級調(diào)試;(2)輸出波形峰值高低不受輸入的功率相位差影響;(3)能同時調(diào)節(jié)輸出波形頻率幅值;圖2-1 正弦調(diào)制矩形脈沖序列因為輸出波形有正極性和負極性兩種,所以對應著的調(diào)制方法也就有了單極性和雙極性的兩種。區(qū)別在于單極性只有正/負半軸,而雙極性則兼具正負半軸為完整波形。2.2 SPWM單極性和雙極性比較分析2.2.1 單極性正弦脈沖寬度調(diào)制圖2-2所展示的為單相橋式逆變電路。定義感性負載電路中,四個T1, T2,T3,T4的開關動作執(zhí)行控制,以:1)從正半周期輸出波形開始,開口管T1,T2關閉管。它打
8、開時,管T4,電源電壓等于負載電壓Ud。此時T4閉合狀態(tài)下,由于感性負載,在通過電源后負載的電流的不會突然變化導致被接通此時的二極管D3,負載電流將繼續(xù)通過D3流動,負載電壓下降到零。如果流過負載的大電流,較慢地衰減,這將導致D3通電直到T4再次導通,D3保持當前狀態(tài),以保護負載電壓為零。如果在負載中的電流迅速衰減至0,D3關閉負載電壓為0這一狀態(tài)到重新打開T4之前保持。通過控制上述操作,輸出電壓可以交替地得到0和Ud輸出。圖2-2 單相橋式PWM逆變電路2)同樣,在負的半個周期中,T2管開啟,T1管關閉??刂芓3管開關。開啟T3管時,輸出工作電壓為-Ud;當T3管關閉時,使用一個二極管D4續(xù)
9、流,則輸出的信號電壓為0,輸出電壓U0進行在0和-Ud之間相互交替發(fā)展變化。通過分析上述風險控制管理模式,輸出電流波形值具有Ud和0三種不同狀況。如圖2-3 T3或T4開關管的方法。具體而言,Uc是一個三角波載波,但它是調(diào)制波具有相同的極性,Ur是正弦波的調(diào)制信號,和中斷控制T3和T4在兩個波的交點。當調(diào)制波是正的,打開管Tl和Ur UC。當管T4導通時,負載電壓U0 = Ud,當UrUc,T4管關閉,U0=0; 以相同的方式適當調(diào)制波Ur為負,則可以關閉T1管和打開T2管,當UrUc時打開T3管,負載電壓U0=-Ud,當UrUc時,T3關閉,U0=0.此時就能得到所需的SPWM波形U0。圖2
10、-3 單極性PWM控制原理圖2.2.2 雙極性正弦脈沖寬度調(diào)制 相比較于單極性正弦波脈寬調(diào)制,他們之間有所差異,而且雙極性正弦波脈寬調(diào)制有著其獨特之處,同樣所顯示出的波形也有別與單極性,如圖2-4所示即為雙極性控制的單相橋式逆變電路。圖2-4雙極性PWM控制原理圖在調(diào)制正弦波Ur的半周期中,以雙極SPWM控制方式,載波是一個正負變化的雙極性三角波,所以輸出的PWM波形也在正負轉換。從調(diào)制的正弦波Ur的全周期開始,只有兩個輸出波形:+Ud和-Ud。在載波和調(diào)制波之間發(fā)展仍然需要選擇進行關閉系統(tǒng)控制技術設備在交點。在調(diào)制波Ur的周期中,電路中的開關管的控制研究方法與單極控制管理方法以及基本情況相同
11、。這時,打開T4管和T1管,關閉T2管和T3管,這時我們得到PWM。波形幅值U0=Ud; Ur255)maxnum=255;接下來就由每個點對應的角度值來計算出對應的脈寬數(shù)據(jù)了:for(i=0;iCCR1 寄存器以及TIMx-CCR2寄存器(兩者分屬兩路路PWM的寄存器),當CNT的計數(shù)值和TIMx-CCR1、TIMx-CCR2 相比較即會產(chǎn)生相應的極性電平。因此我們只需改變TIMx-CCR1、TIMx-CCR2的值大小即可改變PWM的脈寬。載波頻率就是PWM輸出的頻率,而且這個頻率是根據(jù)上面所給出的二個數(shù)據(jù)所決定:void TIM3_ PWM_ Init(uint16_ t period,
12、uint16_t prescaler);period:自動重裝值。 prescaler:時鐘預分頻數(shù)。PWM頻率=PWM系統(tǒng)時鐘/(prescaler+1)/(period+1)=48000/(7+1)/(255+1)=23.4Khz注:PWM系統(tǒng)時鐘為系統(tǒng)主時鐘48Mhz。Period值為計數(shù)器最大值,即計數(shù)到此值后會清零。TIM_ SetCompare1(TIM3,pwmindex);TIM_ SetCompare2(TIM3,pwmindex);這兩個函數(shù)分別是控制兩路PWM脈寬變化的函數(shù),其實際作用即是改變了TIMx-CCR1和TIMx-CCR2,所以可以改變PWM脈寬。綜合以上,我們
13、得出PWM初始化函數(shù)如圖4-8:圖4-8 PWM輸出程序4.5 按鍵功能程序設計系統(tǒng)所使用的四個按鍵分別起到調(diào)節(jié)輸出頻率及幅值,前面的程序已經(jīng)將改變正弦波輸出頻率和幅值的程序設計好了,現(xiàn)在至于要改變其中輸入的參數(shù)即可以改變對應輸出:幅值調(diào)節(jié)程序圖4-9:圖4-9 幅值調(diào)節(jié)程序圖中程序為幅值調(diào)節(jié)部分,通過按鍵可以改變VolTemp的值大小,然后只需將VolTemp的值更新到對應的getSinTab(50,VolTemp)函數(shù)中即可。頻率調(diào)節(jié)程序圖4-10:圖4-10 頻率調(diào)節(jié)程序圖中程序為頻率調(diào)節(jié)部分,通過按鍵可以改變PIvTemp的值大小,然后只要將PIvTemp更新到對應的getSinPlv
14、(PIvTemp)函數(shù)中即可。4.6 串口通信模塊程序設計串口通信模塊設計有串口控制輸出頻率和幅值功能,故需要將串口中斷打開來接收收到的控制指令。采用9600的串口波特率,不需要校驗,設置停止位1位,并且啟用串口接收中斷,另外需要配置相應的串口引腳,及串口時鐘的開啟。4.6.1串口配置初始化程序初始化串口對相應的參數(shù)進行設定,配置所需引腳。使能串口時鐘,設定I/O為輸入輸出模式,設定波特率、數(shù)據(jù)位和奇偶校驗等。定義的串口指令格式:第一字節(jié):0 xaa第二字節(jié):0 x01:控制頻率0 x02:控制幅值第三字節(jié):頻率:0-200Hz 幅值:0-40V初始化程序如圖4-11:圖4-11 串口的初始化
15、程序4.6.2串口中斷接收程序在單片機中進行串口數(shù)據(jù)的收發(fā)工作時,其自帶的USART_DR寄存器就專門負責這個工作。然后在接收到數(shù)據(jù)后需要有程序進行中斷操作,以方便之后的數(shù)據(jù)處理。程序如圖4-12:RecFlag為接收到-組數(shù)據(jù)完成的標志符號。圖4-12 串口中斷接收程序4.6.3串口數(shù)據(jù)解析程序圖4-13 串口數(shù)據(jù)解析程序串口接收到數(shù)據(jù),對于所得的數(shù)據(jù)進行解析,然后控制串口控制,程序如圖4-13。同樣的,VolTemp和PIvTemp分別為幅值和頻率調(diào)節(jié)值,只要更新到對應設置函數(shù)即可。即為上文按鍵程序所服務。4.7 OLED顯示程序系統(tǒng)采用的是OLED顯示屏進行顯示。所顯示的參數(shù)主要是:In
16、put(V):輸入電壓值。On或Off:輸出狀態(tài)指示。on為正常輸出,off 代表輸出過流保護,已關閉輸出。Fr(Hz):輸出頻率值。此值為按鍵調(diào)節(jié)設置值。AC(V):輸出正向峰值電壓值。此值為按鍵所設置值。顯示程序void Display()/顯示輸入電壓OLED_Show Num(48,0,Voltage/100,1,16);OLED_Show Num(56,0,Voltage%100/10,1,16);OLED_Show Num(72,0,Voltage%10,1,16);/顯示輸出狀態(tài)if(Short Flag=1)OLED_Show String(96,0,(uint8_ t*)Of
17、f,16);elseOLED_Show String(96,0,(uint8_ t* )On ,16);/顯示輸出頻率OLED_Show Num(24,2,PIvTemp/100,1,16);OLED_Show Num(32,2,PlvTemp%100/10,1,16);OLED_Show Num(40,2,PlvTemp%10,1,16);/顯示輸出幅值OLED_ Show Num(104,2,VolTemp%100/10,1,16);OLED_Show Num(112,2,VolTemp%10,1,16); .液晶顯示在系統(tǒng)中是1秒鐘刷新顯示一次,通過定時器計數(shù)變量來判斷:圖4-14 液晶
18、顯示刷新4.8 采集輸入電壓、輸出電流程序在本系統(tǒng)中通過STM32單片機內(nèi)部的AD (12位)來檢測輸入的直流電壓和輸出的交流電流,輸入電壓的檢測采用電阻分壓(由于輸入電壓超過單片機自身供電電壓,所以必須采用電阻分壓形式),測得分壓值后,按照電阻比例推算出輸入電壓值。在正弦波輸出回路中串聯(lián)一只0.1歐姆的功率電阻,電阻分壓所得信號過小,經(jīng)LM358運放放大后再由單片機AD檢測即可。具有DMA功能的STM32F030 單片機,能夠直接讀取寄存器,這種讀取方式極大減少內(nèi)核工作量,使用起來非常方便,直接開辟一段存儲區(qū)即可,只要讀指定存儲區(qū)的數(shù)據(jù)就可得到采集到的AD數(shù)據(jù)。那么利用DMA傳輸數(shù)據(jù)主要需要
19、設置以下幾點:(1)開啟DMA時鐘。(有時鐘才可以 工作)(2)確定外設地址。( 外設地址即ADC部件的地址)(3)指定內(nèi)存地址。(指定DMA可以讀取的內(nèi)存區(qū)域,這樣就可將此內(nèi)存區(qū)域指向外設地址,即讀取到的數(shù)據(jù)就是AD采集到的數(shù)據(jù))(4)設置外設作為數(shù)據(jù)傳輸?shù)膩碓础#?)存儲數(shù)組大小。( 即開辟數(shù)組的其中包含幾個數(shù)據(jù))(6)數(shù)據(jù)寬度。( 數(shù)組中數(shù)據(jù)的寬度,此處設置為16位)(7)DMA通道使能。DMA初始化程序部分:圖4-15圖4-15 DAM初始化程序AD初始化需要設置以下幾點:(1)精度設置。(我們設置為最高的12位精度)(2)規(guī)定模式轉換工作在連續(xù)模式。即連續(xù)進行AD轉換)(3)數(shù)據(jù)對齊
20、為右對齊。(數(shù)據(jù)右對齊即采集到的AD值最低位先存在寄存器的最低位)(4)ADC轉換時間。(決定了一次AD轉換使用多長時間)(5)ADC開始轉換。AD初始化程序:圖4-16圖4-16 AD初始化程序?qū)杉疉D值程序:圖4-17圖4-17 AD值采集程序從圖中程序可以看到Filter ()是代表采集輸入電壓通道的AD值進行濾波的函數(shù), Filter1()代表采集輸入電流的AD通道采集到的AD值進行濾波的函數(shù),看到函數(shù)中直接讀取了RegularConvData_Tab0和RegularConvData_Tab1的值,這兩個數(shù)據(jù)就分別是采集輸入電壓通道和輸出電流AD采集通道所分配的數(shù)組對應的值。直接
21、讀取即可,正是因為DMA數(shù)據(jù)傳輸?shù)淖饔茫挥脝纹瑱C進行任何操作。經(jīng)過了32次連續(xù)的AD采集,目的為進行數(shù)字濾波( 多次采集值之和求平均值),以確保電壓數(shù)值的穩(wěn)定,輸入電壓采集的公式推算在硬件部分已經(jīng)介紹。if(Voltage-_voltage10)(_ voltage-Voltage10) , 這樣一個判斷的目的是當輸入電壓改變時,要相應的改變1V系數(shù)即Para,然后對輸出做出更新即getSinTab(50,VolTemp);,目的是當輸入電壓改變時保持輸出電壓不變。輸出電流采集進行了32次連續(xù)的AD采集,目的為進行數(shù)字濾波(多次采集值之和求平均值),以確保所得數(shù)值的穩(wěn)定。電流值的計算在硬件設
22、計部分己介紹。程序如圖4-18:圖4-18 采集值更新程序4.9 過流保護程序過流保護即為保護功率器件L298來設置的,當單片機AD采集到的AD值達到過流值2A后,即關斷輸出,從而達到保護全橋的目的。過流保護后,我們設置了定時,過流后保護后,5秒之后,單片機會再次嘗試打開輸出,如果還是過流則立刻關閉輸出進行保護。5秒后再次嘗試打開,依次進行下去。圖4-19為程序圖4-19 過流保護程序從上圖可以看到,過流值2A時對應的Ad值為993,ENA_CIr()即關閉輸出使能。TimeCount是一個以1秒為基數(shù)的計數(shù)變量, TimeCount5即代表5秒時間到。TimeCount是在Timer14作為
23、定時器的定時中斷服務函數(shù)中進行計時。Timer14計數(shù)器初始化配置如下圖4-20:圖4-20 Timer14計數(shù)器初始化程序?qū)imer14定時中斷間配置為10ms,Timer14 定時時間= (100*4800) /48= 10ms。 Timer14定時中斷服務函數(shù):圖4-21:圖4-21 Timer14定時中斷服務程序if(VolTemp!=_voltemp)| |(PIvTemp!=_plvtemp)TimeCount2+;這一句的判斷作用:當檢測到設置量VolTemp或PlvTemp發(fā)生改變時(由按鍵或串口設置的改變),TimeCount2在累加,如果此時還有按鍵按下那么TimeCou
24、nt2會在按鍵檢測處被清零。其目的就是只有按鍵按下后2S內(nèi)還沒有按鍵操作時才會進行頻率和幅值的更新:圖4-22:圖4-22 更新頻率或幅值4.10 本章小結本章介紹了程序所用的開發(fā)環(huán)境Keil,系統(tǒng)整體程序設計,然后分模塊細述了各模塊的程序設計,包括SPWM信號產(chǎn)生、按鍵功能、串口通信等模塊程序進行了設計。綜合完成了逆變電源的軟件設計。系統(tǒng)調(diào)試與結果分析5.1 系統(tǒng)性能參數(shù)(1)采用了STM32 單片機(STM32F030系列);(2)采用了低通濾波器,輸出波形穩(wěn)定;(3)取值范圍在0到200Hz的輸出頻率;(4)取值范圍在0到40V的輸入直流電壓 ;(5)取值范圍在0到+40V的輸出交流電壓
25、幅值;(6)能夠輸出最大的電流為1 .5A ;(7)顯示屏能夠顯示輸入電壓Input,輸出頻率Fr和輸出電壓AC的幅值。(8)可調(diào)節(jié)的輸出的頻率和幅值,采用按鍵或串口通信連接兩種方式;(9)頻率按鍵每次增幅1Hz,幅值按鍵每次增幅1V;(10)電源帶有反接保護和過流保護;注:數(shù)值均為理想狀態(tài)下結果實際存在一定偏差。5.2 實驗結果分析接入電源后,輸入電壓為3.7V。設定頻率為50hz輸出電壓為1v。圖5-1 逆變電源實物圖實際測得輸出電壓為0.92v如圖:圖5-2 時間輸出電壓圖進行輸出波形顯示,圖5-3為輸入電壓5v,輸出頻率為50Hz時的正弦波形圖5-3 輸出的正弦波形圖5.2 本章小結進
26、行了逆變電源的實物測試,實現(xiàn)了由直流輸入變?yōu)榻涣鬏敵龅倪^程,呈現(xiàn)了該有的正弦波形,但是與設計的實際所該有的數(shù)值存在一定誤差,仍需努力改進?;就瓿稍O計目標,軟硬件設計能夠?qū)嶋H完成系統(tǒng)要求。結論經(jīng)過這一學期的努力,在和老師同學良好有效的交流討論學習下,完成了本次課題的設計。從開始確定課題,申報課題,進行資料的學習研究,到通過對整個逆變電源系統(tǒng)的了解得以讓自己設計出最終的成果,并且對其進行了實驗調(diào)試,以及完成說明書的編寫。自己能夠完成了這次基于STM32單片機SPWM單相逆變電源的設計。逆變電源是一個應用十分廣泛的設計,越來越多的出現(xiàn)在新能源充分利用的如今,所以逆變電源的發(fā)展必將推動著生活生產(chǎn)實踐
27、的前行。本文所設計的單相逆變電源系統(tǒng),主要基于STM32單片機,并且采用了SPWM正弦波調(diào)制的方法。選擇了全橋逆變電路,并且設計了其配套所用的其他的電路??刂齐娐凡糠?,使用了STM32F030系列芯片進行了反饋電路設計。具體的控制基于Keil開發(fā)環(huán)境下的程序編寫,能對輸入電壓,輸出電壓,頻率幅值等進行調(diào)節(jié)計算控制。最終通過整合安裝的逆變電源系統(tǒng)能夠滿足了本次課題所要求的條件。通過這次對逆變電源的了解,發(fā)現(xiàn)了很多以前不曾涉及的方面。科技日新月異,我也應當學習更多的知識,以適應能夠跟上社會發(fā)展的步伐。這次畢業(yè)設計中主要學習到了以下幾點:(1)充分認識到逆變電源的發(fā)展歷史和未來前景(2)能夠自行地設
28、計組建出完整的逆變電源系統(tǒng)(3)對于SPWM調(diào)制方法有了深刻的了解(4)熟悉應用了STM32單片機完成畢設要求(5)學習了Keil進行程序的開發(fā)總的來說在這次畢業(yè)設計的完成中收獲頗多,但是也存在著許許多多的問題有待自己去改進完善。人無完人,只有不斷地去進行實踐,才能檢驗出自己的真才實學。致謝參考文獻1羅秦. 基于STM32的逆變電源設計與研究D.天津理工大學,2015.2刁元均.基于DSP的逆變電源數(shù)字控制技術的研究D.西安交通大學, 2007.3王子洋.單相逆變電源的智能控制研究D.燕山大學, 2005.4高搖光.單、三相逆變器SVPWM的新方案研究D.山東大學, 2010.5張靜. Z源逆
29、變器控制及應用研究D.山東大學, 2010.6董金發(fā).單相逆變電源的智能控制研究D.武漢理工大學, 2006.7張崇巍,張興. PWM整流器及其控制M.北京,機械工業(yè)出版社,2003: 1-2.8王兆安,劉進軍.電力電子技術M.5版.北京,機械工業(yè)出版社,2013.9張凱,王祥.基于STM32的新型SPWM逆變電源J.電氣自動化,2012, 34(3):52-54.10魏偉.正弦波逆變電源的研究現(xiàn)狀與發(fā)展趨勢D.華中科技大學,2008.11劉鳳君.正弦波逆變器M.北京,科學出版社,2002.12高奇. Z源逆變器的主電路研究D.浙江大學,2005.13呂小濤.基于DSP的正弦波逆變電源研究D.
30、武漢理工大學,2009.14王小龍,陳暢,龔敏.一種新型過流保護電路的設計J.電子與封裝, 2010, 87(7): 16-19.15 Araujo S V, Zacharias P,and Mallwitz R. Highly Efficient Single- Phase TransformerlessInverters for Grid-Connected Photovoltaic Systems J. IEEE Transaction on Indusrial Electronics ,2010,57(9): 3118-3128.16 Gu B,Dominic JLai J S,et
31、al. High Reliability Efficient Single -Phase Transformerle Inverters for Grid-Connected Photovoltaic Systems J. IEEE Transaction on Power Electronics, 2013,8(5): 2235-2245.17李加升,李穩(wěn)國,宋歌.基于STM32的單相正弦波逆變器設計J.湖南城市學院學報(自然科學版),2017,26(03):54-57.18劉峰.基于SPWM的3kW單相逆變器的仿真與設計D.河北大學,2016.19王兆安,劉進軍.電力電子技術M 5版.北京
32、,機械工業(yè)出版社,2013.20張凱,王祥.基于STM32的新型SPWM逆變電源J.電氣自動化,2012, 34(3): 52-54.21呂小濤.基于DSP的正弦波逆變電源研究D.武漢理工大學,2009.22王小龍,陳暢,龔敏. - -種新型過流保護電路的設計J.電子與封裝, 2010, 87(7): 16-19.23宗榮芳.基于protel DXP的電路設計仿真J.電子工程師,2005, 31(1): 41 -47.24江國棟,徐麗萍.基于AD型單片機的中功率升壓開關穩(wěn)壓電源設計J.南京工業(yè)職業(yè)技術學院學報,2009, 9(2): 12-13.25高玉峰,胡旭杰,陳濤,等.開關電源模塊并聯(lián)均
33、流系統(tǒng)的研究J電子工程, 2011(02): 210-212.26 D. M. Divan. The Resonant DC Link Converter-A New Concept in Static power ConversionJ.IEEE Trans.Ind.1989,25(2):317-325.27 Kedare.S.B,Date.A.W.Performance characteristics of a reciprocating wind machine. Journal of Wind Engincering and Industria AcrodynamicsS. 1999:
34、1125.28Chunwei Song,Rongxiang Zhao.Using fuzzy control for parallel-inverter system with nonlinear-load J.2010 International Conference on Electrical Machines and Systems(ICEMS).2010: 193-197.附錄主程序/*時鐘采用內(nèi)部RC 8mhz : 2分頻內(nèi)部時鐘送于鎖相環(huán) 進行12倍頻 等于48MhzTimer3定時器: 通道一PWM輸出 PA6 通道二PWM輸出 PA7按鍵可調(diào)節(jié)幅值/頻率;輸出正弦波頻率=100
35、0000/(100*定時中斷時間)功能:交流輸出頻率設置范圍 注:隨著頻率增加 誤差會加大,200hz時實際輸出為182hz。交流輸出幅值設置范圍 注:此幅值為峰值。頻率步進值:1hz。 允許誤差精度0.005%-0.1%。幅值步進值:1V。 允許幅值誤差 1.5V輸出過流保護值:2A。大于2A即關閉輸出,然后在電流小于0.12A時,5秒后再次打開輸出。*/#include stm32f0 xx.h#include #include #include delay.h#include USART1.h#include Key.h#include oled.h#include ADC1.h ext
36、ern uint8_t UartRec5; extern uint8_t RecFlag; uint8_t pwm50=0,16,31,47,63,78,93,108,122,136,149,162,174,185,196,206,215,223,230,237,242,246,250,252,254,255,254,252,250,246,242,237,230,223,215,206,196,185,174,162,149,136,122,108,93,78,63,47,31,16; / 反正弦變化uint16_t Current=0; uint16_t Voltage=0;uint16_
37、t _voltage=0; /暫存值uint8_t Para=0; /幅值系數(shù)uint8_t VolTemp=0; /默認最大值 uint16_t PlvTemp=50; /默認值uint8_t _voltemp=0; /暫存值uint16_t _plvtemp=0; /暫存值uint16_t TimeCount=0; /用于計時uint16_t TimeCount1=0; /用于顯示計時uint16_t TimeCount2=0; /用于更新頻率和幅值 uint8_t ShortFlag=0; /過流標志 1過流/標識uint8_t zf=0; /半個周期切換標識uint8_t Value=
38、0; /正弦波幅值uint8_t Freq=4;/ 頻率 默認50hz /函數(shù)聲明void Display();void TIM2_Init(uint16_t period,uint16_t prescaler ); void TIM3_PWM_Init(uint16_t period, uint16_t prescaler);unsigned char zankongbi=10;/*平滑濾波算法*/#define FILTER_N 32int filter_bufFILTER_N + 1;int Filter() int i; int filter_sum = 0; filter_bufFI
39、LTER_N = RegularConvData_Tab0*10.473; for(i = 0; i 5);/(filter_sum / FILTER_N); int filter_buf1FILTER_N + 1;int Filter1() int i; int filter_sum = 0; filter_buf1FILTER_N = RegularConvData_Tab1; for(i = 0; i 5);/(filter_sum / FILTER_N);/PWM輸出初始化/period:自動重裝值/prescaler:時鐘預分頻數(shù)void TIM3_PWM_Init(uint16_t
40、 period, uint16_t prescaler)TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; GPIO_InitTypeDef GPIO_InitStructure;TIM_OCInitTypeDef TIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA , ENABLE); /使能GPIO外設時鐘使能 /設置該引腳為復用輸出功能,輸出TIM1 CH1的PWM脈沖波形
41、GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; /TIM_CH1GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; /復用推挽輸出GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_PinAF
42、Config(GPIOA, GPIO_PinSource6, GPIO_AF_1); GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_1); TIM_TimeBaseStructure.TIM_Period = period; / 設置自動重裝周期值 TIM_TimeBaseStructure.TIM_Prescaler = prescaler;/ 設置預分頻值 TIM_TimeBaseStructure.TIM_ClockDivision = 1; /設置時鐘分割 TIM_TimeBaseStructure.TIM_CounterMode =
43、 TIM_CounterMode_Up;/向上計數(shù) TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /初始化定時器3 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;/ PWM2模式 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;/比較輸出使能 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;/輸出低 TIM_OC1Init(TIM3, &TIM_OCInit
44、Structure); /根據(jù)TIM_OCInitStruct中指定的參數(shù)初始化外設TIMx TIM_OC2Init(TIM3, &TIM_OCInitStructure); /根據(jù)TIM_OCInitStruct中指定的參數(shù)初始化外設TIMx TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);/使能預裝載寄存器 TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);/使能預裝載寄存器 TIM_Cmd(TIM3, ENABLE); / 使能定時器3 TIM_CtrlPWMOutputs(TIM3, EN
45、ABLE); /*定時時間Tout= (period)*(prescaler)/Tclk;Tclk:TIM2 的輸入時鐘頻率(單位為 Mhz)。*/ void TIM2_Init(uint16_t period,uint16_t prescaler ) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); NVIC_InitStructure.NVIC_IRQChannel =
46、 TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); TIM_TimeBaseStructure.TIM_Period = period; / 自動重裝載寄存器周期的值(計數(shù)值) TIM_TimeBaseStructure.TIM_Prescaler = (prescaler - 1);/時鐘預分頻數(shù) TIM_TimeBaseStructure.TIM_ClockDivi
47、sion = 0;/向上計數(shù)模式 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ClearFlag(TIM2, TIM_FLAG_Update); / 清除溢出中斷標志 TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); TIM_Cmd(TIM2, ENABLE); void TIM14_Init(uint16_t period,uint16_t prescaler ) TIM_TimeB
48、aseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE); NVIC_InitStructure.NVIC_IRQChannel = TIM14_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStruct
49、ure); TIM_TimeBaseStructure.TIM_Period = period; / 自動重裝載寄存器周期的值(計數(shù)值) TIM_TimeBaseStructure.TIM_Prescaler = (prescaler - 1);/時鐘預分頻數(shù) TIM_TimeBaseStructure.TIM_ClockDivision = 0;/向上計數(shù)模式 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStructure); TIM_Clea
50、rFlag(TIM14, TIM_FLAG_Update); / 清除溢出中斷標志 TIM_ITConfig(TIM14,TIM_IT_Update,ENABLE); TIM_Cmd(TIM14, ENABLE); /核心代碼/獲取不同點數(shù)的正弦波數(shù)據(jù)/point: 一周期內(nèi)的取樣點數(shù)/maxnum: 一周期內(nèi)對應DA輸出最大值void getSinTab(uint8_t point,uint16_t maxnum)uint8_t i=0; float x=0; /弧度float jiao=0;/角度 分度角jiao=180.000/point; maxnum=maxnum*Para; /1v
51、系數(shù) *輸出峰值電壓= 峰值pwmif(maxnum255) maxnum=255; for(i=0;i200) UartRec2=200; PlvTemp=UartRec2; if(UartRec1=2) /修改幅值if(UartRec2Voltage) UartRec2=Voltage; VolTemp=UartRec2; void Get_Voltage() Voltage=(Filter()/100;void Get_Current() Current=Filter1();void Keyscan()uint8_t keytemp=0;keytemp= GetKeyVal(0); if
52、(keytemp=3) /幅值加TimeCount2=0;if(VolTemp0)VolTemp-; else if(keytemp=1)/頻率加TimeCount2=0;if(PlvTemp2)PlvTemp-; if(keytemp!=0) Display();void Display()/顯示輸入電壓OLED_ShowNum(48,0,Voltage/100,1,16);OLED_ShowNum(56,0,Voltage%100/10,1,16);OLED_ShowNum(72,0,Voltage%10,1,16); /顯示輸出狀態(tài) if(ShortFlag=1) OLED_ShowSt
53、ring(96,0,(uint8_t*)Off,16);else OLED_ShowString(96,0,(uint8_t*)On ,16);/顯示輸出頻率OLED_ShowNum(24,2,PlvTemp/100,1,16);OLED_ShowNum(32,2,PlvTemp%100/10,1,16);OLED_ShowNum(40,2,PlvTemp%10,1,16);/顯示輸出幅值/OLED_ShowNum(104,2,VolTemp/100,1,16);OLED_ShowNum(104,2,VolTemp%100/10,1,16);OLED_ShowNum(112,2,VolTemp
54、%10,1,16); int main(void) uint8_t i=0;uint8_t temp=255;uint16_t Fretemp=50; delay_init();KeyInit(); ENA_Set(); /使能L298 ADC1_DMA_Init(); USART1_Init(9600);printf(STM32F030F4P6 USART TESTrn); TIM3_PWM_Init(255,7);/7+1分頻。PWM頻率=48000000/(7+1)/(255+1)=23.4Khz TIM_SetCompare1(TIM3,0); /pwm ch1TIM_SetCompare2(TIM3,0);/ pwm ch2TIM2_Init(200,48); /(200*48)/48 =200us TIM14_Init(100,4800); /10msgetSinTab(50
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Selected寫字樓轉租合同7篇
- 股權質(zhì)押合同怎么寫6篇
- 環(huán)境監(jiān)測作業(yè)指導書
- 2025年青海貨運從業(yè)資格證答題軟件
- 2025年揭陽貨運資格證考試答案
- 公司員工自駕出差安全協(xié)議書年
- 冷鏈物流倉儲合同(標準版)7篇
- 2025年石家莊貨運從業(yè)資格證題庫及答案
- 2023年高考真題全國乙卷物理試卷
- 聯(lián)營協(xié)議合同范本石油
- 2025人教版一年級下冊數(shù)學教學進度表
- DeepSeek教案寫作指令
- 2025年安徽省合肥熱電集團招聘50人歷年高頻重點模擬試卷提升(共500題附帶答案詳解)
- 休學復學申請書
- 北京2025年02月北京市地質(zhì)礦產(chǎn)勘查院所屬事業(yè)單位公開招考工作人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- DeepSeek零基礎到精通手冊(保姆級教程)
- 瓷磚鋪貼勞務承包協(xié)議書
- 2025年四川司法警官職業(yè)學院高職單招職業(yè)適應性測試近5年常考版參考題庫含答案解析
- 新建污水處理廠工程EPC總承包投標方案(技術標)
- 柔性電路板自動化制造-深度研究
- 《宏觀經(jīng)濟管理研究》課件
評論
0/150
提交評論