Table of Contents

Mihai-Alexandru VASILIU - Battery Capacity Tester

Autorul poate fi contactat la adresa: mihai.vasiliu.93@gmail.com

Introducere

Proiectul constă în realizarea unui dispozitiv de măsură a capacității unui element galvanic (ZnMnO2, NiMH, NiCd, Li-Ion etc.) prin descărcarea acestuia la curent constant reglabil și monitorizarea tensiunii și timpului de descărcare pe PC prin interfața RS232C. Dispozitivul este util pentru a compara capacitatea înscrisă de producător pe baterie cu capacitatea reală și pentru a testa performanțele bateriei în diferite niveluri de consum.

Proiectul este o aplicație practică a unui Consumator de Curent Constant.

Descriere generală

Plăcuța de laborator va fi conectată la un LCD cu caractere 16×2 pe care se va afișa continuu intensitatea curentului prin baterie, tensiunea bateriei, intensitatea aleasă de utilizator și modul de funcționare.

Input-ul utilizatorului se face printr-un rotary encoder cu care se poate varia intensitatea și un buton de start/stop.

Trimiterea datelor pentru logging (opțional) se va face prin serial către un PC.

Controlul analogic cu LM324 este complementar firmware-ului și ajută la menținerea unei intensități cât mai constante.

Hardware Design

Descrierea ciruitului

Piesa de bază a circuitului este N-MOSFET-ul IRF1404, care asigură controlul curentului prin bateire. Criteriile de alegere au fost Rds mică (0,004ohm), Vdss de 40V, curent mare Ids = 202A și Toperare de 175*C, ideal pentru această aplicație.

Rezistența de putere este necesară pentru a asigura controlul corect (feedback pentru amplificatorul operațional) al intensității cât și ca rezistență shunt pentru a măsura curentul cu ajutorul microcontroller-ului. Practic, la curent mare, ea este principalul element disipativ de căldură, avantaj: Toperare max 250*C.

Amplificatorul operațional LM324N este folosit în buclă de reacție negativă pentru a controla și menține constant curentul, mai precis, tensiunea de poartă a tranzistorului MOS. Principiu de funcționare: AO va face „tot ce îi stă în putință ca V+ = V-”, adică va modifica intensitatea prin baterie după cum ne dorim.

Condensatoarele C1 și C2 sunt folosite ca filtre trece-jos, deoarece semnalul de control de la microcontroller este de tip PWM, cu o frecvență de aprox 7,8kHz.

Ca și tensiune rail pozitiv pentru AO s-a folosit o mini-sursă în comutație ce generează 12Vcc. Astfel s-a putut realiza tot circuitul alimentat doar prin USB.

Lista de piese

Software Design

Firmware microcontroller

Ca mediu de programare am folosit Atmel Studio 6.2 și programator AVRISP mkII.

Acțiunea executată la infinit de microcontroller este de a citi analog tensiunea pe baterie și intensitatea prin aceasta, urmând ca pe baza acestor date să se ajusteze ieșirea PWM pentru a menține o intensitate constantă prin baterie. Valorile citite sunt calculate ca medie a 10 citiri succesive pentru a asigura o valoare consistentă. Ajustarea intensității bateriei se face continuu, comparând intensitatea curentă cu cea aleasă de utilizator și modificând PWM corespunzător. Astfel, dacă Ibat < Iset se va crește factorul de umplere până când cele două devin egale, respectiv și viceversa.

Citirea rotary encoder și butonului de start/stop se fac folosind întreruperi de I/O. Direcția de rotație a butonului este determinată de starea anterioară și starea curentă pe baza unui tabel de lookup. Trimiterea datelor pe serială se face tot prin întrerupere la primirea unui semnal din partea PC-ului.

Timer-ul 0 este folosit ca generator de PWM, la o frecvență de 7,8kHz, iar timer-ul 1 este folosit pentru a face refresh pe LCD deoarece se dorește ca datele să nu se actualizeze pe ecran de mai mult de 2-3 ori pe secundă.

Configurarea interfeței seriale este: 9600,n,8,1. Comenzile acceptate de dispozitiv pe serială sunt:

Comanda Descriere
D Citește un pachet de date de forma intensitate,tensiune
R Pornește achiziția de date
S Oprește achiziția de date

Software PC

Mediul de programare pentru partea de PC a fost Visual Studio 2013, în limbaj Visual Basic.

Software-ul gasește automat porturile serial disponibile și permite conectarea la cel corespunzător. Butonul start/stop activează tester-ul hardware și începe achiziția de date la intervalul de timp specificat. Datele pot fi salvate în format *.csv și pot si importate în Excel unde se poate crea curba de descărcare a bateriei la curent constant.

Rezultate Obţinute

În urma testelor și măsurătorilor efectuate, dispozitivul funcționează fără probleme cu curenți de până la 2A în mod continuu și pentru perioade scurte, cu curenți de până la 5A.

Temperaturile resitenței de putere și a tranzistorului MOS nu depășesc 75*C pentru condițiile de mai sus.

Precizia măsurătorilor este de 1%, iar rezoluția de două zecimale. Rata de refresh a display-ului este de 2-3 actualizări pe secundă, iar pentru citirea datelor de pe serial se recomandă cereri la interval de minim 1 secundă.

Exemplu de grafic de descărcare realizat în Microsoft Excel:

Capacitatea bateriei se calculează în felul următor, din grafic:

C = 1A * 50s = 1000mA * 0.01388h = 13.88mAh

Poză prototip:

Concluzii

Proiectul funcționează la parametrii așteptați.

Pe viitor doresc extinderea proiectului și transformarea sa într-un consumator de curent constant, respectiv de putere constantă ce va putea lucra cu tensiuni de până la 30V și curenți de 5A cu o răcire adecvată. De asemenea și îmbunătățirea software-ului de PC pentru crearea automată a graficelor și calcularea capacității bateriei.

Download

Sursa firmware microcontroller: bat_tester.zip

Sursa software PC: batview.zip

Exemplu date format csv: bct_data.zip

Jurnal

Data Observații
20/03/2015 Idee plan de funcționare bloc
03/04/2015 Docmunetare etaj analogic
05/04/2015 Testat etaj analogic
18/04/2015 Testat decodare rotary encoder
27/04/2015 Lipit piese plăcuța de bază
28/04/2015 Actualizat schema bloc și resurse
15/05/2015 Scriere software pt. micro.
16/05/2015 Scriere software pt. PC
17/05/2015 Adăugat schemă electronică
19/05/2015 Descriere schemă și software

Bibliografie/Resurse

Foi de catalog