找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5538|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機太陽能充電器設(shè)計論文下載

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:343853 發(fā)表于 2018-6-3 10:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
課題名稱 基于單片機的太陽能充電器的設(shè)計
目錄

摘 要

Abstract

目錄

1 緒論

1.1 本課題研究背景及現(xiàn)狀

1.2 課題設(shè)計思想

1.3 論文結(jié)構(gòu)

2 基于單片機的太陽能充電器系統(tǒng)總體方案設(shè)計

2.1 設(shè)計方案一

2.2 設(shè)計方案二

2.3 基于單片機的太陽能充電器的設(shè)計的總體設(shè)計方案

3 基于單片機的太陽能充電器系統(tǒng)的硬件設(shè)計

3.1 太陽能電池板的選用

3.2 LM7805 穩(wěn)壓電路

3.3 充電主電路的設(shè)計

3.4 信號采集處理電路

3.6 單片機 AT89C51 介紹

3.7 單片機電路

3.7.1 單片機復(fù)位電路

3.7.2 單片機時鐘電路

3.7.3 單片機 A/D 轉(zhuǎn)換電路

3.7.4 按鍵電路

3.7.5 數(shù)碼管顯示電路

3.8 鋰電池充電原理

4 基于單片機的太陽能充電器系統(tǒng)的軟件設(shè)計

4.1 設(shè)計思想

4.2 基于單片機的太陽能充電器系統(tǒng)的整體程序設(shè)計

4.3 基于單片機的太陽能充電器系統(tǒng)的子程序的設(shè)計

4.3.1 電路啟動初始化

4.3.2 按鍵采集程序

4.3.3 數(shù)據(jù)采集及模數(shù)轉(zhuǎn)換程序

4.3.4 數(shù)碼管顯示子程序

4.3.5 充電子程序的設(shè)計

4.3.6 電源子程序的設(shè)計

5 仿真與調(diào)試

5.1 充電電路仿真

5.2 電流采樣處理電路仿真

5.3 系統(tǒng)做直流電源使用時電路仿真圖

5.4 系統(tǒng)做充電器使用時仿真結(jié)果

總結(jié)與展望

參考文獻(xiàn)

附錄A 整體電路圖

附錄B 整體程序

致謝



1 緒論
1.1 本課題研究背景及現(xiàn)狀

當(dāng)代社會隨著一些不可再生資源如煤炭,石油等日益減少,使得各國社會經(jīng)濟越來越受能源問題的約制,因此許多國家開始逐漸的實行“陽光計劃”,開發(fā)潔凈的能源如太陽能,用以成為本國經(jīng)濟發(fā)展的新動力。

首先讓我們想到的是太陽能電池,因為它不會消耗水,燃料等物質(zhì),并且不會釋放任何對環(huán)境有污染的氣體,是直接通過太陽光與材料的相互作用釋放出電能,這種無污染資源對環(huán)境的保護(hù)有著相當(dāng)重要的意義[1]。由于無公害的作用,目前世界太陽能電池產(chǎn)業(yè)已經(jīng)出具規(guī)模,1995 年到 2004 年的十年內(nèi)平均年增長率達(dá)到 30%以上。隨著新型太陽能電池的涌現(xiàn),以及傳統(tǒng)硅電池的不斷革新,新的概念已經(jīng)開始在太陽能電池技術(shù)中顯現(xiàn),從某種意義上講,預(yù)示著太陽能電池技術(shù)的發(fā)展趨勢[2]。世界各國對光伏發(fā)電也越來越重視,目前全世界已超過一百個國家使用光伏發(fā)電系統(tǒng),其中以歐洲為代表的發(fā)達(dá)國家為主,占總市場的 80.1%,早在 09 年的時候,世界各國總的光伏新加裝機容量接近 800 萬千瓦,截至當(dāng)年低,世界光伏裝機容量總共接近 2700 萬千瓦[3]。隨著并網(wǎng)光伏發(fā)電市場的迅速發(fā)展,讓它受到了世界各地的關(guān)注。

目前,太陽能電池的應(yīng)用已經(jīng)逐漸廣泛得到推廣,眾所周知,沙漠地區(qū)由于氣溫特別高,因此最具有大規(guī)模開發(fā)太陽能的潛力,這使得沙漠等偏遠(yuǎn)地區(qū)對其的使用更加方便,并且能減低甚至節(jié)省昂貴的輸電線路,從長遠(yuǎn)發(fā)展?fàn)顩r來看,隨著改善太陽能電池制造技術(shù)和新的光 - 電轉(zhuǎn)換裝置發(fā)明,國家環(huán)保和清潔能源,光伏發(fā)電系統(tǒng)和太陽能發(fā)電的巨大需求恢復(fù)將繼續(xù)利用太陽輻射能比較實用方法,這可以為人類以后能使用太陽能提供了廣闊的開辟前景[4]。

當(dāng)代社會太陽能手機充電器得到了一定的使用,它具有運用方便,環(huán)保,節(jié)能,

格外使用于應(yīng)急場合,高效率充電,性價比較高,讓大家無論身處何處,都不會受到手機沒電的困擾[5]。借此太陽能手機充電器的眾多優(yōu)點,因此提出本課題。

1.2 課題設(shè)計思想

基于單片機的太陽能充電器的設(shè)計是本次探導(dǎo)的課題。首先,由于太陽能電池板的電壓會隨太陽光的強度波動,強烈的太陽光的太陽能電池板的電壓是高的數(shù),當(dāng)太陽光弱的強度,所述太陽能電池板的輸出電壓低時,從太陽能電池板的輸出到穩(wěn)定的電壓[6]。本設(shè)計采用了穩(wěn)壓器 LM7805 , LM7805 輸出端口可以輸出穩(wěn)定的5V 電壓,因為電力可以用于單芯片和其它芯片,其次,作為下一個電源電壓轉(zhuǎn)換電路。第二,考慮到電池的充電過程的電壓要求各不相同,不能簡單穩(wěn)定的直流輸出,因此提出了利用DC / DC轉(zhuǎn)換器電路的,通過控制關(guān)斷時間的占空比,以調(diào)節(jié)輸出電壓。 SCM 是控制中心,在控制信號產(chǎn)生電路是由充電過程的一個外部狀態(tài)產(chǎn)生的,外部充電電壓的比較信號和充電電流與理想充電過程中,占空比調(diào)節(jié)。單個微控制器設(shè)計用于該目的,所述電壓檢測電路和一個電流檢測電路,并且為了方便用戶知道系統(tǒng)的狀態(tài),設(shè)計設(shè)置在顯示模塊和指標(biāo)。

1.3 論文結(jié)構(gòu)

本論文第一部分介紹了當(dāng)前的形勢和太陽能電池和太陽能光伏發(fā)電系統(tǒng),本研究的背景,并提出了設(shè)計思路的發(fā)展前景;第二部分論述整個系統(tǒng)的設(shè)計方案;第三部分介紹了系統(tǒng)的硬件電路設(shè)計;第四部分進(jìn)行了系統(tǒng)軟件設(shè)計;第五部分進(jìn)行了系統(tǒng)仿真分析;第六部分分析了該設(shè)計的成果和前景。

2 基于單片機的太陽能充電器系統(tǒng)總體方案設(shè)計2.1 設(shè)計方案一

該程序使用的 DC / DC 轉(zhuǎn)換電路,將太陽能電池板輸出的電壓變換為需要的電壓值給手機電池充電,同時單片機可以控制電路變換,還可采用按鍵設(shè)定某些值,有顯示部分,可以設(shè)定為顯示電路狀態(tài)?梢詮脑搱D中的框圖中可以看出,該程序能夠控制 DC / DC 變換器電路,顯示模塊,但該程序是沒有實時檢測的外部電路,而不是用 DC / DC 實時控制根據(jù)外部電路的條件轉(zhuǎn)換電路。

2.2 設(shè)計方案二

借于方案一存在的缺點,所以在此提出第二種方案,方案二方框圖如下圖 2.2。


如從圖2可以看出,以彌補設(shè)計用于檢測電路的狀態(tài)的方案的缺點,并通過模擬轉(zhuǎn)換到數(shù)字的轉(zhuǎn)換模塊的信號到微控制器。 PWM 控制芯片微控制器可以產(chǎn)生施加 PWM波轉(zhuǎn)換電路的控制主要模塊和顯示模塊,但此次方案是將生成 PWM 部分用芯片替換,這使得電路復(fù)雜硬件部分的設(shè)計,它是更好地使用軟件允許硬件電路簡單,而且還能充分利用單片機的功能。

2.3 基于單片機的太陽能充電器的設(shè)計的總體設(shè)計方案

綜合以上兩種方案提出本次設(shè)計的整體設(shè)計框圖如下圖 2.3 所示。


圖 2.3 整體設(shè)計框圖

相對于前兩種方案,此整體方案顯示的優(yōu)點,不僅能對充電電路進(jìn)行檢測,單片機還可以根據(jù)充電電路的關(guān)鍵電路的信號處理后的分析來檢測的情況進(jìn)行控制可以選擇系統(tǒng)可以實現(xiàn)功能。顯示電路可以顯示用于實現(xiàn)本方案的電路中,PWM控制信號的工作狀態(tài),從而使硬件電路非常簡單,節(jié)省資源,提高系統(tǒng)的性能。

3 基于單片機的太陽能充電器系統(tǒng)的硬件設(shè)計
3.1 太陽能電池板的選用

太陽能電池板是通過吸收太陽光,將太陽輻射能通過光電效應(yīng)或者光化學(xué)效應(yīng)直接或間接轉(zhuǎn)換成電能的裝置,大部分太陽能電池板的主要材料為“硅”,但因制作成本很大,以致于它還不能被大量廣泛和普遍地使用。硅太陽能電池分為晶體硅電池板, 非晶硅電池板等幾種。單晶硅太陽能電池的光電轉(zhuǎn)換效率為 15%左右,最高通?梢赃_(dá)到 24%,它是所有種類的太陽能電池中光電轉(zhuǎn)換效率最高的,但制作成本很大,以致于它還不能被普遍地使用,因為單晶硅通常會用鋼化玻璃和防水樹脂包裝起來,所以會十分耐用,通常能用十幾年,最長可以用 25年。多晶硅太陽電池的制作過程與單晶的差不多,可相對而言起光電轉(zhuǎn)換效率要比單晶降低很多,其效率大概在 12% 左右 (其中世界上最高的多晶硅轉(zhuǎn)換效率為 14.8%)[7]。但如果我們從制作費用上來講,多晶硅的由于制造簡單,節(jié)能節(jié)電,因此其生產(chǎn)費用就會降低不少,從而得到了一定的發(fā)展。另外,其使用年限沒有單晶硅太陽能電池那么長。如果從性價比來說,自然是單晶硅太陽能電池還略好。接下來我們說下非晶硅太陽電池,它是 1976 年出現(xiàn)的新型薄膜式太陽電池,其制造過程得到了很多簡化,對硅材料的使用很少,電耗也更低,它突出的優(yōu)點是在很多情況下都能發(fā)電包括弱光時候。但它也有一定的問題,就是光電轉(zhuǎn)換效率相對而言偏低,就算國際上的先進(jìn)水平也只大約在10%,不夠穩(wěn)定,時間越久,其轉(zhuǎn)換效率會衰減。

根據(jù)所需要的不同數(shù)目的太陽能電池,其轉(zhuǎn)換效率是通過光,溫度和結(jié)晶型太陽能電池的制造工藝和其他因素的影響,2010 年中國平均效率接近為 18%,一般的太陽能電池電壓有很多種,其主要用于太陽能發(fā)電。

太陽能電池板的太陽能發(fā)電系統(tǒng)是其工作的基礎(chǔ),是充電器的第一部分,其功能是將太陽光轉(zhuǎn)為電能,如今更多種類型的便攜式數(shù)字設(shè)備,電壓和電流范圍所需的輸入功率較大的器件,面積較大,必須使用太陽能電池板,這給了攜帶不便。因此,模塊化設(shè)計的組合,可根據(jù)不同的負(fù)載充電需求,太陽能電池板組合起來以實現(xiàn)一組光伏電池在某個期望的輸出功率和輸出電壓。本文通過一些常用的小功率設(shè)備例如手機,來講解太陽能充電器設(shè)計的過程。

3.2 LM7805 穩(wěn)壓電路

由于太陽能電池板的電壓會隨太陽光的強度波動,強烈的太陽光會使太陽能電池板的電壓變高,當(dāng)太陽光強度變?nèi)鯐r,自然會使電池板輸出電壓變低。為了獲得到穩(wěn)定的輸出,本設(shè)計應(yīng)用穩(wěn)壓管 LM7805,其輸出口能輸出穩(wěn)定的所需要電壓(5V),以便能保持穩(wěn)定的輸出電壓。典型 LM7805 的應(yīng)用電路圖如圖 3.1 所示。


圖中 C4、C7 的是用于清除因長期連接時由于電感效應(yīng)產(chǎn)生的自激振蕩,降低了紋波電壓,在其輸出端接上電容 C6、C5 的作用是清除電路高頻產(chǎn)生的噪聲,以便提高所用負(fù)載的瞬態(tài)響應(yīng)。一般來說電容的耐壓性都會比電源輸入、輸出電壓要強。此外,在穩(wěn)壓器輸入、輸出端之間加上二極管,可以避免對穩(wěn)壓器的破壞,從而實現(xiàn)對 LM7805 的保護(hù)。

LM7805 輸入電壓在 7V 至 37V 之間,其最大工作電流可達(dá) 1.5A,且擁有電路精簡,電流輸出高,運行工作穩(wěn)定,即使電壓不穩(wěn)定,也能使太陽能電池?fù)碛胁蛔兊妮敵鲭妷海?V),最后能讓單片機控制的電路正常穩(wěn)定的運行,并且性價比高,不需要消耗多余的材料。

3.3 充電主電路的設(shè)計

充電主電路圖如圖 3.2 所示。


圖 3.2 電池充電電路圖

DC/DC 變換是將直流電能(DC)轉(zhuǎn)換成另一種固定電壓或電壓可調(diào)的直流電能,又可稱成直流斬波[8]。若其輸出電壓較輸入之電源電壓低,則稱為降壓式(Buck ) 直流斬波器即頻率調(diào)制(1)Buck 電路,若其輸出電壓較輸入之電源電壓高,則稱為升壓式(Boost)直流斬波器。主電路核心由圖可以看出,主要由三部分組成即電感 L1,三極管區(qū)和續(xù)流二極管 D1,其也就形成了一個完整的 BUCK 降壓DC/DC 轉(zhuǎn)換電路;上圖 Q2是具有將 PWM 信號打開變大,從而到達(dá)驅(qū)動 Q1開關(guān)管的功能。

3.4 信號采集處理電路

為了使鋰電池能完成安全充電,本設(shè)計的電流取樣處理電路圖如下圖 3.3 所示


電池電壓與單片機 A/D 接口相連,通過 A/D 轉(zhuǎn)換和微控制器即單片機,以獲得測量的電壓值得到計算處理。此次充電電流通過0.1Ω的取樣電阻,產(chǎn)生的電壓再使用 LM358,將電流取樣電壓放大相應(yīng)的倍數(shù)后輸?shù)絾纹瑱C A/D 接口進(jìn)行采集。電壓檢測輸出電壓直接進(jìn)行模數(shù)轉(zhuǎn)換之后被發(fā)送到 A/D 輸入接口的單片機進(jìn)行處理。

3.5 單片機選型

單片機型號眾多,但大家熟悉了解的就那么幾種類型。我們在學(xué)校接觸到的也就是 C51 系列,C51 是 51 單片機 C 語言程序設(shè)計的簡稱,由于接觸到的單片機以型號為 AT 開頭的為多,所以選用了型號是 AT89C51 為此次設(shè)計的單片機。

3.6 單片機 AT89C51 介紹3.7.3 單片機 A/D 轉(zhuǎn)換電路

ADC0809 是 8 位的采樣分辨率,以模擬數(shù)字轉(zhuǎn)換的逐次逼近原理。ADC0809 由一個 8 通道模擬開關(guān),地址鎖存器,解碼器, A/D轉(zhuǎn)換器。內(nèi)部有一個 8 通道多路復(fù)用器,它能根據(jù)信號的地址鎖存譯碼后,門控 8 模擬輸入信號的 A/D 轉(zhuǎn)換。多路開關(guān)可選通 8 個模擬通道,允許 8 路模擬量分時輸入,共用 A/D 轉(zhuǎn)換器轉(zhuǎn)換。數(shù)字鎖存器的 A/D 轉(zhuǎn)換完成三態(tài)輸出鎖存器,當(dāng) OE 端為高電平,可以從三態(tài)輸出鎖存器的數(shù)據(jù)轉(zhuǎn)換。A/D 轉(zhuǎn)換的數(shù)據(jù)要發(fā)送數(shù)據(jù)后,應(yīng)該傳給單片機進(jìn)行處理。關(guān)鍵的問題是如何確定數(shù)據(jù)的 A/D 轉(zhuǎn)換完成轉(zhuǎn)移,因為只有確認(rèn)完成后,可以發(fā)送。A/D 轉(zhuǎn)換電路圖如圖 3.7 所示

ADC0809 的引腳功能及作用

IN0~I(xiàn)N7:8 路模擬量輸入端。

2-1~2-8:8 位數(shù)字量輸出端。

ADDA、ADDB、ADDC:3 位地址輸入線,用于選通 8 路模擬輸入中的一

路。

ALE:地址鎖存允許信號,輸入端,高電平有效。

START: A/D 轉(zhuǎn)換啟動脈沖輸入端,輸入一個正脈沖(至少 100ns 寬)使其啟動(脈沖上升沿使 0809 復(fù)位,下降沿啟動 A/D 轉(zhuǎn)換)。

EOC: A/D 轉(zhuǎn)換結(jié)束信號,輸出端,當(dāng) A/D 轉(zhuǎn)換結(jié)束時,此端輸出一個高電平(轉(zhuǎn)換期間一直為低電平)。

OE:數(shù)據(jù)輸出允許信號,輸入端,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。

CLK:時鐘脈沖輸入端。要求時鐘頻率不高于 640KHz。

REF(+)、REF(-):基準(zhǔn)電壓。

Vcc:電源(+5V)。

GND:接地。

3.7.4 按鍵電路

按照鍵盤與單片機的連接方式分為獨立式鍵盤和矩陣式鍵盤[11]。獨立式鍵盤相互獨立,每個按鍵占用一根 I/O 口線,每根 I/O 口線上的按鍵工作狀態(tài)對其他按鍵的工作狀態(tài)不會產(chǎn)生不好作用。這種按鍵軟件程序簡單,但占用 I/O 口線較多(一根口線只能接一個鍵),適用于鍵盤應(yīng)用數(shù)量較少的系統(tǒng)中。矩陣式鍵盤又稱行列式鍵盤,與獨立式鍵盤對比,單片機口線資源利用率提高了一倍。

按鍵接線圖如圖 3.8 所示。


圖 3.8 按鍵電路圖

鍵盤抖動的時間一般為 5~10ms,抖動現(xiàn)象會引起 CPU 對一次鍵操作進(jìn)行多

次處理,從而可能產(chǎn)生錯誤,因而必須設(shè)法消除抖動的不良后果。通過去抖動處理,可以得到按鍵閉合與斷開的穩(wěn)定狀態(tài)。為了準(zhǔn)確判斷閉合鍵的位置,要對每個按鍵進(jìn)行編碼。根據(jù)矩陣式鍵盤的結(jié)構(gòu),采用行掃描的鍵位識別方法。使某條列線為低電平,如果這條列線上沒有閉合鍵,則各行線的狀態(tài)都為高電平;如果列線上有鍵閉合,則相應(yīng)的那條行線即變?yōu)榈碗娖。于是就可以根?jù)行線號與列線號計算出閉合鍵的鍵碼。掃描時由第一列開始,即由 PA 口先輸出 0FEH,然后由 PC 口輸入行線狀態(tài),判斷哪一行有鍵閉合,若無鍵閉合,再輸出 0FDH 檢測下一列各行鍵閉合狀態(tài),由此一直掃描下去。

在這個設(shè)計中,按鍵的數(shù)量設(shè)置為3,它們中的一個作為一個復(fù)位按鈕;另一個作為電壓按鍵,這樣的設(shè)計提供3V,3.5V,4.0V,4.5V為周期的四個電壓值,可以 “電壓選擇”鍵選擇一個電壓輸出;另一個開始充電,裝上一個電池為電池充電,當(dāng)按下“開始充電”按鈕,系統(tǒng)開始為鋰電池充電。因此,使用一個獨立的密鑰的方法,它可以減少編程的難度。

3.7.5 數(shù)碼管顯示電路

LED 數(shù)碼管組成的多個發(fā)光二極管打包在一起,以形成“8”字狀的裝置中,連接導(dǎo)線已在內(nèi)部做好,只要能導(dǎo)致它們導(dǎo)出各自的筆劃,公共電極。

數(shù)碼管顯示電路圖如圖 3.9 所示



本設(shè)計使用四位 LED 數(shù)碼管數(shù)碼管段加小數(shù)點為 7 或 8 個數(shù)碼管,數(shù)碼管有兩種陰陽,本設(shè)計采用共陰極數(shù)碼管,8 段 LED 陰極接地連接在一起,陽極當(dāng)某一高電平時,二極管被點亮而發(fā)光,設(shè)計時允許數(shù)碼管陽極的某一組合被設(shè)置高。

3.8 鋰電池充電原理

鋰電池充電的工作原理就是指其充放電原理。充電時鋰離子由正極向負(fù)極運動而嵌入石墨層中。放電時,鋰離子從石墨晶體內(nèi)負(fù)極表面脫離移向正極。所以,在該電池充放電過程中鋰總是以鋰離子形態(tài)出現(xiàn),而不是以金屬鋰的形態(tài)出現(xiàn)。一般而言電池容量指的就是放電容量?梢钥吹剑囯姵卦诔浞烹姷倪^程中,鋰離子是存在于正極 → 負(fù)極 → 正極的運動狀態(tài)。如果我們把鋰電池形象地比喻為一把搖椅,搖椅的兩端為電池的兩極,而鋰離子就象優(yōu)秀的運動健將,在搖椅的兩端來回奔跑。

鋰蓄電池的充電特性曲線圖如圖 3.10 所示:

圖 3.10 鋰電池充電特性曲線圖

為保證安全充電,對鋰離子電池充電要求首先是在充電時保持電流不變,電池電壓會在充電過程中漸漸升高,當(dāng)電池端電壓達(dá)到4.2V(4.1V),會改變充電狀態(tài),即變化為電壓不變的恒壓充電。電流會依照電芯的飽和程度,隨著充電過程的漸漸降低,當(dāng)降低到0.01CA 時,認(rèn)為充電終止。大家注意,其中 C 是以電池標(biāo)稱容量對照電流的一種表示方法,如電池是 1000mAh 的容量,1C 就是充電電流 1000mA,注意是mA而不是mAh,0.01CA 就是 10mA。當(dāng)然,規(guī)范的表示方式是 0.01C5A。

4 基于單片機的太陽能充電器系統(tǒng)的軟件設(shè)計4.1 設(shè)計思想

首先主程序由初始化段和循環(huán)主體段兩部分組成,在執(zhí)行循環(huán)體時,需要一個個的調(diào)用所需的任務(wù)模塊,不會直接去執(zhí)行程序,其中每一個任務(wù)為一個子函數(shù),這種機制也叫稱為輪詢機制。舉個例子說明:就是當(dāng)一個正在被主程序執(zhí)行的子函數(shù),它會自動確認(rèn)其執(zhí)行條件有無可行性,如果可以就執(zhí)行,反之,就會返回。按鍵處理是以 10ms 為周期的選擇一次。PWM 的控制調(diào)節(jié)不能過快,最好以 200ms 為周期,如果太快,會影響到數(shù)碼管刷屏,A/D 采樣速度也是一樣。

子程序主要由 4 部分組成,包括初始化程序,PWM 波程序,按鍵采集程序,信號采集與轉(zhuǎn)換程序;如果從系統(tǒng)表現(xiàn)出的功能來看,又可以分成充電子程序、電源子程序,這兩程序都會用到子程序的 4 個程序。

本次設(shè)計使用的 PWM 波是可以掌控開關(guān)管的占空比,它的生成是運用了輸出在低電平和高電平的轉(zhuǎn)換、延時。即當(dāng)輸出為低電平時,將輸出信號放大驅(qū)動開關(guān)管斷開,反之,如果其為高電平時,開關(guān)管則會打開。開關(guān)管的占空比是通過低電平和高電平的時間的比值(即PWM 波的占空比)來控制。

本設(shè)計單片機采用 AT89C51 芯片,由于其內(nèi)部沒有 AD 轉(zhuǎn)換模塊,單片機需外接轉(zhuǎn)換模塊,本設(shè)計采用 ADC0809,模擬信號輸入有兩路,一路是電壓信號,一路是電流信號。ADC0809 在對多路輸入的模擬量進(jìn)行模數(shù)轉(zhuǎn)換時采用分時復(fù)用的方法,即 AD 轉(zhuǎn)換器對兩路信號輪換采集轉(zhuǎn)換。輪換周期根據(jù)模數(shù)轉(zhuǎn)換時間和控制的情況設(shè)定。

4.2 基于單片機的太陽能充電器系統(tǒng)的整體程序設(shè)計

本設(shè)計由單片機程序控制來實現(xiàn)整體工作,其工作過程主要為:電路啟動初始化,

電路功能的選擇,輸出選擇及確定輸出,單片機集合計算輸出 PWM 信號,定時采集數(shù)據(jù)及處理調(diào)節(jié) PWM 信號占空比等,程序整體框架圖如下圖 4.1 所示。


圖 4.1 程序整體框架流程圖

4.3 基于單片機的太陽能充電器系統(tǒng)的子程序的設(shè)計4.3.1 電路啟動初始化

初始化設(shè)置初始運行環(huán)境為單片機運行,主要完成以下任務(wù):清理片內(nèi) RAM,

每一個微控制器上電,上電復(fù)位將導(dǎo)致單片機操作。在復(fù)位操作完成后,單芯片寄存器將被設(shè)置為不同的值,該值的一個相當(dāng)大的部分是未知的。在微控制器的復(fù)位完成這些未知的值,正式工作后,會產(chǎn)生不能讓程序員掌握的后果,甚至?xí)䲟p壞系統(tǒng)。因此,微控制器運行后,先設(shè)置為 0,這樣的初始參數(shù)設(shè)置,方便編程人員掌握,以方便系統(tǒng)的工作。設(shè)置系統(tǒng)運行所需的參數(shù),設(shè)置定時器和中斷設(shè)置。初始化程序流程圖如下圖 4.2 所示。


圖 4.2 初始化程序流程圖

4.3.2 按鍵采集程序

鍵盤子程序用于檢測開關(guān),是否在有效的開關(guān)狀態(tài)來決定是否啟動系統(tǒng)運行。讀線、讀取、連接到該端口,它的值存儲處理后確定相關(guān)的緩存?赐甓丝谠谄渲凶隽艘欢ǖ难舆t,以排除引起的誤動作鍵晃動。按鍵子程序結(jié)構(gòu)流程圖如圖 4.3 所示。


圖 4.3 按鍵子程序結(jié)構(gòu)流程圖

4.3.3 數(shù)據(jù)采集及模數(shù)轉(zhuǎn)換程序

數(shù)據(jù)收集主要是由單片機控制 ADC0809 來完成,該方案分為數(shù)據(jù)初始化,發(fā)送一個命令到開始轉(zhuǎn)換,等待轉(zhuǎn)換結(jié)束,接收數(shù)據(jù),處理且存儲在緩存中,程序流程如圖 4.4 所示。


圖 4.4 數(shù)據(jù)采集子程序結(jié)構(gòu)流程圖

4.3.4 數(shù)碼管顯示子程序

開機時,先讓數(shù)碼管初始化,通過串口為“0”字形碼輸出使數(shù)碼管顯示“O”。然后來確認(rèn)按鍵是否被按下,如果沒有鍵被按下繼續(xù)確認(rèn)。

顯示子程序時要先初始化串口,以致串口工作會顯示在方式 0,以便讀取顯示緩沖區(qū)的數(shù)據(jù)(其用來存儲數(shù)據(jù)也就是將被顯示出來的數(shù)據(jù)),然后找到通過字形碼查表相應(yīng)的方式,再將字形碼寫入串口寄存器 SBUF 通過串口方式 0 發(fā)送出去顯示。子程序是如何顯示在緩沖區(qū)中的數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的字形碼呢?具體方法是,從小型字形碼到每一位十六進(jìn)制數(shù)到大的順序固定區(qū)域,以便存儲在表單中顯示出來碼表的記憶。當(dāng)要顯示的字符,該表的起始地址到數(shù)據(jù)指針 DPTR 寄存器為基地,在顯示緩沖區(qū)中的數(shù)據(jù)作為偏移到索引寄存器 A,查表“MOVCA,@ A + DPTR“,在取出相應(yīng)數(shù)字的字形碼其是通過累加器 A 得到的結(jié)果。

4.3.5 充電子程序的設(shè)計

充電過程分兩階段進(jìn)行,第一階段為預(yù)充電,充電電流以0.01CA的小電流進(jìn)行充電;第二階段,當(dāng)充電電壓達(dá)到3V時轉(zhuǎn)入第二階段(一般認(rèn)為三分鐘后電池電壓大于 3V),以0.5CA的電流進(jìn)行恒流充電方式,。電流降到小于0.01CA時,表明電池已充到額定容量,如果繼續(xù)充下去,充電電流會慢慢降低到零,電池完全充滿[4]。充電過程中,“充電”指示燈亮;充滿時,“充飽”指示燈亮,“充電”指示燈滅,通過按鍵設(shè)置可控制充電時間。充電子程序流程圖如圖 4. 5 所示。


4.3.6 電源子程序的設(shè)計

與傳統(tǒng)的手機充電器相比,本次設(shè)計的太陽能手機充電器最大的優(yōu)點是不僅能夠為電池直接充電,也可用作一般直流電源。該系統(tǒng)存在并且可以有3V,3.5V,4V,

4.5V 四種電壓輸出,這可以用來選擇一個按鈕作為輸出電壓。直流輸出可直接給手機充電,或作為電源等小型電子設(shè)備,如 MP4。輸出電壓可以是一個數(shù)字顯示,以及完善一個過流保護(hù)作用,以確保能安全使用的電子產(chǎn)品。

電源程序流程圖如圖 4.6 所示。


圖 4.6 電源子程序結(jié)構(gòu)流程圖

5 仿真與調(diào)試5.1 充電電路仿真

總所周知 buck 斬波電路中調(diào)整輸出電壓值的變化是由控制開關(guān)管開通與關(guān)斷時間控制, multisim 仿真電路如下圖 5.1 所示

圖 5.1 電壓檢測仿真圖

5.2 電流采樣處理電路仿真

上面提出將電流采樣電壓是采用 LM358 電路讓其放大到相應(yīng)倍后再輸送到單片機的 A/D 接口,輸入的電壓是 5V 時,輸出時的電壓則為 125V,這樣就能看出其電路所具有放大多少倍(計算可得 21 倍)的功能。如下圖 5.2 所示

圖 5.2 電流采樣處理電路仿真圖

5.3 系統(tǒng)做直流電源使用時電路仿真圖

Protues 軟件因為不存在太陽能電池模擬模塊,所以在仿真時我們把穩(wěn)壓輸出電壓值用直流電源電壓為 5V 的來更換,當(dāng)數(shù)字到達(dá)3時,表示充電已經(jīng)完成。按復(fù)位鍵會顯示0,點開始鍵表示開始充電。整體電路仿真圖如下圖 5.4 所示

圖 5.3 整體電路仿真圖

5.4 系統(tǒng)做充電器使用時仿真結(jié)果

充電器在運行過程中它會隨著充電的進(jìn)行,充電電壓會漸漸升高,指示燈會從0

逐漸變成3,此過程可表示充電從開始到結(jié)束。仿真結(jié)果如下圖 5.4、5.5、5.6 所示。

圖 5.4 充電過程仿真

圖 5.5 充電過程仿真

圖 5.6 充電過程仿真

總結(jié)與展望

時光飛逝,離開大學(xué)的日子也漸漸向我們走來,隨之而來的畢業(yè)設(shè)計也即將完成。通過一段時間的努力,我的畢業(yè)設(shè)計的任務(wù)終于結(jié)束了。畢業(yè)設(shè)計是對我們整個大學(xué)期間學(xué)習(xí)的一次總結(jié)性的檢驗,通過設(shè)計的過程能檢驗我們大學(xué)期間的基礎(chǔ)理論學(xué)習(xí)是否扎實,各種知識間的結(jié)合是否靈活,能否嚴(yán)格,全面,系統(tǒng)的結(jié)合所學(xué)的知識解決實際的問題。經(jīng)過此次畢業(yè)設(shè)計,我才明白學(xué)習(xí)是一個長期積累的過程,在以后的工作、生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己知識和綜合素質(zhì)。根據(jù)本次設(shè)計方案,我設(shè)計了一個由單片機控制的充電器,在充電過程中我們會看到方形波帶寬會逐漸變寬,并且會顯示出“1”,“2”,“3”數(shù)字,在充電完成后波形消失,顯示成一條直線,我設(shè)置了一個復(fù)位鍵,當(dāng)我按下鍵時,它會重新充電。

本次設(shè)計能初步完成以上功能,但設(shè)計不足之處很多。主要表現(xiàn)在以下幾點:第一、本此設(shè)計顯示模塊采用了數(shù)碼管,不如采用液晶顯示,硬件電路簡單,能省去一些 I/O 口來實現(xiàn)更多的功能。第二,沒有采用溫度檢測,一般快速充電電流會比較大,在不超過允許充電電流的情況下,電池溫度也會升高,若能加溫度監(jiān)測模塊,當(dāng)溫度超過允許值時,終止充電會減少因溫度過高給電池帶來的危害。第三、沒有采用電能存儲裝置,不能存儲電能備天氣狀況不好并且沒有市電的情況使用,若有電能存儲功能,可以將系統(tǒng)閑置時太陽能電池板轉(zhuǎn)化的電能存儲起來,作為電源給別的用電設(shè)備使用,這樣可以即方便又節(jié)能環(huán)保。能源的日益緊張,太陽能電池板、充放電控制器、蓄電池等構(gòu)成的產(chǎn)品都有了相對成熟的發(fā)展,相信不久之后太陽能手機充電器的應(yīng)用將會變得普遍[9]。


附錄A 整體電路圖


單片機源程序如下:

  1. #include              <reg51.h>

  2. #define uchar unsigned char

  3. #define uint              unsigned int
  4. sbit              P3_3=P3^3;
  5. //開始充電
  6. sbit              P3_4=P3^4; sbit              PWM=P3^5;
  7. //電壓切換
  8. sbit EOC=P3^1;
  9. //定義 ADC0808 的控制引腳/
  10. sbit OE=P3^0; sbit START=P3^2; sbit P3_6=P3^6; sbit P3_7=P3^7; sbit wela=P2^1; sbit dula=P2^0; uchar              time=0,time1=0; uchar              period=40; uchar              high=6,high1=12; uchar              th0=0; uchar              tl0=1; uchar              i=0,j=0;
  11. uint x,z,n; uchar code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  12.               //uchar              n=0;

  13. //uchar flag1;

  14. //unsigned char volatile g_delay_count;

  15. uchar disp[4]={0,0,0,0};              //顯示數(shù)據(jù),保存段碼,四位/ //================================/ void delay(uchar z)              //100us 延時子程序/
  16. {
  17. while(z--);

  18. }

  19. //==============================/

  20. void display()              //定義顯示子函數(shù)/ 可以使用鎖存器實現(xiàn)
  21. { for(n=0;n<4;n++) { P0=0x00; dula=1;
  22. P0 =disp[1];              //顯示第一位小數(shù)
  23. dula=0; wela=1; P0=0xfb; wela=0; delay(2); P0=0x00; dula=1;


  24. P0=disp[2]; dula=0; wela=1; P0=0xfd; wela=0; delay(2); P0=0x00; dula=1;
  25. //顯示第二位小數(shù)
  26. P0 =disp[3];              //顯示第三位小數(shù)
  27. dula=0; wela=1; P0=0xfe; wela=0; delay(2); P0=0x00; dula=1; P0 =disp[0]+0x80; dula=0; wela=1; P0=0xf7; wela=0;

  28. delay(2);

  29. }

  30. }

  31. //===============================/

  32. uint ADC0808()              //定義 ADC0808 讀入數(shù)據(jù)子函數(shù),并通過函數(shù)返回/
  33. { uchar d ; uchar value;
  34. START=1;START=0;
  35. //啟動 ADC0808,開始 A/D 轉(zhuǎn)換/
  36. while(!EOC); OE=1;
  37. if(time1<high1)
  38. //等待 ADC0808,轉(zhuǎn)換結(jié)束,即 EOC 為高電平/
  39. {d=P1;
  40. //讀入數(shù)據(jù)/
  41. if(high1==16)

  42. { value=0.4*d;
  43. } else if(high1==20)
  44. { value=0.5*d;
  45. } else if(high1==24)
  46. { value=0.6*d; } else if(high1==28)
  47. { value=0.7*d;
  48. } else if(high1==32)
  49. { value=0.8*d;
  50. } else if(high1==36)
  51. { value=0.9*d;
  52. }

  53. }              //允許 ADC0808 輸出數(shù)據(jù) / if(time<high)
  54. {d=P1;              //讀入數(shù)據(jù)/
  55. if(high==8)

  56. { value=0.2*d;
  57. } else if(high==10)
  58. { value=0.25*d;
  59. } else if(high==12)
  60. { value=0.3*d;
  61. } else if(high==14) { value=0.35*d; } else if(high==16)
  62. { value=0.4*d; } else if(high==18)
  63. { value=0.45*d; } else if(high==20)
  64. { value=0.5*d; } else if(high==22)
  65. { value=0.55*d; } else if(high==24)
  66. { value=0.6*d; } else if(high==26)
  67. { value=0.65*d; } else if(high==28)
  68. { value=0.7*d;
  69. }
  70. else if(high==30)

  71. { value=0.75*d;
  72. } else if(high==32)
  73. { value=0.75*d;
  74. } else if(high==34)
  75. { value=0.8*d;
  76. } else if(high==36)
  77. { value=0.85*d;
  78. }

  79. }
  80. OE=0;
  81. //禁止 ADC0808 數(shù)據(jù)輸出/
  82. return value;
  83. //返回 A/D 轉(zhuǎn)換數(shù)據(jù)/
  84. }

  85. //=================================/ void convert(uint x)              //定義顯示碼轉(zhuǎn)換子函數(shù)/
  86. { uchar code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 定 義
  87. 0~9 顯示碼/ x=x*1.0/255*5000;              // 處理數(shù)據(jù)使其在 0~5v 范圍內(nèi)/ disp[3]=dispcode[x%10];              //第三位小數(shù),最低位/ disp[2]=dispcode[x/10%10]; //第二位小數(shù)/ disp[1]=dispcode[x/100%10];              //第一位小數(shù)/ disp[0]=dispcode[x/1000];              //整數(shù)部分/
  88. }
  89. void

  90. {
  91. timer0()              interrupt
  92.               1              using              1


  93. TH0=0xff; TL0=0xf6; time++;
  94. /*定時器初值重裝載*/


  95. if(time==high)
  96. /*高電平持續(xù)時間結(jié)束,變低*/


  97. {              PWM=th0;
  98. /*經(jīng)過反相器反相*/
  99. }

  100.               else              if(time==period)              /*周期時間到,變高*/
  101.               {              time=0;

  102.               PWM=tl0;              /*經(jīng)過反相器反相*/
  103. }

  104. }
  105. void

  106. {
  107. timer1()              interrupt
  108.               3              using              3


  109. TH1=0xff; TL1=0xf6; time1++;
  110. /*定時器初值重裝載*/


  111. if(time1==high1)
  112. /*高電平持續(xù)時間結(jié)束,變低*/


  113.               {              PWM=th0;
  114. /*經(jīng)過反相器反相*/
  115. }

  116.               else              if(time1==period)              /*周期時間到,變高*/
  117.               {              time1=0;

  118.               PWM=tl0;              /*經(jīng)過反相器反相*/
  119. }

  120. } void main()
  121. {

  122.               OE=0;              //ADC0808 初始化/
  123. START=0;
  124.               EOC=1;              //將單片機的引腳(EOC 輸入端)置成輸入狀態(tài)/
  125. P3_3=0; P3_4=0;
  126. P3_6=1;

  127. P3_7=1;

  128.               TMOD=0x11;              /*定時器 0 方式 1*/


  129. TH0=0xff;

  130. TL0=0xf6;
  131. ET0=1;
  132. /*定時器裝載初值,設(shè)置脈沖信號的占空比為 1/5*/
  133. //
  134. TR0=1;




  135. TH1=0xff;
  136. /*定時器裝載初值,設(shè)置脈沖信號的占空比為 1/5*/
  137. TL1=0xf6;
  138. ET1=1;
  139. //              TR1=1;

  140. while(1)

  141. { if(P3_3==1)
  142. {

  143.               EA=1;              /*開 CPU 中斷*/
  144. TR0=1;

  145. TR1=0;

  146. P3_4=0; du: for(i=0;i<14;i++)
  147. {

  148. P3_7=1; high1=0;
  149. high=high+2; for(j=0;j<5;j++)
  150.               {              P3_6=0;

  151.               convert(ADC0808());              //每 1s 啟動 A/D 轉(zhuǎn)換一次,把讀入數(shù)據(jù)轉(zhuǎn)換

  152. 為顯示數(shù)據(jù)/
  153. display();
  154.               delay(10);              //              調(diào)用顯示子函數(shù)/
  155. }

  156. } if(high==34)
  157. {

  158. P3_6=1;

  159. P3_7=0; delay(100);
  160. TR0=0;
  161. }
  162. }

  163. if(P3_4==1)

  164. { TR0=0;

  165. TR1=1;

  166. P3_6=1; EA=1; high1=high1+4; if(high1==40) high1=16; if(P3_3==1) {P3_7=1; goto du;
  167. } while(P3_4!=0)
  168. {};

  169.               convert(ADC0808());              //每 1s 啟動 A/D 轉(zhuǎn)換一次,把讀入數(shù)據(jù)轉(zhuǎn)換為顯

  170. 示數(shù)據(jù)/ display();              // 調(diào)用顯示子函數(shù)/
  171. }
  172.               convert(ADC0808());              //每 1s 啟動 A/D 轉(zhuǎn)換一次,把讀入數(shù)據(jù)轉(zhuǎn)換
  173. 為顯示數(shù)據(jù)/
  174.               display();              // 調(diào)用顯示子函數(shù)/
  175. }

  176. }
復(fù)制代碼

完整的Word格式文檔51黑下載地址:
基于單片機的太陽能充電器的設(shè)計.docx (1.6 MB, 下載次數(shù): 126)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:975653 發(fā)表于 2021-10-28 12:35 | 只看該作者
有protues的源文件沒
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表