【正文】
//定時器中斷打開 TR1=1。 adc2= AD_1543(0X01)。uint adc2=0。}//全部斷電//void Init_Timer1(void)。}//C相通電,其他相斷電define Coil_D1 {A1=0。}//A相通電,其他相斷電define Coil_B1 {A1=0。}//CD相通電,其他相斷電define Coil_DA1 {A1=1。}//AB相通電,其他相斷電define Coil_BC1 {A1=0。 //////鍵盤引腳定義//define KeyPort P3////步進電機引腳定義//sbit A1=P2^1。sbit abit4 = ab ^ 4。第二天再自動進入新一輪的運轉(zhuǎn)。最大限度的提高太陽跟蹤精度,完美實現(xiàn)適時跟蹤,最大限度提高太陽光能利用率。由于地球的自轉(zhuǎn),相對于某一個固定地點的太陽能光伏發(fā)電系統(tǒng),一年春夏秋冬四季、每天日升日落,太陽的光照角度時時刻刻都在變化,有效的保證太陽能電池板能夠時刻正對太陽,發(fā)電效率才會達到最佳狀態(tài)。 ?? 176。[8]太陽能: 附錄A 英文原文Solar Tracking SystemSolar tracking system is thermal and photovoltaic power generation process, the most optimal use of sunlight, to improve the photoelectric conversion efficiency of the mechanical system and the electronic control unit, prising: a motor (DC, stepper, servo, planetarygear motor, motor plunger ), worm, sensor systems and so on.In the solar photovoltaic applications: Keep solar panels facing the sun at any time, so that at any time the vertical rays of sunlight illuminated solar panels power plant, the use of solar tracking system can significantly improve the power generation efficiency of solar photovoltaic modules.Due to the Earth39。在這里我還要感謝在沈陽理工大學(xué)所有教過我的老師,在大學(xué)這幾年學(xué)習(xí)期間給予了我良好的學(xué)習(xí)環(huán)境與學(xué)習(xí)氛圍,讓我學(xué)習(xí)到豐富的專業(yè)知識和待人處事的方法,提高了我的自學(xué)的能力,分析能力和解決問題的能力。STC89C52是一種低功耗,高性能的8位單品機。對于目前太陽能跟蹤控制領(lǐng)域存在的數(shù)字控制價格昂貴,模擬控制適應(yīng)性差,精度低的問題。 ad43_cs = 1。 for(j = 0。i 2。 for(j = 0。 j++)。8次循環(huán)后,命令字輸入到1543中,同時采集數(shù)據(jù)讀入ab。 }}}} TLC1543采集函數(shù) n為命令字,控制通道,輸出數(shù)據(jù)長度,輸出格式,極性選擇。j++。break。 case 1:Coil_D1。i++。break。 case 2:Coil_B1。若為正轉(zhuǎn),則按ABCD循環(huán)的相序依次導(dǎo)通;若為反轉(zhuǎn),則按DCBA循環(huán)的相序依次導(dǎo)通。break。 }} 按鍵掃描函數(shù) 由于鍵盤按下時,會產(chǎn)生抖動現(xiàn)象,所以要先消抖,這里采用軟件消抖的方法,通過延時10ms后,再次判斷按鍵是否按下,若確實按下,再執(zhí)行相應(yīng)賦鍵值操作;若沒被按下,則為抖動,賦鍵值為0。 總中斷打開,定時器1中斷打開,定時器1開關(guān)打開,定時器1優(yōu)先級設(shè)為最高EA=1。 adc1 = AD_1543(0x00)。在循環(huán)中調(diào)用按鍵掃描函數(shù),并進行判斷。針對性強,去掉一部分圖,此圖還可以擴大些。: 調(diào)整單片機輸出的步進脈沖頻率的方法: A、軟件延時方法 改變延時的時間長度就可以改變輸出脈沖的頻率,但這種方法使 CPU 長時間等待,無法進行其它工作,因此沒有實用價值。:單片機步進電機光敏電阻輸入量控制量輸出量偏差—— 單片機控制系統(tǒng)框圖3 太陽能跟蹤控制器硬件電路設(shè)計 系統(tǒng)組成原理本系統(tǒng)由STC89C52單片機,ULN2003A,光敏電阻,TLC1543,LM358等組成。各種層次往往采用不同結(jié)構(gòu)的計算機。 參數(shù):輸入偏置電流45nA。177。本次設(shè)計選擇LM358運算放大器。【4】電橋可以測量電阻、電容、電感、頻率、壓力、溫度等許多物理量。當(dāng)它受到光的照射時,半導(dǎo)體片(光敏層)內(nèi)就激發(fā)出電子—空穴對,參與導(dǎo)電,使電路中電流增強。轉(zhuǎn)換過程中,CS的下降沿使DATA OUT引腳脫離高阻狀態(tài)并起動一次I/O CLOCK工作過程。工作狀態(tài)由CS使能或禁止,工作時CS必須置低電平。DATA OUT 為A/D換結(jié)束3態(tài)串行輸出端,它與微處理器或外圍的串行口通信,可對數(shù)據(jù)長度和格式靈活編程。此類A/D只需3~4位數(shù)據(jù)線和控制線即可控制,而并行口A/D需8根數(shù)據(jù)線,8~16位地址線,2~3位控制線,因而這類A/D的使用可以簡化電路設(shè)計,省掉了很多常規(guī)電路中的接口器件,提高了設(shè)計的可靠性。達林頓管ULN2003A,該芯片最多可一次驅(qū)動八塊步進電機,當(dāng)然如果只有四線或者六線的也是沒有問題的。步進角:15度。每送一個勵磁信號。其特點是:精確度好 ,消耗電力少,但輸出轉(zhuǎn)矩小,振動較小。失步:電機運行時的步數(shù)不等于理論上的步數(shù),稱為失步。在使用細分驅(qū)動器時,用戶主要靠選擇不同相數(shù)的步進電機來滿足自己步距角要求。 反應(yīng)式步進一般為三相,可實現(xiàn)大轉(zhuǎn)矩輸出,但噪聲和振動都很大。步進電機是一種將電脈沖轉(zhuǎn)換成相應(yīng)角位移或線位移的電磁機械裝置。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。如想禁止ALE的輸出可在SFR8EH地址上置0。 P3口也可作為STC89C52的一些特殊功能口,如下所示: 管腳 備選功能 RXD(串行輸入口) TXD(串行輸出口) /INT0(外部中斷0) /INT1(外部中斷1) T0(記時器0外部輸入) T1(記時器1外部輸入) /WR(外部數(shù)據(jù)存儲器寫選通) /RD(外部數(shù)據(jù)存儲器讀選通) P3口同時為閃爍編程和編程校驗接收一些控制信號。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。: TC89C52 引腳圖STC89C52是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器俗稱單片機。 方案二:采用大規(guī)??删幊踢壿嬈骷?,如FPGA,CPLD但本題屬于控制類,F(xiàn)PGA是英文Field Programmable Gate Array的縮寫,即現(xiàn)場可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。第二步:根據(jù)所需要完成的任務(wù)選取控制芯片,并分析系統(tǒng)的軟硬件需求。極軸式全跟蹤是一種雙軸跟蹤方式。視日運動跟蹤原理:計算機現(xiàn)根據(jù)天文學(xué)中太陽運行規(guī)律的公式計算出一天內(nèi)某時刻太陽高度角和方位角的理論值,然后運行控制程序調(diào)整定日鏡裝置的高度和方位角,完成對太陽能的實時跟蹤。因此太陽能電池板如能配合基于單片機的太陽能跟蹤控制器的設(shè)計,該系統(tǒng)能夠跟蹤太陽的實時位置,精度高,適應(yīng)性強,有望在光伏發(fā)電中使用。 MCU。我國是一個太陽能資源較為豐富的國家,充分利用太陽能資源,有著深遠的能源戰(zhàn)略意義。在設(shè)計中首先完成對該方案的仿真驗證,而后主要通過編輯器,利用C語言編制程序,并完成程序設(shè)計,通過下載器將程序燒寫到單片機中。利用太陽能的關(guān)鍵是提高太陽能電池板采集太陽能的效率,太陽能電池板接受太陽光的直射,由此得到太陽最大光照強度,從而最大限度的采集太陽能。光電跟蹤靈敏度高,但結(jié)構(gòu)設(shè)計較為方便。采用這種跟蹤方式,一天之中只有正午時刻太陽光與光采集面垂直,此時熱量最大;而在早上或下午太陽光線都是斜射。 極軸式跟蹤 太陽能跟蹤控制器概念及原理本設(shè)計以AT89S52單片機作為核心控制元件,通過將兩個光電傳感器采集到的信號經(jīng)過比較電路和A/D,將比較結(jié)果輸出至單片機,由單片機分析處理數(shù)據(jù)并輸出至ALN2003A從而控制五線四相步進電機來實現(xiàn)對太陽位置的跟蹤。該系統(tǒng)具有低成本的優(yōu)點,且具有較好的抗干擾能力,提高了對太陽光能的利用率。表現(xiàn)在:主要控制參數(shù)通過設(shè)置寄存器變量來實現(xiàn),修改方便;成本低廉,性能與相對簡單的太陽能跟蹤裝置系統(tǒng)匹配;數(shù)字化的控制系統(tǒng),可以達到較高的精度,并有可能通過串行通信實現(xiàn)遠程監(jiān)控和模塊化處理;可處理多個中斷,系統(tǒng)運行后可能出現(xiàn)以前沒有考慮到的特殊情況,相應(yīng)的擴充政策十分簡單。STC89C52單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。 P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。直流電機的優(yōu)點是價格便宜,控制容易,但難以精確控制是其一大弱點。下面介紹一下步進電機的基本內(nèi)容。步進電機技術(shù)指標步進電機是一個典型開環(huán)控制系統(tǒng),其原理可由Error! Reference source not :轉(zhuǎn)角脈沖分配器功率分配器輸出軸功率分配器輸入脈沖方向脈沖 步進電機控制系統(tǒng)框圖步進電機的靜態(tài)指標:相數(shù):電機內(nèi)部的線圈組數(shù)。四相八拍運行方式,即AABBBCCCDDDAA。其中全步勵磁方式又有一相勵磁和二相勵磁之分;半步勵磁又稱一二相勵磁。如果以該勵磁方式控制步進電機正轉(zhuǎn)。步進電機AIRPAX簡介本次設(shè)計采用APIRPAX步進電機。但由于晶體三極管的承載電流比較小,驅(qū)動能力受到限制,因為是分立元件,穩(wěn)定性不敢保證,且體積比較大。 ULN2003A 內(nèi)部邏輯圖 A/D轉(zhuǎn)換方案選擇方案一:并行輸出A/D轉(zhuǎn)換器,如ADC0809。 TLC1543為20腳DIP裝的CMOS 10位開關(guān)電容逐次A/D逼近模數(shù)轉(zhuǎn)換器,引腳排列如圖1 所示。S轉(zhuǎn)換時間),高精度(10分辨率,最大177。I/O CLOCK從CPU 接收10時鐘長度的時鐘序列。技術(shù)指標少介紹或不介紹?;诒敬卧O(shè)計的要求,我選用CDS光敏電阻GL3537,其暗阻是10K。本次設(shè)計主要是應(yīng)用惠斯通電橋?qū)㈦娮枳兓D(zhuǎn)化成電壓變化。直流電壓增益高(約100dB) 。共模輸入電壓范圍寬,包括接地。: LM358管腳圖 單片機控制系統(tǒng)方案單片機在控制過程應(yīng)用的特點是以控制理論為基礎(chǔ)的系統(tǒng)自動化控制,所以一般有較明確的系統(tǒng)組成結(jié)構(gòu),有嚴謹?shù)臄?shù)學(xué)算法和較復(fù)雜的響應(yīng)過程,這主要是因為在過程控制中對速度,時間,精度有嚴格的要求,特別是對過渡過程要求是十分嚴格的。航天航空,軍事裝置,航海,交通設(shè)備中,單片機的應(yīng)用也越來越廣泛。: A/D采集電路原理圖單片機軟件編程可以使復(fù)雜的控制過程實現(xiàn)自動控制和精確控制,避免了失步、振蕩等對控制精度的影響;用軟件代替環(huán)形分配器,通過對單片機的設(shè)定,用同一種電路實現(xiàn)了多相步進電機的控制和驅(qū)動,大大提高了接口電路的靈活性和通用性;單片機的強大功能使顯示電路、鍵盤電路、復(fù)位電路等外圍電路有機的組合,大大提高系統(tǒng)的交互性。升速時,使脈沖頻率逐漸升高,降速時則相反。 uint adc2=0。 StopFlag=1。 }} 定時器1中斷初始化函數(shù)void Init_Timer1(void){使用模式1,16位定時器,使用|符號可以在使用多個定時器時不受影響 TMOD |= 0x10。void DelayUs2x(unsigned char t){ while(t)。 switch(keyvalue) { case 0xfe:return 1。 TH1=0。 case 1:Coil_AB1。break。i++。 } } else //反轉(zhuǎn) { switch(j) { case 0:Coil_DA1。break。j++。 case 8:j=0。 clk43 = 0。 ab = n 4。 abit