欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 電池容量檢測芯片ds2780底層驅動(STM32源程序與資料) [打印本頁]

作者: tk.minh    時間: 2018-12-25 10:44
標題: 電池容量檢測芯片ds2780底層驅動(STM32源程序與資料)
網上看到的1-wire總線的驅動代碼  給需要幫助的人
制作出來的實物圖如下:


1991M02X22手上有兩塊華碩手機的電池,都是報廢的,已經有點鼓了,電池已經沒什么容量了,但是里面的保護板應該還是好的
尤其是原廠電池,保護板應該不會偷工減料,就拆了出來準備留做備用,報廢電池芯留著是個隱患,還是早些扔掉的好。
拆完了發現,這個保護板有點特別,上面是三個芯片,兩個SSOP-8,一個SOT23-6,而且電池是4線輸出的,
仔細觀察,一個芯片上面寫著2780,旁邊還有一個0.02Ω 電阻,這不是MAXIM的電量計芯片DS2780嘛,想不到居然在這里碰到了。
DS2780用于測量可充電鋰離子和鋰離子聚合物電池的電壓、溫度和電流,并估算剩余電量。用于計算的電池特性參數和應用參數存儲在片上EEPROM中。根據電流溫度特性、放電速率、存儲電荷與應用參數對可用電量進行估算。要知道,有些電池的放電曲線非常平緩,單純靠測量電池端電壓判斷電池容量并不準確,而這個芯片可以計量經過電池的電量,充進多少電,放出多少電,里面還有多少電,它都能記錄下來,配合設備上的MCU就可以很精確的知道電池里的剩余電量了。
有點像銀行存款,存入多少,取出多少,賬戶里省多少,一看賬單一清二楚。


就是這么個保護板


還剩下一個電池,先別拆了,通過已經拆下的保護板測出了DS2780的信號線端口,
按此給電池上焊上線,紅色正極,黑色負極,藍色數據線DQ


DS2780采用1-Wire接口,一根線完成通信,好像是美信的獨家專利
為了能夠接駁電腦,專門跑去買了一顆UART轉1-Wire芯片,DS2480
現做了一個UART轉1-Wire模塊,DS2480目前已經停產了,市場上貨源不多
這顆花了我18大洋


上位機的軟件采用美信官方的DS2780評估板測試軟件
顯示電池電壓,電流,容量等信息,還能對DS2780內部EEPROM進行讀寫
設置電池參數等
接上電,軟件很快就顯示出了電池信息
現在電池空載
電壓3.8552V,電流1.9531mA,剩余容量564.6875mAhr,溫度29.25攝氏度
容量還有大約一半,這個電池標稱是1300mAh的

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

接了一個10Ω 10W電阻對電池放電

放電時軟件顯示的信息

放電半小時后

又過了大約1小時,放完電了,這個電池的保護板在電池電壓降到3.3V左右時開始保護
自動切斷電路,空載的電池電壓在3.6V,電池里還剩余大約162mAhr的電量。


下面看看充電,這是USB的5V通過一個10Ω電阻給鋰電池充電
電流120mA,剩余電量也開始回升



用USB直接充電速度太慢,而且不安全,接入自制的TP4056充電板
設定的是400mA,顯示385mA,是設定電阻的誤差引起的



這個軟件還能記錄文本日志
可以根據需要調整采樣時間
這是記錄下來的電池充放電情況,這里全是放電記錄
充電進行中,電池電壓接近4.1V,充電電流明顯下降
可以看出,已經充進去600mAhr的電量


電池電壓接近4.2V,電流持續下降中,充入大約800mAhr的電量,按這么算
這個電池容量在1000mAh左右,是標稱容量的76%左右
看起來損耗不多,但是智能手機已經沒法用了


最后是DS2780電路圖,這個芯片的外圍電路很簡單,而且只需要一根
信號線就可以和上位機通信了。
查了一下,這個芯片價格在15-20元左右,要是熟悉單片機編程,用這個芯片來監測鋰電池應該還是不錯的
結束!謝謝賞評!


STM32單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"         
  7. #include "ds18b20.h"


  8. int main(void)
  9. {         
  10.         u8 t=0;                           
  11.         short temperature;               

  12.         delay_init();                     //延時函數初始化         
  13.         NVIC_Configuration();          //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  14.         uart_init(9600);                 //串口初始化為9600
  15.          LED_Init();                             //LED端口初始化
  16.         LCD_Init();                    //LCD初始化
  17.         KEY_Init();                                 //KEY初始化

  18. //          POINT_COLOR=RED;//設置字體為紅色
  19. //         LCD_ShowString(60,50,200,16,16,"WarShip STM32");        
  20. //         LCD_ShowString(60,70,200,16,16,"DS18B20 TEST");        
  21. //         LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
  22. //         LCD_ShowString(60,110,200,16,16,"2012/9/12");                  
  23.          
  24.          
  25.          while(DS18B20_Init())        //DS18B20初始化        
  26.         {
  27. //                 LCD_ShowString(60,130,200,16,16,"DS18B20 Error");
  28. //                 delay_ms(200);
  29. //                 LCD_Fill(60,130,239,130+16,WHITE);
  30.                  delay_ms(200);
  31.                 printf("not find");
  32.         }                        
  33. //writeacr();
  34.         
  35. //         LCD_ShowString(60,130,200,16,16,"DS18B20 OK");
  36. //         POINT_COLOR=BLUE;//設置字體為藍色
  37. //          LCD_ShowString(60,150,200,16,16,"Temp:   . C");         
  38.         while(1)
  39.         {                        
  40.                  if(t%10==0)//每100ms讀取一次
  41.                 {               
  42.                         printf("\t%d", current());

  43.                         
  44. //                         temperature=DS18B20_Get_Temp();
  45. //                         printf("%d\t",temperature);
  46. //                         if(temperature<0)
  47. //                         {
  48. //                                 LCD_ShowChar(60+40,150,'-',16,0);                        //顯示負號
  49. //                                 temperature=-temperature;                                        //轉為正數
  50. //                         }else LCD_ShowChar(60+40,150,' ',16,0);                        //去掉負號
  51. //                         LCD_ShowNum(60+40+8,150,temperature/10,2,16);        //顯示正數部分            
  52. //                            LCD_ShowNum(60+40+32,150,temperature%10,1,16);        //顯示小數部分                    
  53.                 }                                   
  54.                  delay_ms(10);
  55.                 t++;
  56.                 if(t==20)
  57.                 {
  58.                         t=0;
  59.                         LED0=!LED0;
  60.                 }
  61.         }
  62. }
復制代碼


所有程序51hei提供下載(管理提醒:多人貼貼說此文件缺原理圖,請謹慎下載):
電池容量檢測芯片ds2780底層驅動.rar (4.57 MB, 下載次數: 446)



作者: baiyang314    時間: 2019-2-13 10:57
zhichi  支持
作者: 213333    時間: 2019-2-13 15:37
謝謝樓主給出的資料!先學習一下
作者: dasme    時間: 2019-2-14 22:13
好想知道那個檢查電阻能不能選1豪歐?版主能否告知?
作者: liguang70217    時間: 2019-2-17 19:30
謝謝樓主                                 
作者: lixiaolong7223    時間: 2019-3-29 15:09
謝謝樓主給出的資料!先學習一下
作者: 龜頭剩    時間: 2019-3-31 11:23
不錯,資瓷。
作者: qypt_klzeng    時間: 2019-4-30 16:49
樓主,這程序是溫度傳感器的例程,不是電池電量監控顯示的吧
作者: binkui227    時間: 2019-5-1 18:51
很不錯的diy資料
作者: ealoo    時間: 2019-5-4 18:05
不錯,進來學習下
作者: 18748420942    時間: 2019-5-10 18:08
有2780和stm32的連接電路圖嗎,有賞哦!
作者: AS23qq    時間: 2019-6-3 20:48
我也想學習一下這個如果接24V或者12V電池的話,怎么處理的。希望能分享一個電路圖
作者: jxndcl301    時間: 2019-6-11 15:54
學習一下
作者: w1179benp    時間: 2019-6-13 10:02
不錯不錯,學習學習.................
作者: tlhmcu    時間: 2019-8-23 23:00
感謝樓主提供這么寶貴的資料
作者: CBDcbd    時間: 2019-10-12 17:26
怎么下載下來啥都沒有?
作者: jikmio    時間: 2019-11-13 11:00
支持一下樓主
作者: 47okey    時間: 2019-11-13 11:48
好東西,不過分享的代碼好像不對?
作者: jikmio    時間: 2019-11-21 19:25
樓主有DS2780的代碼嗎,還是說DS18B20和DS2780的時序是一樣的?
作者: Sky丶藍天    時間: 2019-11-22 15:57
第一張圖看起來不錯,不過提供的資料有限還得自己琢磨一下
作者: 初雪    時間: 2020-1-4 17:19
謝謝樓主給出的資料!先學習一下
作者: hxgjindiao    時間: 2020-2-10 13:53

謝謝樓主的資料
作者: tong0210    時間: 2020-2-11 17:13
謝謝樓主給出的資料!先學習一下
作者: 淇少爺    時間: 2020-3-13 10:32
感謝樓主分享
作者: polebear1223    時間: 2020-3-27 13:23
這個資料應該不錯下載下來看看
作者: tk.minh    時間: 2020-5-20 15:05
這是在網上看到的  后面我用STC15+0.96OLED 液晶屏+DS2788有做了一款  其實基本框架不變的
有人問說怎么是DS18B20的 這是我網上找到 使用我只是轉發的
但是1-WIRE通訊的原理差不多 只是時序不對而已
作者: yyd1123    時間: 2020-9-15 14:30
這個是充放電檢測嗎
作者: flyfishworld    時間: 2021-3-7 16:04
CBDcbd 發表于 2019-10-12 17:26
怎么下載下來啥都沒有?

有的,程序在ds18b20.c文件里面,里面有測溫度,電壓和電量的函數
作者: flyfishworld    時間: 2021-3-7 16:05
剛下載下來,還沒有試,試了之后再來問問
作者: flyfishworld    時間: 2021-3-8 15:54
樓主,我試了一下你發的電量測量DS2780的程序,是沒有問題的,也能正確顯示電量,溫度。但是遇到了一個新的問題,在初始化的時候我設置的ACR電量為2600mAh, 但是如果我后面換了一塊另外的電池,同樣一個程序的情況下,怎么去測量新的電池的電量?
作者: 愛學習的小朋友    時間: 2021-3-8 16:30
看起來好厲害的感覺,頂一個,51黑有你更精彩!!!
作者: 小瑞瑞-er    時間: 2021-4-21 09:06
請問這個代碼ds2788通用嗎
作者: cooleaf    時間: 2021-4-24 20:21
電池電量顯示,有沒有不記錄充放電電流與電壓和時間數值,通過計算電壓就可大致計算出剩余容量的算法?




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1