黄金公主玩法与规则
技術熱線: 4007-888-234

PIC單片機:汽車電池電壓監控器單片機方案

更新時間: 2019-11-19
閱讀量:27

在本文中,英銳恩單片機開發工程師們分享了使用PIC單片機開發的汽車電池電壓監控器單片機方案,它可作為汽車電池及其充電系統的電子電壓監控系統。只需插入汽車的車載插座,便可在七段LED顯示器上顯示電池端子兩端的瞬時輸出電壓。

CompleteSetup.jpg

該汽車電池電壓監控器單片機方案使用Microchip的PIC16F1827是該方案的主控芯片,它使用內置的固定參考電壓(FVR)模塊來實現電池電壓的非常精確的A/D轉換。

汽車電池電壓監控器單片機方案原理和框圖

CarBattery_Block-550x355.png

正如上文所說的,這個方案只是關于制造一個精確的數字電壓表,該電壓表插入汽車的點煙器插座,并顯示電池端子兩端的瞬時電壓。關閉發動機時,此設備測得的電壓就是電池的實際輸出電壓。但是,如果引擎已啟動或汽車正在行駛,它實際上會測量來自汽車充電系統(交流發電機+整流器)的電池兩端的充電電壓。

PIC16F1827單片機電路的+ 5V電源使用穩壓器IC(例如LM7805)從汽車的電池輸出電壓(通常為+ 12V)獲得。電池端子電壓通過PIC16F1827的ADC通道測量。選擇PIC16F1827內部的FVR模塊可得出4.096 V的穩定正基準電壓,以實現精確的A/D轉換。在饋入ADC通道之前,使用分壓器網絡將電池輸出電壓縮小至參考電壓以下。測量的瞬時電池電壓顯示在4位七段式LED顯示屏上。

該方案的電路圖如下所示。PIC16F1827單片機使用AN4 ADC通道來測量汽車電池端子之間的電壓。ADC輸入通道上的R1和R2電阻創建一個簡單的分壓器網絡,以按比例縮小電池正端的輸入電壓。AN4的最大可測量輸入電壓為4.096 V(通過內部4.096 V參考電壓進行A/D轉換來限制)。因此,可以通過以下等式獲得在沒有A/D飽和的情況下可以測量的最大輸入電壓(V Battery),

4.096 V = R2 * V電池 /(R1+R2)或 V電池=16.93V。

只需降低R2的值即可增加輸入電壓的范圍。5.1 V齊納二極管與R2并聯放置,以防止單片機ADC通道上的電壓超過5.1V。否則,任何意外的高輸入電壓都可能永久損壞單片機端口。

CarBatteryCircuit-550x395.jpg

測得的電壓顯示在4位七段LED顯示屏上(共陰極)。七個段(ag)和小數點(DP)通過PIC16F1827的PORTB驅動。單片機使用內部時鐘源以500 KHz運行。ULN2003達林頓陣列為七個分段LED模塊的每個公共陰極提供電流吸收器。

PIC16F1827_Pin-550x178.png

我們可以使用LM7805穩壓器IC從汽車的車載插座(12 V輸出)獲得+5 V穩壓電源。此外,你也可以使用USB車載充電器來實現此目的。USB端口具有4個引腳(+5 V,D +,D-和Gnd)。在車載充電器中,D +和D-引腳無用。因此,我打開了USB車載充電器,將輸出D +引腳與電路的其余部分斷開,然后將其重新連接至電池的+12 V輸入。現在,我們在車載充電器的USB端口引腳中具有+5 V,Gnd,電池端子電壓和D-。然后,我使用USB-A公對B公適配器將這些信號線連接到單片機電路板上。

RewireUSBCharger.png

該方案的固件是在mikroC Pro中為PIC編譯器開發的。下面描述了從10位ADC輸出(數字,DN)獲得輸入電壓的公式。

V電池 = V ADC,IN *(R1 + R2/R2)= 4.13 * V ADC,IN

ADC的分辨率= 4.096/1024 = 4 mV/DN

V ADC,IN = DN * 4(mV)=> V電池 = 4.13 * 4 * DN(mV)= 0.0165 * DN(V)

使用內部基準電壓進行A/D轉換需要配置FVRCON和ADCON1寄存器。用于PIC編譯器的  mikroC Pro提供了一個用于A/D轉換的庫,但是默認情況下它使用電源電壓V DD作為轉換的正參考。因此,mikroC Pro for PIC的內置ADC庫對于我們的情況沒有用,我們需要編寫自己的ADC子程序。源代碼如下:

汽車電池電壓監控器單片機方案源碼.zip

以上就是英銳恩單片機開發工程師分享的汽車電池電壓監控器單片機方案。英銳恩專注單片機應用方案設計與開發,提供8位單片機、16位單片機、32位單片機、運算放大器和模擬開關。

黄金公主玩法与规则 44243685187591362742207372808171819714179604349911287415235077894698430776939820995156980111942729 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();