Inteline s.r.o.
malování, sádrokartony, stropní podhledy, fasády, zateplování, rekonstrukce, počítačové sítě - Kladno, Praha

Repase notebookové baterie

22.09.2006 - Počítače a IT

Něco málo úvodem

Běžná dnešní notebooková baterie se skládá ze samotných bateriových článků a nabíjecího obvodu. Postupem doby, jak se baterie nabíjí a vybíjí a hlavně mění svojí teplotu (to jí škodí mnohem víc), se její životnost zkracuje. To zaznamenává nabíjecí obvod (o tom detailněji dále) a podle toho počítá tzv. Wear Level (obnošení baterie).
Tento údaj, vyjádřený v procentech, udává pokles maximální kapacity baterie ku původnímu stavu z továrny (nová baterie má WL 0%). Procentuální hodnota nabití, kterou notebook ukazuje, je tak vztažená samozřejmě k této hodnotě. Takže i vylítaná baterka samozřejmě dosáhne 100% nabití, ale ve skutečnosti je třeba na 20% své původní kapacity.

Hodnotu Wear Level dokáže zobrazit každý kvalitní správce baterie, např.

a jistě i další…

Nejpopulárnější články, díky nejlepšímu poměru kapacita/cena, jsou baterie typu 18650.
Ty se skládají paralelně (pro dosažení kapacity) a zároveň sériově (pro dosažení vyššího napětí). Můj notebook je Uniwill 223II0, který se branduje jako Prestigio Visconte 1200, či jako Microbook (můj případ) a jistě mnoho dalších. V něm jsou zapojeny 3×2 baterie (3x napětí, 2x kapacita).
To jest 3.6V (tolik má každý Li-Ion článek) * 3 = 10.8V a paralelně 2000mAh * 2 = 4000mAh. Ve větších noteboocích (14″/15″) se dávají většinou 4 řady pro 14.4V napětí.

U mě nastal po dvou letech provozu již stav, kdy Wear Level byl přes 60% (tzn. baterie měla ze své původní 4000mAh kapacity jen 1564mAh). Notebook tak nevydržel ani hodinu a to už bylo na pováženou. Takže jsem baterii rozebral a tím vzniknul tento elaborát o zkušenostech s repasí baterie v mém notebooku.

Tento článek neumí poradit s každou baterií, každý výrobce používá trošku jiné součástky a DPS, ale obecný základ je veeelmi podobný a někomu to tak může pomoci (doufám).

Nabíjecí obvod

O nabíjení a ovládání samotných článku se notebook jako takový nestará. Napěťový obvod notebooku pouze poskytuje baterii šťávu ze sítě a je schopen přepínat mezi zdrojem a baterií.
Nabíjecí proudy, měření stavu baterie a další elektronické záležitosti už obstarává bateriový pack sám a s notebookem si o tom pouze povídá přes SMBus sběrnici (podmnožina standardu I2C). V baterii je tak ukryt mikročip typu Gas Gauge s vlastní EEPROM pamětí (nesmaže se při výpadku napájení), teplotní čidlo a další titěrný součástky řídící nabíjení, které nás ale nezajímají (a taky o nich vím prd).

V mé baterii jsem po rozebrání našel čip Texas Instruments bq2060A. Ten patří do velké rodiny podobných obvodů bq*, které jsou v mnoha věcech stejné.
Základem však je vnější SMBus rozhraní vyvedené na konektor baterie a vnitřní SMBus pro komunikaci s EEPROM (nejčastěji 8pinový obvod 24C01). Další nožičky má jako čidla, umí rozsvěcet LEDky dle stavu nabití (mají dražší baterie) a zajišťuje prostě veškerou komunikaci s PC. V paměti má uloženo jak tovární nastavení, tak provozní hodnoty (nabíjecí proudy, počet cyklů nabití, kapacity, napětí, alarmy při poklesu stavu baterie pod danou mez, atd.).
K čipům od TI se dají volně stáhnout katalogové listy (datasheety) a lze se tam dočíst přesnou strukturu paměti (na které adrese je co), popisy nožiček a další zajímavé věci.

Výměna článků

Prvním krokem pro repasi bude jistě výměna samotných bateriových článků. Nemá smysl resetovat hodnoty nabíjecího obvodu protože on ví nejlépe, jak na tom baterie po fyzické (vlastně spíše chemické) stránce jsou.
Baterie 18650 se dají sehnat v každé pořádné prodejně elektrosoučástek, nicméně cenově se dost liší. Avacom.cz má 1800mAh za 150Kč, 2000mAh za 180Kč, 2200mAh za 240Kč, 2400mAh za 320Kč (ceny 22.9.2006, včetně DPH). Já jsem je koupil u Metrix.cz a to Samsung 2200mAh za 170Kč včetně DPH – to jest 1020Kč za 6 kusů. Baterie od Metrixu měly zároveň na sobě již přibodované spojovací pásky (nedovedu si představit spojování články bez těchto pásků, protože na baterii cín vůbec dobře nedrží).

Pokud jde o zvolení správné kapacity, pak nejradši vybereme baterie stejné jako původní, klidně víc, ale určitě ne míň. Tento návod poskytuje řešení typu
obnovení továrního nastavení, takže i když jsem koupil baterie 2200, tak z nich bude stejně jen 4000 (2*2000 a ne 2*2200), ale aspoň by mohly žít déle (bude pomaleji narůstat wear level).
Je ale možné v EEPROM paměti přepsat i tovární hodnoty a tak kapacitu baterie
opravdu zvýšit, ale to chce jiný software a možná i pak čarovat s novým nabíjecím proudem a podobně, takže do toho já hrabat nebudu.

Jdeme tedy na to:

  • opatrně rozebereme starý battery pack; zde je nutné trošku experimentovat, čím je člověk opatrnější, tím se mu to pak bude lépe dávat do původního stavu! Já jsem to rozlámal tak, že z krytu zbylo vlastně jen to, co baterii drží v notebooku (aspoň že tak). Po brutálním otevření jsem zjistil, jak se to vlastně otvírat mělo :)

batcase.jpg

  • to bílé je původní oboustranná lepička, kterou tam ty baterky byly přilepený
  • než odpájíme drátky vedoucí z obvodu ke starým článkům (na koncích u článků), poznamenáme si, kam je který barevný drátek připojen
  • spájíme nové baterie do stejné konfigurace jako původní (serioparalelní zapojení)

bpack.jpg

  • připojíme zpátky k packu a nastartujeme notebooka na tyto baterie, zda je vše v pořádku

Nyní si můžeme znovu přečíst hodnoty, které čip poskytuje a u 90% notebooků uvidíme naprosto ty samé, sjeté, ošklivé, bradavičnaté, .. prostě staré hodnoty. Obvod si prostě všechno pamatuje a ani ho nenapadne se znovu nakalibrovat.

V této fázi je dobré se podívat do BIOSu, jestli výrobce neposkytl možnost rekalibrace baterie (prý takoví výrobci opravdu jsou). To pak dokáže zresetovat paměť a celý tento výplod netřeba dál číst. Většinou ale je RESET příkaz SMBusu naopak blokován záměrně.

SMBus rozhraní

Pro komunikaci s PC budeme potřebovat převodník mezi SMBus a LPT portem. Zde máme 2 možnosti:

  • WINDOWS: Pro windows existuje program Smart Battery Workshop, který je teda pěkně drahý, nicméně v DEMO verzi umí resetovat právě nejpopulárnější bq obvody, takže já jsem si vystačil s DEMO verzí.
  • Tento program používá zapojení s invertorem 7405:

zap1.jpg

  • LINUX:Zde lze použít knihovny lm_sensors, které však pracují s jiným (mnohem jednodušším) zapojením na LPT. Schéma, návod, bootovací iso a další informace k této možnosti najdete na stránce Baterie do notebooků s obvody BQ2092 a BQ2040.

Jelikož moje vrozená nechuť k čemukoliv linuxovému byla silnější než sestavovaní o něco obtížnějšího obvodu, proto jsem šáhl k verzi pro Windows. Postavil jsem to na takové universální destičce a takto to dopadlo:

smbus.jpg

Kupodivu funkční na první pokus :) Ten trojdrátek vlevo je signál SCL / SDA a GND, které přijde zapojit na baterii. Dále jsem nainstaloval Smart Battery Workshop a spustil. Dole se objevilo Adapter found a to znamená, že to asi funguje.

Konektor baterie má většinou hodně pinů, nicméně většina je nezapojená, protože není k čemu. Důležité je najít pouze zem (GND) – bude určitě někde u kraje (pin 1). K ní voltmetrem najdeme napájení.
Pokud někde bude nějaké napětí, pak si tento PIN poznamenáme a NIKDY do něj žádný drátek strkat NEBUDEME!
Minimálně 1 pin bude mít plné napětí (Vcc), ale ten taky nebude potřeba :). Důležité, a skoro jisté, je to, že zbudou někde alespoň 2 piny volné bez napětí. To je právě SCL a SDA (u mě jsou hned vedle Vcc).
Takže nastává čas laborování, je nutné projít všechny kombinace těch volných pinů, co je SCL/SDA nebo obráceně SDA/SCL. Je skoro jisté, že budou hned vedle sebe, takže těch možností je jen pár.
Po každém přepojení klikneme v SBW na tlačítko Read Battery (v linuxu asi pustíme některou z těch utilit). Jakmile se začne načítat, máme vyhráno.
Z mojí baterie tak vzniknul tento dump:

Smart Battery Data Report.
Generated by Smart Battery Workshop
22.9.2006 17:46:32

==========BatteryData==========
ManufacturerAccess: 0000  hex
RemainingCapacityAlarm*: 240  mAh or 10mWh
RemainingTimeAlarm*: 10  minutes
AtRate: 24497  mA or 10mW
AtRateTimeToFull: 7  minutes
AtRateTimeToEmpty*: Unknown  minutes
AtRateOK*: 1  Boolean
Temperature: 264  0.1°C
Voltage: 11207  mV
Current: 0  mA
OverageCurrent: 0  mA
MaxError: 100  percent
RelativeStateOfCharge: 7  percent
AbsoluteStateOfCharge: 3  percent
RemainingCapacity: 116  mAh or 10mWh
FullChargeCapacity: 1564  mAh or 10mWh
RunTimeToEmpty*: Unknown  minutes
AverageTimeToEmpty*: Unknown  minutes
AverageTimeToFull: Unknown  minutes
ChargingCurrent: 2500  mA
ChargingVoltage: 12600  mV
CycleCount: 105  count
DesignCapacity: 4000  mAh or 10mWh
DesignVoltage: 10800  mV
ManufactureDate: 2004.10.1  y.m.d.
SerialNumber: 0  number
ManufacturerName: SMP-PAN
DeviceName: 223
DeviceChemistry: LION
ManufacturerData: 012D501364152B000000000000000000  hex
OptionalMfgFunction5:   ASCII
OptionalMfgFunction4: 00000000000000000000000000000000  hex
OptionalMfgFunction3: 900E0000000000000000000000000000  hex
OptionalMfgFunction2: 9A0E0000000000000000000000000000  hex
OptionalMfgFunction1: 9D0E0000000000000000000000000000  hex
==========BatteryMode==========
Internal Charge Controller not Supported
Primary or Secondary Battery Function not Supported
Conditioning Cycle Requested
Internal Charge Control Disabled
Battery operating in its secondary role
AlarmWarning broadcasts to Host and Smart Battery Charger Disabled
ChargingVoltage and ChargingCurrent broadcasts to Smart Battery Charger Disabled
Report in mA or mAh
==========BatteryStatus==========
Remaining Capacity Alarm
Initialized
Discharging
==========SpecificationInfo==========
Revision N/A
Version 1.1 with optional PEC support
VScale N/A
IPScale N/A
==========End==========

Nejdůležitější řádky jsem označil červeně. Je to aktuální maximální kapacita a to druhé je výrobní kapacita. Jak jsem již psal, tento údaj je v paměti a nezáleží na tom, jestli už tam máme nové články. Jenže toto číslo také znamená, že pokud se baterie nabíjí a dosáhne hodnoty maximální kapacity (FullChargeCapacity), je nabíjení ukončeno. A to je právě kámen úrazu.
Nové baterie, ale kapacitně se chovají stejně jako baterie staré. Doteď by to byly vyhozené peníze za nové články. A proto je nutné zresetovat obvod do továrního nastavení.

Identifikace obvodů

Deska s čipama bude někde zastrčená a bude potřeba jí vyndat, protože do ní budeme pájet. Znamená to také opět odpojit bateriové články (ono je nebylo nutné ani připojovat, ale já si rád kontroluji krok po kroku). Já jsem za použití nepřiměřené síly na okolní materiál dostal z baterky tuto destičku:
ic1.jpg
Barevné drátky jsou připojené ke článkům, čipy jsou jasně identifikovatelné uplně vlevo. Při bližším pohledu:
ic2.jpg
Jedničkou jsem označil Gas Gauge bq2060A a poblíž ní musí být i ta EEPROMka, takže je to jasně součástka označená dvojkou (hodnoty na ní napsané neznačí nic).

Připojení EEPROM

Obvod Gas Gauge má většinu EEPROM údajů v režimu read-only. Nelze tedy přes vnější rozhraní (konektor na baterii) ho nechat přepsat historické hodnoty těmi továrními.
Musíme mu tak pod rukama (vlastně spíš nožičkama) upravit přímo data v paměti EEPROM.

Zní to složitě, ale paměť používá to samé rozhraní, co obvod, takže zapojení, které jsme si postavili a zatím bylo dobré leda k přečtení hodnot, které už dávno známe, budeme ještě potřebovat.

Některé EEPROM paměti jsou navíc blokované proti zápisu jednou z nožiček, takže je nutné je z obvodu vypájet. Vzhledem k tomu, že jsou to SMD součástky to už není žádná psina a chce to šikovné ruce a mikropájku (což já nemám). Naštěstí ta základní EEPROMka 24c01 je dost tupá, takže neklade žádný odpor.

Dle katalogového listu jsem si zjistil, které piny bq2060A jsou pro komunikaci s EEPROM a pomocí voltmetru (v režimu měření odporu) jsem je dohledal na EEPROMce.
Zároveň jsem si našel napájení (+5V a je stejné pro oba čipy) a země (zbytek – celá pravá část obvodu).

A teď nastal první vážný zádrhel. Moje páječka jaksi neumožňuje připájet tenké drátečky s SMD rozlišením na jednotlivé nožičky EEPROM. Kdybych se toho jen dotknul, tak se slejou všechny dohromady :)

Naštěstí výrobce asi taky nějak musí při testech či prvním nalití údajů nějak k SMBusu přistupovat a tak jsou všechny důležité piny vyvedeny na check-pointy. Najít ty správné je za pomoci voltmetru otázka chvilky. U mé baterie to tedy dopadlo takto:
eeprom0.jpg
GND a SCL
eeprom1.jpg
opět SCL a GND z jiného úhlu
eeprom2.jpg
SCA a Vcc (5V)

RESET

Nyní jsem v SBW vybral druhou záložku (Load/Reset/Save EEPROM), řadu obvodů bq2060 a stisknul tlačítko RESET (ne to na PC). K mému údivu se objevila hláška o úspěchu a s informací, že mám pro dokončení spojit nějaké piny. Nakonec jsem zjistil, že je to Vcc a GND, takže jsem odpojil zdroj a chvíli jsem nechal vše vybít zkratem se zemí.

Výsledek snažení

Teď už stačilo vše odpájet, poskládát, znovu připojit články a ověřit funkčnost načtením údajů přes SMBus.
Výsledek je zde:

Smart Battery Data Report.
Generated by Smart Battery Workshop
22.9.2006 19:47:13

==========BatteryData==========
ManufacturerAccess: 0000  hex
RemainingCapacityAlarm*: 240  mAh or 10mWh
RemainingTimeAlarm*: 10  minutes
AtRate: 8113  mA or 10mW
AtRateTimeToFull: 66  minutes
AtRateTimeToEmpty*: Unknown  minutes
AtRateOK*: 1  Boolean
Temperature: 278  0.1°C
Voltage: 11211  mV
Current: 0  mA
OverageCurrent: 0  mA
MaxError: 100  percent
RelativeStateOfCharge: 0  percent
AbsoluteStateOfCharge: 0  percent
RemainingCapacity: 0  mAh or 10mWh
FullChargeCapacity: 4000  mAh or 10mWh
RunTimeToEmpty*: Unknown  minutes
AverageTimeToEmpty*: Unknown  minutes
AverageTimeToFull: Unknown  minutes
ChargingCurrent: 2500  mA
ChargingVoltage: 12600  mV
CycleCount: 0  count
DesignCapacity: 4000  mAh or 10mWh
DesignVoltage: 10800  mV
ManufactureDate: 2006.9.22  y.m.d.
SerialNumber: 0  number
ManufacturerName: SMP-PAN
DeviceName: 223
DeviceChemistry: LION
ManufacturerData: 012D501364122B000000000000000000  hex
OptionalMfgFunction5: F6575757575757575757575757575757  hex
OptionalMfgFunction4: 00000000000000000000000000000000  hex
OptionalMfgFunction3: 960E0000000000000000000000000000  hex
OptionalMfgFunction2: 950E0000000000000000000000000000  hex
OptionalMfgFunction1: A00E0000000000000000000000000000  hex
==========BatteryMode==========
Internal Charge Controller not Supported
Primary or Secondary Battery Function not Supported
Conditioning Cycle Requested
Internal Charge Control Disabled
Battery operating in its secondary role
AlarmWarning broadcasts to Host and Smart Battery Charger Disabled
ChargingVoltage and ChargingCurrent broadcasts to Smart Battery Charger Disabled
Report in mA or mAh
==========BatteryStatus==========
Terminate Discharge Alarm
Remaining Capacity Alarm
Initialized
Fully Discharged
==========SpecificationInfo==========
Revision N/A
Version 1.1 with optional PEC support
VScale N/A
IPScale N/A
==========End==========

…. H U R Á Á Á Á ….

A jdeme nabíjet úplně novou baterku – sice jako nová nevypadá, ale chová se tak :)
res1.jpg
A po úplném nabití:
res2.jpg
A po vyndání napájení:
res3.jpg
Woohoooooooo :)

Náklady

Celkové náklady tedy jsou nové články: 1110Kč (včetně poštovného), součástky pro SMBus: 45Kč (a to ještě použiju). V případě pouhého konektoru asi 30Kč. Jo a elektrogeekové můžou napíchat drátky přímo do samice LPT v PC.
Jinak nová baterie stojí asi 2200Kč (kasa.cz) a neužiju si s ní tolik legrace :)

A to je asi vše, doufám, že jsem nic nezapomněl … happy hacking!

(autor článku px@px.cz)