數(shù)字式DCDC降壓開關(guān)電源_第1頁
數(shù)字式DCDC降壓開關(guān)電源_第2頁
數(shù)字式DCDC降壓開關(guān)電源_第3頁
數(shù)字式DCDC降壓開關(guān)電源_第4頁
數(shù)字式DCDC降壓開關(guān)電源_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、word數(shù)字式直流開關(guān)穩(wěn)壓電源A題2017年5月1日.word摘 要 關(guān)鍵字:BUCK同步整流,PID,藍牙通訊,電源管理APP摘要:本系統(tǒng)是基于BUCK同步整流拓?fù)浣Y(jié)構(gòu),以STM32為控制核心,藍牙傳輸與 端APP相配合,從而形成了整個無線數(shù)字式開關(guān)電源。 APP開啟電源,STM32通過電壓采樣將采集到的數(shù)據(jù)送入PID算法進行處理后,實時動態(tài)調(diào)整輸出的PWM的占空比,進而實現(xiàn)可控穩(wěn)壓。同時可通過 APP端設(shè)置輸出電壓和上限電流,并實時顯示當(dāng)前電壓和電流值,當(dāng)電流超過設(shè)定值時, 端會語音報警,并點亮APP中的過流指示燈,并立即關(guān)斷電壓。Keywords: BUCK synchronous re

2、ctifier, PID, Bluetooth communication, power management APPAbstract: this system is based on the BUCK synchronous rectifier topology, with STM32 as the control core, the Bluetooth transmission and mobile phone end APP match, thus forming the entire wireless digital switching power supply. First, the

3、 mobile phone APP to open the power supply, STM32 through the voltage sampling will be collected into the PID algorithm for data processing, real-time dynamic adjustment of the output of the PWM duty cycle, and thus achieve a regulated voltage. At the same time through the mobile phone terminal APP

4、to set the output voltage and current limit, and display the current voltage and current value, when the current exceeds the set value, the mobile phone terminal can voice alarm, and light in APP flow indicator, and immediately turn off voltage.word目 錄1系統(tǒng)方案11.1 DC-DC結(jié)構(gòu)的論證與選擇11.2 MOS管驅(qū)動電路的論證與選擇11.3電壓

5、采樣電路的論證與選擇11.4電流采樣電路的論證與選擇11.5控制系統(tǒng)的論證與選擇21.6無線模塊的論證與選擇22.1 BUCK電路的分析22.1.1 占空比22.1.2 電感22.1.3 電容22.2 驅(qū)動電路的計算32.2.1 自舉電容的選取32.2.2 自舉二極管的選取32.3 電流采樣電路的計算33電路與程序設(shè)計43.1電路的設(shè)計4系統(tǒng)總體框圖4電源43.2程序的設(shè)計4程序功能描述與設(shè)計思路4程序流程圖64測試方案與測試結(jié)果74.1測試方案74.2 測試條件與儀器84.3 測試結(jié)果及分析8測試結(jié)果(數(shù)據(jù))8測試分析與結(jié)論8附錄1:電路原理圖9附錄2:PCB圖10附錄3: 控制端源程序11

6、main.c11delay.c16adc.c17timer.c21usart3.c24hc05.c27附錄4:APP端源程序27.word數(shù)字式直流開關(guān)穩(wěn)壓電源1系統(tǒng)方案本系統(tǒng)主要由DC-DC結(jié)構(gòu)、MOS管驅(qū)動電路、電壓采樣電路、電流采樣電路、控制系統(tǒng)、無線模塊組成,下面分別論證這幾個模塊的選擇。1.1 DC-DC結(jié)構(gòu)的論證與選擇方案一:半橋隔離式開關(guān)電源。半橋隔離式開關(guān)電源由兩個開關(guān)管交替工作,相當(dāng)于兩個開關(guān)電源同時輸出功率,因此其輸出功率很大,當(dāng)電源利用率比擬低,不宜用在工作電壓較低的場合。另外,半橋電路的兩個開關(guān)器件沒有公共地,與驅(qū)動信號的連接比擬麻煩。方案二:BUCK同步整流降壓斬波式

7、開關(guān)電源。BUCK電路是一種降壓斬波器,屬于非隔離式的開關(guān)電源,降壓變換器輸出電壓平均值Uo總是小于輸入電壓Uin,通常電感中的電流是否連續(xù),取決于開關(guān)頻率、濾波電感L和電容C的數(shù)值。輸出電壓取決于占空比的大小,電路簡單易于實現(xiàn),。BUCK同步整流是在金典BUCK電路的根底上改良而來,用MOS管代替二極管續(xù)流,這樣可以大大降低功率損耗。綜合以上兩種方案,選擇方案二。1.2 MOS管驅(qū)動電路的論證與選擇方案一:光耦隔離驅(qū)動。使用光耦進行隔離驅(qū)動是最常用的一種驅(qū)動方式,但是由于光耦工作頻率很低,響應(yīng)速度慢,而開關(guān)電源工作在較高頻率,且要求響應(yīng)速度快,所以我們不采用這種方案。方案二:變壓器隔離驅(qū)動。

8、使用變壓器隔離驅(qū)動雖然解決了光耦驅(qū)動的缺乏,但是繞制變壓器非常復(fù)雜,如果制作不是很標(biāo)準(zhǔn),就容易導(dǎo)致驅(qū)動波形失真,所以,我們不采取這種方案。方案三:驅(qū)動芯片驅(qū)動。由于BUCK同步整流的上管屬于高端懸浮驅(qū)動,電壓是浮動的,如果采用分立結(jié)構(gòu),這樣就造成了電路結(jié)構(gòu)復(fù)雜,所以我們選擇使用驅(qū)動芯片,可以大大提升驅(qū)動穩(wěn)定度,減小開關(guān)損耗,而且可以產(chǎn)生帶死區(qū)時間的互補PWM波,與驅(qū)動信號隔離。綜合以上三種方案,選擇方案三。1.3電壓采樣電路的論證與選擇 方案一:直接采樣。由于使用電阻分壓之后可以到達控制芯片的I/O上限電壓以下,而且要求采樣電路響應(yīng)速度快,所以直接采樣是最簡單可靠的方法。1.4電流采樣電路的論

9、證與選擇方案一:使用電流采樣芯片。TI的電流檢測芯片INA282,是一款高精度、寬共模范圍、雙向電流并聯(lián)監(jiān)視器。不過電阻在大電流通過時發(fā)熱造成阻值升高均會使結(jié)果出現(xiàn)誤差。方案二:使用運算計放大器采樣。LM358內(nèi)部包括有兩個獨立的、高增益、內(nèi)部頻率補償?shù)碾p運算放大器,適合于電源電壓范圍很寬的單電源使用,也適用于雙電源工作模式,在推薦的工作條件下,電源電流與電源電壓無關(guān)。綜合考慮電流采樣選用LM358 芯片1.5控制系統(tǒng)的論證與選擇方案一:STC89C52。傳統(tǒng)的51單片機為8位單片機,價格廉價,控制簡單,但是處理速度較慢,片內(nèi)資源少,存儲容量小,難以存儲大體積的程序和快速計算。并且I/O口資源

10、偏少,擴展起來也較為麻煩。ADC精度達不到我們想要的結(jié)果。方案二:STM32F103。STM32F103系列微處理器是首款基于ARMv7-M體系結(jié)構(gòu)的32位標(biāo)準(zhǔn)RISC(精簡指令集)處理器,具有執(zhí)行代碼效率高,外設(shè)資源豐富等眾多優(yōu)點。該系列微處理器工作頻率設(shè)定在72MHZ,具有執(zhí)行代碼效率高,外設(shè)資源豐富等眾多優(yōu)點。綜合考慮采用STM32F103系列芯片1.6無線模塊的論證與選擇方案一:基于藍牙傳輸?shù)臒o線模塊采用無線數(shù)據(jù)采集傳輸藍牙模塊,藍牙模塊具有功耗低,可靠性高和高平安性的優(yōu)點,可以用作無線數(shù)據(jù)傳輸系統(tǒng)的數(shù)據(jù)收發(fā)端。2系統(tǒng)理論分析與計算2.1 BUCK電路的分析 占空比根據(jù)BUCK電路的特

11、性可以得出:Uo=D*Uin;我們可以計算得出,占空比D=Uo/Uin=60%。 電感通過buck電路結(jié)構(gòu)和原理分析可以得到電感的計算公式為: 其中Dmax為Buck電路最大占空比,k:0.05 0.1,fs為開關(guān)管的開關(guān)頻率,Imax為最大輸出電流,Ui為輸入電壓。 電容而關(guān)于濾波電容的選擇,電容需要濾掉主要的開關(guān)紋波,選擇電容C足夠大,以使開關(guān)頻率時的電容值阻抗遠小于負(fù)載阻抗R,因此幾乎所有的電感電流紋波流經(jīng)電容,而流經(jīng)負(fù)載電阻阻抗R的紋波非常小,電容電流波形ic(t)等于電感電流波形去掉直流成分后的交流成分。輸出濾波電容的選取決定了輸出紋波電壓,紋波電壓與電容的等效的串聯(lián)電阻ESR有關(guān),

12、電容的紋波電流要大于電路中的紋波電流。這里選取兩個470uf/35V的電容并聯(lián),這樣就可以降低了等效的串聯(lián)電阻。2.2 驅(qū)動電路的計算 自舉電容的選取以下公式列出了自舉電容應(yīng)該提供的最小電荷要求:其中: Qg:高端器件柵極電荷 f: 工作頻率Icbs(leak):自舉電容漏電流Iqbs :高端驅(qū)動電路靜態(tài)電流。 Qls:每個周期內(nèi),電平轉(zhuǎn)換電路中的電荷要求500V/600V IC 為 5nc 1200V IC 為 20nc自舉電容必須能夠提供這些電荷,并且保持其電壓。否那么 Vbs 將會有很大的電壓紋波,并且可能會低于欠壓值 Vbsuv,使高端無輸出并停止工作。因此Cbs電容的電荷應(yīng)是最小值的

13、二倍,最小電容值可以由下式計算:其中:Vf :自舉二極管正向壓降VLS:低端器件壓降或高端負(fù)載壓降由上式計算的 Cbs 電容值是最小的要求,由于自舉電路的固有工作原理,低容值可能引起過充電,從而導(dǎo)致 IC 損壞。為了防止過充電和進一步減小Vbs紋波,由上式計算的容值應(yīng)乘一個系數(shù) 15。2.2.2 自舉二極管的選取在高端器件開通時,自舉二極管必須能夠阻止高壓,并且應(yīng)是快恢復(fù)二極管,以減小從自舉電容向電源 Vcc 的回饋電荷。如果電容需要長期貯存電荷時,高溫反向漏電流指標(biāo)也很重要。二極管的額定電流值式1和工作頻率的乘積得到。其中:二極管特性VRRM=功率端電壓最大 trr = 100nsI F =

14、 Qbs f由上式計算得知,自舉電容C=0.22uF,自舉二極管選取快恢復(fù)二極管HER308。2.3 電流采樣電路的計算采樣電阻為0.02R,對于STM32的ADC采樣來說,就算電流到達了2A,那么采集到康銅絲的電壓才0.04V,ADC精度是達不到的,所以電流采集我們采用運放構(gòu)成差動放大電路對采樣信號進行放大, 然后通過軟件來處理電壓到電流的轉(zhuǎn)換關(guān)系。3電路與程序設(shè)計3.1電路的設(shè)計系統(tǒng)總體框圖系統(tǒng)總體框圖如下圖,BUCK同步整流UoutUin12VMOS管驅(qū)動電路采樣電路控制系統(tǒng)電源3.3V3.3VSTM32控制電路電壓、電流無線通信無線模塊圖 系統(tǒng)總體框圖電源控制系統(tǒng)的電源是由LM2596

15、 DC-DC模塊經(jīng)過降壓給STM32F103和藍牙模塊提供3.3V的電壓,給驅(qū)動芯片提供12.0V的電壓。3.2程序的設(shè)計程序功能描述與設(shè)計思路1、程序功能描述軟件局部分為電源控制端和 APP端。控制端選用STM32F103系列控制芯片,控制端做好PWM、定時器、ADC、藍牙等初始化后,等待 端APP通過藍牙進行連接通訊。在 端發(fā)出開始工作命令后,開始ADC采樣,一路ADC采集輸出端電壓,另兩路ADC通過采集康銅絲兩端電壓做差后轉(zhuǎn)化為輸出端電流數(shù)據(jù)。通過PID控制算法將輸出端電壓Pv和設(shè)定電壓Sv傳入PID算法進行相應(yīng)算法處理,最終來控制PWM輸出占空比,從而到達動態(tài)調(diào)整和穩(wěn)定電壓的作用。AD

16、C采樣,PID算法,PWM輸出構(gòu)成一個閉環(huán)控制系統(tǒng)。與此同時,通過定時器設(shè)定每500ms向APP發(fā)送一次數(shù)據(jù),數(shù)據(jù)包含實時電壓、電流、是否過載等信息。APP端也可動態(tài)調(diào)整輸出電壓和上限電流值。除了滿足發(fā)揮局部一二項要求外,還額外增加了控制輸出開關(guān)、上限電流設(shè)定和過流保護報警功能,一旦電流值超過上限電流,控制端自動關(guān)閉電壓輸出,APP端過流保護指示燈亮紅燈,同時語音報警。APP端采用易語言進行編寫,進行了美觀大方的界面設(shè)計。1 控制端實現(xiàn)功能:動態(tài)調(diào)節(jié)電壓和穩(wěn)定電壓,接收APP端命令,回傳電流、電壓、過載信息2 APP端:顯示實時電壓、電流、是否過流等信息,設(shè)定輸出電壓、上限電流,緊急關(guān)閉電壓輸

17、出和恢復(fù)輸出功能2、程序設(shè)計思路1 控制端程序設(shè)計 ADC采樣ADC采樣使用STM32F103芯片內(nèi)部自帶的12位ADC,為了減小ADC的誤差,在軟件上使用了濾波算法并進行了ADC校準(zhǔn)。濾波算法采用防脈沖干擾平均濾波算法,又稱中位值平均濾波算法,其實際上相當(dāng)于中位值濾波法與算數(shù)平均濾波法的融合,方法是連續(xù)采集N個數(shù)據(jù),去掉一個最大值和最小值,然后計算N-2個數(shù)據(jù)的算數(shù)平均值。為了能夠更加快速的找到N個數(shù)據(jù)的最大最小值,舍棄了常用的冒泡排序算法,采用快速排序算法,即通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩局部,其中一局部的所有數(shù)據(jù)都比另外一局部的所有數(shù)據(jù)都要小,然后再按此方法對這兩局部數(shù)據(jù)分別進

18、行快速排序,整個排序過程可以遞歸進行,以此到達整個數(shù)據(jù)變成有序序列。 PID算法為了控制電壓的精準(zhǔn)舍棄了一般的算法而采用PID算法。PID算法是由比例算法P和積分算法I和微分算法D構(gòu)成,比例算法反映的是當(dāng)前狀態(tài)的情況,也就是設(shè)定電壓Sv與輸出電壓Pv的差值Ek=Sv-Pv,Pout=Kp*(Sv-Pv) ,Kp為比例系數(shù),在本系統(tǒng)最正確比例系數(shù)Kp=0.2 。積分算法反映的是過去狀態(tài)的情況,也就是所有設(shè)定電壓與輸出電壓差值的和的情況,Iout=Kp*Ti*SEK 。微分算法反映的對未來情況的預(yù)測,即Dout=Kp*Td*DelEk(DelEk=Ek-Ek_1)考慮到當(dāng)僅存在比例算法時假設(shè)調(diào)節(jié)到

19、達了預(yù)設(shè)值將會失去比例調(diào)節(jié)的作用,此時應(yīng)該有其它的調(diào)節(jié)局部來彌補,故本系統(tǒng)最終采用的是比例加上積分及微分的算法模式,使三種算法優(yōu)缺互補。 藍牙通訊協(xié)議藍牙采用HC-05,為了防止發(fā)送過程中信息的喪失或錯誤,對藍牙通訊雙方進行了簡單的通訊協(xié)議規(guī)定,規(guī)定控制端向 APP端發(fā)送實時數(shù)據(jù)的協(xié)議為:引導(dǎo)碼EF+引導(dǎo)碼EE+電壓信息+電流信息+是否過流+結(jié)束碼FF。規(guī)定 端APP向控制端發(fā)送控制數(shù)據(jù)的協(xié)議為:引導(dǎo)碼EF+引導(dǎo)碼EE+控制命令+結(jié)束碼FF 。2 端程序設(shè)計 端APP程序設(shè)計采用的是易語言,易語言同其他面向?qū)ο蟮母呒壵Z言如JAVA一致,在 端APP編程時都只需要對某一個對象,如按鈕等進行這個對

20、象相應(yīng)的編程控制即可,調(diào)用相應(yīng)的API函數(shù)即可完成對藍牙的控制。此處僅對藍牙接收關(guān)鍵代碼進行簡要分析,藍牙接收到數(shù)據(jù)后,首先判斷發(fā)送過來的數(shù)據(jù)是否是完整的12位數(shù)據(jù),假設(shè)是那么進行下一步驗證,即提取數(shù)據(jù)中的前四位與EFEE進行比擬,最后兩位與FF進行比擬,假設(shè)正確那么說明收到的數(shù)據(jù)完整那么調(diào)用解析數(shù)據(jù)的過程。此處附上 APP端藍牙接收數(shù)據(jù)時對引導(dǎo)碼解析的截圖:程序流程圖總體程序流程圖 圖3.2.1 程序流程圖4測試方案與測試結(jié)果4.1測試方案1、硬件測試 焊好電路,確認(rèn)電路連接無誤,無虛焊,漏焊。2、軟件仿真測試采用Proteus進行簡單的功能仿真分析,檢查設(shè)計的理論可行性,并采用keil進行

21、斷點調(diào)試,確保程序邏輯正確。3、硬件軟件聯(lián)調(diào)、無法下載程序:檢查時鐘電路是否正常:晶振是否起振,起振電容是否正確。、某個芯片無法使用:首先檢查硬件電路,其次檢查程序邏輯,必要時可以采用示波器、邏輯分析儀等儀器抓取芯片引腳波形,然后進行分析處理。、后期界面優(yōu)化、用戶體驗、容錯處理等。4.2 測試條件與儀器測試條件:檢查屢次,仿真電路和硬件電路必須與系統(tǒng)原理圖完全相同,并且檢查無誤,硬件電路保證無虛焊。測試儀器:高精度學(xué)生電源,高精度的數(shù)字毫伏表,模擬示波器,數(shù)字示波器,數(shù)字萬用表,指針式萬用表,大功率負(fù)載。4.3 測試結(jié)果及分析測試結(jié)果(數(shù)據(jù))6負(fù)載測試結(jié)果好下表所示: 單位:電壓/V 電流/A

22、輸入電壓018.619.020.021.021.6輸入電流0.011.471.381.321.261.21輸出電壓011.9811.9811.9811.9511.95輸出電流01.981.922.031.991.98輸出紋波mV0510510520534510測試分析與結(jié)論根據(jù)上述測試數(shù)據(jù),輸出電壓誤差在100mV之內(nèi),負(fù)載和電源變化時,電壓不會有太大的波動,由此可以得出以下結(jié)論:1、輸出電壓誤差很小,控制系統(tǒng)響應(yīng)速度快。2、電源調(diào)整率和負(fù)載調(diào)整率得到很好的表現(xiàn)3、電源效率比預(yù)期要求要高。綜上所述,本設(shè)計到達設(shè)計要求。.word附錄1:電路原理圖.word附錄2:PCB圖附錄3: 控制端源程序

23、main.c#include delay.h#include adc.h#include timer.h#include string.h #include usart3.h#include hc05.h#includetypedef struct PID unsigned int Sv; unsigned int Pv; int Ek; int Ek_1; int DelEk; int SEK; float Kp; float Ti; float Td; int OUT; unsigned int OUTput; unsigned int Proutput; PID_Define; PID_

24、Define PID_Value; void PID_Init(void) PID_Value.Sv=2478; PID_Value.Ek_1=0; PID_Value.DelEk=0; PID_Value.SEK=0; PID_Value.Kp=0.2; PID_Value.Ti=0; PID_Value.Td=0; PID_Value.Proutput=2160; void PID_Caculate(void) PID_Value.Ek=PID_Value.Sv-PID_Value.Pv; PID_Value.SEK+=PID_Value.Ek; PID_Value.DelEk=PID_V

25、alue.Ek-PID_Value.Ek_1; if(PID_Value.Ek-15) if(PID_Value.Ek0) PID_Value.OUT=PID_Value.Proutput+2; else PID_Value.OUT=PID_Value.Proutput-2; if(PID_Value.OUT1170) PID_Value.OUTput=1170; else if(PID_Value.OUT25) PID_Value.OUTput=25; elsePID_Value.OUTput=PID_Value.OUT; else if(PID_Value.Ek-35) if(PID_Va

26、lue.Ek0) PID_Value.OUT=PID_Value.Proutput+20; else PID_Value.OUT=PID_Value.Proutput-20; if(PID_Value.OUT1170) PID_Value.OUTput=1170; else if(PID_Value.OUT1170) PID_Value.OUTput=1170; else if(PID_Value.OUTLOAD=nus*fac_us; /時間加載 SysTick-VAL=0x00; /清空計數(shù)器SysTick-CTRL|=SysTick_CTRL_ENABLE_Msk ;/開始倒數(shù) dote

27、mp=SysTick-CTRL;while(temp&0x01)&!(temp&(1CTRL&=SysTick_CTRL_ENABLE_Msk;/關(guān)閉計數(shù)器SysTick-VAL =0X00; /清空計數(shù)器 void delay_ms(u16 nms) u32 temp; SysTick-LOAD=(u32)nms*fac_ms;/時間加載(SysTick-LOAD為24bit)SysTick-VAL =0x00;/清空計數(shù)器SysTick-CTRL|=SysTick_CTRL_ENABLE_Msk ;/開始倒數(shù) dotemp=SysTick-CTRL;while(temp&0x01)&!(t

28、emp&(1CTRL&=SysTick_CTRL_ENABLE_Msk;/關(guān)閉計數(shù)器SysTick-VAL =0X00; /清空計數(shù)器 adc.c#include adc.h void Adc1_Init(void) ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1,ENABLE ); RCC_ADCCLKConfig(RCC_PCLK2_Div6); GPIO_InitSt

29、ructure.GPIO_Pin = GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOA, &GPIO_InitStructure);ADC_DeInit(ADC1); ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;ADC_InitStructure.ADC_E

30、xternalTrigConv = ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel = 1;ADC_Init(ADC1, &ADC_InitStructure); ADC_Cmd(ADC1, ENABLE);ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1);ADC_StartCalibration(ADC1); while(A

31、DC_GetCalibrationStatus(ADC1);void Adc2_Init(void) ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC2,ENABLE ); RCC_ADCCLKConfig(RCC_PCLK2_Div6); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode

32、 = GPIO_Mode_AIN;GPIO_Init(GPIOA, &GPIO_InitStructure);ADC_DeInit(ADC2); ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;ADC_InitStruct

33、ure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel = 1;ADC_Init(ADC2, &ADC_InitStructure); ADC_Cmd(ADC2, ENABLE);ADC_ResetCalibration(ADC2); while(ADC_GetResetCalibrationStatus(ADC2);ADC_StartCalibration(ADC2); while(ADC_GetCalibrationStatus(ADC2); void Adc3_Init(void) ADC_In

34、itTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC3,ENABLE ); RCC_ADCCLKConfig(RCC_PCLK2_Div6); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOA, &GPIO_InitStructure);AD

35、C_DeInit(ADC3); ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure

36、.ADC_NbrOfChannel = 1;ADC_Init(ADC3, &ADC_InitStructure); ADC_Cmd(ADC3, ENABLE);ADC_ResetCalibration(ADC3); while(ADC_GetResetCalibrationStatus(ADC3);ADC_StartCalibration(ADC3); while(ADC_GetCalibrationStatus(ADC3);u16 Get_Adc1(u8 ch) ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 )

37、; ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC );return ADC_GetConversionValue(ADC1);u16 Get_Adc2(u8 ch) ADC_RegularChannelConfig(ADC2, ch, 1, ADC_SampleTime_239Cycles5 ); ADC_SoftwareStartConvCmd(ADC2, ENABLE); while(!ADC_GetFlagStatus(ADC2, ADC_FLAG_EOC );ret

38、urn ADC_GetConversionValue(ADC2);u16 Get_Adc3(u8 ch) ADC_RegularChannelConfig(ADC3, ch, 1, ADC_SampleTime_239Cycles5 ); ADC_SoftwareStartConvCmd(ADC3, ENABLE); while(!ADC_GetFlagStatus(ADC3, ADC_FLAG_EOC );return ADC_GetConversionValue(ADC3);void quickSort(int s, int l, int r)if (l r)int i = l, j =

39、r, x = sl;while (i j)while (i = x) / 從右向左找第一個小于x的數(shù) j-;if (i j)si+ = sj;while (i j & si x) / 從左向右找第一個大于等于x的數(shù) i+;if (i j)sj- = si;si = x;quickSort(s, l, i - 1); / 遞歸調(diào)用 quickSort(s, i + 1, r);u16 Get_Adc1_Average(u8 ch) int adc10;u8 t;for(t=0;t10;t+)adct=Get_Adc1(ch);quickSort(adc,0,9);return (adc2+adc

40、3+adc4+adc5+adc6+adc7)/6; u16 Get_Adc2_Average(u8 ch) int adc10;u8 t;for(t=0;t10;t+)adct=Get_Adc2(ch);quickSort(adc,0,9);return (adc2+adc3+adc4+adc5+adc6+adc7)/6; u16 Get_Adc3_Average(u8 ch) int adc10;u8 t;for(t=0;t10;t+)adct=Get_Adc3(ch);quickSort(adc,0,9);return (adc2+adc3+adc4+adc5+adc6+adc7)/6; timer.c#include timer.hunsigned char flag=0;void TIM1_PWM_Init(u16 arr,u16 psc) GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInit

溫馨提示

  • 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

提交評論