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

[Rozwiązano] Arduino UNO jako reseter baterii z kontrolerem BQ8030 – adaptacja kodu bq8030flasher.c

DJCheester 01 Maj 2025 17:14 729 2
  • #1 21536322
    DJCheester
    Poziom 28  
    Posty: 2090
    Pomógł: 75
    Ocena: 960
    Witajcie mam problem z daptacją kodu.

    Zajmuję się kontrolerem BQ8030 można z nim się połączyć przez I2C i za pomocą transmisji SMBus można ten kontroler zresetować.

    Podszedłem do tematu i udało się za pomocą modułów CP2112 oraz FXL2P udało się zresetować kontroler. Założyłem oddzielny temat dotyczący tego problemu. Link poniżej.

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

    Aby baterie do mojego laptopa ponaprawiane w co niektórych sam reset wystarczył ale czasami skończyło się na wymianie ogniw.

    Do setna chciałem zrobić prosty programator (a właściwie reseter) baterii aby nie robić za każdym razem kiedy będę chciał edytować pamięć kontrolera.

    Wpadłem na pomysł aby użyć do tego Arduino UNO tanio i dobrze.
    Zrobiłem nawet PCB (nakładkę na arduino uno z potrzebnymi elementami oraz wyjście na baterię.

    Wyświetlacz LCD na płytce Arduino z napisem ARDUINO TESTER SMART BATTERY!, podłączony przewodem USB, z trzema przyciskami i niebieskim czujnikiem.
    Adapter kablowy DIY z czterema przewodami (czerwony, niebieski, zielony, czarny) i wtykiem goldpin na tle wykładziny.

    No i kwestia kodu, napisałem trzy funkcje czyli wejście w tryb BootROM kontrolera, oraz odczyt zawartości pamięci EEPROM, i funkcję wyjścia z trybu BootROM.

    Funkcja viod wejścia do BootROM

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    Funkcja działa i powoduje odblokowanie baterii i umożliwia dostęp do pamięci kontrolera i można go ściągnąć do tablicy i wyświetlić w Serial Monitorze

    Oto drugi kod który wyświetla w serial monitorze zawartość pamięci

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    Linijka

    // SMBCommand(0x08, true);

    Powoduje od razu po odczytaniu wyjście z trybu BootRom

    Program generuje zapisy w serial monitorze

    Kod: Text
    Zaloguj się, aby zobaczyć kod


    Po modyfikacji kodu bo aby zresetować licznik cykli i ustawić flagi pojemności na fabryczne potrzeba tylko czterech komórek

    Kod: Arduino
    Zaloguj się, aby zobaczyć kod


    Po takiej zmianie wyświetla się to co potrzeba na serial monitrze

    Kod: Text
    Zaloguj się, aby zobaczyć kod


    Problem mam z opcją zapisu zmienionych wartości w te komórki, potrzebowałbym pomocy bardziej obeznanych użytkowników w programowaniu.

    Zarówno zapis jak i odczyt możliwy jest za pomocą płytki FX2LP - udostępnione są narzędzia na PC zarówno dla odczytania jak i zapisania danych poprzez wiersz poleceń na komputerze.

    https://github.com/karosium/smbusb

    Na githubie jest folder tools i plik smbusb_bq8030flasher.c

    Jest to plik nieskompilowany prawdopodobnie w C

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jeśli ktoś mógłby mi pomóc odczytać i poprawnie napisać warunki lub funkcję odwrotną do tej aby na zadeklarowanej tablicy w kodzie Arduino wbić na stałe cztery słowa 00 00 13 88 i te cztery słowa odczytanie podmieniać i nadpisywać w kontrolerze, wtedy można by było zrobić prosty układ (taki jak ja mam i robić tę operację bez użycia komputera oraz przy używaniu tylko przycisków / menu na LCD.

    Pozdrawiam ...
  • #3 21907822
    DJCheester
    Poziom 28  
    Posty: 2090
    Pomógł: 75
    Ocena: 960
    Witam powyższe moje posty w tym temacie i "doktorat" z kontrolera wyczerpały moją ciekawość jeśli chodzi o moje baterie (a mam ich kilka) zostały zregenerowane i to mnie niezmiernie cieszy.

    Materiały które opublikowałem i sporo wniosków z testów myślę pomogą co niektórym w eksperymentach z takimi bateriami.

    W tym temacie zamieściłem moją "walkę" z kontrolerem BQ8030DBT

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

    Pozdrawiam....
REKLAMA