iic區塊鏈
Ⅰ iPhone 6s 意外關機罪魁禍首竟是它,想知道它是怎麼玩的嗎
近日,iPhone 6s意外關機事件最終以蘋果免費更換電池而告一段落,而此事件導致自動關機的直接原因,蘋果官方並沒有進行披露,而最近某微信公眾號透露了iPhone 6s關機的真正原因。他表示,經過多方請教,終於有人講出了導致這一問題的罪魁禍首-電量計。
具體來說,電量計的作用是能夠精確顯示電池的剩餘電量狀態,對於用戶的續航預期管理很重要。很遺憾很多國產機並沒有加獨立電量計,而是簡單的通過電池的電性能曲線來粗略判斷。所以很多手機一旦顯示到了10%,甚至20%電量的時候隨時會關機,而正常情況蘋果可以到了1%再關機。不過一旦電量計本身出現問題,自然全部亂套:電池明明還有電,電量計已經「矯詔」通知主控關機休息。
那麼,電量計是如何監測設備電量的呢?它的工作原理是什麼?市場上主要用哪些典型的電量計晶元呢?下面隨小編一起詳細了解一下吧。
電量計如何監測設備電量?
在現在設備中,大致有三種類型監測方法的電量計:
1
電壓測試法
這是最早應用的方法,即通過監視電池開路電壓來獲得剩餘容量。這是因為電池端電壓和剩餘容量之間有一個確定的關系,測量電池端電壓即可估算其剩餘容量。這種方法的局限是:
1) 對於不同廠商生產的電池,其開路電壓與容量之間的關系各不相同。
2) 只有通過測量電池空載時的開路電壓才能獲得相對准確的結果,但是大多數應用都需要在運行中了解電池的剩餘容量,此時負載電流在內阻上產生的壓降將會影響開路電壓測量精度。而電池內阻的離散性很大,且隨著電池老化這種離散性將變得更大,因此要補償該壓降帶來的誤差將十分困難。
從下圖中我們也可以看到,電池的電量和電壓不是線性關系的,所以這種測試方法並不精準,電量測量精度僅僅超過20%。尤其是電池電量低於50%時,手機的電量計算將會變得非常不準確。所以這種方法對電池的保護是非常有限的。
綜上所述,通過開路電壓來實時估算電池剩餘容量的方法在實際應用中無法達到足夠的精度,只能提供一個大致的參考值。由於目前的科技各個方面的提升,要求也在提高,導致這個方法逐漸被手機市場淘汰,雖然還是有一些手機帶有這樣的計算方法,但是已經不是主流。
鋰電池放電曲線
2
電池建模法
這個方法是根據電池的放電曲線來建立一個數據表,數據表中會標明不同電壓下的電量值,這一方法可以有效的提高測量的精度。但要獲得一個精準的數據表並不簡單,因為電壓和電量的關系還涉及到了電池的溫度、自放電、老化等的因素。只有結合了眾多的因素來進行修正才能夠得出較滿意的電量測量。
3
庫侖計
目前手機用的計算方式最多的就是庫侖計,庫侖計英文名是coulomb counter,是根據法拉第定律設計出用來測量電路中所通過電量的裝置稱為「庫侖計」或者「電量計」。簡單的來說,在電池的保護線路上串聯一個電量計量晶元,其中串聯的是一個集成的取樣電阻,通過電阻測試單位時間內迴路流經的電流大小,如果電流是隨時間變化,且流過不同的電流後產生不同的壓差,通過把這個變化的電流進行積分,也就是在這段時間,距離等對電流進行累計,最終得到用戶使用時正確的電量,精度可以達到1%,另外通過配合電池電壓和溫度,就可以極大的減少電池老化等因素對測量結果的影響。其中iPhone中就是採用這一方法。
獲得電池當前的容量才能得到最終准確的電量剩餘數值,計算庫侖計通過兩種類型的設計來獲得電池的當前容量。一種是A/D模數轉換,通常是12位精度,將電壓值轉換為12位精度的16進制數字後乘以取樣的間隔時間,第二種則是集成模式,利用RC積分電路來獲得電壓對時間的積分值,便會得到電池的容量,最終通過電池當前電量除以電池的額定容量數值計算出百分比,得到電池電量剩餘多少並交給手機上的軟體通過軟體顯示給用戶看。
而鋰電池隨著使用時間的增加電池的額定容量會有損耗,例如一塊2000mAh容量的電池在循環使用100次後,電池自身的容量或許會衰減到1800mAh的容量,而庫侖計如果一直保持著最初的額定容量那麼就會導致電量計算不準確,所以庫侖計裡面還有一個容量對使用次數調整的演算法,會根據電池循環次數調整電池實際的額定容量。
從上面的三種方法中我們可以看到庫倫計的精度是最高的,他可以在不損傷電池的情況下降低電池的放電截止電壓,使電池的容量得到最大限度的利用,特別是對於低電壓系統和使用多次的電池。另外還可以以更高精確地發出電池電量不足的警告信息,以避免用戶在使用的過程中丟失數據。
電池電量計工作原理
簡化的電池電量計框圖
電池電量計對流入/流出電池的總電流持續進行積分,並將積分得到的凈電荷數作為剩餘容量。
簡化的電池電量計如上圖所示。其中,Rsns為mΩ級檢流電阻,RL為負載電阻。電池通過開關、Rsns對RL放電時的電流IO在Rsns兩端產生的壓降為VS(t)=IO(t)×Rsns。電量計持續檢測Rsns兩端的壓差VS,並將其通過ADC轉換為N位的數字量Current(簡稱CR),之後以時基確定的速率進行累加,M位累加結果Accumulated_Current(簡稱ACR)的單位為Vh(伏時)。對量化後的VS進行累加相當於對其進行積分,結果為
電池電量
因此,將ACR值除以檢流電阻RSNS的阻值即得到以Ah(安時)為單位的電池容量。ADC轉換結果和累加後的結果都帶有符號位,按照圖1中的連接方式,充電時CR為正,ACR遞增;放電時CR為負,ACR遞減。外部微控制器可以讀取CR和ACR值,經過換算得到真實的充放電電流和電量值。
實際的電量計還包括一些控制和介面邏輯,通常還能檢測電池電壓和溫度等參數。一些智能電量計可以自動完成電池自放電的修正,還可保存電池特性曲線,允許用戶定製電池電量計演算法。
電池電量計的計算
通常,在電量計數據資料中CR的單位為mV,ACR的單位為mVh。
根據前文的說明,CR值為取樣電阻兩端的電壓值,典型的12bit CR如表2所示。
其中,S為符號位,20為LSB。如果CR的滿偏值為F,則其LSB的計算公式如下:
若CR的讀數為M,取樣電阻為值RSNS,則實際的電流值為:
電流方向由S位確定。若滿偏值F為±64mV,則LSB為±15.625μV;RSNS為10mΩ時最大電流為±6.4A。若M為768,則實際電流為
ACR為取樣電阻兩端電壓的累積值,典型的16bit ACR如表3所示。
其中,S為符號位,20為LSB。如果ACR的滿偏值為F,則LSB的計算公式如下:
凈電荷量由S位確定。若滿偏值F為±204.84mVh,則LSB為±6.25μVh;RSNS為10mΩ時最大電量為±20.48Ah。若M為7680,則實際電量為:
市場電量計晶元應用狀況分析
由於國內手持及便攜設備大體可以分成兩個部份, 一是智能手機, 二式平板計算機/MID。針對這兩個市場的應用, 目前這兩個區塊的主要參考設計還是由AP廠家來提供。例如智能手機的Qualcomm, Broadcom, MTK, nVIdia, Samsung, Hisilicon(海思)等, 以及平板計算機/MID的全志, 炬力, 瑞芯微, 中星微等。
由於國內大部的手持及攜帶型設備廠家在開發新的產品時, 都必須仰賴AP廠提供技術支持, 所以對原廠的參考設計, 除了布線之外, 對元器件的使用大多不做更動。所以只要原廠的參考設計用了某一廠家的電量計, 或是如Qualcomm, Broadcom, MTK等用了自己PMIC內的庫侖計, 再通過AP的計算來實現電量計功能。目前在市場上由於蘋果手機及平板的原始設計用的是TI的方案, 所以在市場上, TI可以說是在電量計耕耘最久, 市場佔有率最大的廠商。其次是由於Samsung大量採用Maxim的電量計方案, 所以Maxim可以說是保有電量計市場二哥的位置。
其餘的無論是把庫侖計放在PMIC內, 亦或是如Cellwise的加上自學習功能的電量計, 都是最近這兩年進到市場的方案。之所以會有這個趨勢, 最重要的原因是消費者開始要求設備的電量指示的精度。這個要求反應在所有手持及攜帶型設備的操作系統(iOS, Android, Windows Phone), 還有各類的APP上。由這個趨勢也可以清楚的看出, 電量計在手持及攜帶型設備上所扮演的角色也越來越重要了。
下面以美信MAX17040晶元為代表,做詳細說明。
1.MAX17040的工作原理
電量計MAX17040,他通過晶元去測量電池電量,晶元本身集成的電路比較復雜,同時可以通過軟體上的一些演算法去實現一些處理,是測量出的電量更加准確。還有一個好處,就是他之接輸出數字量,通過IIC直接讀取,我們在電路設計、程序處理上更加的統一化。
如下圖所示,MAX17040和電池盒主控的關系,一個AD腳接到電池VBAT+,檢測到的電量信息,通過IIC傳到主控。
下面是電路圖,電路介面比較簡單,VBAT+,接到max17040的CELL,IIC接到主控的IIC2介面,這個我們在程序中要配置。看這個器件比較簡單吧。
看下max17040的內部結構,其實這也是一個AD轉換的過程,單獨一顆晶元去實現,這樣看起來比較專業些。CELL介面,其實就是一個ADC轉換的引腳,我們可以看到晶元內部有自己的時鍾(time base),IIC控制器之類的,通過CELL採集到的模擬量,轉換成數字量,傳輸給主控。
通過上面的介紹Max17040的硬體、原理我們基本上都了解了,比較簡單,下面我們就重點去分析下驅動程序。
2.MAX17040 總體流程
電量計的工作流程比較簡單,max17040通過CELL ADC轉換引腳,把電池的相關信息,實時讀取,存入max17040相應的寄存器,驅動申請一個定時器,記時結束,通過IIC去讀取電池狀態信息,和老的電池信息對比,如果用變化上報,然後重新計時;這樣循環操作,流程如下所示:
3.MAX17040這個電量計驅動,我們主要用到以下知識
【1】IIC的注冊
IIC這個匯流排,在工作中用的比較多,TP、CAMERA、電量計、充電IC、音頻晶元、電源管理晶元、基本所有的感測器,所以這大家要仔細看下,後面有時間的話單獨列一片介紹下IIC,從單片機時代都用的比較多,看來條匯流排的生命力很強,像C語言一樣,很難被同類的東西替代到,至少現在應該是這樣的。
看下他結構體的初始化與驅動的申請,這個比較統一,這里就不再解釋了。
IIC驅動的注冊:
在arch/arm/mach-exynos/mach-smdk4x12.c中,IC平台驅動的注冊:
下圖就是我們IIC驅動注冊生成的文件;
/sys/bus/i2c/drivers/max17040
【2】linux 中定時器的使用
定時器,就是定一個時間, 比如:申請一個10秒定時器,linux系統開始計時,到10秒,請示器清零重新計時並發出信號告知系統計時完成,系統接到這個信號,做相應的處理;
【3】任務初始化宏
任務結構體的初始化完成後,接下來要將任務安排進工作隊列。 可採用多種方法來完成這一操作。 首先,利用 queue_work 簡單地將任務安排進工作隊列(這將任務綁定到當前的 CPU)。 或者,可以通過 queue_work_on 來指定處理程序在哪個 CPU 上運行。 兩個附加的函數為延遲任務提供相同的功能(其結構體裝入結構體 work_struct 之中,並有一個 計時器用於任務延遲 )。
【4】linux定時器調度隊列
【5】max17040測到電量後如何上傳到系統(這個電池系統中有簡要的分析);
4中的定時器記時完成,就可以調度隊列,chip->work執行:max17040_work函數,把改讀取的信息上傳,我們看下max17040_work函數的實現:
保存老的電池信息,如電量、AC、USB是否插入
讀取電池新的狀態信息
如果電池信息有變化,就上報系統
power_supply_changed這個函數比較重要, 我們後面分析;
如果用PM2301充電IC,USB充電功能不用
這個是由於我們的系統耗電比較大,用USB充電時,電流過小,所以出現越充越少的現象,所以這個功能給去掉了。
如果有DC插入,則跟新充電狀態
【6】AC、USB充電狀態怎麼更新到應用
如上面所說,通過power_supply_changed上報;
【7】電池曲線的測量與加入
電池曲線,就是電池的沖放電信息,就是用專業的設備,對電池連續充放電幾天,測出一個比較平均的值。然後轉換成針對電量IC(如我們用的max17040)的數字量,填入一個數組中,如下圖所示:
下面數據時針對電池曲線的數字量,和相關參數。如上圖所示,為160小時的電池信息,包括:不同顏色分別代表不同的曲線:
如temperature ,reference SOC ,fuel gauge SOC,Vcell,Empty Voltage
數據表格如下:
加入驅動中的值:
/driver/power/max17040_common.c中
結語
電量計在手持及攜帶型設備, 尤其是智能手機及平板計算機/MID應用的重要性隨著AP廠家把庫侖計加入PMIC, 提供電量計的功能, 已經被突顯出來了。可是這只是起步, 由於電量計是在手持及攜帶型設備內最了解電池的晶元, 因此如何透過這個特點, 延長電池的使用壽命, 會是下一個可以延續的應用。
參考鏈接:http://www.sohu.com/a/121094815_464086
供參考,希望能幫到你
Ⅱ 深圳市前海哥德堡投資咨詢有限公司怎麼樣
簡介:智投鏈是一個區塊鏈智能投資策略平台。基於智能投資分析、大數據分析、區塊鏈等技術的全生態金融投資策略管理平台,是致力於發展第三代的區塊鏈金融投資領域應用的代表。旨在利用越來越豐富快捷地社交媒體信息,越來越成熟地大數據獲取和分析,以及越來越安全多元的區塊鏈技術應用,幫助普通投資者做出快捷、自動化、精準的投資與資產優化管理決策;推動第四代互聯網的發展和成型,成為區塊鏈應用的黑石集團。 IIC(coin)是智投平台運作的基礎代幣,基於以太坊區塊鏈底層發行,發行總量為210億枚,並接受以太坊智能合約限定。 IIC是
法定代表人:江壹清
成立時間:2016-05-16
注冊資本:2000萬人民幣
工商注冊號:440301116148023
企業類型:有限責任公司
公司地址:深圳市前海深港合作區前灣一路1號A棟201室(入駐深圳市前海商務秘書有限公司)