智能電池充電器的設計-畢業(yè)設計綜述
《智能電池充電器的設計-畢業(yè)設計綜述》由會員分享,可在線閱讀,更多相關《智能電池充電器的設計-畢業(yè)設計綜述(49頁珍藏版)》請在裝配圖網上搜索。
1、編號 2014020342B 研究類型 應用研究 分類號 TN7 阿世經苑孝飪 Hubei Normal University 學士學位論文(設計) achelor s Thesis 論文題目 智能電池充電器的設計 陳緒詞 2010112020342 物理與電子科學學院 電子信息科學與技術 潘言全副教授 作者姓名 學 號 所在院系 學科專業(yè)名稱 導師及職稱 論文答辯時間 2014年5月11日 學士學位論文(設計)誠信承諾書 中文題目:智能電池充電器的設計 外文題目: The Design of Intelligent Battery Charger 學
2、生姓名 陳緒詞 學生學號 2010112020342 院系專業(yè) 物理與電子科學學院 電子信息科學與技術 學生班級 1003 學生承諾 我承諾在學士學位論文(設計)活動中遵守學校有關規(guī)定,恪守學術 規(guī)范,本人學士學位論文(設計)內容除特別注明和引用外,均為本人觀 點,不存在剽竊、抄襲他人學術成果,偽造、篡改實驗數(shù)據的情況。如有 違規(guī)行為,我愿承擔一切責任,接受學校的處理。 學生(簽名): 2014年5月8日 指導教師承諾 我承諾在指導學生學士學位論文(設計)活動中遵守學校有關規(guī)定, 恪守學術道德規(guī)范,經過本人核查,該生學士學位論文(設計)內容除特 別注明和引用外,均
3、為該生本人觀點,不存在剽竊、抄襲他人學術成果, 偽造、篡改實驗數(shù)據的現(xiàn)象。 指導教師(簽名): 1. 前言 1 2. 系統(tǒng)設計概述 2 2.1 設計內容和要求 2 2.2 總體設計方案 2 3. 硬件電路設計 6 3.1 總體電路設計 6 3.2 硬件功能模塊分析 6 4. 系統(tǒng)軟件設計 10 4.1 主程序流程圖 10 4.2 數(shù)碼管顯示模塊 11 4.3 定時器模塊 12 4.4 按鍵處理器模塊 12 4.5 ADCM樣和 PWlMt塊 13 4.6 充電過程處理模塊 13 5. 系統(tǒng)實物調試和效果
4、14 6. 總結與展望 16 7. 參考文獻 17 致謝 學士學位論文(設計)評審表 智能電池充電器的設計 陳緒詞(指導老師,潘言全 副教授) (湖北師范學院物理與電子科學學院,湖北 黃石 435002) 摘 要 :本文所述的智能電池充電器,利用運放和場效應管構成的閉環(huán)控制組成恒流恒 壓源,根據鋰電池的特性,通過恒流恒壓源對電池進行充電。單片機產生 PWM 波,通過濾波電路去調節(jié)恒流恒壓源,單片機自帶的 ADC 功能,對恒流恒壓源 的電流和電壓進行檢測,并且與之前設置最大電流和最大電壓進行比較,從而進 行調節(jié)。按鍵設置充電器的最大電流和最大電壓,設置完成之后
5、,充電器處于工 作狀態(tài),數(shù)碼管顯示電池兩端的電壓和電流。整個過程實現(xiàn)智能調控。 關鍵詞 :單片機;充電器;恒流恒壓源;智能 中圖分類號 : TN7 The Design Of Intelligent Battery Charger Chen Xuci(Tutor : Pan Yanquan) (College of Physics and Electronic Science, Hubei Normal University, Huangshi, 435002, China) Abstract: A intelligent battery charger described i
6、n this paper is a constant current and constant voltage source realized by closed-loop controls composed of operational amplifiers and FETs. According to the characteristics of lithium battery, a battery is charged by the charger. With the use of PWM wave by MCU, the charger is adjusted through the
7、filter circuit. ADCs on MCU are able to detect the current and voltage and compare the maximum current and maximum voltage set before, so as to adjust. The maximum current and maximum voltage of the charger is set up by keys. After a one-time setup, the charger is in working state, and digital pipes
8、 display battery voltage and current. The whole process is intelligently controlled. Key words:MCU ; Charger; Constant current and constant voltage sourc;e Intelligence 湖北師范學院物理與電子科學學院 2014屆學士學位論文 智能電池充電器的設計 陳緒詞(指導老師,潘言全 副教授) (湖北師范學院物理與電子科學學院,湖北 黃石435002) 1 .前言 社會信息化進程的加快對電力、信息系統(tǒng)的安全穩(wěn)定運行提出了更
9、高的要求。在人 們的生產、生活中,各種電氣、電子設備的應用也越來越廣泛,與人們的工作、生活的 關系日益密切,越來越多的工業(yè)生產、控制、信息等重要數(shù)據都要由電子信息系統(tǒng)來處 理和存儲。而各種用電設備都離不開可靠的電源,如果在工作中間電源中斷,人們的生 產和生活都將受到不可估量的經濟損失[1]。 對于由交流供電的用電設備,為了避免出現(xiàn)上述不利情況,必須設計一種電源系統(tǒng), 它能不間斷地為人們的生產和生活提供以安全和操作為目的可靠的備用電源。為此,以 安全和操作為目的的備用電源設備上都使用充電電池 ⑵。這樣,即使電力網停電,也可 利用由充電電池構成的安全和操作備用電源,從容地采用其他應急手段,避免重
10、大損失 的發(fā)生。而對于采用充電電池供電的用電設備,從生產、信息、供電安全角度來說,充 電電池在系統(tǒng)中處于及其重要的地位。 同時,具體到生活方面,隨著社會的快速發(fā)展,電子產品小型化、便攜化也使得充 電電池越來越重要,鋰離子電池有較高的比能量,放電曲線平穩(wěn),自放電率低,循環(huán)壽 命長,具有良好的充放電性能,可隨充隨放、快充深放,無記憶效應,不含鎘、鉛、汞 等有害物質,對環(huán)境無污染,被稱為綠色電池?;谶@些特性,所以鋰電池得到了迅速 的發(fā)展和廣泛的應用。鋰電池充電器是為鋰離子充電電池補充能源的靜止變流裝置,具 性能的優(yōu)劣直接關系到整個用電系統(tǒng)的安全性和可靠性指標 [3] 0 本文對設計硬件電路的過
11、程進行了詳細的描述,包括對方案的選擇和元器件的選 擇。軟件控制流程也進行了詳細的敘述。充電器的技術已經很成熟了,正好通過這次畢 業(yè)設計,對大學四年所學的的知識進行整合,回顧。 2 .系統(tǒng)設計概述 2.1 設計內容和要求 一般市場上的萬能充電器只能對 4.2V的鋰電池進行充電[4],我們這次設計的可編 程智能充電器,是在普通的萬能充基礎上進行升級,可以對充電的最大電壓和最大電 流進行設定,這樣就可以使充電器的適用范圍更廣。要求: ①充電電壓的范圍為1V?13V,最大充電電流為0.5A-2.5A; ②能實現(xiàn)電池的充電與顯示,顯示的結果夠精確,并且具備很好的穩(wěn)定性; ③電路簡單、成本要求
12、低; ④操作簡單、方便、易懂、數(shù)碼管顯示; 2.2 總體設計方案 2.2.1 設計思路 本設計的關鍵就是要知道電池充電過程的三個階段,涓流充電,恒流充電,恒壓充 電,然后需要設計一個電路,具有恒流恒壓功能。然后把這三個階段的電壓電流情況在 數(shù)碼管上顯示出來。 2.2.2 方案論證與比較 從設計思路出發(fā),可以提出以下三個方案: 萬案一: 電路原理圖如圖2-1所示。這種方案主要用到了一個基準源 TL431 ,它是一種三端 可調分流基準源⑼。DA的輸出電壓通過一個電阻 R4接至TL431的參考極。當調節(jié)DA 的輸出電壓使參考極電壓高于 2.5V時,三極管中有一個很大的電流通過。那么經
13、過三 極管輸出的電流將會減小,電壓也會隨之下降。當調節(jié) DA的輸出電壓使參考極電壓低 于2.5V時,三極管相當于截止狀態(tài),通過 R1經TL431到地的電流就很小,接近于 0。 那么三極管輸出的電流將會增大, 輸出電壓也會增加。當AD檢測到輸出電壓超過4.2V 時,又會自動調整增加DA的輸出電壓,使TL431導通,從而使三極管的輸出電壓減小。 整個充電過程中,單片機會通過 AD檢測電池兩端的輸出電壓和充電電流,過大或者過 小都會通過控制DA的輸出電壓對電路進行調整,使得輸出的電壓和電流保持在一個相 對穩(wěn)定的狀態(tài)。DA的輸出電壓取決于電路中電阻 R4的大小。 3 Q2 2 1 R1 1
14、000 R2 1.75k B2 鋰電V 20 3 U1 R4 調電壓 R3 B3 5k 8V B1 9V TL431 圖2-1方案一電路圖 萬案一: 電路原理圖如圖2-2所示,此方案用運放構成比較器對電池兩端的電壓進行控制 圖2-2方案二原理圖 電路運行分析:單片機的DA輸出接運放的同相端5,與運放的反相端6進行比較, 當電池兩端的電壓過高時,6腳的電壓比5腳高,比較器輸出將三極管的拉低,使電池 兩端電壓降低;當電池兩端電壓偏低時,6腳的電壓比5腳低,比較器輸出將復合管抬 高,使電池兩端的電壓升高。這樣閉環(huán)控制使電池兩端的電壓維持不變,通過電
15、壓和電 流檢測的軟件反饋可以調整 DA輸出。 方案二: 包流源方案,采用硬件閉環(huán)控制方案。硬件閉環(huán)穩(wěn)流的典型電路如圖 2-3所示,根 據集成運算放大器的特性,可計算得:式中為負載電流, R1為取樣電阻,為運算放大 器同相端輸入信號。若固定 R1,則完全由決定,此時無論 VCC或是RL發(fā)生變化,利 用反饋環(huán)路的自動調節(jié)作用,都能使保持穩(wěn)定。這樣就可保證包流源具有良好的線性關 圖2-3恒流源產生電路 對比三個方案可知,方案三更為合理,并且控制更為簡單,方案三直接通過硬件閉 環(huán)控制,使電池兩端的電流恒定。方案二雖然能控制電流平衡,但是對 AD的精度要求 比較高,這樣就沒有硬件閉
16、環(huán)控制實現(xiàn)恒流的方案好。 方案一的TL431相對方案二中的 運放來說,最大電壓的范圍就受限制了,所以此方案不是很好。最終選擇方案三。 2.2.3 系統(tǒng)設計總體框圖 系統(tǒng)設計框圖如圖2-4所示。智能充電器采用單片機作為主控芯片,主要包括電源 電路、恒流恒壓電路[6]、鍵盤響應電路以及狀態(tài)顯示電路。 1直流12V 外接電源 一恒流恒壓電路 PWM 電壓檢測 I/O 接 口 MCU AD 采樣電阻 圖2-4系統(tǒng)框圖 3 .硬件電路設計 3.1 總體電路設計 根據圖3-1,設計出如圖所示的硬件電路,完整硬件電路包括以下幾個模塊:系統(tǒng) 電源模塊[7]、以單片機
17、STC12C5A60S2控制核心的單片機最小系統(tǒng)、恒流恒壓源模塊、 按鍵模塊、LED顯示模塊和數(shù)碼管顯示模塊。 BBBH BBB8 IIIIIIII IIIHIIIIIII 1111 圖3-1硬件電路圖 3.2 硬件功能模塊分析 3.2.1 單片機最小系統(tǒng) 圖3-2單片機最小系統(tǒng) 單片機最小系統(tǒng)不僅僅包括核心芯片 STC12C5A60S2,還包括復位電路、晶振時 鐘電路,單片機最小系統(tǒng)如圖 3-2所示。對于單片機的選擇,只要它具備 ADC功能和 PWM功能,有足夠的I/O 口及內部定時器,都可以拿來實現(xiàn)這個方案,我采用的是 STC12C5A60S2單片機,該單
18、片機單時鐘/機器周期(1T),有2路PWM網,8路高速 10位A/D轉換( 250K/S,即25萬次每秒)等,資源豐富、性價比高,可以和 AVR單 片機相媲美。 3.2.2 系統(tǒng)電源模塊 圖3-3系統(tǒng)電源模塊 如圖3-3所示。系統(tǒng)電源模塊包括給單片機供電模塊,用到芯片 ICL7660[10]。LM780呢三端穩(wěn)壓芯片,可以給運放提供負電壓。 LM78059] 和 如圖3-4所示。該電路是經典的串聯(lián)型穩(wěn)壓電路,以穩(wěn)壓管穩(wěn)壓電路為基礎,利用 晶體管的電流放大作用,增大負載電流;在電路中引入深度負反饋使輸出電壓穩(wěn)定;并 且通過一路PWM對輸出電壓值進行設定,使輸出電壓可調,通過
19、另一路 PWM對輸出 電流值進行設定,使輸出電流可調。如圖 3-4所示,電壓值設定和電流值設定為兩路 PWM信號,在PWM信號頻率不變的情況下,通過調節(jié) PWM脈沖占空比,便可改變 設定值。對于電池兩端電壓檢測, 電池電壓值為電池正極電壓減去負極電壓;對于電流 值檢測,由于本方案的采樣電阻為 0.1G,即使經過500mA大電流時,采樣電阻兩端電 壓也才50mV,沒有充分利用ADC的轉換精度,不利于電流檢測的準確性,所以必須 對采樣電阻兩端的電壓值進行線性放大。 3.2.4 按鍵模塊 J 9 — 6 q O- 圖3-5按鍵模塊 按鍵模塊如圖3-5所示,通過按鍵對最
20、大電壓最大電流進行設置, 控制電池的最大 充電電流和最大充電電壓。 3.2.5 數(shù)碼管顯示模塊 BBBB BB8B ^?iiiiiiii mi 圖3-6數(shù)碼管顯示電路 數(shù)碼管顯示模塊如圖3-6所示。數(shù)碼管顯示充電器的最大充電電壓、最大充電電流、 電池的電壓和工作電流。數(shù)碼管驅動直接用IO 口驅動,這樣單片機多余的IO 口可以利 用完全,減少成本。 4 .系統(tǒng)軟件設計 4.2 主程序流程圖 主程序流程圖如圖4-1所示,包含兩個部分,一部分為初始化段,另一部分為循環(huán) 主體段。在主程序循環(huán)體中,并不是直接執(zhí)行程序,而是去調用一個個任務模塊。每個 任務都是一個子函數(shù),
21、這些任務的調度機制為輪詢機制。 即:這些子函數(shù)功能的執(zhí)行與 否取決于其條件標志是否滿足。比如:當某個子函數(shù)被主程序調用時,會先判斷其執(zhí)行 條件是否成立(標志位是否有效),如果有效則執(zhí)行實際功能語句,否則不執(zhí)行任何動 作直接返回。為了避免各個任務為了搶占系統(tǒng) CPUS源,造成時間沖突,我采取以下一 些措施:根據任務的輕重緩急分別給予以不同的時間調度。 比如LCD顯示2ms掃描一個, 8個數(shù)碼管掃描頻率為62Hz,經調試掃描頻率太慢了會數(shù)碼管會閃,這個頻率剛好 [10]。 PWMD/調節(jié)和A/D采樣速度不宜太快,我用的是 200ms調用一次,因為它會影響到數(shù) 碼管刷屏,調節(jié)和采樣太快,數(shù)碼管
22、上的數(shù)值會跳變的厲害。按鍵處理則為 10ms調用 一次,當按鍵處理中,當首次檢測到按鍵閉合時,本來需要 20ms左右的延時時間來進 行消除抖動,這里如果用延時程序 delay(20ms)來實現(xiàn),則會影響其他任務的執(zhí)行。應 該把這個等待時間讓給其他任務程序去執(zhí)行。 具體方法是可以先設置個標志后退出, 待 下次到了 20ms再次進入按鍵處理程序,再做一個閉合檢測。一個任務執(zhí)行過程中,不 能影響其它任務的執(zhí)行,一旦一個任務執(zhí)行完成,就立刻釋放對 CPU的控制權。 主程序流程圖 2mSt時處理程序 10msi時處理程序 10m溢出標加0 2m鋪出標加0 LCD1示
23、RET LCD顯示 10mSt時處理程序流程圖 200msi時處理程序流程圖 2mSt時處理程序流程圖 圖4-1主程序流程圖 4.2數(shù)碼管顯示模塊 將數(shù)碼管各顯示狀態(tài)化分 //工作模式WK_MODE //WK_MODE=0 充電時, //WK_MODE=1 設定時, //WK_MODE=2 設定時, //WK_MODE=3 設定時, //WK_MODE=4 設定時, //WK_MODE=5 設定時, //WK_MODE=6 設定時, //WK_MODE=7 設定時, //WK_MODE=8 設定時, //WK_MODE=9 設定時, //WK_MODE=10 13種狀態(tài),給每個
24、狀態(tài)編號 電壓值電流值顯示 電壓值閃爍,電流值不閃爍 電流值閃爍,電壓值不閃爍 電壓值第一位閃爍 電壓值第二位閃爍 電壓值第三位閃爍 電壓值第四位閃爍 電流值第一位閃爍 電流值第二位閃爍 電流值第三位閃爍 設定時,電流值第四位閃爍 //WK_MODE=11設定時,電壓值電流值顯示 //WK_MODE=1既定時,電壓值電流值顯示 4.3 定時器
25、模塊 //計數(shù)寄存器 unsigned char JSQ_2MS;//2ms 計數(shù)器 unsigned char JSQ_10MS;//10ms 計數(shù)器 unsigned char JSQ_200MS;//200ms 計數(shù)器 unsigned char JSQ_500MS;//500ms 計數(shù)器 //標志位 bit JS2MS_F;// 計時 5ms標志位 bit JS10MS_F;// 計時 10ms標志位 bit JS500MS_F;// 計時 50ms標志位 bit JS200MS_F;// 計時 200ms標志位 設定系統(tǒng)時鐘任務時基1ms比如:1ms至L在中斷服
26、務函數(shù) JSQ_2MS-h +//計數(shù)器計數(shù) If(JSQ_2MS>1)//2ms 至U { JSQ_2MS=0;//計數(shù)器清零 JS2MS_F=1;//計時2ms標志位置1 } 任務模塊通過查詢相應標志位執(zhí)行相應任務,沒到 2ms退出釋放CPU控制權;到 了 2ms進入,獲得CPU使用權;一旦任務執(zhí)行完,立即釋放 CPU控制權。這樣CPU 工作效率很高。 4.4 按鍵處理器模塊 常見按鍵處理是應該掌握的一項基本功。單擊;短擊 +長擊;短擊+連擊。主要目的 是通過按鍵對最大電壓值和最大電流值進行設定。 相應按鍵按下,執(zhí)行相應功能或者遷 移到新的狀態(tài)。 sbit Key_De
27、c=P3A2;// 減鍵,支持短擊+連擊 sbit Key_Left=P3A3;// 左移鍵,支持單擊 sbit Key_Set=P3A4;// 設定鍵,支持短擊+長擊 sbit Key_Right=P3A5;〃 右移鍵,支持單擊 sbit Key_Add=P3A6;// 加鍵,支持短擊+連擊 4.5 ADC采樣和PWMg塊 直接調用STC12C5A60S2系列單片機手冊里的現(xiàn)成函數(shù) 4.6 充電過程處理模塊 充電過程處理模塊如圖4-2所示,空閑狀態(tài),不進行電池充電的功作,主要任務是 對電池接入識別,綠燈閃爍。預充狀態(tài),電池以最大設置電流的五分之一充電,充電三 分鐘,自動跳轉快
28、充狀態(tài),紅燈亮。快充狀態(tài)用 PW昧式控制充電電流和電壓,也就是 根據A/D 口采樣到的電壓和電流反饋,通過調節(jié)占空比來調節(jié)充電電流和電壓,紅燈亮。 恒壓狀態(tài)快充狀態(tài)下,充電電壓大于4.2V時,跳轉到恒壓狀態(tài)。此時給電池4.2V充電, 紅燈亮。停充狀態(tài)恒壓狀態(tài)下,I<1/5最大電流時,停止充電,綠燈亮。故障狀態(tài)空閑 狀態(tài)下,當電池兩端電壓大于 4.2V時,停止充電,紅燈閃爍。預充狀態(tài)三分鐘后,當 電池兩端電壓大于4.2V時,停止充電,紅燈閃爍。 電池取下 上電初始化 圖4-2充電過程處理模塊 5 .系統(tǒng)實物調試和效果 5.1 實物調試和效果 焊接好的實物如圖5-1所示
29、。板子打外回來之后,就開始檢測板子打燈的時候有沒 有問題,電源和地有沒有短路,這些都檢查好沒問題之后就開始焊接板子了。開始焊的 是最小系統(tǒng),焊好之后,接上下載線,程序能夠下載進去 圖5-1焊接完成的實物圖 充電之前電池電壓為3.836V,如圖5-2所示 圖5-2充電之前的電池電壓 系統(tǒng)上電如圖5-3所示。 圖5-3系統(tǒng)上電圖 充滿電之后電池電壓為4.217V,如圖5-4所示 圖5-4充滿電之后電池電壓 5.2 改善措施 調試成功,不過還是有不足的地方, 就是場效應管的散熱問題,場效應管用的是貼 片,貼在PCB板子的背面,當場效應管
30、一直工作在恒流充電的時候就會發(fā)熱,工作一 段時間久發(fā)熱很厲害,上面的焊錫在高溫下也就起不了什么作用了, 第一塊板子因為發(fā) 熱的原因,場效應管移動了,漏極和數(shù)碼管的的一個接單片機 P01 口的腳碰了一下,此 時的漏極電壓為11V左右,P01 口燒壞了,用示波器看,使P01=0,此時的波形電壓為 3.5V, P01 口不能輸出低電平,數(shù)碼管的b段時刻亮著的。最后就重新焊了一塊,沒有 換單片機了,第一次焊的時候調試把板子搞得也不像個樣子。電池沒充幾分鐘這個場效 管就掉下來了,所以要想成為一個真正的產品,硬件上必須解決的就是散熱問題。 可以用開關電源的原理來解決這個散熱問題。 6 .總結與展望
31、本論文描述了鋰離子電池快速充電過程的基本原理 ,設計了對單節(jié)4.2V鋰離子電池 充電的充電器,它能夠快速完成鋰離子電池的充電過程。 根據對鋰離子電池的充放電特 性和充電控制方法的分析得出:鋰離子電池充電器常采用三段充電法, 即預處理、恒流 充電(快充)和恒壓充電(充滿)。開始以設定的恒流充電,鋰離子電池的電壓以較高的斜 率增長,在充電過程中斜率逐步降低,充到接近 4.2V時,恒流充電階段結束,接著以 4.2V恒壓充電。在恒壓階段充電時,電壓幾乎不變 (或稍有增加),充電電流不斷下降。 當充電速率下降到0.1C時,表示電池已充滿,應終止充電。沒有及時終止的話,此后 最明顯的特征是電池溫度升高,
32、發(fā)熱,在整個快充電過程中都應當注意電池的溫度,尤 其是過充電時,鋰離子電池溫度過高, 會造成過熱而損壞電池或發(fā)生爆炸。在鋰離子電 池進入恒壓充電狀態(tài)前,必須適時停止快速充電。為此,設計了此種鋰離子電池快速充 電器,利用快速充電的方法,并在此基礎之上進行電壓、溫度的檢測和控制來保證該充 電器能對鋰離子電池進行安全可靠而又快速的充電。本電路具有溫度保護功能 ,當電池 溫度過高時,即刻停止快速充電,這樣就能避免過充電對鋰離子電池造成的損害. 根據鋰離子電池的充電特性可知,鋰電池或充電器在電池充滿后應當停止充電, 并 不存在鍥電充電器所謂的持續(xù)10幾小時的“涓流”充電。也就是說,如果你的鋰電池
33、在充滿后,放在充電器上也是白充,反而會造成內壓升高、電池發(fā)熱等現(xiàn)象,而我們誰 都無法保證電池的充放電保護電路的特性永不變化和質量的萬無一失, 所以電池將長期 處在危險的邊緣徘徊。這也是本次設計中當充滿電后自動斷開充電的一個理由。 此外,不可忽視的另外一個方面就是鋰電池同樣也不適合過放電, 過放電對鋰電池 同樣也很不利。 目前一些大的廠家生產的手機充電器都具有以下特點: 寬范圍AC輸入或多個電壓 可選;具備限流保護,電流短路與反充保護線路設計;體積小、重量輕;自動、快速充 電,充滿電后自動關斷等等。另外,有的充電器還有自動識別鋰離子、鍥氫、鍥鎘電池 組;自動計算電池的已充電量和剩余的充
34、電時間, 也可以改變參數(shù)來適應各種不同電池 的充電;具有放電功能;LED或LCD充電狀態(tài)顯示;低噪聲;模擬微電腦控制系統(tǒng)等 特點。 因此,設計一款真正由微電腦控制單片機控制, 且價格低廉的智能控制充電器,成 為各廠家努力的方向。 7 .參考文獻 [1]周志敏,周紀海,紀愛華.充電器電路設計與應用 (第1版)[M].北京:人民郵電出版 社,2005,10: 54~62. [2]康華光.電子技術基礎數(shù)字部分(第五版)[M].北京:高等教育出版社,2005: 103~125. [3]楊欣,王玉鳳.電路設計與仿真[M].北京精華大學出版社,2005: 77~84. [4]李建忠.單片機
35、原理及運用[J].西安:西安電子科技大學出版社,2003: 22~25. [5]何立民.MCS-51系列單片機應用系統(tǒng)設計系統(tǒng)配置與接口技術 [M].北京:北京航空航 天大學出版社,1990.3: 46~70. [6]譚浩強.C語言程序設計第三版[M].北京:清華大學出版社,2005: 55~68. [7]張家怡.圖像識別的技術現(xiàn)狀和發(fā)展趨勢[J].電腦知識與技術,2010,16(21): 6045-6046. [8] Gary Bradski Adrian Kaehler,于仕琪,劉瑞被.學習OpenCV(中文版)[M].北京:清華大學 出版社,2009: 1-14. [9]靳艷
36、紅.一種基于Canny算子改進的邊緣檢測算法[J].重慶文理學院學報(自然科學 版),2011,30(2): 27-30. [10]楊碧石,陳兵飛.ICL7660/7662變極性DC-DC變換器的原理與應用[J].國外電子元器 件,2003.2: 51-52. 致謝 論文在選題及研究過程中得到潘言全老師的悉心指導。感謝潘老師給我提供了寶貴 的學習機會和良好的科研環(huán)境。感謝潘老師在我做實驗期間及撰寫論文期間給我提供寶 貴建議,并為我指點迷津,幫助我開拓思路。潘老師治學嚴謹、實事求是、兢兢業(yè)業(yè), 這種做事的態(tài)度讓我終生受益無窮。也感謝給予我?guī)椭钠渌蠋熀秃糜选? 我會帶著這份求學精神,
37、帶著老師和同學們寄予我的厚望, 好好地把握機會,在以 后的生活、工作崗位上發(fā)揮自己最大的優(yōu)勢,實現(xiàn)自己的人生價值。 最后,感謝在百忙之中抽出時間為我評閱論文的諸位前輩和專家! 附錄: // // 項目:智能電池充電器的設計 //說明:1.該項目使用的 CPU^ STC12C5A60S磊振22.1184MHz // 2. 可通過按鍵設置充電最大電壓,充電最大電流 // 3. 對于充電過程智能化,無須人為操作,充滿后自動停止充電 // 4. 充電器處于空閑狀態(tài)時綠燈閃爍, 充電狀態(tài)時紅燈亮, 充電停止時綠燈 亮 // 用戶可通過燈的顯示狀態(tài),識別充電的過程 // #
38、include"reg51.h" #include"DISPLAY_LCD.h" #include"TIMER.h" #include"KEYSCAN.h" #include"READ_ADC.h" #include"PWM_DAC.h" #include"CHARGE_PRO.h" extern bit JS2MS_F;〃 計時 1ms 標志位 extern bit JS10MS_F;// 計時 10ms 標志位 extern bit JS200MS_F;// 計時 200msfe志位 extern unsigned char ch;//A/D 通道選擇 extern
39、unsigned char Charge_Mode;// 充電狀態(tài) extern unsigned char WK_MODE;// 設定系統(tǒng)工作模式 extern unsigned char PWM0_TEMP = 179,PWM1_TEMP = 127;//PWM 脈沖占空比設 定 //2ms 處理程序 void DS2MS_CNT(void) { if( JS2MS_F )//2ms 到 { JS2MS_F = 0; // 標志位清零 New_Display();// 待顯示字符串 Display_Lcd();//LCD 顯示 } } //10ms 處理程序 v
40、oid DS10MS_CNT(void) { if( JS10MS_F ) //10ms 到 { JS10MS_F = 0;// 標志位清零 KEYSCAN(); // 按鍵處理 } //200ms 處理程序 void DS200MS_CNT(void) { if( JS200MS_F )//200ms 到 { JS200MS_F = 0;// 標志位清零 ADC_CONTR = ADC_POWER|ADC_SPEEDLL|ADC_START|Ch;t//A/D 采樣 Charge_Pro(); // 充電過程處理 PWM_DAC( PWM0_TEMP,PWM1_
41、TEMP ); //PWMDA } } // 主程序 void main(void) { Timer0_Init();// 定時器初始化 PWM_Init();//PWMD/A 初始化 Adc_Init();//A/D 采樣初始化 IE |= 0XA0;// 開總中斷和開 ADC中斷 Charge_Mode = 0;// 充電狀態(tài)初始化 WK_MODE = 0;// 設定系統(tǒng)工作模式 while(1) { DS2MS_CNT();//2ms 定時處理 DS10MS_CNT();//10ms 定時處理 DS200MS_CNT();//200ms 定時處理 }
42、} // 定時器模塊(晶振 22.1184MHz, 12 分頻) #include"TIMER.h" #include"reg51.h" // 計數(shù)寄存器 unsigned char JSQ_2MS;//2ms 計數(shù)器 unsigned char JSQ_10MS;//10ms 計數(shù)器 unsigned char JSQ_500MS;//500ms 計數(shù)器 unsigned char JSQ_200MS;//200ms 計數(shù)器 unsigned int JSQ_3MINUTE;//3 分鐘計數(shù)器 // 標志位 bit JS2MS_F;// 計時 5ms標志位 bit J
43、S10MS_F;〃 計時 10ms標志位 bit JS500MS_F;// 計時 50ms標志位 bit JS200MS_F;// 計時 200ms標志位 bit JS3MINUTE_F;// 計時 3 分鐘標志位 bit Flag_S;// 閃爍標志位,閃爍頻率 2HZ bit LED_Flag_S;//LED 閃爍標志位,閃爍頻率 2HZ extern bit Key_Scan_F;// 計時 10ms 標志位 // 定時器 0 初始化,設定時基 1ms; //定時器1初始化,設定時基20ms(專供預充電定時3分鐘,便于控制) void Timer0_Init(void)
44、 { TMOD = 0X11;// 定時器 0和定時器 1 工作在模式 1,16Bit 定時器模式 TH0 = 255-CLOCK/TIMER0_PER_SEC/12/256;// 時基頻率 1000HZ TL0 = 255-CLOCK/TIMER0_PER_SEC/12%256; TR0 = 1;// 啟動 ET0 = 1;// 允許中斷 TH1 = 255-CLOCK/TIMER1_PER_SEC/12/256;// 時基頻率 50HZ TL1 = 255-CLOCK/TIMER1_PER_SEC/12%256; TR1 = 0;// 不啟動 ET1 = 1;// 允許
45、中斷 } // 定時器 0 溢出中斷服務函數(shù) void Timer0(void)interrupt 1 { TH0 = 255-CLOCK/TIMER0_PER_SEC/12/256;// 重裝 TL0 = 255-CLOCK/TIMER0_PER_SEC/12%256; JSQ_2MS++; JSQ_10MS++; if( JSQ_2MS>1 )//2ms 到 { JSQ_2MS = 0; JS2MS_F = 1; } if(JSQ_10MS>9)//10ms 到 { JSQ_10MS=0; JS10MS_F = 1; Key_Scan_F = 1; J
46、SQ_500MS++; JSQ_200MS++; if( JSQ_200MS>19 )//200ms 到 { JSQ_200MS = 0; JS200MS_F = 1; } if( JSQ_500MS>49 )//500ms 到 { JSQ_500MS = 0; JS500MS_F = 1; Flag_S =~ Flag_S;// 數(shù)碼管閃爍標志位取反 LED_Flag_S =~ LED_Flag_S;//LED 閃爍標志位取反 } } } // 定時器 1 溢出中斷服務函數(shù) void Timer1(void)interrupt 3 { TH1=255-
47、CLOCK/TIMER1_PER_SEC/12/256;//1 裝 TL1=255-CLOCK/TIMER1_PER_SEC/12%256; JSQ_3MINUTE++; if(JSQ_3MINUTE>8999)//3 分鐘到 JSQ_3MINUTE=0; JS3MINUTE_F=1; } } // 數(shù)碼管顯示模塊 // 工作模式 WK_MODE //WK_MODE=0 充電時,電壓值電流值顯示 //WK_MODE=1 設定時,電壓值閃爍,電流值不閃爍 //WK_MODE=2 設定時,電流值閃爍,電壓值不閃爍 //WK_MODE=3 設定時,電壓值第一位閃爍 //WK
48、_MODE=4 設定時,電壓值第二位閃爍 //WK_MODE=5 設定時,電壓值第三位閃爍 //WK_MODE=6 設定時,電壓值第四位閃爍 //WK_MODE=7 設定時,電流值第一位閃爍 //WK_MODE=8 設定時,電流值第二位閃爍 //WK_MODE=9 設定時,電流值第三位閃爍 電壓值電流值顯示 電壓值閃爍,電流值不閃爍 電流值閃爍,電壓值不閃爍 電壓值第一位閃爍 電壓值第二位閃爍 電壓值第三位閃爍 電壓值第四位閃爍 電流值第一位閃爍 電流值第二位閃爍 電流值第三位閃爍 //WK_MODE=1般定時,電流值第四位閃爍 //WK_MODE=1位:定時,電壓值電
49、流值顯示 //WK_MODE=1歿定時,電壓值電流值顯示 #include"reg51.h" #include"DISPLAY_LCD.h" unsigned char table_d[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff};// 段碼值 unsigned char table_w[] = {0xf7,0xfb,0xfd,0xfe,0x7f,0xbf,0xdf,0xef};// 位選值 // 顯緩區(qū) u
50、nsigned char Disp_Queue[8];// 待顯示字符隊列 extern unsigned int MCU_ADC0,MCU_ADC1;// 通道 0 電壓值,通道 1 電壓值 unsigned int Voltage_Val,Current_Val;// 電壓值,電流值 extern unsigned int Voltage_Max,Current_Max;// 設定最大電壓值,最大電流值 char voltage_q,voltage_b,voltage_s,voltage_g;// 最大電壓值第一位,第二位,第 三位,第四位 char current_q,cur
51、rent_b,current_s,current_g;// 最大電流值第一位,第二位,第 三位,第四位 unsigned char WK_MODE;// 設定系統(tǒng)工作模式 extern bit Flag_S;// 閃爍標志位,閃爍頻率 500HZ extern unsigned char PWM0_TEMP,PWM1_TEMP; // 反饋數(shù)據處理 void BackData_Pro( unsigned int Voltage_V,unsigned int Current_V ) { Voltage_Val= (long)(Voltage_V)*5*1000/256-(lon
52、g)Current_V*5*1000/256/21-70; Current_Val = (float)(Current_V)*5*1000/256.0/2.1; } // 設定數(shù)據處理 void SetData_Pro( unsigned int voltage_set,unsigned int current_set ) { voltage_q = voltage_set/1000; voltage_b = voltage_set%1000/100; voltage_s = voltage_set%100/10; voltage_g = voltage_set%10; cu
53、rrent_q = current_set/1000; current_b = current_set%1000/100; current_s = current_set%100/10; current_g = current_set%10; } // 刷新待顯示字符串 void New_Display(void) { BackData_Pro( MCU_ADC0,MCU_ADC1 ); SetData_Pro( Voltage_Max,Current_Max ); switch( WK_MODE ) { case 0:// 充電時,電壓值電流值顯示 Disp_Que
54、ue[0] = Voltage_Val/1000+10 ; Disp_Queue[1] = Voltage_Val%1000/100 ; Disp_Queue[2] = Voltage_Val%100/10; Disp_Queue[3] = Voltage_Val%10; Disp_Queue[4] = Current_Val/1000+10; Disp_Queue[5] = Current_Val%1000/100 ; Disp_Queue[6] = Current_Val%100/10;; Disp_Queue[7] = Current_Val%10; break; ca
55、se 1:// 設定時,電壓值閃爍,電流值不閃爍 if( Flag_S )// 滅 { Disp_Queue[0] = 20; Disp_Queue[1] = 20; Disp_Queue[2] = 20; Disp_Queue[3] = 20; } else // 亮 { Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; } Disp_Queue[4] = current_q+10; Dis
56、p_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; break; case 2: // 設定時,電流值閃爍,電壓值不閃爍 if( Flag_S ) { Disp_Queue[4] = 20; Disp_Queue[5] = 20; Disp_Queue[6] = 20; Disp_Queue[7] = 20; } else { Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6
57、] = current_s; Disp_Queue[7] = current_g; } Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; break; case 3:// 設定時,電壓值第一位閃爍 if( Flag_S ) { Disp_Queue[0] = 20; } else { Disp_Queue[0] = voltage_q+10; } Disp_Queue[1] = voltage_b;
58、 Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; break; case 4:// 設定時,電壓值第二位閃爍 if( Flag_S ) { Disp_Queue[1] = 20; } else { Disp_Queue[1] = voltage_b; } Disp_Queue[0]
59、= voltage_q+10; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; break; case 5:// 設定時,電壓值第三位閃爍 if( Flag_S ) { Disp_Queue[2] = 20; } else { Disp_Queue[2] = voltage_s; }
60、Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[3] = voltage_g; Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; break; case 6: // 設定時,電壓值第四位閃爍 if( Flag_S ) { Disp_Queue[3] = 20; } else { Disp_Queue[3] = vo
61、ltage_g; } Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; break; case 7:// 設定時,電流值第一位閃爍 if( Flag_S ) { Disp_Queue[4] = 20; } else { Disp_Q
62、ueue[4] = current_q+10; } Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; break; case 8:// 設定時,電流值第二位閃爍 if( Flag_S ) { Disp_Queue[5] = 20; } el
63、se { Disp_Queue[5] = current_b; } Disp_Queue[4] = current_q+10; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; break; case 9: // 設定時,電流值第三位閃爍 if( Flag_S ) { Disp_Queue[6
64、] = 20; } else { Disp_Queue[6] = current_s; } Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[7] = current_g; Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; break; case 10:// 設定時,電流值第四位閃爍 if( Flag_S ) {
65、 Disp_Queue[7] = 20; } else { Disp_Queue[7] = current_g; } Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; break; case 11: // 設定時,電壓值電流值顯示
66、 Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; break; case 12:// 設定時,電壓值電流值顯示 Disp_Queue[0] = voltage_q+10; Disp_Queue[1] = voltage_b; Disp_Queue[2] = voltage_s; Disp_Queue[3] = voltage_g; Disp_Queue[4] = current_q+10; Disp_Queue[5] = current_b; Disp_Queue[6] = current_s; Disp_Queue[7] = current_g; break;
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)管理制度:常見突發(fā)緊急事件應急處置程序和方法
- 某物業(yè)公司冬季除雪工作應急預案范文
- 物業(yè)管理制度:小區(qū)日常巡查工作規(guī)程
- 物業(yè)管理制度:設備設施故障應急預案
- 某物業(yè)公司小區(qū)地下停車場管理制度
- 某物業(yè)公司巡查、檢查工作內容、方法和要求
- 物業(yè)管理制度:安全防范十大應急處理預案
- 物業(yè)公司巡查、檢查工作內容、方法和要求
- 某物業(yè)公司保潔部門領班總結
- 某公司安全生產舉報獎勵制度
- 物業(yè)管理:火情火災應急預案
- 某物業(yè)安保崗位職責
- 物業(yè)管理制度:節(jié)前工作重點總結
- 物業(yè)管理:某小區(qū)消防演習方案
- 某物業(yè)公司客服部工作職責