|
網(wǎng)上看到的1-wire總線的驅(qū)動代碼 給需要幫助的人
制作出來的實(shí)物圖如下:
可以做成的商品.jpg (144.99 KB, 下載次數(shù): 144)
下載附件
2018-12-26 00:04 上傳
WP_20150420_002.jpg (2.16 MB, 下載次數(shù): 127)
下載附件
2018-12-26 00:04 上傳
1991M02X22手上有兩塊華碩手機(jī)的電池,都是報(bào)廢的,已經(jīng)有點(diǎn)鼓了,電池已經(jīng)沒什么容量了,但是里面的保護(hù)板應(yīng)該還是好的
尤其是原廠電池,保護(hù)板應(yīng)該不會偷工減料,就拆了出來準(zhǔn)備留做備用,報(bào)廢電池芯留著是個(gè)隱患,還是早些扔掉的好。
拆完了發(fā)現(xiàn),這個(gè)保護(hù)板有點(diǎn)特別,上面是三個(gè)芯片,兩個(gè)SSOP-8,一個(gè)SOT23-6,而且電池是4線輸出的,
仔細(xì)觀察,一個(gè)芯片上面寫著2780,旁邊還有一個(gè)0.02Ω 電阻,這不是MAXIM的電量計(jì)芯片DS2780嘛,想不到居然在這里碰到了。
DS2780用于測量可充電鋰離子和鋰離子聚合物電池的電壓、溫度和電流,并估算剩余電量。用于計(jì)算的電池特性參數(shù)和應(yīng)用參數(shù)存儲在片上EEPROM中。根據(jù)電流溫度特性、放電速率、存儲電荷與應(yīng)用參數(shù)對可用電量進(jìn)行估算。要知道,有些電池的放電曲線非常平緩,單純靠測量電池端電壓判斷電池容量并不準(zhǔn)確,而這個(gè)芯片可以計(jì)量經(jīng)過電池的電量,充進(jìn)多少電,放出多少電,里面還有多少電,它都能記錄下來,配合設(shè)備上的MCU就可以很精確的知道電池里的剩余電量了。
有點(diǎn)像銀行存款,存入多少,取出多少,賬戶里省多少,一看賬單一清二楚。
就是這么個(gè)保護(hù)板

還剩下一個(gè)電池,先別拆了,通過已經(jīng)拆下的保護(hù)板測出了DS2780的信號線端口,
按此給電池上焊上線,紅色正極,黑色負(fù)極,藍(lán)色數(shù)據(jù)線DQ
DS2780采用1-Wire接口,一根線完成通信,好像是美信的獨(dú)家專利
為了能夠接駁電腦,專門跑去買了一顆UART轉(zhuǎn)1-Wire芯片,DS2480
現(xiàn)做了一個(gè)UART轉(zhuǎn)1-Wire模塊,DS2480目前已經(jīng)停產(chǎn)了,市場上貨源不多
這顆花了我18大洋
上位機(jī)的軟件采用美信官方的DS2780評估板測試軟件
顯示電池電壓,電流,容量等信息,還能對DS2780內(nèi)部EEPROM進(jìn)行讀寫
設(shè)置電池參數(shù)等
接上電,軟件很快就顯示出了電池信息
現(xiàn)在電池空載
電壓3.8552V,電流1.9531mA,剩余容量564.6875mAhr,溫度29.25攝氏度
容量還有大約一半,這個(gè)電池標(biāo)稱是1300mAh的

用萬用表測量了下電池電壓,3.85V,看來還是很準(zhǔn)確的

接了一個(gè)10Ω 10W電阻對電池放電

放電時(shí)軟件顯示的信息

放電半小時(shí)后

又過了大約1小時(shí),放完電了,這個(gè)電池的保護(hù)板在電池電壓降到3.3V左右時(shí)開始保護(hù)
自動切斷電路,空載的電池電壓在3.6V,電池里還剩余大約162mAhr的電量。
下面看看充電,這是USB的5V通過一個(gè)10Ω電阻給鋰電池充電
電流120mA,剩余電量也開始回升
用USB直接充電速度太慢,而且不安全,接入自制的TP4056充電板
設(shè)定的是400mA,顯示385mA,是設(shè)定電阻的誤差引起的
這個(gè)軟件還能記錄文本日志
可以根據(jù)需要調(diào)整采樣時(shí)間
這是記錄下來的電池充放電情況,這里全是放電記錄
充電進(jìn)行中,電池電壓接近4.1V,充電電流明顯下降
可以看出,已經(jīng)充進(jìn)去600mAhr的電量
電池電壓接近4.2V,電流持續(xù)下降中,充入大約800mAhr的電量,按這么算
這個(gè)電池容量在1000mAh左右,是標(biāo)稱容量的76%左右
看起來損耗不多,但是智能手機(jī)已經(jīng)沒法用了
最后是DS2780電路圖,這個(gè)芯片的外圍電路很簡單,而且只需要一根
信號線就可以和上位機(jī)通信了。
查了一下,這個(gè)芯片價(jià)格在15-20元左右,要是熟悉單片機(jī)編程,用這個(gè)芯片來監(jiān)測鋰電池應(yīng)該還是不錯(cuò)的
結(jié)束!謝謝賞評!
STM32單片機(jī)源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart.h"
- #include "ds18b20.h"
- int main(void)
- {
- u8 t=0;
- short temperature;
- delay_init(); //延時(shí)函數(shù)初始化
- NVIC_Configuration(); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
- uart_init(9600); //串口初始化為9600
- LED_Init(); //LED端口初始化
- LCD_Init(); //LCD初始化
- KEY_Init(); //KEY初始化
-
- // POINT_COLOR=RED;//設(shè)置字體為紅色
- // LCD_ShowString(60,50,200,16,16,"WarShip STM32");
- // LCD_ShowString(60,70,200,16,16,"DS18B20 TEST");
- // LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
- // LCD_ShowString(60,110,200,16,16,"2012/9/12");
-
-
- while(DS18B20_Init()) //DS18B20初始化
- {
- // LCD_ShowString(60,130,200,16,16,"DS18B20 Error");
- // delay_ms(200);
- // LCD_Fill(60,130,239,130+16,WHITE);
- delay_ms(200);
- printf("not find");
- }
- //writeacr();
-
- // LCD_ShowString(60,130,200,16,16,"DS18B20 OK");
- // POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色
- // LCD_ShowString(60,150,200,16,16,"Temp: . C");
- while(1)
- {
- if(t%10==0)//每100ms讀取一次
- {
- printf("\t%d", current());
-
- // temperature=DS18B20_Get_Temp();
- // printf("%d\t",temperature);
- // if(temperature<0)
- // {
- // LCD_ShowChar(60+40,150,'-',16,0); //顯示負(fù)號
- // temperature=-temperature; //轉(zhuǎn)為正數(shù)
- // }else LCD_ShowChar(60+40,150,' ',16,0); //去掉負(fù)號
- // LCD_ShowNum(60+40+8,150,temperature/10,2,16); //顯示正數(shù)部分
- // LCD_ShowNum(60+40+32,150,temperature%10,1,16); //顯示小數(shù)部分
- }
- delay_ms(10);
- t++;
- if(t==20)
- {
- t=0;
- LED0=!LED0;
- }
- }
- }
復(fù)制代碼
0.png (43.15 KB, 下載次數(shù): 132)
下載附件
2018-12-26 00:09 上傳
所有程序51hei提供下載(管理提醒:多人貼貼說此文件缺原理圖,請謹(jǐn)慎下載):
電池容量檢測芯片ds2780底層驅(qū)動.rar
(4.57 MB, 下載次數(shù): 446)
2018-12-25 10:44 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|