2. 總體方案設計
2.1方案選擇
在本設計中主體主要分為單片機系統、采集系統、報警系統以及溫度測量系統,設計中需要對每個系統模塊的硬件進行選型,經過對設計原理的簡化可以得出整體主要分為處理模塊,采集模塊和報警模塊,需要對系統的組成進行確定,針對這樣的功能可以考慮采用數字電路或者單片機系統,其中采用數字電路,具有原理簡單,成本低的優點,但是由于數字電路結構復雜,后期如有損壞需要逐步的檢查損壞點,不便于維修,數字電路雖然成本較低,但是采用的微控芯片較多,不便于后期設計的擴展和推廣。采用單片機電路,雖然需要較為復雜的編程,但是由于單片機系統是比較完善的開發系統,當出現損壞時,只需要替換損壞的元件即可完成維修。所以在本設計中主要采用單片機作為主控電路,溫度傳感器采用18B20作為測溫傳感器,采集部分主要分為電壓和電流檢,其中電壓部分經過分壓電路后采用單片機自帶的AD進行采集,電流部分主要通過伏安特性原理,經過采樣電阻的采樣后通過比例運放電路測量。由于電池電壓和電流的變化是取決于負載以及自身的壽命,為了便于測量本設計測量方案主要分為兩種,其中一種是測量電池實際的電壓和電流,另外一種通過電位器來模擬電池的變化。單片機采用STM32F103作為主控芯片,顯示屏采用LCD1602,報警器采用三極管驅動的蜂鳴器,溫度傳感器采用18B20,電流采樣使用lm358作為運放。
圖2-1 系統框圖
2.2單片機電路設計
經過主控方案的對比,決定采用單片機系統作為設計的主控芯片,由于設計需要采集模擬量,結合自身能力考慮,最終采用STM32F103作為主控芯片,該芯片是一款基于arm內核的32位處理芯片,支持傳統的指令集,內部通過PLL方式使得系統頻率最高能達到72MHZ,該芯片的硬件資源也比較豐富,存在9個通訊接口、兩個USB轉TTL接口、支持多種下載方式,內部含有RC振蕩器,也可通過外接8MHZ至晶振實現程序的精準運行。
圖2-2 系統的核心板電路圖
主控芯片是整個系統的核心部分,由于設計需要采集模擬量,對精度有所要求,所以制作和設計一個完整的核心板電路是設計的關鍵,圖2-2所示是系統的核心板電路圖,主控芯片的型號是STM32F103C8T6,設計采用8兆赫茲的無源外部晶振,經過PLL方式將系統的工作頻率穩定在72兆赫茲,由于無源晶振啟動要求需要有匹配電容,所以在設計中采用C9、C10兩顆22pF的起振電容,BOOT0和BOOT1是單片機啟動方式的選擇模式開關,將兩個接口均通過R10、R14下拉電阻和GND連接,使得系統的啟動方式為閃存啟動模式, R 1、C2、S1為系統的復位電路,當系統存在死機或者程序紊亂的情況下,按下S1可以使得系統發生復位,重新開始運行,在常見的控制系統中,一般采用的電源均為5V,而STM32的供電電壓為3.3V為了匹配常見的電路,所以在芯片核心板上增加了穩壓芯片,能夠將5V的直流電轉化為STM32能夠正常運行的3.3V。
2.3 LCD顯示設計
2.3.1 顯示屏選型
在本設計中為了能夠顯示電壓電流的數據,使得用戶能夠直觀的查看,所以在設計中增加了顯示屏電路,顯示部分主要分為數碼管、oled和LCD三類顯示方式,數碼管電路具有結構簡單成本低的優點,但是數碼管的驅動電路占用的硬件資源較多,尤其在本設計中需要顯示電壓電流和溫度等多個數據,需要采用多個數碼管進行顯示,由于數碼管驅動是動態顯示,當數碼管的段數越多,最終顯示出的數字就會發生頻閃,使得系統的數據顯示不夠穩定。oled顯示屏具有分辨率高,能夠顯示出高分辨率的圖片,并且能夠實現多種顏色文字的顯示,其功耗也較低,但是成本較為高,不利于設計的推廣。LCD顯示屏是一款自帶背光的顯示屏幕,其功耗較大并且無法顯示出圖片和顏色,經過對比本設計主要側重的是數據顯示對系統的功耗要求不大,為了便于后期的推廣和降低整體成本,最終采用了LCD顯示屏。
2.3.2 LCD1602電路設計
LCD1602液晶顯示屏是一種字符型液晶顯示電路,能夠顯示字符數字以及標點符號的點陣型液晶屏幕,1602內部存儲器存儲了160多個不同類型的字符和圖形,包含了數字字母以及常用的標點符號。其中每個字符都有對應的編碼,單片機控制時,只需要將對應的編碼存入對應的地址,就能夠顯示出相應的字符,例如顯示‘A’字符,只需要在對應的地址存入01000001B,就能顯示出‘A’,由于1602是能夠識別ASCII碼,所以通過單片機編程直接將對應的ASCII碼進行賦值就能夠顯示出對應的數據,例如如需顯示‘A’直接通過單片機對變量進行賦值 LCD_Write_String(4,0,"C");圖2-3為 LCD顯示電路,其中電源管腳和外部輸入電源直接連接, D0-D7端口和單片機的PA端口連接, Rt2是電位器,主要目的是可以調節顯示屏的背光亮度,使得系統能夠適應更廣泛的應用場合。
圖2-3 LCD顯示電路
2.4 電池電壓電流檢測設計
2.4.1電壓檢測電路設計
電壓檢測電路需要涉及到模擬量的檢測,在本設計中可以采用STM32的內部adc電路進行采集,STM32的adc是12位逐次逼近型模擬轉數字電路,逐次逼近型電路也叫逐次漸進型,其轉換的思路是將采集到的模擬量,從高位到低位進行逐次的比較,如果最高位相等,則保持該狀態,如果不相等,則對該寄存器進行清零,循環整個過程直到將所有位的數據都比較完畢,最終得出數字量的輸出, STM32是能夠實現12位的精度,即能夠將采集到的電壓分成4096份,如果輸入量是0~5V,那么精度就是5/4096=0.0012V;
在STM32中AD轉換的部分主要有4個: AD轉換器、模擬量輸入、引腳、數字量輸出;其中模擬量的輸入一般是電壓、光照等自然量,其特性是隨時間連續變化,像這種的自然量和單片機的管腳進行連接,可以將模擬量輸入給AD轉換器, AD轉換器有外部的基準電壓可以通過改變基準電壓,進而改變自然量的變化幅值,最終可以將模擬量轉換成數字量輸送至對應的寄存器中。圖2-4 為ADC轉換電路,框圖1是AD轉換器的核心部分,將數據進行處理,框圖2是外部基準電壓,通過外部電源調節adc的轉換精度,框圖3是adc的輸入管腳,STM32主要分為10個外部AD,分別是PA0-PA8以及PB0、PB1;在本設計中,由于LCD1602占用了PA端口,所以電壓電流輸入量主要是通過PB端口進行轉換。
圖2-4 ADC轉換電路
2.4.2電流檢測電路設計
圖2-5 電流轉換電路
電流檢測電路主要目的是將電流轉換成電壓,再通過2.4.1章節的電壓采樣進行采集,主要原理是通過伏安特性將電流進行轉換,伏安特性是指在對應的元器件的兩端施加電壓,由于對應元器件的參數已知,可通過施加的電壓得到通路的電流,基于這個原理可以在被測的通路上施加一個電阻,通過測量該電阻兩端的電壓和阻值進行比值即可得到電流,由于需要保證采集的電壓不會過大并且不能對待測的通路產生過大的內阻,所以采樣電阻的組織應當盡可能的小,在本設計中采用0.05歐的采樣電阻,以采樣的電壓范圍0-5V為例,該電路所能測的電流范圍為0-100A,由于絕大多數情況下電流所產生的電壓數值較小,所以在設計中需要采用放大電路對所采得的電壓進行放大,關系式為Vo=(1+R3/R2)Vi;
2.5 電池溫度檢測設計
采集物體表面溫度的方式有很多,絕大多數的蓄電池溫度是通過熱電耦進行采集,其優點是測量范圍廣,但是由于熱電偶采集電路較為復雜并且成本較高,在本設計中需要測量的為普通鋰電池,其工作時所產生的溫度范圍較低,為了便于測量以及系統的穩定,所以采用DS18B20作為溫度采集電路,該電路能夠測量的范圍是-50度到正130度。
DS 18B20是一款單總線溫度傳感器,其整體除了電源線之外,只有一根數據線,實現數據的采集和控制,溫度的數據分為高位和低位,分別存儲在TH、TL兩個寄存器當中。測溫原理2-6所示,通過兩個溫度系數的振蕩器產生的不同頻率分別給不同的計數器進行計數,其中低溫度系數振蕩器,受溫度的影響較低,所以當溫度發生變化時,高溫度系數振蕩器輸出的頻率會發生明顯變化,計數器通過檢測振蕩器頻率的變化,即可得到當前溫度變化的范圍,
圖2-6 溫度采集電路
2.6 電源電路設計
由于設計需要驅動顯示屏顯示以及單片機的工作,所以需要采用外部電源,考慮到使用便捷,可以采用外部USB線供電的方式。其中由于輸入的電壓過高,而單片機需要使用5伏進行供電,所以設計中需要額外增加穩壓電路,將較高的電壓通過穩壓電路進行轉換為5伏給單片機和顯示屏等系統進行供電。圖2-7為電源模塊電路圖。
圖2-7 電源模塊電路圖
2.7 報警電路設計
由于蜂鳴器內部含有線圈,所需要的驅動電流較大,而單片機的輸出電流不足以驅動蜂鳴器發聲鳴叫,所以需要對單片機的輸出進行擴流,擴流的常見方法,就是通過三極管進行控制為了避免蜂鳴器在系統開機的瞬間發生鳴叫,所以在本系統中采用PNP的三極管,是由于PNP三極管的基極,需要低電平進行控制,所以單片機上電瞬間即便輸出了高電平對蜂鳴器沒有影響,可以有效的解決蜂鳴器鳴叫的問題。系統中蜂鳴器采用單片機的管腳進行驅動,當檢測到電壓、電流、溫度超過限定值時,單片機的管腳會由高電平改為低電平輸出。報警模塊的硬件原理圖如圖2-8所示。
圖2-8 報警電路
3. 軟件系統設計
3.1系統環境簡介
系統軟件設計采用C語言編程,編譯環境為keil。keil 是美國Keil Software 公司出品的ARM 系列兼容單片機C 語言軟件開發系統和匯編相比,C 在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。Keil軟件提供豐富的庫函數和功能強大的集成開發調試工具,在開發大型軟件時更能體現高級語言的優勢。
3.2 單片機程序設計
系統主要是由單片機采集程序,顯示屏驅動程序、蜂鳴器報警程序、溫度采集程序、以及電壓電流檢測程序,主體流程是通過電壓電流電路檢測對應的參數,并采集當前的電池溫度,單片機將對應的參數通過顯示屏顯示出來,并與存儲的報警閾值進行比對,如果測量的數據大于所存儲的閾值,則驅動蜂鳴器發聲報警提醒用戶進行修改,主程序流程圖如圖3-1所示。
圖3-1 主程序流程圖
3.3 LCD顯示程序設計
首先設置顯示模式,設置第(x,y)個字符的DDRAM的地址,為15×2顯示,因為液晶顯示為15列,所以x位置的范圍是0到15,同理,因為顯示2行,所以y位置的范圍是0到1。顯示子程序流程圖3-2。
圖3-2 顯示子程序流程圖
顯示部分的原理主要是通過修改顯示區域的地址,通過改變對應地址的寄存器中的數據來實現數據的顯示,例如當D/I=1時,在下降沿作用下,圖形顯示數據寫入DR,或在E信號高電平作用下由DR讀到DB7-DB0數據總線。DR和DDRAM之間的數據傳輸是模塊內部自動執行的,例如 write_string(1,5,"ab cd ef;")主要的意義就是在顯示屏的第1行,第5列顯示“abcdef”6個數據。
3.4 電壓電流檢測程序設計
圖3-3為電壓電流采集程序流程圖,由于電流檢測通過硬件已經將電流轉換為電壓,所以設計主要是電壓檢測程序設計,系統上電后進行初始化并打開中斷檢測,PB0、PB1管角檢測電壓數值是否變化,如果發生變化,則啟動中斷開始進行adc轉換, Adc測量的范圍是基準電壓的范圍VREF-≤VIN≤VREF+,將基準電壓0與3.3V進行連接,所測得的外部電壓范圍就為0-3.3V,如果adc的轉換通道不同,則需要不同的中斷函數進行處理,在本設計中,兩路adc均為PB通道,所以無需SQR1、SQR2、SQR3寄存器來修改中斷處理函數。 adc的開始采集是需要通過起始信號進行觸發,通過配置CR2的寄存器,ADON位就可以控制adc的啟停,置1時開始進行adc轉換,置0時停止轉換,此外還可以通過內部定時器進行觸發以及外部電壓進行觸發,在本設計中,由于電池電壓和電流的數據會時刻改變,所以設計主要通過定時器進行定時采集,圖3-4 為ADC控制寄存器。 adc轉換的一個重要指標為轉換時間,轉換時間代表著每次進行完整轉換流程所需的時間,這個時間主要取決于輸入的晶振頻率以及時鐘周期,也決定了采樣數據的精度和穩定性, ST M32的adc是掛載在APB2中,所以對應的adc轉換頻率是通過PCLK2將時鐘頻率進行分頻,采樣的周期可以通過adc的寄存器ADC_SMPR1 和 ADC_SMPR2 來進行配置,配置的最小周期是1.5個時鐘周期,由于時鐘頻率為72MHz,所以1.5個時鐘,周期所得出的轉換時間最短為1.17微秒。
由于轉換后的數字量是12位的二進制數據,而顯示屏所需要顯示的是十進制數據,所以需要將該二進制數據進行轉換,例如待測的電壓是0~3.3V,經過adc采樣后所得出的數據是0~4096,經過比例公式可以得出實際數據為adcx2 = 3300000/4096*adcx2/1000;
圖3-3 電壓電流采集程序流程圖
圖3-4 ADC控制寄存器
3.5 溫度檢測程序設計
讀取溫度數據是讀RAM中的字節,數據的尾端是有CRC校驗碼,當校驗碼發生錯誤時,單片機會自動舍棄該段數據,不對以往的數據進行修改,避免將錯誤的信息錄入顯示屏當中。讀取溫度主要分為三個時序:初始化時序、讀時序、寫時序。初始化程序是將數據線拉低500毫秒隨后釋放,DS18B20接收到下拉信號后,會將數據線拉低60毫秒,單片機通過檢測這個電平信號即可判斷傳感器連接是否正常,隨后傳感器會將采集到的數據再通過總線進行返回,而返回的數據是二進制單片機還需要將二進制碼轉換成十進制碼。圖3-5為溫度子程序流程圖。
圖3-5 溫度子程序流程圖
3.6 報警電路程序設計
報警電路主要是通過三極管進行控制,單片機只需要控制三極管的通斷即可使得蜂鳴器發聲報警,在本設計中采用的是PNP三極管,對應的基極與單片機的PB12管腳進行連接,正常情況下需要將PB12管腳電平置為高電平,使得三極管截止,當數據超限時,可以將PB12管腳電平置為低電平,此時三極管導通,使得蜂鳴器與電源連接發生報警。if(adcx1<2000||adcx2>1500||temperature/10>40)BEEP=0;;
附錄
程序編譯圖
整體電路圖
文獻
[1]蔣久明,樊巧玲,張京卯,郭亮,石磊,郭琦.一種保護電池過放電的微功耗電路設計[J/OL].現代電子技術:1-7[2022-04-16].
[2]馬曉濤.鋰電池管理系統單體電壓采樣斷線檢測功能的分析[J].電工電氣,2021(08):53-56.
[3]鐘志賢,劉珺,包愛民,姜維,繆蕊.基于STC單片機的電池電壓監測報警器[J].電子設計工程,2021,29(15):40-44.DOI:10.14022/j.issn1674-6236.2021.15.009.
[4]王黎雯,郭佩,何鵬林,陳迪.鋰電池檢測實驗室認可關鍵要求[J].安全與電磁兼容,2017(06):21-22+34.
[5]莫慧芳.鋰電池檢測系統的設計[J].自動化技術與應用,2016,35(06):139-140+144.
[6]沈鳴飛,施敏杰,周航.基于STM32的UPS電池實時檢測系統設計[J].科技風,2016(01):55-56.DOI:10.19392 1671-7341.2016.01.049.
[7]陳巍,王國富,張法全,葉金才.基于ARM電池檢測管理系統的設計與實現[J].電視技術,2015,39(05):61-64+82.DOI:10.16280/j.videoe.2015.05.016.
[8], 電池檢測、修復及評估技術研究應用. 遼寧省,國網遼寧省電力有限公司電力科學研究院,2015-01-16.
[9]朱艷秋. 鋰離子電池測控系統設計與仿真[D].哈爾濱理工大學,2014.
|