版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
緒論緒論主要介紹了水晶閃電球的工作原理及其對電源的需求。水晶閃電球的結(jié)構(gòu)在許多的科技展覽會中,可以看到一種散發(fā)著閃電狀絢麗弧光的玻璃球,這就是水晶閃電球,其主要由玻璃球體,電路板、和直流電源這三部分組成。其結(jié)構(gòu)如圖1-1所示:圖STYLEREF1\s1.SEQ圖\*ARABIC\s11水晶閃電球結(jié)構(gòu)圖玻璃球體:一個密封的球體,其玻璃一般由耐高溫的優(yōu)質(zhì)玻璃做成。密封的球體內(nèi)填充了低壓的惰性氣體。在球體內(nèi)腔處(圖1.1中2處),由底板伸入導線,至中央小球腔,與填充小球腔的鋼絲堆連接,(圖1.1中5處)。電路板:電路板上有著麥克風和電子器件,構(gòu)成高頻交流脈沖電路或脈動直流電路和聲控電路。直流電源:為保證安全,一般采用直流電源為水晶閃電球供電,常見的有220V轉(zhuǎn)12V直流電源。[1]水晶閃電球的原理在水晶閃電球內(nèi),充滿了惰性氣體。12V直流經(jīng)電路板中的電路產(chǎn)生高頻脈沖電,再由導線芯通至鋼絲堆內(nèi)。其電壓高達數(shù)千至一萬伏,頻率則可能高達數(shù)十千赫,但其電流很小,所以即使是用手接觸也不會有觸電感覺。中心鋼絲堆中的鋼絲扭曲彎折,形成一個個指向外面尖端,閃電球通電后,在中心的鋼絲堆與玻璃球體外殼之間產(chǎn)生氣體放電現(xiàn)象,擊穿球內(nèi)的惰性氣體,使之形成等離子體,發(fā)出絢麗的弧光。[1]高端的水晶閃電球還有聲控模式,當調(diào)到該模式時,聲控電路可以使氣體放電根據(jù)聲音的有無而產(chǎn)生間斷變化。水晶閃電球必須使用高頻放電進行驅(qū)動,不僅僅因為該法易獲得純凈等離子體、增強電離提高放電效率,更是在于放電極鋼絲堆外玻璃層是絕緣體,如果是采用直流放電,是無法維持放電的。[2]水晶閃電球球的惰性氣體放電區(qū)和玻璃內(nèi)外殼都可視為平行板電容器,其直流放電回路如圖1-2(a)。如果把水晶閃電球抽象為一個平行板電容器,其電容為C=εS/d.(ε為極板間介質(zhì)的介電常數(shù),S為極板面積,d為極板間的距離),由于玻璃的介電常數(shù)比惰性氣體大的多,厚度相對很薄,所以玻璃層的電容量遠大于惰性氣體放電區(qū)的等效電容。根據(jù)多電容串聯(lián)公式1/C=1/C1+1/C2+…+1/Cn,當電容器串聯(lián)時,電壓在電容器上的分配與電容量成反比。所以在開關接通的瞬間,玻璃層的壓降幾近為零。依次設玻璃殼、惰性氣體、玻璃殼的電容為C1、C2、C3(圖1-2(b))。一旦產(chǎn)生氣體放電之后,于是C1內(nèi)表面開始充正電,C3外表面開始充負電。隨著充電過程的持續(xù),C2兩端的電壓會逐漸減小,即加在放電區(qū)兩端的電壓則隨之不斷減小,當減小到維持放電所需要的電壓值以下時,放電就停止了。若采用高頻脈動直流放電,由電容元件的阻抗Zc=1/ωc=1/2πfc知,當f很大時,Zc很小,電路可以視為短路,所以可以維持放電。[3](a)放電回路(b)等效回路圖STYLEREF1\s1.SEQ圖\*ARABIC\s12水晶閃電球放電電路原理圖球內(nèi)氣體產(chǎn)生放電現(xiàn)象時,魔球發(fā)出光的顏色事實上是球內(nèi)填充氣體自身的原子特征光譜。填充的氣體一般為氪或氙和氖的混合氣體。氪、氙使球內(nèi)的光看起來比較像閃電的形狀,而非氣流狀。氣體與求發(fā)光顏色關系如表1.1所示。當然除氣體種類外,電流大小及球內(nèi)氣壓也會影響球發(fā)出的顏色。[3]表STYLEREF1\s1.SEQ表\*ARABIC\s11惰性氣體放電顏色氣體元素名稱HeNeArKrXe原子序數(shù)210183654放電時發(fā)光的顏色黃色紅色紅或藍色黃綠色藍綠色水晶閃電球電源需求根據(jù)以上分析,水晶閃電球需要一種高頻高壓脈動直流電作為電源。課題主要研究內(nèi)容小功率數(shù)字式高頻高壓脈動直流電源在諸如醫(yī)療,家裝行業(yè)都有應用,有著廣泛的市場前景。本課題主要研究的內(nèi)容是使用STM32F103VCT6芯片作為控制芯片,設計一種數(shù)字開關電源,使其輸出一種小功率高頻高壓脈動直流電為水晶閃電球供電,并擁有完整的人機交互界面。高頻高壓脈動直流源的工作原理及方案選擇高壓直流電源的產(chǎn)生傳統(tǒng)的高壓直流電源采用線性電源技術的較多,其產(chǎn)生高電壓輸出的過程通常是從工頻交流電源得到交流供電,然后經(jīng)過高壓隔離升壓變壓器升壓,得到高電壓交流,再通過整流濾波最終輸出直流高電壓。它有半波整流,橋式整流、全波整流、倍壓整流、多相整流等多重方式,但是傳統(tǒng)變壓方式需要龐大的變壓器與散熱系統(tǒng),十分占用空間,成本很高。[4]隨著新技術的進步,開關電源現(xiàn)在已經(jīng)普遍地應用到高壓電源的研制中。使使用更小體積重量的高壓隔離變壓器、高壓電容和高壓整流二極管等成為可能。[4]圖STYLEREF1\s2.SEQ圖\*ARABIC\s11高壓開關電源原理框圖如圖2.1所示,一般高壓開關電源的工作流程為:輸入交流電源,經(jīng)整流濾波單元后,轉(zhuǎn)換成直流電;通過半橋、全橋等各種形式的逆變電路構(gòu)成的逆變單元來產(chǎn)生得到高頻方波脈沖;高頻方波脈沖進入高頻隔離升壓變壓器進行升壓,將直流電壓升高到輸出高壓指標范圍;通過反饋單元采樣,將輸出的高壓反饋信號送到高壓電源的控制檢測單元;由高壓電源的控制檢測單元處理反饋信號,調(diào)整開關管驅(qū)動信號脈沖的頻率或脈寬,改變在逆變單元內(nèi)功率開關管導通的頻率或時間,實現(xiàn)輸出電壓幅度的調(diào)節(jié)。常見DC-DC方案選擇開關電源中,通常逆變器有以下幾種:單端正激、單端反激、推挽、半橋、全橋等。其各種電路優(yōu)缺點比較如表2.1所示:[5]表STYLEREF1\s2.SEQ表\*ARABIC\s11常見逆變電路優(yōu)缺點分析電路優(yōu)點缺點功率范圍應用領域正激電路較簡單,成本低,可靠性高,驅(qū)動簡單變壓器單向激磁,利用率低百瓦-千瓦各種中小功率電源反激電路簡單,成本很低,可靠性高,驅(qū)動電路簡單變壓器單向激磁,利用率低數(shù)十瓦小功率電子設備,計算機設備,消費電子設備電源全橋變壓器雙向激磁,容易達到大功率結(jié)構(gòu)復雜,成本高,有直通問題,可靠性低,需要復雜的驅(qū)動電路百瓦-千瓦大功率工業(yè)用電源,焊接電源,電解電源半橋變壓器雙向激磁,沒有變壓器偏磁問題,開關較少,成本低有直通問題,可靠性低,需要隔離驅(qū)動電路百瓦-千瓦各種工業(yè)用電源,計算機電源等推挽變壓器雙向激磁,,通態(tài)損耗較小,驅(qū)動簡單有偏磁問題百瓦-千瓦低輸入電壓的電源因此,根據(jù)功率等級及使用需求,本課題選用反激電路作為拓撲電路。反激電源工作原理圖STYLEREF1\s2.SEQ圖\*ARABIC\s12反激電路拓撲結(jié)構(gòu)圖如圖2.2所示,在變壓器一次側(cè)回路中串聯(lián)開關管,通過開關管的開斷,控制能量傳輸?shù)臅r間。工作過程為:當Tr導通時,電源電流流過變壓器原邊,i1增加,其變化為di1/dt=Vs/L1,而副邊由于二極管D的作用,i2為0,變壓器磁心磁感應強度增加,變壓器儲能;當Tr關斷時,原邊電流迅速降為0,副邊電流i2在反激作用下迅速增大到最大值,然后開始線性減小,其變化為di2/dt=Vo/L2,此時原邊由于開關管的關斷,電流為0,變壓器磁心磁感應強度減小,變壓器放能。單端反激變換器主要用在250W以下的電路中,其中的變壓器既有變壓器的作用,也有電感的作用。反激電路結(jié)構(gòu)簡單,成本低,且性能可靠,符合本課題的要求。高頻高壓脈動直流源硬件電路設計主回路設計主回路承擔了電力變換功能,設計時要注意留出余量,以適應復雜復雜情況下的要求。拓撲電路設計圖STYLEREF1\s3.SEQ圖\*ARABIC\s11主電路拓撲電路設計如圖3.1所示,主電路采用反激電路的基本原理,但是由于輸出要求為脈動直流,所以可直接省去主回路的整流二極管及濾波電容,將兩側(cè)的地短接。電源經(jīng)保險絲、二極管之后,通過變壓器一次側(cè)線圈。選用MOSFET管作為開關器件,當MOS管開通時,電源向變壓器充能,關斷時變壓器向二次側(cè)傳遞能量。[5]開關管的選取一般基于以下幾個方面:輸入電壓,輸入電流,導通電阻,開關頻率等。在電力電子應用中,一般使用MOSFET及IGBT作為功率開關管。MOSFET一般在較低功率應用及較高頻應用(即功率小于1000W、開關頻率大于100kHz)中表現(xiàn)較好,而IGBT則在較低頻及較高功率設計中表現(xiàn)卓越。根據(jù)設計需要,開關管需要承受1A左右的電流,考慮到MOSFET的特性及安全余量,選擇IRF640型號。IRF640屬于,電力MOSFET采用HEXFET設計,具有轉(zhuǎn)換快速、堅固耐用、低導通阻抗和高效益的特點。IRF640可連續(xù)通過18A電流,瞬間最大允許電流達到72A,導通電阻僅150.0mΩ。其D、S兩端可耐受200V電壓,并且驅(qū)動簡單,只需4V即可導通。IRF640最常見的封裝為TO-220,適用于功耗在50W左右的應用。[6]在實際使用中,需要在G、S兩端并聯(lián)TVS管,防止過電壓擊穿晶體管,同時并聯(lián)了10K電阻,這個電阻的主要作用是防止靜電損壞MOS管。由于MOS管的D、G極之間存在寄生電容,在沒導通之前,D極的高壓可以通過寄生電容直接灌到G極,導致MOS管的損壞,所以需要并聯(lián)10K電阻,此電阻可以提供寄生電容的泄放通道,是必須的添加的。采樣電路設計本課題中,由于主回路二次側(cè)高壓輸出端直接連接進入閃電球內(nèi)部,無法通過電阻分壓測量獲取電壓,所以使用三次側(cè)繞組進行采樣,由于共用一個鐵芯,繞組的兩端的電壓變化能間接顯示出高壓側(cè)的變化。繞組結(jié)構(gòu)同樣使用反激電路,負載為兩個電阻,通過電阻分壓之后的電平信號進入LM358芯片做成的電壓跟隨器,可以保證輸出電平的硬特性。其電路如圖3.2所示:圖STYLEREF1\s3.SEQ圖\*ARABIC\s12采樣電路設計圖驅(qū)動電路設計驅(qū)動電路是連接主電路與控制電路的橋梁,它負責將MCU輸出的小信號,放大為能夠驅(qū)動電力電子器件的大電平,驅(qū)動芯片的穩(wěn)定與否,直接影響MOS管的工作狀態(tài)。本課題選用IR2101作為驅(qū)動芯片,此芯片為半橋型芯片,可以直接驅(qū)動兩個MOS管[7],但是本課題中只需要控制一個管,故只使用其下橋臂部分。電路如圖3.3所示:圖STYLEREF1\s3.SEQ圖\*ARABIC\s13驅(qū)動電路設計主控供電電路設計由于控制板直接接受12V電壓輸入時會產(chǎn)生較大的壓差,導致穩(wěn)壓芯片過熱,故先用LM2577芯片將12V降為7V。其電路如下頁圖3.4所示:[8]圖STYLEREF1\s3.SEQ圖\*ARABIC\s14主控供電電路控制電路設計控制電路是一個系統(tǒng)的核心組成部分,控制電路決定了一個系統(tǒng)的整個工作流程,控制電路主要有MCU最小系統(tǒng),供電電路,外圍電路和保護電路組成。供電電路設計供電是一個系統(tǒng)正常工作的必要條件,供電的穩(wěn)定與否對系統(tǒng)的整體性能有著非常大的影響,供電不穩(wěn)會導致微處理器的A/D采樣較大的波動和偏差,影響系統(tǒng)的工作狀態(tài),嚴重的甚至還會導致系統(tǒng)癱瘓。根據(jù)系統(tǒng)工作的需要,主控電路的供電輸出電壓應包括:5V、3.3V,為了保證系統(tǒng)的穩(wěn)定性,主控選擇線性電源芯片7805[9]、LM1117-3.3[10]進行電壓轉(zhuǎn)換。由于整個系統(tǒng)采用12VDC直流源進行供電,與7805芯片壓差較大,根據(jù)線性電源的原理,將有7V左右的電壓直接被7805芯片吸收,如果控制電路電流較大,則會引起7805芯片發(fā)熱,嚴重時將燒毀芯片。所以在7805芯片之前,加入2512封裝的20歐電阻進行分壓,減少直接加載在芯片上的電壓,達到減小發(fā)熱的目的。同時系統(tǒng)還可以根據(jù)實際輸入電壓以及電流大小,改變分壓電阻的大小,如在7V供電時,可以將20歐電阻直接替換為0歐,減小無用的功耗,同時也能保證7805芯片的正常工作。而如果輸入電壓超過15V,則需要進行二次降壓,防止電阻或芯片過熱??刂瓢灞趁嬖O計了兩個TVS管,用于保護控制板,防止外部高壓脈沖、靜電損壞開發(fā)板上的元器件。同時,為保障系統(tǒng)安全及整流效果,還應在電路中加入過流保護,濾波電路,供電指示電路等。電路如下頁圖3.5所示。(a)電壓轉(zhuǎn)換電路(b)指示,保護電路圖STYLEREF1\s3.SEQ圖\*ARABIC\s15控制板供電電路最小系統(tǒng)電路設計此次選用了STM32F103VCT6芯片作為主控芯片。頻率可達72MHZ,同時擁有80個I/O口,32bit數(shù)據(jù)總線寬度,256KB程序存儲器,48KB數(shù)據(jù)存儲器;擁有16路A/D采樣通道,能進行12位A/D采樣,采樣精度高,速度快,擁有DMA功能,能在不占系統(tǒng)資源的情況下進行數(shù)據(jù)傳輸;擁有8個專門定時器,其中TIM1定時器支持三組正反雙向共六路PWM波輸出,同時擁有BreakIN功能,能通過硬件關斷PWM波輸出,達到保護系統(tǒng)的目的;擁有5組USART串口通信能力,能實時與上位機進行通信。[11]最小系統(tǒng)應該包括:控制芯片、晶振電路、復位電路。所選用控制芯片的具體型號為STM32F103VCT6,封裝為LQFP100,擁有100個引腳,外接晶振為8MHz。根據(jù)芯片手冊可設計出控制電路最小系統(tǒng),如圖3.6:圖STYLEREF1\s3.SEQ圖\*ARABIC\s16最小系統(tǒng)電路調(diào)試電路設計調(diào)試電路可以方便的為MCU下載程序,調(diào)試程序,目前常見的調(diào)試接口有JTAG與SWD兩種,JTAG是一種國際標準測試協(xié)議(IEEE1149.1兼容),主要用于芯片內(nèi)部測試?,F(xiàn)在多數(shù)的高級器件都支持JTAG協(xié)議,但是,由于JTAG接口龐大,一般采用的20PinJTAG接口極大的占據(jù)主板空間以及芯片管腳資源,所以新型的SWD接口被越來越多的人采納,相對于JTAG,SWD只需4跟引腳即VCC,SWDIO,SWCLK,GND,其中只有SWDIO,SWCLK與MCU連接,前者負責數(shù)據(jù)傳輸,后者負責時鐘信號。減少了PCB空間的占用,芯片管腳的占用,更重要的是,SWD在高速傳輸時,比JTAG更穩(wěn)定,有更好的運行效果。其電路如圖3.7所示:圖STYLEREF1\s3.SEQ圖\*ARABIC\s17調(diào)試電路按鍵電路設計對于任何MCU控制板來說,按鍵都是必不可少的電路,按鍵電路工作穩(wěn)定,可以保證對單片機的控制,用戶可以根據(jù)需要為按鍵設計不同的功能,保證系統(tǒng)的正常工作。此控制板,一共設計了5個可編程按鍵,分別對應上下左右中5點,可以方便的進行設計。一般設計為左右進行位移調(diào)整,上下調(diào)整數(shù)值,中鍵負責取消、確認功能。其電路如圖3.8所示:圖STYLEREF1\s3.SEQ圖\*ARABIC\s18按鍵電路設計指示電路設計指示燈是用戶判斷系統(tǒng)是否正常工作重要的依據(jù),根據(jù)需求,采用兩顆Led燈作為指示燈,分別對應正常狀態(tài)與非正常狀態(tài),連接時,只需將正極通過一個限流電阻MCU的I/O口,另一端直接接地即可。實際使用時,可以根據(jù)燈的實際亮度放大或縮小限流電阻,使LED燈保持一個好的工作狀態(tài)。電路如圖3.9所示:圖STYLEREF1\s3.SEQ圖\*ARABIC\s19指示電路設計存儲電路設計存儲電路是另一個重要部分,作為一個完整的系統(tǒng),必須能夠?qū)斍暗闹匾獏?shù)進行存儲,在遇到掉電、復位之后能繼續(xù)穩(wěn)定的工作。由于STM32F103VCT6的RAM中的數(shù)據(jù)在掉電、復位之后就會丟失,無法保存,因此應選用EEPROM作為存儲芯片。AT24C256是一種串行的EEPROM,容量為256kbit,使用3.3V供電,可以通過IIC總線進行數(shù)據(jù)傳輸,[12]連接簡單,只需使用SCL,SDA即可與MCU進行通信,存儲電路如圖3.10所示。圖STYLEREF1\s3.SEQ圖\*ARABIC\s110片外存儲電路設計串口通訊電路設計為了保證與調(diào)試過程的直觀,以及未來與PC上位機通信的需求,控制板上將USART3串口引出,分別為VCC,TXD,RXD,GND四根引腳,將其與CH340,MAX323,MAX3485等串口模塊連接后,就能與PC機進行通信。同時為了適應不同的電源電平,設計通過0歐電阻連接連接3.3V或5V電平,達到更好的兼容性其電路如圖3.11所示:圖STYLEREF1\s3.SEQ圖\*ARABIC\s111串口通信電路USB供電及一鍵下載電路設計為了保證后續(xù)開發(fā)的便捷性,控制板中還設計了USB供電及一鍵下載電路。在實際使用中,只要使用MCUISP軟件就可以直接將編譯好的HEX文件燒錄到單片機中,而不需要再安裝龐大的開發(fā)軟件,對源代碼進行編譯后通過SWD進行寫入,大大增加了開發(fā)的便捷性。其電路如圖3.12所示:圖STYLEREF1\s3.SEQ圖\*ARABIC\s112USB供電及一鍵下載電路在STM32中,存在三種啟動模式:用戶閃存模式,從芯片內(nèi)置的Flash啟動;SRAM模式,從芯片內(nèi)置的RAM區(qū)啟動;系統(tǒng)存儲器模式,從芯片內(nèi)部一塊特定的區(qū)域啟動,即Bootloader啟動,也就是通常說的ISP程序。在每個STM32的芯片上都有兩個管腳BOOT0和BOOT1,這兩個管腳在芯片復位時的電平狀態(tài)決定了芯片復位后從哪個區(qū)域開始執(zhí)行程序,其選擇方式如下頁表3.1所示:[11]表STYLEREF1\s3.SEQ表\*ARABIC\s11STM32啟動模式選擇表BOOT1BOOT0啟動模式X0從用戶閃存啟動,這是正常的工作模式。01從系統(tǒng)存儲器啟動,一般燒錄時使用11從內(nèi)置SRAM啟動,這種模式可以用于調(diào)試。而在此電路中,通過CH340芯片控制RST和DTR信號來控制BOOT0和RESET信號,其中芯片中的DTR#和RTS#管腳的輸出和DTR、RTS的設置是相反的。一鍵下載電路的工作順序如下:首先,MCUISP控制DTR輸出低電平,則DTR#輸出高,然后RTS置高,則RTS#輸出低,這樣Q2導通了,BOOT0被拉高,即實現(xiàn)設置BOOT0為1,同時Q1也會導通,STM32的復位腳被拉低,實現(xiàn)復位。延時100ms后,MCUISP控制DTR為高電平,則DTR#輸出低電平,RTS維持高電平,則RTS#繼續(xù)為低電平,此時STM32的復位引腳,由于Q1不再導通,變?yōu)楦唠娖?,STM32結(jié)束復位,但是BOOT0還是維持為1,從而進入ISP模式,MCUISP就可以開始連接MCU,下載代碼。[13]顯示電路設計作為人機交互最直接的載體,顯示部分尤為重要,目前,市場上有很多液晶顯示屏模塊,如最常見的1602,12864等。但是這樣的模塊只能顯示黑白單色,難以滿足顯示需求,因此,本課題選擇使用2.8寸TFT液晶模塊,該模塊擁有320X240的分辨率,支持16位彩色顯示,擁有電阻式觸摸屏,采用16位80并口,能更好的完成人機交互。其電路如下頁圖3.13所示:[13]圖STYLEREF1\s3.SEQ圖\*ARABIC\s113顯示電路設計其中DB1-DB16分別代表16位數(shù)據(jù)傳輸接口,LCDCS控制顯示模塊的使能,LCDRS、LCDRD、LCDWR控制其讀寫狀態(tài),LCDBL控制其背光功能,TCS控制觸摸功能使能,TPEN作為觸摸信號,TMOSI、TMISO、TSCK使用SPI總線,傳輸觸摸數(shù)據(jù)。TF卡存儲電路設計良好的交互界面,意味著復雜的圖形繪制,字體顯示等要求。但是,在STM32F103VCT6中片內(nèi)僅擁有256KBFlash閃存,如果只存儲程序,256KB足夠使用,但是如果要存放圖片,字體等數(shù)據(jù),則顯得遠遠不夠,因此,綜合考慮之后,為控制板添加了TF卡模塊,采用SPI通信方式,保證數(shù)據(jù)傳輸?shù)乃俣扰c穩(wěn)定性,其電路如圖3.14所示:圖STYLEREF1\s3.SEQ圖\*ARABIC\s114TF卡存儲電路設計PWM電路設計PWM電路是控制板的核心,控制板通過產(chǎn)生PWM信號來控制主回路的驅(qū)動芯片,進而控制主回路。在本次課題中,只需要一路PWM波驅(qū)動一個MOS管,但是為了考慮主控板的多功能性,為了以后二次開發(fā)的方便,特意選擇了引出6路PWM波。這6路PWM全部由高級定時器TIM1控制。TIM1由一個16位的自動裝載計數(shù)器組成,它由一個可編程的預分頻器驅(qū)動,適合多種用途,如測量輸入信號的脈沖寬度(輸入捕獲),產(chǎn)生輸出波形(包括輸出比較、PWM、嵌入死區(qū)時間的互補PWM等)。使用TIM1控制6路PWM波可以方便的對系統(tǒng)進行配置,提高運行效率。另外,TIM1使用定時器預分頻器和RCC時鐘控制預分頻器,可以實現(xiàn)脈沖寬度和波形周期從幾個微秒到幾個毫秒的調(diào)節(jié)。更重要的是,高級定時器TIM1與通用定時器TIMx是完全獨立的,它們之間不共享任何資源,可以同步操作,這為后期使用定時器中斷提供了方便。同時,TIM1定時器擁有剎車功能,經(jīng)過配置之后,一旦剎車管腳接受到低電平信號,PWM輸出立刻終止,這種情況能有效的保護主電路在MCU死機或其他故障狀態(tài)下不被燒毀。PWM輸出電路如圖3.15所示:圖STYLEREF1\s3.SEQ圖\*ARABIC\s115PWM輸出電路每個PWM輸出管腳都需要配置上拉或下拉電阻,本控制板設計中可通過0歐電阻進行選擇。這個電阻在實際操作中是非常必要的,在上電的瞬間,管腳處于高阻態(tài),一旦有干擾,就會在PWM管腳形成未知的電平信號,可能造成器件誤導通,而這一瞬間很有可能會燒毀相關器件或者電機。所以設置上必須設置上拉(下拉)電阻。本次課題,采用的驅(qū)動芯片為高電平驅(qū)動,所以實際使用時,PWM輸出口的電阻將被配置為下拉電阻。而BreakIN剎車管腳則設置為上拉,保證能準確的識別故障信號。ADC采樣電路設計作為電源的主控板,信號采集的重要性不言而喻??焖?,準確的采集信號能極大的提高電源的精度與調(diào)整速度。STM32F103VCT6擁有3組ADC,共18個通道,其中包括16個外部通道和2個內(nèi)部通道,各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行??刂瓢骞苍O計了4組AD采樣電路,可以很好的完成閉環(huán)操作。然而,AD采樣管腳直接與主電路相連是很危險的,一旦主電路產(chǎn)生大的電壓波動,很可能采集回來的電壓超過AD采樣管腳的最大耐壓值,造成芯片燒毀。其電路如圖3.16所示:圖STYLEREF1\s3.SEQ圖\*ARABIC\s116ADC采樣電路在電源的采樣電路中,經(jīng)常會用到二極管整流橋采樣,但是二極管本身存在的導通壓降則會造成一段區(qū)間內(nèi)的測量不準,這個時候經(jīng)常將采樣電壓拉高,以降低二極管導通壓降所帶來的影響。因此,采樣電壓在給到MCU時,經(jīng)常會超過3.3V,所以,為采樣回來的電壓分壓尤為重要。以第一組為例,采樣信號有ADIN1進入,經(jīng)過R31,R35進行2:1分壓,則實際ADC1處的電壓則為初始電壓的三分之一,有效的保護了管腳。同時,R31與C15又同時組成了RC濾波電路,可以很好的濾除雜波,保證AD采樣的精確性與穩(wěn)定性??刂瓢逶O計MMBD4148SE雙二極管作為鉗位,一旦ADC1處的電勢低于0V,則GND端的二極管導通,電勢被拉回為0V,一旦電勢高于3.3V,則VCC處二極管導通,多余的電勢被VCC吸收,因此,實際輸入給AD管腳的電壓為0-3.3V,很好的達到鉗位效果,保護了管腳。聲控電路設計水晶閃電球帶有聲控功能,所以需要添加聲控模塊。聲控模塊使用LM386音頻集成功放,輸出為交流信號。實際使用中,需要電源抬升電路,將負電位抬升,再進行AD采樣,此時的信號為時域信號,需通過FFT變換,將其轉(zhuǎn)換為頻域信號,求出音量。其電路如圖3.17所示:圖STYLEREF1\s3.SEQ圖\*ARABIC\s117聲控電路設計軟件設計主程序設計主程序是單片機啟動后直接運行的程序,若是只實現(xiàn)簡單功能,則主程序即可完成。但是如果是復雜系統(tǒng),包含多個界面時,只靠主程序進行任務處理則無法進行。所以,多采用主程序?qū)崿F(xiàn)流程,子程序完成功能的設計思路。本課題設計了完善的交互界面,包括主菜單,四個一級子功能,五個二級子功能。為此,設計中使用了程序運行狀態(tài)標志,以MODE為例,MODE為0-9時,分別對應不同的子程序。具體流程如圖4.1所示:圖STYLEREF1\s4.SEQ圖\*ARABIC\s11主程序流程圖子程序設計根據(jù)以上流程圖,完成各子程序的程序設計,其中難點是配置各模塊的初始化及其調(diào)用。系統(tǒng)初始化系統(tǒng)初始化主要是對所用到的GPIO、IIC、SPI、DMA、串口、定時器中斷等進行初始化配置,為實現(xiàn)系統(tǒng)的功能以下基礎。GPIO初始化:GPIO初始化是所有功能的起點,在STM32中,如果啟用某個管腳功能則必須先對其GPIO進行初始化,其過程為:GPIO時鐘使能,管腳輸出模式設置,輸出速度設置等。STM32的I/O口具有8種模式,分別是模擬輸入、浮空輸入下拉輸入、上拉輸入、開漏輸出、推挽輸出、復用開漏輸出、復用推挽輸出。一般而言,可以采用推挽輸出模式,推挽輸出既可以向負載灌電流也可以從負載抽取電流,所以配置通信模塊,PWM輸出等管腳時,LED,按鍵等功能時都能采用推挽輸出模式。而對于ADC采樣管腳,則必須使用模擬輸入模式。IIC初始化:IIC主要用于與片外存儲器AT24C256通信以存儲和讀取系統(tǒng)重要參數(shù)。IIC的初始化比較簡單,只需在進行GPIO配置之后,根據(jù)IIC的時序?qū)⑵鋬蓚€引腳SCL和SDA置成相應的電平即可。SPI初始化:SPI主要用于與TF卡的通信以及觸摸數(shù)據(jù)的傳輸,其中觸摸數(shù)據(jù)通過SPI1總線傳輸,TF卡則通過SPI3總線傳輸。SPI的初始化需要將SDO配制成輸入,SDI、SCKL、CS配制成輸出,并置。串口初始化:串口主要是用于與上位機之間的通訊,本課題中引出的串口通道是USART3,初始化時需要配置USART3引腳,TX配置成輸出,RX配置成輸入,才能進行數(shù)據(jù)傳輸。DMA初始化:DMA配置時要準確配置其出入地址,工作模式,數(shù)據(jù)總量,地址增減等參數(shù)。本課題的ADC測試模式,使用4路ADC同時采用,所以需要將其與DMA進行配合。PWM初始化:在本課題中,只需要使用1路輸出,即配置1路即可。配置的內(nèi)容包括觸發(fā)管腳,定時器的周期,分屏系數(shù),輸出模式,對齊模式,占空比設置等。聲控模塊初始化:聲控模塊的初始化只需要配置一個ADC轉(zhuǎn)換器,通過電平的變化讀取數(shù)值,但是其AD值并不是聲音大小的電平信號,在做處理時,對采集的一組AD數(shù)據(jù)進行FFT變換,將時域信號變?yōu)轭l域信號,得到個頻段的能量高度,然后通過求均方根值得出整體的音量大小。EEPROM模塊工作流程控制板中,設計了AT24C256EEPROM芯片作為掉電存儲芯片,其通過IIC總線與單片機進行通信。在操作IIC總線時,要嚴格注意時序,按手冊要求進行操作。其寫過程流程圖如下頁圖4.2所示:圖STYLEREF1\s4.SEQ圖\*ARABIC\s12IIC寫過程流程圖與寫數(shù)據(jù)不同,在讀數(shù)據(jù)之前,必須先通過寫操作將需要讀取的單元的首地址寫入AT24C256的控制寄存器中,然后必須再次發(fā)送啟動信號才能正確讀取數(shù)據(jù)。其流程圖如圖4.3所示:圖STYLEREF1\s4.SEQ圖\*ARABIC\s13IIC讀過程流程圖TF卡模塊工作流程在交互界面的設計中,需要用到大量的圖片,字體,這些文件就被保存在TF卡中。TF卡通過SPI總線與MCU進行連接。SPI的工作流程在此不一一列舉,只列舉TF卡的操作過程。TF卡的初始化相對較為麻煩,需要配合TF卡指令進行操作。具體指令可以參考數(shù)據(jù)手冊。由于TF卡與MCU采用SPI模式連接,所以需要使TF卡進入SPI模式。方法為在TF卡收到復位命令(CMD0)時,若CS為有效電平(低電平)則SPI模式被啟用。由于TF卡內(nèi)部有供電電壓上升時間,約為64個CLK,還需要10個CLK用于TF卡同步,所以在發(fā)送CMD0之前,要發(fā)送>74個時鐘,在卡初始化的時候,CLK時鐘最大不能超過400Khz。典型的TF卡初始化過程下:1、初始化與TF卡連接的硬件條件(MCU的SPI配置,IO口配置);2、上電延時(>74個CLK);3、復位卡(CMD0),進入IDLE狀態(tài);4、發(fā)送CMD8,檢查是否支持2.0協(xié)議;5、根據(jù)不同協(xié)議檢查SD卡(包括:CMD55、CMD41、CMD58等);6、取消片選,發(fā)多8個CLK,結(jié)束初始化。末尾發(fā)送的8個CLK提供TF卡額外的時鐘,完成某些操作,保證運行安全。在完成了初始化之后,即可開始讀寫數(shù)據(jù)。TF卡讀取數(shù)據(jù),通過CMD17來實現(xiàn),具體過程如下:1、發(fā)送CMD17;2、接收卡響應R1;3、接收數(shù)據(jù)起始令牌0XFE;4、接收數(shù)據(jù);5、接收2個字節(jié)的CRC,若不使用CRC,這兩個字節(jié)在讀取后可丟掉。6、禁止片選之后,發(fā)多8個CLK;TF卡的寫與讀數(shù)據(jù)相似,通過CMD24來實現(xiàn),具體過程如下:1、發(fā)送CMD24;2、接收卡響應R1;3、發(fā)送寫數(shù)據(jù)起始令牌0XFE;4、發(fā)送數(shù)據(jù);5、發(fā)送2字節(jié)的偽CRC;6、禁止片選之后,發(fā)多8個CLK;[14]在本課題中,TF卡不僅直接被單片機讀取,還需要能通過讀卡器與計算機連接,這也就意味著TF卡必須被格式化為某種計算機能識別的文件系統(tǒng)格式,如FAT,F(xiàn)AT32等等,這樣的文件系統(tǒng),僅僅靠單片機是無正常識別與操作的,所以需要通過FATFS文件系統(tǒng)掛載,這樣MCU才能順利識別。FATFS是一個完全免費開源的FAT文件系統(tǒng)模塊,專門為小型的嵌入式系統(tǒng)而設計。它完全用標準C語言編寫,所以具有良好的硬件平臺獨立性,只要經(jīng)過簡單修改,就可以移植到。它支持FATl2、FATl6和FAT32,支持多個存儲媒介;有獨立的緩沖區(qū),可以對多個文件進行讀寫操作,并特別對8位單片機和16位單片機做了優(yōu)化。FATFS應用非常廣泛。[13]其層次結(jié)構(gòu)如圖4.4所示:圖STYLEREF1\s4.SEQ圖\*ARABIC\s14FATFS模塊的層次結(jié)構(gòu)最頂層是應用層,用戶無需理會FATFS的內(nèi)部結(jié)構(gòu)和復雜的FAT協(xié)議,只需要調(diào)用FATFS模塊提供給用戶的一系列應用接口函數(shù),如f_open,f_read,f_write和f_close等,就可以像在PC上讀寫文件那樣簡單。中間層FATFS模塊,實現(xiàn)了FAT文件讀寫協(xié)議。FATFS模塊提供的是ff.c和ff.h。除非有必要,用戶一般不用修改,使用時將頭文件直接包含進去即可。移植時需要修改的是FATFS模塊提供的底層接口,它包括存儲媒介讀寫接口和供給文件創(chuàng)建修改時間的實時時鐘。[15]FATFS配置成功之后,MCU即可正常的訪問TF卡上的各個文件,復雜的圖片,字體也都可以順利的讀取了。TFT顯示觸摸模塊工作流程顯示模塊是人機交互的核心,通過顯示模塊的內(nèi)容,用戶可以實時的了解系統(tǒng)運行的狀態(tài)機其他重要信息。而觸摸操作則是在收到信息后最直觀的反饋方式,通過觸摸操作,用戶可以直觀的進行設置,選擇模式。本課題使用了ALIENTEK生產(chǎn)的TFTLCD模塊,該模塊有如下特點:1,2.8寸屏幕,采用16位80并口傳輸。2,320×240的分辨率。3,16位真彩顯示。4,自帶觸摸屏,可以用來作為控制輸入。該模塊引腳如下:CS:TFTLCD片選信號;WR:向TFTLCD寫入數(shù)據(jù);RD:從TFTLCD讀取數(shù)據(jù);D[15:0]:16位雙向數(shù)據(jù)線;RST:硬復位TFTLCD;RS:命令/數(shù)據(jù)標志(0,讀寫命令;1,讀寫數(shù)據(jù))。ALIENTEK的2.8寸TFTLCD模塊,其驅(qū)動芯片為ILI9341,ILI9341液晶控制器自帶顯存,其顯存總大小為172800(240*320*18/8),即18位模式(26萬色)下的顯存量。在16位模式下,ILI9341采用RGB565格式存儲顏色數(shù)據(jù),此時ILI9341的18位數(shù)據(jù)線與MCU的16位數(shù)據(jù)線以及LCDGRAM的對應關系如表4.2所示:表STYLEREF1\s4.SEQ表\*ARABIC\s11ILI9341數(shù)據(jù)線與單片機對應關系9341D17D16D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0MCUD15D14D13D12D11NCD10D9D8D7D6D5D4D3D2D1D0NCGRAMR4R3R2R1R0NCG5G4G3G2G1G0B4B3B2B1B0NCMCU的16位數(shù)據(jù),最低5位代表藍色,中間6位為綠色,最高5位為紅色。數(shù)值越大,表示該顏色越深。參考ILI9341的數(shù)據(jù)手冊。里面列舉了9341芯片的各種指令,常見的如:0XD3,0X36,0X2A,0X2B,0X2C,0X2E等,只要根據(jù)其指令對其進行操作,9341芯片就能正常的驅(qū)動TFT顯示屏了。一般而言,TFT的使用流程如圖4.5所示:圖STYLEREF1\s4.SEQ圖\*ARABIC\s15TFT使用流程任何LCD,使用流程都可以簡單的用以上流程圖表示。其中硬復位和初始化序列,只需要執(zhí)行一次即可。而畫點流程就是:設置坐標,寫GRAM指令,寫入顏色數(shù)據(jù),在LCD上就可以看到對應的點顯示寫入的顏色。讀點流程為:設置坐標,讀GRAM指令,讀取顏色數(shù)據(jù),這樣就可以獲取到對應點的顏色數(shù)據(jù)。在此基礎上,文字圖片的顯示也可以通過循環(huán)的方式,按點一一顯示,最終形成完整的圖片及文字。ALIENTEK的2.8寸TFTLCD模塊自帶的觸摸屏屬于電阻式觸摸屏,電阻式觸摸屏利用壓力感應進行觸點檢測控制,需要直接應力接觸,通過檢測電阻來定位觸摸位置。當手指觸摸屏幕時,兩層導電層在觸摸點位置就有了接觸,電阻發(fā)生變化,在X和Y兩個方向上產(chǎn)生信號,然后送觸摸屏控制器??刂破鱾蓽y到這一接觸并計算出(X,Y)的位置,再根據(jù)獲得的位置模擬鼠標的方式運作。電阻屏需要一個控制器。ALIENTEK的TFTLCD模塊使用的是四線電阻式觸摸屏,控制芯片為XPT2046。與ILI9341芯片一樣,使用這款芯片只需要將其與單片機正確連接,并且能發(fā)送,讀取正確的指令即可。由硬件電路可知,電阻觸摸屏總共有5跟線與STM32連接,分別是T_MOSI、T_MISO、T_SCK、T_CS和T_PEN,前三者通縮SPI總線與單片機進行通信,T_CS則是觸摸使能管腳,而T_PEN則是觸摸按下的標志管腳。程序中,通過判斷坐標的區(qū)域,即可觸發(fā)相應的響應函數(shù),達到觸摸的目的。系統(tǒng)調(diào)試波形分析控制板輸出波形圖STYLEREF1\s5.SEQ圖\*ARABIC\s11控制板輸出波形由圖5.1可知,通過控制板的TIM11管腳可以正確的輸出PWM波形驅(qū)動芯片輸出波形圖STYLEREF1\s5.SEQ圖\*ARABIC\s12驅(qū)動芯片輸出波形如圖5.2可知,控制板輸出的驅(qū)動信號,經(jīng)過驅(qū)動芯片放大為10V的電平,保證占空比,頻率一致。說明MOSFET可以正常開斷。硬件分析控制板圖STYLEREF1\s5.SEQ圖\*ARABIC\s13控制板原理圖如圖5.3所示,控制板原理圖結(jié)構(gòu)清晰,連接正確,功能完善。圖STYLEREF1\s5.SEQ圖\*ARABIC\s14控制板PCB圖(a)控制板正面(b)控制板背面(c)控制板焊接完成圖(d)控制板及各模塊安裝完成圖圖STYLEREF1\s5.SEQ圖\*ARABIC\s15控制板實物圖如圖5.5所示,主控板制作完成,且布局合理,功能正常。主電路圖STYLEREF1\s5.SEQ圖\*ARABIC\s16主電路原理圖圖STYLEREF1\s5.SEQ圖\*ARABIC\s17主電路完成圖圖STYLEREF1\s5.SEQ圖\*ARABIC\s18主電路安裝完成圖如圖5.6,圖5.7,圖5.8所示,主電路焊接完成,安裝預留位置準確。完整系統(tǒng)(a)關機狀態(tài)(a)運行狀態(tài)圖STYLEREF1\s5.SEQ圖\*ARABIC\s19水晶閃電球完整系統(tǒng)如圖5.9所示,水晶閃電球系統(tǒng)結(jié)構(gòu)完整,并能長期穩(wěn)定運行。界面調(diào)試圖STYLEREF1\s5.SEQ圖\*ARABIC\s110初始化顯示界面STYLEREF1\s5.SEQ圖\*ARABIC\s111主菜單界面圖(a)2級亮度(b)4級亮度圖STYLEREF1\s5.SEQ圖\*ARABIC\s112正常亮燈狀態(tài)界面STYLEREF1\s5.SEQ圖\*ARABIC\s113聲控模式界面(a)無聲音(b)聲音較大圖STYLEREF1\s5.SEQ圖\*ARABIC\s114聲控模式實物圖STYLEREF1\s5.SEQ圖\*ARABIC\s115信息顯示界面STYLEREF1\s5.SEQ圖\*ARABIC\s116PWM測試模式主界面(a)PWM測試警告界面(b)PWM測試主界面圖STYLEREF1\s5.SEQ圖\*ARABIC\s117PWM測試界面圖STYLEREF1\s5.SEQ圖\*ARABIC\s118ADC測試界面圖STYLEREF1\s5.SEQ圖\*ARABIC\s119屏幕測試界面圖STYLEREF1\s5.SEQ圖\*ARABIC\s120觸摸測試界面圖STYLEREF1\s5.SEQ圖\*ARABIC\s121觸屏校準界面如圖5.10-5.20所示,本系統(tǒng)交互界面完善,控制邏輯嚴謹。各界面之間切換正常,能很好的滿足人機交互需求。結(jié)論通過上述研究,本課題已經(jīng)實現(xiàn)了以下設計目標:實現(xiàn)了水晶閃電球的正常工作,能實現(xiàn)多級亮度調(diào)節(jié)。實現(xiàn)了水晶閃電球的聲控功能,能根據(jù)聲音大小調(diào)整亮度。實現(xiàn)了輸出電壓的閉環(huán)操作。實現(xiàn)了TFT液晶顯示及觸摸控制。實現(xiàn)了完善的人機交互界面,控制簡單,清晰。在未來,還可以對其進行進一步升級,制作上位機軟件進行實時控制。根據(jù)以上結(jié)論,本課題完成了所有既定目標。致謝持續(xù)幾個月的畢業(yè)設計已經(jīng)接近尾聲了,在這短暫而緊張的幾個月中,我學到了許多東西,我在課題設計和調(diào)試過程中得到了老師、同學的大力支持和幫助。在此我向他們表示深深地感謝。首先,感謝我的指導老師王澤庭老師,王老師在整個設計和調(diào)試過程中給了我許多指導,幫助我解決了很多問題,使我少走了很多彎路。其次,我要感謝我的班導師樊生文老師,樊老師在整個設計過程中給我提出了不少建議,使我能及時找到正確的研究方向。然后,感謝為我的設計提供實驗場所的陳濤老師,鄭勇老師,他們的無私幫助讓我可以專心的可以完成課題。最后,感謝給了我許多幫助的李海思同學,她在硬件設計和軟件結(jié)構(gòu)以及界面規(guī)劃方面都給我提供的幫助。沒有他們的指導和幫助,我的這個畢業(yè)設計很難完成。還有許多老師和同學也對我的設計付出了辛勞,限于篇幅,不能一一列舉,在此由衷的謝謝他們!參考文獻[1]余寧.電光魔球現(xiàn)象探索[EB/OL]./ch/NewsView.asp?ID=15.2008-1-9[2]趙化僑.《等離子體化學與工藝》[M].中國科學技術出版社.1993:165~168[3]蔡祖泉陳大華.《實用霓虹燈技術》[M].華南理工大學出版社.1994:200~202[4]魏欣.基于復雜可編程器件的數(shù)字化高壓電源設計[D].西安電子科技大學.2010:4~7[5]王兆安.《電力電子技術》[M].機械工業(yè)出版社.2009-7-1(5)[6]STMicroelectronics.IRF640Datasheet[DB/OL]./datasheet-pdf/pdf/22397/STMICROELECTRONICS/IRF640.html[7]InternationalRectifier.IR2101Datasheet[DB/OL]./datasheet-pdf/pdf/68056/IRF/IR2101.html[8]NationalSemiconductor.LM2577Datasheet[DB/OL]./datasheet-pdf/pdf/226259/NSC/LM2577.html[9]FairchildSemiconductor.LM7805Datasheet[DB/OL]./datasheet-pdf/pdf/82833/FAIRCHILD/LM7805.html[10]NationalSemiconductor.LM1117Datasheet[DB/OL]./datasheet-pdf/pdf/8597/NSC/LM1117.html[11]STMicroelectronics.STM32F103VCT6XXXDatasheet[DB/OL]./datasheet-pdf/pdf/303561/STMICROELECTRONICS/STM32F103VCT6XXX.html[12]ATMELCorporation.AT24C256Datasheet[DB/OL]./datasheet-pdf/pdf/56065/ATMEL/AT24C256.html[13]張洋.《原子教你玩STM32》[M].北京航空航天大學出版社.2013-4-1:16~20[14]ming1006.MicroSD卡(TF卡)spi模式實現(xiàn)方法[EB/OL]./ming1006/article/details/7281597[15]FatFs-GenericFATFileSystemModule.[EB/OL]/fsw/ff/00index_e.html附錄附錄A:主控板原理圖附錄B:主控板PCB圖附錄C:部分程序源代碼Main.c:#include"ALL.h"externu8mode;externu8ADC_Count;intmain(void){START(); show_menu();while(1) { switch(mode) {case(0):menu_scan();break; case(1): { LIGHT(); PWM_STOP(); PWMIR_STOP(); } break; case(2): { MIC_mode(); PWM_STOP(); PWMIR_STOP(); ADC_Count=0; } break; case(3): { show_test(); show_home(); while(mode==3) { test_scan(); home_scan(); } } break; case(4): { show_id(); show_home(); while(mode==4){ home_scan(); } } break; case(5): { show_menu(); mode=0; } break; case(6): {PWM_TEST();PWM_STOP(); } break; case(7): {ADC_TEST();while(DMA_GetFlagStatus(DMA1_FLAG_TC1==RESET)) ;ADC_SoftwareStartConvCmd(ADC1,DISABLE); ADC_Cmd(ADC1,DISABLE); ADC_DMACmd(ADC1,DISABLE); DMA_Cmd(DMA1_Channel1,DISABLE); } break; case(8): {TFT_TEST(); mode=3; } break; case(9): {Load_Drow_Dialog(BLACK); rtp_test(BLACK); } break; case(10): {LCD_Clear(BLACK); BACK_COLOR=BLACK; TP_Adjust(); TP_Save_Adjdata(); TP_Get_Adjdata();mode=3; }break; } } }Adc.c#include"adc.h"#defineADC1_DR_Address((u32)0x40012400+0x4c)__IOuint16_tADC_ConvertedValue[4];voidADC1_GPIO_Config(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_ADC1,ENABLE); //使能ADC1通道時鐘 RCC_ADCCLKConfig(RCC_PCLK2_Div6);//設置ADC分頻因子672M/6=12,ADC最大時間不能超過14M GPIO_InitStructure.GPIO_Pin=(GPIO_Pin_3|GPIO_Pin_2); GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; //模擬輸入引腳 GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=(GPIO_Pin_0|GPIO_Pin_1); GPIO_Init(GPIOB,&GPIO_InitStructure); //}voidADC2_GPIO_Config(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC2,ENABLE); //使能ADC1通道時鐘 RCC_ADCCLKConfig(RCC_PCLK2_Div6);//設置ADC分頻因子672M/6=12,ADC最大時間不能超過14M GPIO_InitStructure.GPIO_Pin=(GPIO_Pin_4); GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; //模擬輸入引腳 GPIO_Init(GPIOC,&GPIO_InitStructure); }voidADC1_DMA_Config(void){DMA_InitTypeDefDMA_InitStructure; ADC_InitTypeDefADC_InitStructure;RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE); DMA_DeInit(DMA1_Channel1);DMA_InitStructure.DMA_PeripheralBaseAddr=ADC1_DR_Address;//ADC地址DMA_InitStructure.DMA_MemoryBaseAddr=(u32)&ADC_ConvertedValue;//內(nèi)存地址DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;//定義AD外設作為數(shù)據(jù)傳輸?shù)膩碓碊MA_InitStructure.DMA_BufferSize=4;//開辟4個空間DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;//外設地址固定DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;//內(nèi)存地址增加DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;//半字DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;//循環(huán)傳輸DMA_InitStructure.DMA_Priority=DMA_Priority_High;DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;DMA_Init(DMA1_Channel1,&DMA_InitStructure);DMA_Cmd(DMA1_Channel1,ENABLE);//啟動DMAADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//獨立ADC模式ADC_InitStructure.ADC_ScanConvMode=ENABLE;//禁止掃描模式,掃描模式用于多通道采集ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//開啟連續(xù)轉(zhuǎn)換模式,即不停地進行ADC轉(zhuǎn)換ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//不使用外部觸發(fā)轉(zhuǎn)換ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//采集數(shù)據(jù)右對齊ADC_InitStructure.ADC_NbrOfChannel=4;//要轉(zhuǎn)換的通道數(shù)目4ADC_Init(ADC1,&ADC_InitStructure);RCC_ADCCLKConfig(RCC_PCLK2_Div2);/*配置ADC時鐘,為PCLK2的2分頻,即36MHz*/ADC_RegularChannelConfig(ADC1,ADC_Channel_2,1,ADC_SampleTime_239Cycles5); ADC_RegularChannelConfig(ADC1,ADC_Channel_3,2,ADC_SampleTime_239Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_8,3,ADC_SampleTime_239Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_9,4,ADC_SampleTime_239Cycles5);ADC_DMACmd(ADC1,ENABLE);/*EnableADC1DMA*/ADC_Cmd(ADC1,ENABLE);/*EnableADC1*/ADC_ResetCalibration(ADC1);/*復位校準寄存器*/while(ADC_GetResetCalibrationStatus(ADC1));/*等待校準寄存器復位完成*/ADC_StartCalibration(ADC1);/*ADC校準*/while(ADC_GetCalibrationStatus(ADC1));/*等待校準完成*/ADC_SoftwareStartConvCmd(ADC1,ENABLE);}voidADC1_conf(void){ADC_InitTypeDefADC_InitStructure;ADC_InitStructure.ADC_Mode=ADC_Mode_Independent; //ADC工作模式:ADC1和ADC2工作在獨立模式 ADC_InitStructure.ADC_ScanConvMode=DISABLE; //模數(shù)轉(zhuǎn)換工作在單通道模式 ADC_InitStructure.ADC_ContinuousConvMode=DISABLE; //模數(shù)轉(zhuǎn)換工作在單次轉(zhuǎn)換模式 ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; //轉(zhuǎn)換由軟件而不是外部觸發(fā)啟動 ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right; //ADC數(shù)據(jù)右對齊 ADC_InitStructure.ADC_NbrOfChannel=1; //順序進行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目 ADC_Init(ADC1,&ADC_InitStructure); //根據(jù)ADC_InitStruct中指定的參數(shù)初始化外設ADCx的寄存器ADC_Cmd(ADC1,ENABLE); //使能指定的ADC1 ADC_ResetCalibration(ADC1); //使能復位校準 while(ADC_GetResetCalibrationStatus(ADC1)); //等待復位校準結(jié)束 ADC_StartCalibration(ADC1); //開啟AD校準 while(ADC_GetCalibrationStatus(ADC1)); //等待校準結(jié)束ADC_RegularChannelConfig(ADC1,3,1,ADC_SampleTime_239Cycles5);}voidADC2_conf(void){ADC_InitTypeDefADC_InitStructure;ADC_InitStructure.ADC_Mode=ADC_Mode_Independent; //ADC工作模式:ADC1和ADC2工作在獨立模式 ADC_InitStructure.ADC_ScanConvMode=DISABLE; //模數(shù)轉(zhuǎn)換工作在單通道模式 ADC_InitStructure.ADC_ContinuousConvMode=DISABLE; //模數(shù)轉(zhuǎn)換工作在單次轉(zhuǎn)換模式 ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; //轉(zhuǎn)換由軟件而不是外部觸發(fā)啟動 ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right; //ADC數(shù)據(jù)右對齊 ADC_InitStructure.ADC_NbrOfChannel=1; //順序進行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目 ADC_Init(ADC2,&ADC_InitStructure); //根據(jù)ADC_InitStruct中指定的參數(shù)初始化外設ADCx的寄存器ADC_Cmd(ADC2,ENABLE); //使能指定的ADC1 ADC_ResetCalibration(ADC2); //使能復位校準 while(ADC_GetResetCalibrationStatus(ADC2)); //等待復位校準結(jié)束 ADC_StartCalibration(ADC2); //開啟AD校準 while(ADC_GetCalibrationStatus(ADC2));//等待校準結(jié)束ADC_RegularChannelConfig(ADC2,14,1,ADC_SampleTime_71Cycles5);}u16Getvalue(u8cha){return(u16)ADC_ConvertedValue[cha];}PWM.c#include"pwm.h"#include"adc.h"voidTIM1_PWM_Init(u16arr,u16psc){ GPIO_InitTypeDefGPIO_InitStructure; TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure; TIM_OCInitTypeDefTIM_OCInitStructure;/*************時鐘配置*************/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIO外設時鐘使能/************GPIO配置*************//****TIM1CH1引腳配置****/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;//TIM_CH1 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//復用推挽輸出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure);/************定時器基本配置*************/ TIM_TimeBaseStructure.TIM_Period=arr;//設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值 80K TIM_TimeBaseStructure.TIM_Prescaler=psc;//設置用來作為TIMx時鐘頻率除數(shù)的預分頻值不分頻 TIM_TimeBaseStructure.TIM_ClockDivision=0;//設置時鐘分割:TDTS=Tck_tim TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_CenterAligned1;//TIM中央對齊模式 TIM_TimeBaseStructure.TIM_RepetitionCounter=0;//重復寄存器,用于自動更新PWM占空比 TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);//根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時間基數(shù)單位/************PWM輸出配置*************/ TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//選擇定時器模式:TIM脈沖寬度調(diào)制模式2 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//比較輸出使能 //TIM_OCInitStructure.TIM_OutputNState=TIM_OutputNState_Disable;//互補比較輸出使能@@@@@@@@ TIM_OCInitStructure.TIM_Pulse=0;//設置待裝入捕獲比較寄存器的脈沖值 TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//輸出極性:TIM輸出比較極性高 //TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarity_High;//輸出極性:TIM輸出比較極性高@@@@@@@@ TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Reset;//死區(qū)后輸出狀態(tài)@@@@@@@@@//TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Reset;//死區(qū)后互補輸出狀態(tài)@@@@@@@TIM_OC1Init(TIM1,&TIM_OCInitStructure);//根據(jù)TIM_OCInitStruct中指定的參數(shù)初始化外設TIMx}voidPWMIR(void){ NVIC_InitTypeDefNVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//選擇組1 NVIC_InitStructure.NVIC_IRQChannel=TIM1_UP_IRQn;//TIM1中斷 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//先占優(yōu)先級0級 NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//從優(yōu)先級3級 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道被使能 NVIC_Init(&NVIC_InitStructure);//根據(jù)NVIC_InitStruct中指定的參數(shù)初始化外設NVIC寄存器} voidPWMIR_START(void){TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);} voidPWMIR_STOP(void){TIM_ITConfig(TIM1,TIM_IT_Update,DISABLE);}voidPWM_START(void){TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);//使能TIMx在CCR1上的預裝載寄存器TIM_ARRPreloadConfig(TIM1,ENABLE);//使能TIMx在ARR上的預裝載寄存器 TIM_Cmd(TIM1,ENABLE); TIM_CtrlPWMOutputs(TIM1,ENABLE); //PWM輸出使能 LED0=1;}voidPWM_STOP(void){ TIM_CtrlPWMOutputs(TIM1,DISABLE); TIM_Cmd(TIM1,DISABLE); TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Disable);TIM_ARRPreloadCon
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園中班月工作總結(jié)月工作總結(jié)
- 湘教版數(shù)學七年級下冊《1.2.1代入消元法》聽評課記錄
- 甘肅商會墊江戰(zhàn)略合作框架協(xié)議書范本
- 中介臨街商業(yè)商鋪租賃合同范本
- 公有住房承租合同范本
- 滬科版八年級數(shù)學下冊聽評課記錄第20章數(shù)據(jù)的初步分析20.2數(shù)據(jù)的集中趨勢與離散程度第3課時
- 廣州民航職業(yè)技術學院《化學教學案例分析》2023-2024學年第二學期期末試卷
- 新版華東師大版八年級數(shù)學下冊《16.2.1分式的乘除》聽評課記錄5
- 隨州職業(yè)技術學院《公路客運站建筑設計》2023-2024學年第二學期期末試卷
- 海南省2024七年級道德與法治上學期期中學情評估新人教版
- 現(xiàn)代漢語詞匯學精選課件
- PCB行業(yè)安全生產(chǎn)常見隱患及防范措施課件
- 上海音樂學院 樂理試題
- SAP中國客戶名單
- DB32∕T 186-2015 建筑消防設施檢測技術規(guī)程
- 2022年福建泉州中考英語真題【含答案】
- 汽車座椅骨架的焊接夾具畢業(yè)設計說明書(共23頁)
- 露天礦山職業(yè)危害預先危險分析表
- 淺談固定資產(chǎn)的審計
- WZCK-20系列微機直流監(jiān)控裝置使用說明書(v1.02)
- 模糊推理方法
評論
0/150
提交評論