QPNP 8909 8916 充電相關(1)【轉】

来源:https://www.cnblogs.com/linhaostudy/archive/2019/09/26/11590720.html
-Advertisement-
Play Games

最近一直在搞電源管理相關內容,之前是8610的bms,現在8916的bms,發現兩者還是有點區別的,8916把對last_ocv_uv的估值演算法分裝成執行文件,作為服務一直運行。 電源管理方面,應該是Android驅動開發的一大難點,主要涉及的方面多,如充、放電、休眠喚醒等。這一部分主要講BMS相關 ...


最近一直在搞電源管理相關內容,之前是8610的bms,現在8916的bms,發現兩者還是有點區別的,8916把對last_ocv_uv的估值演算法分裝成執行文件,作為服務一直運行。

電源管理方面,應該是Android驅動開發的一大難點,主要涉及的方面多,如充、放電、休眠喚醒等。這一部分主要講BMS相關的一些基本概念。電池這一塊剛開始入手時,感覺很難,很複雜,完全不知道如何入手,後來搞久了,才發現,是對電池一些基本的知識,在腦海中缺少相關的概念,所以才感覺難,這裡主要是介紹一些相關的術語與知識。

1. 相關的名詞

術語 全稱 註釋
FCC Full-Charge Capacity 滿電荷電量
UC Remaining Capacity RC 剩餘電量
CC Coulumb Counter 電量計
UUC Unusable Capacity 不可用電量
RUC Remaining Usable Capacity RUC=RC-CC-UUC,剩餘可用電量
OCV Open Circuit Voltage 開路電壓,電池在開路狀態下的端電壓稱為開路電壓
SoC State of Charge 電量百分比
PC Percentage Charge 剩餘電荷占FCC百分比

2. 相關的代碼

  • kernel\drivers\power\Qpnp-vm-bms.c//電池BMS演算法
  • kernel\drivers\power\Qpnp-linear-charger.c//電池充電相關的代碼
  • batterydata-XX_3000mah.dtsi//電池相關的參數
  • Msm-pm8X16.dtsi//針對PMU晶元,進行的相關設置

其他一些的代碼就不一一列出來,其實高通的代碼還是比較好的,基本大部分的文件都會.txt的介紹文檔,我個人建議在不管調什麼模塊,

看到有與之對應的.txt說明文檔,都應該去看一下,起碼對一些基本的概念有個瞭解。

3. 相關的原理

3.1 BMS 主要任務

  1. 防止過充
  2. 避免深放
  3. 溫度控制
  4. 電池組件電壓和溫度的均衡
  5. 預測電池的SOC
  6. 電池診斷
  7. 總電壓及單體電壓測量
  8. 總電流及單體電流測量
  9. 報警
  10. 通信SOC

方法:能量積分 + 誤差矯正 (大眾化技術,準確性高。)

傳統的電池電量測試方法有:密度法,開路電壓法,內阻法和安時法等。

新型演算法有:自適應神經模糊推斷模型、模糊邏輯演算法模型、線性模型法、阻抗光譜法和卡爾曼濾波估計模型演算法 。

3.2 開路電壓法

通過實驗方法描述在不同放電電流情況下的電池的端電壓與電池的剩餘能量的關係曲線,並存儲特征關係曲線。

實時採樣電池放電時的端電壓,查表求出電池的剩餘能量,同時考慮電池的使用壽命以及內阻對電池SOC的影響,對求得的電池剩餘能量

進行校正。 優點:簡單易行。 缺點:但是需要電池長時間靜置,不能滿足線上檢測的要求。soc>40%,阻抗變化很小。

3.3 8916的BMS的相關思路:

3.3.1 PMU通過PMIC匯流排讀取電池的AD值,通過一個數據運算轉化為電壓值。

3.3.2 在不同的電池參數文件中,都有相對應的表,

pc-temp-ocv-lut,為溫度、SOC對應得電壓表,PMU8916獲取的電壓值,通過查該表,在溫度和電壓下,可得到當前的SOC。

rbatt-sf-lut,為溫度、soc對應的電池內阻表,這裡主要考慮內阻的影響,對OCV的修正,new_ocv=ocv+rbatt(內阻)*current(當前電流)。

fcc-temp-lut,為溫度對應的fcc表,ibat-acc-luit,為溫度、電流對應的acc表,這兩個是起到修正SOC的作用,相關計算為:

soc_uuc = ((fcc - acc) * 100) / fcc,fcc、acc均為查表所得,

soc_acc = DIV_ROUND_CLOSEST(100 * (soc_ocv - soc_uuc),(100 - soc_uuc)); //最終soc_acc,為上報的SOC

3.3.3 PMU8916的bms演算法和PMU8612的有區別,其中對last_ocv_uv的估值計算的源碼已經不開放,在monitor_soc_work的工作線程,

會上報事件uevent,當HAL層,收到消息,然後調用getprop的方法,獲取相關的參數,如,電阻、電流、fcc、acc等,來估算出last_ocv_uv,然後調用setprop,把該值設下去,並啟動工作線程,根據last_ocv_uv,查表得到soc,並經過修正SOC,並再次上報事件,迴圈下去。這個估值演算法,我猜可能是一套學習演算法,具體的沒有源碼,不清楚,只知道它把演算法變為.bin文件,用了binder機制,作為服務一直運行。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 飛思卡爾(現恩智浦)自2017年推出i.MXRT系列MCU以來,至今已發佈數款新品(RT1050、RT1020、RT1060...),每一款晶元都配套了EVK板,下圖是截止目前所有EVK的板載資源的對比,今天痞子衡就選擇其中資源最豐富的MIMXRT1060-EVK來具體聊一聊。 ...
  • 一、 鏡像下載 國內源下載鏡像:(推薦) http://mirrors.aliyun.com/centos/8.0.1905/isos/x86_64/CentOS-8-x86_64-1905-dvd1.iso 國外源下載鏡像:(不建議) http://mirror.qoxy.com/centos/8 ...
  • 在Windows中,系統進程,資源管理都是通過可視化操作實現的,如下為Windows經典的可視化系統資源管理,其中,作為開發人員或伺服器運維人員, 查看系統系統,系統進程,系統性能和系統伺服器是三個重要的參考因素。 然而,在linux系統中,如何實現這些操作呢?本篇文章將從操作的角度,簡要分析liu ...
  • 總結於 "《鳥哥的 Linux 私房菜 基礎學習篇》" ,圖片也來自於此。 <! 可在「閱讀原文」中查看其他核心筆記:如 Git 等 核心思想 目錄樹結構(directory tree) Linux 系統是基於目錄樹結構的,這是它的核心思想 。目錄,即文件夾。Linux 系統相當於一個文件夾,Lin ...
  • 最近遇到一個問題,由於兩台伺服器時間的問題,經常導致用戶登錄由於時間差問題而報錯,再三百度,最後整理了一下修改linux定時同步的操作(本方法適用於有自己時間伺服器,沒有的只限於借鑒) 首先確認,我們的服務是否已經安裝了ntp服務 如果沒有安裝,需要先安裝ntp服務 安裝完ntp之後,編輯ntp.c ...
  • console.log("運行自定義腳本"); 安裝工具 我的機器環境是: ,開始之前,得在機器上面安裝一些工具: [x] gcc [x] binutils (readelf,objdump) 因為我在自己的機器上面安裝了 brew 這個包管理工具,以及 這個 Shell ,所以我就通過 就安裝好了 ...
  • 最小化centos 安裝基礎命令: 常用的基礎命令如下 yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre \ pcre-devel openssl openssl-devel zip unzip zlib-devel net-to ...
  • MYSQL(mariadb) 方法1:yum安裝mariadb Red Hat Enterprise Linux/CentOS 7.0 發行版已將預設的資料庫從 MySQL 切換到 MariaDB 第一步:添加 MariaDB yum 倉庫 第二步:在 CentOS 7 中安裝 MariaDB 第三 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...