logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

DJCheester 05 Lis 2024 19:55 2112 13

TL;DR

  • Regeneracja baterii do Toshiba NB100 z kontrolerem BQ8030DBT i BQ29330, gdy laptop ją widzi, ładuje, ale po rozładowaniu wyłącza się około 80%.
  • Najpierw wymieniono ogniwa „na gorąco”, podtrzymując napięcie równoległym ogniwem Li-ion około 3,4 V, aby kontroler nie stracił zasilania.
  • Po pełnym ładowaniu i kilkugodzinnej pracy napięcie wzrosło do 4,16 V, a Batmon pokazał 100% i odzyskaną pojemność.
  • Jedna bateria wróciła do działania, zniknął komunikat o wymianie i problem wczesnego wyłączania, nawet przy próbie pracy na 0%.
  • Druga bateria pozostała problemem: Batmon pokazywał około 400 mAh, a próby odblokowania przez Arduino UNO, SMBus/I2C i gotowe skrypty kończyły się błędami.
Wygenerowane przez model językowy.
📢 Słuchaj (AI):
  • Witam Was serdecznie ;)

    Jakiś czas temu kupiłem netbooka było to w 2009 roku Toshiba NB100.
    Komputerek iż ma swoje lata i do granic możliwości upgrade'owany SSD RAM.
    I w dalszym ciągu służy do moich potrzeb Win7 32bit.

    Ktoś powie przestarzały po co kombinować.

    Kiedyś już chciałem podjąć temat baterii na forum

    https://www.elektroda.pl/rtvforum/topic3843776.html

    Jednak wtedy nie miałem ani narzędzi ani wiedzy jak to zrobić.
    Czas leci i niestety baterie padły mam cztery sztuki i trzecią i czwartą udało się przywrócić jednak pozostały dwie.

    Opiszę swój sposób gdy bateria nie jest do końca uszkodzona tzn wykrywa ją laptop i ładuje, jednak po uruchomieniu z baterii wyłącza się w trakcie rozładowania u mnie przy 80% i system win podaje komunikat

    Komunikat o baterii na ekranie systemu Windows

    Poprzez program Batmon można sobie przejrzeć krzywą rozładowania

    Zrzut ekranu programu BatteryMon z wykresem stanu baterii.

    Po każdej takiej akcji kontroler zmniejsza pojemność sformatowaną tak aż na koniec zostają mA jak w moim przypadku i bateria deklaruje 20 min z czego z 15 minut chodzi przy minimalnym poborze i nieobciążonym procku.

    Więc przystąpiłem do naprawy - po naładowaniu przystąpiłem do otwierania obudowy - poszło sprawnie tak iż możliwy jest ponowny montaż - zaczepy całe urwałem tylko 2.

    Otwarta obudowa baterii z czterema różowymi ogniwami Li-ion

    Najpierw podlutowałem się zapasowym ogniwem Li-ion o zbliżonym napięciu około 3.4V równolegle do istniejącej pary i stare odczepiłem tak aby kontroler widział cały czas napięcie. Po czym podlutowałem (mając gotową parę z innej baterii) jak juz dobrze przylutowałem nową parę ogniw, to tak samo postąpiłem z drugą parą ogniw.

    Po takiej podmianie bateria w komputerze nadal jest wykrywana batmon pokazuje około 50% i trwa ładowanie szybko dobiło do 99% zauważyłem że komputer ładował dalej pokazując 99% i około 1000mW.

    Zostawiłem to tak mierząc jednocześnie napięcie na ogniwach bo nie zakładałem obudowy i zauważyłem że napięcie gdy bateria szybko uzyskała 99% to napięcie na ogniwach było około 3.85V.

    Gdy zostawiłem włączony komputer kilka godzin badając temperaturę i napięcie na ogniwach zauważyłem że napięcie się zwiększa i po około 6h napięcie na obu parach wzrosło do 4.16V a program Batmon pokazał 100% i 0mW ładowania - no i zmienił górną flagę tak że zyskałem pojemność baterii.

    Zrzut ekranu programu BatteryMon z wykresem i danymi o baterii

    Po klaibracji czyli pełnego rozładowania i ponownego ładowania pojemność jeszcze się zwiększyła

    Kontroler zbudowany na BQ8030 i BQ29330

    I tak pierwsza bateria została odzyskana - już kilka razy korzystałem z regenerowanej baterii i wszystko wskazuje że działa poprawnie, znikł też problem komunikatu Rozważ wymianę baterii i wczesnego wyłączania się - nawet przy pierwszej próbie na 0% chwilę chodził więc pełen sukces.

    -------------------------

    Podbudowany sukcesem sięgnąłem do drugiej baterii aby wykonać to sam jednak tu sytuacja mnie zaskoczyła.

    Bateria trzyma też około 20 min ale Batmon wskazuje dużo mniejszą pojemność bo około 400mAh

    Zrzut ekranu programu BatteryMon pokazujący informacje o baterii litowo-jonowej SANYO.

    Niestety powyższy sposób tu nie zadziałał. Trzeba szukać dalej.

    Poczytałem trochę na temat tych kontrolerów - trochę czasu w sumie minęło od czasu mojego wcześniejszego tematu - myślę może coś w sprawie się zmieniło, no i znalazłem trochę materiałów w tym filmy na YT jak co niektórzy radzą sobie z takimi bateriami.

    Szczególnie zainteresował mnie sposób wykorzystujący Arduino UNO bo takowe mam a komunikacja z baterią jest po magistrali I2C.

    https://squidgeefish.com/projects/a1175-battery-hacking/#code

    Tutaj sposób pierwszy jednak Autor miał szczęście bo klucze od tej baterii producent zostawił niezabezpieczone i mógł sobie odczytać i bez problemu nadpisywać wszystkie parametry w tym kasować licznik cykli i flagi formatowania. Tu pokazuje jak to robić

    https://m.youtube.com/watch?v=1IuDC3vI9Ck

    Trochę podstawowej teorii - kontroler ma trzy poziomy po których można się poruszać.

    Pierwszy niezabezpieczony pozwala odczytywać parametry baterii
    Drugi częściowo zabezpieczony pozwala nadpisywać niektóre parametry
    i trzeci pełny dostęp który pozwala edytować wszystkie parametry

    Aby cokolwiek oprócz podejrzenia wykonać trzeba mieć te kody zabezpieczeń, szczęście jak firma zostawia je domyślnie ustawione gorzej jak są one zmodyfikowane.

    Podejrzewam że tak jest w tym przypadku, choć może są jakieś fabryczne lecz nigdzie w internecie nie ma specyfikacji układu BQ8030DBT który to siedzi w mojej baterii.

    Po wgraniu kodu Arduino ze strony wyżej otrzymuję w serial monitor inne dane - takie.

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    Zrzut z mojej baterii po odświeżeniu portu szeregowego

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    Widać od razu że nie odblokowała się bateria co ciekawe trzy wartości które na filmie Autor ma każdy inny u mnie są takie same, jedynie dostęp mam do odczytu podstawowe parametry.

    Nic za bardzo dalej nie zrobiłem może macie jakiś pomysł aby zmodyfikować kod - ale coś mi się wydaje że bez wykonania inżynierii wstecznej dalej nie osiągnę tym sposobem, chyba że macie jakieś pomysły lub materiały jak to obejść.

    A więc szukamy innej drogi no i kolejny pomysł

    https://www.karosium.com/2016/08/hacking-bq8030-with-sanyo-firmware.html?m=1

    Tym razem układ dokładnie taki jak mój - dokumentacji nadal brak ale tu Autor próbuje wbijać się komendami i mu się udaje. Jednak tutaj sięgnął do zgrania kawałka pamięci i dekompilacji po czym ustalił słowa które wykorzystał w celu szukania kodów zabezpieczeń.

    Pytanie do Was czy przy pomocy Arduino (bo tym tylko dysponuję) i poprzez serial monitor można coś takiego uczynić z moją baterią ?

    Ja tu już niestety nie daję rady i moja wiedza się kończy, próbowałem wbijać jego słowa uzyskane w dekompilacji mając nadzieję że to pomoże bo to może jakieś ustawienia default ale niestety nie.

    Tutaj moje pomysły z tą opcją się kończą.

    Kolejne wyszukiwanie w Google przynosi to

    https://github.com/laszlodaniel/SmartBatteryHack

    Przy uruchomieniu kodu Arduino na serial monitor są tylko trzy krzaczki pomimo poprawnie ustawionej szbkości.

    W folderze jeszcze jest programik który niestety nie chce się łączyć z baterią

    Zrzut ekranu programu Smart Battery Hack pokazujący błąd komunikacji

    wygląda na to że nie chce współpracować z baterią log z tego programu

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    No i koniec na filmach widać że można wpisywać i odczytywać słowa z konkretnych adresów i tym sposobem komunikować się z baterią.

    No i tyle kombinuję i szukam dalej.

    Wreszcie natrafiam na komplet plików

    https://github.com/dsa-a/Arduino-Smart-Battery

    Tu po wgraniu programu SmartBattery.ino

    W serial monitor pojawia się menu i kilka opcji do wyboru

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    W innych opcjach poza read info uzyskuję Wire error - 3
    Czyżby trzeba jeszcze coś podłączyć ja mam tylko SDA i SCL oraz GND i SDA i SCL podciągnięte do 5V z Arduino rezystorami 4.7k

    Tu jest opis komunikacji układów BQ

    https://www.ti.com/lit/er/sluu264a/sluu264a.pdf

    Temat "gryzę" hobbystycznie - chciałbym uzyskać rozwiązanie wyłącznie dla uratowania swoich baterii i tylko tych modeli inne mnie nie interesują.

    Może ktoś kto zajmuje się regeneracją baterii podpowie, nie chcę inwestować i kupować drogich programatorów, ciekawi mnie fakt takiego resetu no i korzyść z tego płynąca że można będzie "bezkarnie" wymieniać sobie ogniwa na nowe.

    Jak zadziała to mam cztery baterie i dokupił bym ogniwa SAMSUNGA nowe max chyba są 3500mAh więc można by baterię podkręcić do 7000mAh.

    Jeśli się uda na używkach to się zamówi nówki.

    Proszę o pomoc w kwestii programowania / Ardunio lub innej taniej komunikacji między baterią a komputerem po I2C SMBus.

    Pozdrawiam ...

    Fajne? Ranking DIY
    O autorze
    DJCheester
    Poziom 28  
    Offline 
    DJCheester napisał 2066 postów o ocenie 950, pomógł 75 razy. Mieszka w mieście Bełchatów. Jest z nami od 2011 roku.
  • #2 21294375
    austin007
    Poziom 17  
    Posty: 761
    Pomógł: 6
    Ocena: 271
    Często korzysta się w regeneracji baterii z USB Bridge CP2112 (usb-SMBus). Mnie to czeka z z baterią Lenovo. Sprawdź jakie napięcia obsługuje BQ żebyś nie uwalił tymi 5V.
  • #3 21295494
    jackfinch
    Poziom 19  
    Posty: 348
    Pomógł: 21
    Ocena: 42
    Witam

    Jak nie będziesz miał odpowiedniego skech_u do arduino pod konkretny kontroler baterii, to nic nie zrobisz mając arduino. W twoim przypadku to możesz zaryzykować i kupić USB FX2LP CY7C68013A z Aliexpress za około 25zł i spróbować to co zrobił Anandakrishna Sudhakaran na YouTube ze swoją baterią za pomocą oprogramowania Karosium. Tam masz wszystko opisane. Jeżeli chodzi o CP2112 to nie wiem czy jest jakieś darmowe oprogramowanie które wspiera ten kontroler. Byc może na rosyjskim forum radiokot jest jakiś soft, musiałbym to sprawdzić.

    Pozdrawiam
  • #4 21295522
    DJCheester
    Poziom 28  
    Posty: 2066
    Pomógł: 75
    Ocena: 950
    Witam widzisz sporo można zrobić, na razie zbieram materiał na drugi wpis, w tym temacie, skecz w Arduino się pisze więc jak wiesz jak napisać to sobie sam napiszesz komunikacja jest SMbus typu odczytaj i wyślij słowo i to już mi się udaje, w dokumentacji sluu264a jest opisana komunikacja z innym co prawda układem z serii bq ale te komendy i adresy są identyczne jak w moim więc przy pomocy Arduino da się zrobić tylko jest kilka ale....

    Ale o tym jak znajdę około 2h tak abym mógł się trochę rozpisać.

    Pozdrawiam...
  • #5 21295786
    jackfinch
    Poziom 19  
    Posty: 348
    Pomógł: 21
    Ocena: 42
    Witam

    Jak potrafisz napisać skech pod arduino to już połowa sukcesu. Wracając do CP2112, to na YoyTube jest też film na którym gościu pokazuje jak za pomocą tego interfejsu i programu DJIBatteryKiller można odczytywać i zapisywać dane do BQ8030. Tutaj link:


    .
    Ja za pomocą tego interfejsu, który kupiłem za około 10 zł, odblokowałem baterię w asusie, gdzie był kontroler bq30z55.

    Pozdrawiam
  • #6 21301340
    DJCheester
    Poziom 28  
    Posty: 2066
    Pomógł: 75
    Ocena: 950
    Witajcie opiszę kolejne zmagania ze SmartBattery i Arduino.

    Krok do przodu - udało się uruchomić komunikację z programem SmartBatteryHack.exe

    Zrzut ekranu programu Smart Battery Hack z parametrami baterii

    Aby to uczynić potrzeba wgrać wcześniej soft SmartBatteryHack.ino udostępnione razem na Github.

    Teraz można skanować adresy i je odczytywać lub zapisywać w zależności od statusu zabezpieczeń układu.

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    Tu mamy odczyt (skan) baterii z adresów 00-80

    Niestety o BQ8030DBT brak jakichkolwiek informacji bo
    "The bq80xx family of devices are not sold to the mass market so there is no public information available."

    Można jedynie się domyślać porównując pliki i moje wnioski są następujące
    Wartości 1717 są wartościami sztucznie zwracanymi w rzeczywistości nie mamy dostępu do tych komórek, ani nie można z nich odczytywać ani zapisywać, wysłanie rozkazu zapisu słowa (obojętnie jakiego) program wykonuje jednak po odczycie komórki znów mamy wartość 1717.

    No to nieszczęsne 1717 pokazuje się nam po wgraniu innego kodu do Arduino - tego z tej strony

    https://squidgeefish.com/projects/a1175-battery-hacking/#code

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    No i wszystko jasne staje się teraz - wszystkie klucze PFKey UnSealKey i FullAccesKey mamy ukryte (niestety producent pomyślał i zmienił oraz ukrył te komórki) w pierwszych filmach na youtube

    https://m.youtube.com/watch?v=SKet9ANxSbw
    https://m.youtube.com/watch?v=bwruBW7Xqn4
    https://m.youtube.com/watch?v=4FGsze1o7lw

    Autor bazuje na Arduino jednak w każdym z przypadków ma odkryte kody zabezpieczające.

    https://squidgeefish.com/projects/a1175-battery-hacking/#code

    Analizując kod po prostu producent zostawił domyślną wartość którą to na początku programu Arduino wysyła do baterii

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    Gdy bateria jest odblokowana pozostaje odczytywać kolejno i wyświetlać na serial monitorze.

    I tak na prawdę tu kończy się opcja stosowania do odblokowania baterii Arduino bez tych kodów dalej nie pojedziemy bo póki nie zrobimy statusu unseal battery to nie można zmienić chociażby rejestru ilość cykli adres 17

    Co prawda jest jeszcze furtka można do układu wbijać wszystkie kombinacje klucza unseal battery (metoda brutal force). Z tym że jak nie trafimy to układ blokuje się na 4 sekundy po czym można ponownie próbować.

    Można zatem napisać taki skecz na arduino który będzie "młotkował" kolejno kody aż natrafi na inny status info po czym trzeba będzie zapisać sobie klucz działający i dalej go użyć w kodzie do odblokowywania.

    Tak jest w układach BG80Zxx, jako że dokumentacja BQ8030 jest niedostępna trudno jednoznacznie stwierdzić że działa on identycznie jak inne z tej rodziny.

    Klucz wbija się pod adres 00 w dokumentacji od innych piszą że pierwsze słowo musi być wbite po czym w odstępie mniejszym niż 4 sekundy musi być wbite drugie słowo.

    Jeśli by przyjąć czas dla jednego słowa 5s a mamy słów 2(do potęgi8) czyli jak dobrze pamiętam 65536 kombinacji co daje 327680 sekund co daje 91 godzin pracy czyli niecałe 4 doby na sprawdzenie wsystkich kombinacji.

    Jak poznam lepiej struktury układu spróbuję obecnie nie chcę sobie zblokować kontrolera.

    Tutaj jest opis ewentualnego obliczenia klucza metodą SHA-1

    https://github.com/laszlodaniel/SmartBatteryHack/wiki/Basics

    Na ty Arduino się definitywnie kończy.

    W podanych wyżej filmach mamy (film2,3) mamy opis jak odczytywać słowa hex dekodować na binary i czytać poszczególne bity.

    Na filmie 3 Autor ma plik Worda z ładnie rozpisanymi tymi słowami, niestety mi się nie udało namierzyć czy ten plik gdzieś nie jest udostępniony jeśli tak to napiszcie przydałby się.

    -------------------------------

    Mamy za to kolejne filmy o konkretnie BQ8030DBT tu żadnych kodów brak w necie - domyślnych i pewnie one istnieją metoda wbijanie raczej jest identyczna jak w innych BQ80xx z serii.

    Opisy

    Póki co zamówiłem kolejne zabawki aby móc dalej bawić się kontrolerami

    https://pl.aliexpress.com/item/1005005472604933.html
    https://pl.aliexpress.com/item/1005006570297490.html

    To pozwoli sprawdzić metody podane w filmie który podesłaliście oraz metody użyte w tym linku

    https://www.karosium.com/2016/08/hacking-bq8030-with-sanyo-firmware.html?m=1

    https://m.youtube.com/watch?v=1IuDC3vI9Ck
    https://m.youtube.com/watch?v=g4CH6YcaOHg

    Autor w powyższym linku opiera się na innej metodzie inżynierii wstecznej zdekompilował kod aby znaleźć słowa które otwierają dostęp.

    Użył do tego tego układu (zamówiłem)

    https://www.karosium.com/p/smbusb.html

    Po zapoznaniu się z artukułem najważniejsze jest to

    1. Send 0x0214 to 0x71
    2. Read Word X from 0x73
    3. Send (0x10000 - X) to 0x71
    4. Send 0x0517 to 0x70

    A więc mając Arduino pomyślałem że mogę to zrobić programem SmartBatteryHack.exe

    No to do dzieła.

    Wbijając kolejno nie pod 00 klucze jak to było poprzednio tylko tak jak autor radzi powyżej.

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    Wartości 1717 zmieniły się na 0384 czy to dobrze nie do końca bo zeskanowałem obszar adresów 70-FF

    Po ponownym skanowaniu 00-2F program się zawiesił i niestety prawdopodobnie uwaliłem kontroler.

    Ale po ponownym podłączeniu odczytałem już inne wartości z adresów 0906

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    Próby odczytu sektorów 00-2F
    [RX->] SMBus register dump (00-2F)
    Kończyły się zawieszeniem programu

    Wcześniej jednak udało mi się soft pobrać za pomocą programu (aczkolwiek nie wiem czy nie został już uszkodzony) Ale co mi tam ...

    Przy kolejnym podpięciu zauważyłem że pierwsze 20 adresów powoduje zawieszenie programu odczyt 20-70 już powiduje odczytanie zawartości niestety odczyt każdego adresu aż do FF - kończy się niestety wpisami FFFF co oznacza że albo pamięć jest pusta albo nie mam do niej dostępu i kontroler jest zablokowany.

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    No cóż nie pykło, próby zapisu obojętnie jakiej komórki też nic nie dają więc możliwe że jest zablokowany. Ale program SmartBatteryHack.exe potrafi jedynie zczytać do pliku zawartość (mam dwie w tej chwili wersje bin ta z 1717 i inna którą udało się zgrać po siłowym wejściu w kontroler używając słów 0214 i 0517.

    Jak dostanę już zamówione zabawki to poprzez te układy można wgrać zawartość pamięci do kontrolera (o ile ten przyjmie cokolwiek) poprzez płytkę SMBus i zobaczymy czy uda się kontroler przywrócić do życia.

    Póki co mamy takie dane w BatMon

    Zrzut ekranu z programu BatteryMon pokazujący informacje o baterii Toshiba.

    Oczywiście nie ładuje, widać że wartości oszalały.
    Prawdopodobnie pierwszy kontroler już uwalony - chyba że wgranie softu przywróci go co myślę mało prawdopodobne.

    Przy wgraniu kodu z Arduino widać że teraz odczyt kluczy przedstawia się następująco

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    Widać że parametry wpisane w pamięć uległy całkowitemu wykasowaniu lub dostęp do nich został zablokowany.

    To tyle póki co reszta jak przyjdą zabawki ;)

    Pozdrawiam ....
  • #7 21301942
    jackfinch
    Poziom 19  
    Posty: 348
    Pomógł: 21
    Ocena: 42
    te wartośći 1717 to ponoć występują kiedy kontroler jest w tzw. BOOT MODE. Wyjście z tego trybu następuje ponoć kiedy wyślemy komęde 08 do kontrolera. Info na załączonym obrazku.
    Załączniki:
    • Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino BOOT MODE.jpg (113.94 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #8 21380241
    DJCheester
    Poziom 28  
    Posty: 2066
    Pomógł: 75
    Ocena: 950
    Witam

    Wszystkiego dobrego w Nowym Roku ;)

    Trochę mnie w temacie nie było ale cały czas gryzłem to ustrojstwo.

    Dobrze gadasz kolego z tym 08.

    Jak pisałem ostatnio zakupiłem zabawki tj dwie płytkie pierwsza to CP2112 a druga to FX2LP.

    Przy pomocy programy DJi Battery Killer oraz tego modułu CP2112.


    Fioletowa płytka z układem CP2112 na beżowym tle.

    https://pl.aliexpress.com/item/1005005472604933.html

    I na podstawie tego filmu

    https://www.youtube.com/watch?v=uhSMc_fPxh8

    W skrócie polega to na sprawdzeniu poprawnego połączenia z baterią wybrania Chipu BQ30z55 odczytu informacji pakietu

    Po czym zrobienie czterech kroków o których mówi autor filmu jak również jest to opisane tutaj

    https://www.karosium.com/2016/08/hacking-bq8030-with-sanyo-firmware.html

    po tej operacji wchodzimy do trybu BootROM gdzie mamy już dostęp do odczytania i zapisania na dysku zawartości pamięci EEPROM

    W programie HxD lub innym edytorze edytujemy zawartość

    Offset 00000600 i komórki 01 i 02 to słowo to liczba cykli w systemie HEX należy podać zamiast istniejących 00 01 wtedy ustawiamy na 1 cykl ładowania.

    Offset 00000600 i komórki 03 i 04 to słowo to zapamiętana pojemność baterii przez kontroler oczywiście w systemie HEX - wartość jaką należy wpisać to 1388 (odpowiednio 5000) co oznacza pojemność 5000mAh.

    Teraz zapisujemy zmiany i wgrywamy do układu zmieniony bin, po czym opuszczamy tryb BootROM


    Zrzut ekranu programu DJI Battery Killer pokazujący dane baterii.

    Tak więc udało się zresetować kontroler.

    Zakupiłem do tego celu 4x Li-ion SAMSUNGA 3500mAh co da mi pojemność nie 5000mAh a 7000mAh i po wgraniu do kontrolera pojemności 7000mAh (póki co bez wymiany ogniw czas na baterii to ponad 6h) pokazuje BatMon

    Zrzut ekranu programu BatMon z informacjami o baterii laptopa.

    Jak się bawić to się bawić - zakupione akumulatory oczywiście 4szt

    Dwie fioletowe ogniwa litowo-jonowe Samsung leżące na dywanie.

    Z tego co się orientuję kontroler ma opcję Chemistry i jakieś parametry prawdopodobnie są tam zapisane możliwe że jakaś kalibracja i powinno się wymieniać na takie same ogniwa ale co tam zobaczymy jak to się sprawdzi.

    Właśnie dotarło kolejne "ogniwo" mojej układanki tj moduł zgrzewarki do ogniw Li-ion

    Elektroniczna płytka z elementami na czerwonym tle
    Moduł zgrzewarki do ogniw z napisem YXKY na pomarańczowej obudowie.

    Do tego mam transformator 12V 50A czyli 600VA powinien się nadać a jeśli nie to się posłucha YT i rozbierze się jakąś mikrofale - tamte trafa podobnież idealnie się nadają do tego modułu.

    Transformator toroidalny TS 600VA na tle zielonego materiału.

    Po wgraniu wsadu eeprom z innej pamięci ożył ten kontrloler co go wcześniej uśmierciłem ;)

    I zrobiłem z niego ulepek ;) czyli królika doświadczalnego.

    Bateria litowo-jonowa owinięta niebieską taśmą z widocznym układem scalonym.
    Bateria litowo-jonowa z oznaczeniem „1750” na obudowie na tle dywanu.

    Próbowałem ubić ulepka ale nie udało mi się oto kilka wniosków i mitów odnośnie tego kontrolera.


    KILKA UWAG NA ZAKOŃCZENIE:

    W testach wzięły udział cztery baterie tego samego typu czyli PA3689U-1BRS, w jednej baterii podczas prób uszkodziłem wsad pamięci eeprom, co sprawiło że bateria nie była widziana w laptopie. Również jeśli zostawimy baterię w trybie BootROM też nie będzie widziana w laptopie.

    Kolejna sztuka miała duży przebieg (liczba cykli około ponad 560 cykli i pojemność znacząco się zmniejszyła, po resecie kontrolera (bez wymiany ogniw) pojemność zwiększyła się do około 4000mAh więc nie wymagała wymiany ogniw.

    Kolejna bateria pomimo zresetowania sterownika szybko zredukowała swoją pojemność do 1092mAh co świadczyło że ogniwa faktycznie straciły pojemność. Tu potrzebna była wymiana ogniw.

    Kontroler można dowolnie odłączać od zasilania – sprawdziłem kolejność odłączania ogniw od plus pakietu poprzez pośredni i GND na końcu. Oraz drugą kombinację czyli odwrotnie zaczynając odłączać ogniwa od GND poprzez pośredni i plus pakietu. Przy wymianie akumulatorów kontroler był w trybie normalnym.

    Po wymianie ogniw kontroler nie odpowiada na polecenia SMBus, po włożeniu baterii do laptopa tylko szybko miga dioda baterii sygnalizując uszkodzenie – laptop się nie uruchamia.

    W takiej sytuacji wystarczy podłączyć zasilanie do laptopa bateria zacznie się ładować, można uruchomić laptopa i uruchomić program diagnostyczny np. BatMon.

    Przy wprowadzeniu kontrolera w tryb BootROM i opuszczenie go skutkuje automatycznym usunięciu flag pojemności.

    Program BatMon pokazuje poprawną pojemność w moim przypadku 5000mAh i doładowuje akumulatory zaczynając od 0% (nawet gdy akumulatory są naładowane w 95% to świadczy o usunięciu flag) po pełnym doładowaniu następuje skok do 100% i kontroler w tym miejscu zapisuje flagę 100% czyli bateria naładowana.

    Formatowanie, w takiej sytuacji należy po osiągnięciu 100% ustawić w systemie w opcjach zasilania aby komputer z baterii nie wyłączał monitora wybierając opcję „Nigdy” oraz tryb uśpienia i wyłączenie po upływie czasu też ustawić na „Nigdy” oraz hdd też na nigdy. Tak najlepiej zostawić komputer aby nic na nim nie robić aby rozładowywanie w miarę stabilnie przechodziło czyli zostawiamy na pulpicie.

    Gdy mamy takie ustawienia odłączamy zasilanie, laptop będzie pracował na baterii aż do czasu gdy się rozładuje bateria wtedy laptop przejdzie hibernację systemu. Kontroler w tej sytuacji wykrywa że prąd pobierany z baterii spadł do niewielkiej wartości wstawia w tym momencie flagę minimalnej pojemności i tym sposobem kontroler zmodyfikuje wartość komórki FCC czyli „Full Charge Capacity”. Po czym odczekujemy jeszcze kilka minut i uruchamiamy komputer z zasilacza sieciowego. Po wybudzeniu systemu spoglądamy na program BatMon – dane w programie powinny zostać zaktualizowane na podstawie informacji z kontrolera baterii.

    Komunikacja z kontrolerem możliwa jest tylko z podłączonym pakietem akumulatorów (u mnie 2S2P czyli pakiet 7.2V).

    To tyle co udało się osiągnąć.

    Pora na kolejną płytkę FX2LP

    Moduł elektroniczny z niebieskim przyciskiem, złączem USB i różnymi komponentami na niebieskiej płytce PCB.

    Za pomocą tej płytki można zrobić to samo co za pomocą CP2112 ale dodatkowo z tego co się orientuję można zgrać oprócz zawartości pamięci eeprom również oprogramowanie układowe co może być przydatne w przypadku uszkodzenia takowego, oczywiście jak uda mi się odpalić drugą płytkę to wytestuję to na moim ulepku ;)

    Pozdrawiam ...
  • #9 21426931
    DJCheester
    Poziom 28  
    Posty: 2066
    Pomógł: 75
    Ocena: 950
    Witajcie po dłuższym czas nieobecności.

    Uruchomiłem drugą płytkę którą wcześniej pokazałem.

    W przypadku płytki CP2112 nie trzeba było instalować sterowników - system sam wgrywa odpowiednie sterowniki

    W przypadku FX2LP były problemy z zainstalowaniem sterowników do tej płytki - standardowo te które proponuje system nie działają.

    Niby wszystko w systemie poprawnie zainstalowane ale przy próbie używania poleceń wyskakuje taki błąd - ten błąd jest związany z brakiem komunikacji

    Zrzut ekranu konsoli Windows z błędem libusb error -1.

    Na szczęście jest taki programik ZADIG 2.9 - nie trzeba mieć nic innego, można go pobrać stąd, pozwala wymienić sterownik.

    https://zadig.akeo.ie/

    Więc wymieniamy na libusbK v3.1.0.0

    Zrzut ekranu programu Zadig z urządzeniem Cypress FX2LP.

    Po takim zabiegu mamy połączenie z płytką możemy zaczynać zabawę

    Po pobraniu narzędzi opracowanych i udostępnionych przez

    https://www.karosium.com/2016/08/hacking-bq8030-with-sanyo-firmware.html

    Oraz postępując jak na tym filmie

    https://www.youtube.com/watch?v=1IuDC3vI9Ck

    Można również zresetować układ tzn licznik cykli oraz usunięcie flag pojemności.

    Można trochę więcej niż w przypadku CP2112 i DJI Battery Kiler

    Tu mianowicie można pobrać zawartość pamięci EEPROM w której dokonujemy zmian i wgrywamy do pamięci kontrolera.

    Dodatkowo można pobrać oprogramowanie układowe - przydaje się gdy się ubije przez przypadek soft na jednej baterii to można wgrać z drugiej identycznej baterii - taka operacja działa - dla testów skopiowałem oprogramowanie układowe z działającej baterii do mojej testowej - ma ona teraz taki sam numer seryjny.

    Raport uzyskany przed resetem pojemność 1092mAh i 29 cykli na liczniku

    Okno wiersza poleceń z raportem SMBus dotyczącym akumulatora SANYO.

    No i po resecie pojemność 5000mAh i 1 cykl na liczniku

    Zrzut ekranu okna Wiersza polecenia z raportem SMBus wyświetlającym dane baterii.

    Temat kontrolera uważam za wyczerpany. Pozostaje jeszcze kwestia tytułowa czyli napisanie oprogramowania (skeczu) w Arduino aby po podłączeniu baterii skecz automatycznie rozpoznawał i identyfikował baterię odczytując i porównując z zapisanym w pamięci modelem baterii. Gdy będzie zgodna uruchomi po potwierdzeniu cykl resetu baterii czyli wejście do BootROMu zmianiu w pamięci tylko tych wartości na domyślnie 1388hex (czyli 5000dec) oraz 00 01 czyli jeden cykl po czym automatycznie opuści tryb BootROM. Jak znajdę znów trochę czasu na tym się skupię.

    PS. Zgrzewarka jeszcze nie gotowa / brak czasu na dłubanie mechaniczne aby to wszystko stabilnie upchnąć w obudowę.

    Tymczasem proszę o poradę jakby tu skompilować pliki dostępne tutaj

    https://github.com/lmdpua/CP2112-Laptop-Battery-Reader

    Zdaje się że jest to jakieś źródło programu który pokazuje bity błędów zapisane w kontrolerze. Jakbyście dali radę skompilować to pod 32bit i 64bit.

    Pozdrawiam ...
  • #10 21543511
    DJCheester
    Poziom 28  
    Posty: 2066
    Pomógł: 75
    Ocena: 950
    Witajcie

    Kolejne zmagania z Smart Battery ;) i kontrolerem BQ8030DBT

    Jako że udało się już ogarnąć reset tego kontrolera przyszedł czas na zbudowanie zgrzewarki z tego chińskiego modułu co wyżej prezentowałem.

    Najpierw na brudno ;) i pierwsze testy zakończone sukcesem.

    Zbliżenie na chiński moduł elektroniczny z podłączonym transformatorem toroidalnym i przewodami na betonowej podłodze.
    Zgrzewarka punktowa złożona z chińskiego modułu na betonowej podłodze, widoczny transformator toroidalny, przewody oraz elementy sterujące.

    A potem na czysto montując wszystko w obudowie.

    Zgrzewarka punktowa DIY z prostokątną, białą obudową, przewodami i uchwytem, leżąca na kocu z motywem zwierzęcym.
    Zgrzewarka punktowa z widocznym transformatorem toroidalnym i przewodami, zamontowana w plastikowej obudowie, leżąca na trawie.
    Zgrzewarka punktowa z transformatorem toroidalnym i elektroniką zamontowana w plastikowej obudowie na trawie.
    Małe urządzenie elektroniczne w białej obudowie z wyświetlaczem LED i dwoma pokrętłami, z przymocowanymi przewodami oraz uchwytem z pomarańczową osłoną.
    Osoba trzyma białą, prostokątną obudowę z uchwytem. Na łóżku obok leży przewód i małe urządzenie z pomarańczową rączką.

    A oto efekty po dobraniu czasu i mocy na 15 czas i 60 moc.

    Cztery ogniwa litowo-jonowe 18650 połączone taśmą niklową, gotowe do użycia w pakiecie baterii.
    Cztery cylindryczne ogniwa litowo-jonowe Samsung 18650 połączone metalową taśmą do zgrzewania punktowego, leżące na dywanie.
    Cztery ogniwa cylindryczne Samsung INR18650-35E zamontowane w plastikowej ramce na dywanie.
    Cztery różowe ogniwa litowo-jonowe Samsung 18650 zamontowane w czarnej obudowie baterii na beżowym dywanie.
    Rozebrany akumulator laptopa z widocznymi ogniwami i płytką kontrolera umieszczony na dywanie.

    No ikwestia resetu kontorlera i ustawienia pojemności fabryczenej 7000mAh zamiast oryginalnie 5000mAh

    Kontroler przyjął i poprawnie nadał flagi określając pojemność na 7001mAh

    Zrzut ekranu programu BatteryMon pokazujący pełne informacje o akumulatorze, w tym pojemność 7001 mAh.

    Przy odłączeniu zasilania laptop zaczął rozładowywać baterię i wskazał orientacyjnie czas pracy ponad 6 godzin na akumulatorze przeliczając zużycie do aktualnie wpisanej pojemności.

    Zrzut ekranu programu BatteryMon pokazujący szczegóły baterii laptopa, w tym pojemność, producenta i status rozładowywania.
    Zrzut ekranu programu BatteryMon pokazujący wykres rozładowania baterii laptopa oraz szczegóły dotyczące pojemności i zużycia energii.

    Po tym następuje rozładowywanie baterii i przy około 20% następuje crash dump czyli po prostu kontroler po pomiarze napięcia hibernuje komputer i po ponownym odpaleniu z baterii zmienia flagę pojemności z 7000mAh na 5500mAh (tyle widocznie moje ogniwa miały - ewentualnie też dochodzą kwestie chemii bo zainstalowałem inne ogniwa były orygnianie SANYO 2500mAh a teraz mam SAMSUNGI 3500mAh.

    Wykres rozładowania baterii laptopa w programie BatteryMon, pokazujący spadek pojemności i szczegółowe dane.
    Zrzut ekranu okna programu BatteryMon pokazującego szczegółowe informacje o stanie baterii laptopa.

    Teraz testy i formowanie baterii ;)

    O wynikach testów poinformuję po około 3-5 cyklach pracy na baterii

    Pozdrawiam ...
  • #11 21563524
    DJCheester
    Poziom 28  
    Posty: 2066
    Pomógł: 75
    Ocena: 950
    A ja zakończyłem regenerację baterii od laptopa - ogłaszam pełen sukces ;-)

    Po uformowaniu jest 5500mAh (z ogniw użytych miało być 7000mAh - zmierzyłem ogniwa ładowarka po pomiarach wskazała 6800mAh no ale przy prądzie rozładowania 300mA - a laptop przy pracy na pulpicie bez obciążenia bierze 600mA na jedno ogniwo - czyli prąd pobierany z baterii to jest 1.2A przy 7.4V co daje około 9W)

    Ale 5500mAh to bardzo dobry wynik - rozbieżności mogą wynikać z chemii bo były inne akumulatory SANYO 2500mAh a założyłem SAMSUNG 3500mAh inna charakterystyka rozładowania - teoretycznie kontroler ma możliwość ustawienia rodzaju chemii nawet znalazłem wartości HEX do podmiany w pliku EEPROM ale nie wiem na której komórce zapisuje.

    Kod: Text
    Zaloguj się, aby zobaczyć kod


    Możliwe że kiedyś to ustalę i wtedy ponownie sformatuję baterię z nowymi ustawieniami.

    Bateria po sformatowaniu.

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Łączny czas około 5 godzin 14 minut na baterii

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino
    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Ładnie równomiernie schodzi procent naładowania aż do 7% i pojawia się ostrzeżenie.

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Po ponownym uruchomieniu z baterii można dalej korzystać - co najważniejsze nie ma crash dump - przy starych zużytych ogniwach się to zdarzało.

    Po ponownym uruchomieniu 6% i działa dalej

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino
    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Do 1% jest 4 i pół godziny pracy na baterii
    I teraz 30 minut pracuje na 1% do 5 godzin

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino
    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Po czym jeszcze przeskakuje na 0% ale tu już wystarczy energii tylko na zamknięcie systemu około 1minuty

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino
    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Łączna praca ponad 5 godzin i dwie sekundy do końca ;) ale spokojnie można system zamknąć

    Więc pełen sukces ;)
    Teraz kupuję kolejne cztery akumulatory SAMSUNG 3500mAh i tu kolejna dobra nowina bo nowe akumulatory spadły z ceny okoo 20zł na 15zł więc koszty naprawy baterii też spadają do 60zł ;)

    A tak wygląda crash dump po tym strasznie leci pojemność pakietu - kontroler zmniejsza zmierzoną pojemność przy takiej zapaści ale to oznacza że akumulatory są zużyte

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    No i przy okazji jest zgrzewarka do akumulatorów i doktorat napisany z kontrolera BQ8030DBT. Bateria używana już około 5x i cały czas zachowuje się tak jak opisałem, teraz przynajmniej spokojnie można pracować na laptopie bez stresu że przy 60% nastąpi hibernacja i koniec to już czas przeszły.

    Teraz pozostaje kwestia napisać skecz na Arduino który to będzie resetował baterię - część już napisałem jednak są problemy z zapisem bloków do kontrolera BQ8030DBT - proszę o pomoc w tym temacie, jeśli sami nie potraficie podeślijcie komuś kto mógłby coś pomóc w temacie - będę wdzięczny i w końcu zakończymy ten temat pełnym sukcesem.

    https://www.elektroda.pl/rtvforum/topic4119946.html

    Pozdrawiam ...
  • #12 21813111
    CodeBoy
    Poziom 33  
    Posty: 3271
    Pomógł: 138
    Ocena: 687
    Też by mi się przydał taki soft aby odblokować Smart battery.
  • #13 21814435
    DJCheester
    Poziom 28  
    Posty: 2066
    Pomógł: 75
    Ocena: 950
    Jest przygotowywany opis i wnioski końcowe dotyczące tematu, jak czas pozwoli to postaram się w najbliższym czasie opisać.
  • #14 21891789
    DJCheester
    Poziom 28  
    Posty: 2066
    Pomógł: 75
    Ocena: 950
    Witajcie - trochę mnie nie było i nadal nie będzie więc kończę po woli ten temat, baterie używane już kilkakrotnie zachowują się lepiej niż nowe.

    Jedyny minus to uzyskanie pojemności 5500mAh a powinno być 7000mAh.
    Okazuje się że kontroler ma możliwość powiększenia tylko o 10% pojemności od wpisanej jako pojemność fabryczna

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Po pierwszym naładowaniu jest 7000mAh a po rozładowaniu do zera spada do 5500mAh

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Choć więcej jest w akumulatorkach bo zmierzone przed zgrzewaniem miały 3400mAh więc daje to 6800mAh.

    Tak więc kontroler uchlał 1300mAh - ale ta pojemność jest fizycznie w akumulatorach więc przy kolejnych rozładowaniach długo wisi na pojedynczych procentach i na 0% więc spokojnie można pracować wykorzystując pełną pojemność akumulatorów a w miarę ze starzeniem się ogniw i faktycznym zmniejszaniem się pojemności ogniw będzie się to dopasowywać w tej chwili jest zapas.

    Gdybym wiedział w której komórce przechowywana jest wartość Design Capacity to przy zmianie jej na 7000mAh bateria powinna zachowywać się prawidłowo i prawidłowo odliczać pełne 7000mAh.

    Możliwe że kiedyś na ulepku potestuję zmiany EEPROMU.
    Wiem że część danych posiada sumy kontrolne więc tu może tak łatwo z podmianą wartości nie pójść jak w przypadku pojemności.

    To tyle jeśli chodzi o testy baterii po resecie i wymianie ogniw teraz pozostał tytułowy problem czyli jak w prosty sposób zresetować baterię.

    Najprościej i najtaniej było by przy użyciu Arduino.

    No to zaczynamy.

    Jakiś czas temu zbudowałem taki projekt - jest to nakładka na Arduino UNO zawierająca wyświetlacz LCD 2x16, trzy przyciski potencjometr oraz wejście I2C

    W sam raz dla testowania i zabawę I2C ze Smart Battery.

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Przygotowałem kilka skeczy - pierwszy z nich to odczyt parametrów baterii w trybie użytkownika. Podłączamy baterię w ten sposób do Arduino

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Warto pamiętać że piny SDA i SCL muszą być podciągnięte rezystorami 4.7k do 5V na Arduino (u mnie to jest zrobione na płytce - nakładce)

    Rezystor 10 Ohm jest po to aby uruchomić baterię tzn aby na skrajnych pinach - pojawiło się napięcie w moim przypadku to 7.4V - można wtedy obciążyć baterię i uzyskać dane ile prądu płynie poprzez baterię oraz kontroler sam oblicza czas pracy pozostały na baterii (do tej pory myślałem że robi to komputer - laptop) a po prostu laptop dostaje te dane z kontrolera.

    Wgrywamy pierwszy skecz Battery_Info_Serial_Monitor.ino

    Ten skecz podaje wszystkie parametry baterii na Serial Monitor

    Kod: Text
    Zaloguj się, aby zobaczyć kod


    Kolejny skecz Battery_Reader_LCD.ino

    Podaje na serial monitor mniej informacji odczytanych z baterii ale za to podaje te dane również na wyświetlaczu LCD

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    I bateria przed wymianą ogniw (naprawą)

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Te skecze nie ingerują w stan baterii (tzn podłączając i odczytując dane nic nie zmieniamy w baterii - one są normalnie dostępne z poziomu użytkowania baterii - są one przekazywane do komputera i korzysta z nich np program BatMon którego używam do testów baterii.

    Kolejny skecz to BootROM_Enter_Exit_LCD.ino
    Tutaj już ingerujemy w baterię tzn wchodzimy lub wychodzimy z tryby BootROM.

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Ten skecz nie robi nic poza tym że wchodzimy i wychodzimy z trybu BootROM

    Ale po podłączeniu baterii wejściu w tryb BootROM i wyjściu z niego - skutkuje to tym że zostają automatycznie usunięte flagi pojemności czyli Full Charge Capacity - czyli po takiej operacji kontroler zaczyna na nowo mierzyć baterię.

    Dobre jeśli chcemy bez wymiany ogniw ponownie sformatować baterię - np gdy długo leżała i ogniwa nadmiernie się rozładowały - przez co po podłączeniu do komputera mieliśmy np 5000mAh a w ogniwach było zaledwie 1000mAh to niestety kontroler ucina nam 4000mAh - przy usunięciu flag pojemności zostanie nam przywrócona pełna pojemność baterii. Przy "pierwszym" ładowaniu po operacji będzie długo wisiał na 99% przy ładowaniu i będzie ładował bardzo małym prądem ale doładuje do pełna i odzyska nam utracone 4000mAh - to taki przykład. Jednak jeśli ogniwa faktycznie są zużyte nie pozostaje nic innego jak wymiana na drugie.

    Kolejny skecz Odczyt_Cztery_Slowa_Serial_Monitor_BootROM.ino

    To kluczowe - bateria musi być wcześniej w trybie BootROM czyli wchodzimy w ten tryb w poprzednim skeczu.

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Otwieramy serial monitor i tutaj mamy odczyt z pamięci EEPROM z komórek odpowiadających za cykle ładowania i pojemność zmierzoną

    Kod: Text
    Zaloguj się, aby zobaczyć kod


    Odpowiada to tej baterii zużytej - oczywiście wartości w HEX po dwie liczby czytamy czyli 0006 to liczba cykli a 032D to 813mAh

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    I ostatni skecz Odczyt_LCD-BootROM.ino wyświetla nam na wyświetlaczu wartości komórek bezpośrednio odczytanych z pamięci baterii

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino

    Gdy w tym skeczu podłączymy baterię która nie będzie w trybie BootROM otrzymamy owe tajemnicze 1717 - czyli te wartości które to na początku tematu sprawiały mi tyle problemów ;)

    Regeneracja baterii w Toshiba NB100 - kontroler BQ8030DBT - jak zresetować I2C Arduino Układ z wyświetlaczem LCD 16x2 pokazujący „Licznik: 5911” i „Pojemn: 5911mAh”

    Po odczycie w DEC mamy 5911 i tak to by się przedstawiało.

    Pytanie a gdzie zapis i możliwość zmiany wartości bo przecież o to chodziło ???

    I tu zaczynają się schody nie do przejścia dla Arduino.
    O ile Arduino dobrze radzi sobie z odczytami to zapis słów do pamięci kończy się brakiem odpowiedzi z kontrolera, choć zapis przebiega i kontroler nie zwraca błędów to po odczytaniu komórek te pozostają z poprzednim zapisem.

    Czemu zatem tak się dzieje ???

    Wertowałem dokumentację dostępną w necie i z pomocą AI i dostałem kilka odpowiedzi czemu płytka FX2LP radzi sobie z zapisem i odczytem pamięci a Arduino tylko z odczytem.

    Odpowiedź jaką otrzymałem jest taka że Arduino tylko emuluje protokół SMBus który to jest używany w komunikacji z baterią a płytka FX2LP jest komunikatorem po SMBus czyli natywnie wspiera w 100% tą komunikację, choć dodawałem funkcje do Arduino które wyliczały czas odpowiedzi PEC i inne dodatkowe sygnały który kontroler baterii spodziewał się otrzymać niestety nie udało mi się z powodzeniem uzyskać zapisu pamięci poprzez Arduino.

    Można to za to bezproblemowo zrobić równie tanią płytką jak Arduino FX2LP (pisałem o niej wyżej) Karosium przedstawił kompletny sposób resetu tego kontrolera za pomocą tej płytki oraz niezbędne narzędzia - linki podawałem wyżej w temacie.

    Jedynie co zrobiłem dla metody Karosium to napisałem plik bat który robi to za nas - nie musimy ręcznie wpisywać wszystkich komend - po wgraniu pliku bat do folderu z narzędziami SMBus wystarczy uruchomić plik aby uzyskać w tym samym folderze plik z oczytaną zawartością pamięci EEPROM. Po uruchomieniu pliku bat wystarczy czytać co wyświetla się w oknie i stosować się do informacji.

    W załączniku są dwa pliki bat - pierwszy z nich EEPROM Only odczytuje tylko zawartość pamięci EEPROM, potem daje czas użytkownikowi na zmianę zawartości pamięci np poprzez program HxD Editor i zapis zmienionej pamięci z powrotem do kontrolera.

    Drugi oznaczony Full oczytuje zarówno EEPROM jak i oprogramowanie układowe i potem je zapisuje.

    Dla zmiany pojemności baterii wystarczy uruchomić EEPROM Only.

    To by było na tyle, dalej z bateriami nie będę walczył uzyskałem aż nadto co chciałem ;)

    Ale jak to mówią "Cierpliwy to i kamień ugotuje".

    Teraz sezon letni więc i prace na dworze się zaczynają tak więc czasu na elektroniczne dłubanie mniej.

    Pozdrawiam ....
    Załączniki:
    • SmartBattery.zip (13.84 KB) Musisz być zalogowany, aby pobrać ten załącznik.
📢 Słuchaj (AI):

Podsumowanie tematu

✨ Dyskusja dotyczy regeneracji baterii do Toshiba NB100 z kontrolerem BQ8030DBT oraz resetu/odblokowania przez magistralę SMBus/I2C z użyciem Arduino i interfejsów CP2112 oraz FX2LP. Opisano problem baterii, które są wykrywane i ładowane, ale podczas rozładowania laptop wyłącza się przy około 80%, a diagnostyka Batmon pokazuje nieprawidłową krzywą rozładowania. Omawiane są metody komunikacji z kontrolerem, wgrywanie skeczu SmartBatteryHack.ino, odczyt i zapis rejestrów, wejście w tryb BootROM/BOOT MODE po wysłaniu komendy 08, a także użycie programów DJi Battery Killer i Karosium do pracy z pamięcią EEPROM. W dalszej części opisano problemy ze sterownikami dla FX2LP, rozwiązane przez Zadig i libusbK, oraz końcowy sukces w resetowaniu kontrolera i regeneracji pakietu, wraz z budową zgrzewarki do wymiany ogniw i testami pojemności baterii.
Wygenerowane przez model językowy.
REKLAMA