- Warum brauchen wir einen Batteriekapazitätstester?
- Erforderliche Komponenten
- Schaltplan des Arduino-Batteriekapazitätsprüfgeräts
- Arduino-Programm zur Messung der Batteriekapazität
- Genauigkeitsverbesserungen
- Aufbau und Test der Schaltung
Mit dem Aufkommen der Technologie werden unsere elektronischen Geräte und Geräte mit immer funktionaleren und komplexeren Anwendungen immer kleiner. Mit dieser zunehmenden Komplexität hat sich auch der Strombedarf der Schaltung erhöht. Um das Gerät so klein und tragbar wie möglich zu machen, benötigen wir eine Batterie, die über einen langen Zeitraum und gleichzeitig hohen Strom liefern kann Wiegen Sie viel weniger, damit das Gerät tragbar bleibt. Wenn Sie mehr über Batterien erfahren möchten, können Sie auch diesen Artikel über grundlegende Terminologien von Batterien lesen.
Von den vielen verfügbaren Batterietypen sind Blei-Säure-Batterien, Ni-Cd-Batterien und Ni-MH-Batterien nicht geeignet, da sie entweder mehr wiegen oder nicht den für unsere Anwendung erforderlichen Strom liefern können. Daher bleiben uns die Lithium-Ionen-Batterien Dies kann einen hohen Strom liefern, während das Gewicht niedrig und die Größe kompakt gehalten wird. Zuvor haben wir auch ein 18650-Batterieladegerät und ein Booster-Modul sowie ein IoT-basiertes Batterieüberwachungssystem gebaut. Sie können diese bei Interesse überprüfen.
Warum brauchen wir einen Batteriekapazitätstester?
Es gibt viele Batterieanbieter auf dem Markt, die billige Nachahmungsversionen von Li-Ionen-Batterien verkaufen, die bizarre Spezifikationen mit einem sehr niedrigen Preis beanspruchen, der zu gut ist, um wahr zu sein. Wenn Sie diese Zellen kaufen, funktionieren sie entweder überhaupt nicht oder wenn ja, ist die Ladekapazität oder der Stromfluss so gering, dass sie mit der Anwendung überhaupt nicht funktionieren können. So wie eine Lithium - Batterie zu testen, wenn die Zelle nicht eine dieser billigen Kopien ist? Eine der Methoden besteht darin, die Leerlaufspannung ohne Last und Last zu messen, dies ist jedoch überhaupt nicht zuverlässig.
Wir werden also einen 18650- Batteriekapazitätstester für eine Li-Ion 18650-Zelle bauen, der eine vollständig geladene 18650-Zelle über einen Widerstand entlädt, während der durch den Widerstand fließende Strom gemessen wird, um seine Kapazität zu berechnen. Wenn Sie die beanspruchte Batteriekapazität nicht erhalten, während die Zellenspannung innerhalb der angegebenen Grenzen liegt, ist diese Zelle fehlerhaft und Sie sollten dies nicht verwenden, da der Ladezustand der Zelle unter Last sehr schnell abnimmt und ein Lokale Stromschleife bei Verwendung in einem Akkupack, die zu Erwärmung und möglicherweise Brand führt. Also lasst uns gleich hineinspringen.
Erforderliche Komponenten
- Arduino Nano
- 16 × 2 Zeichen LCD
- LM741 OPAMP IC
- 2,2 Ω, 5 Watt Widerstand
- 7805 Positiver Spannungsregler-IC
- 12V Netzteil
- 10kΩ Trimmerpotentiometer
- 0,47 uF Kondensator
- 33kΩ Widerstand
- DC Power Barrel Jack-Anschluss
- Leiterplatten-Schraubklemmen
- IRF540N N-Kanal Mosfet IC
- Perfboard
- Lötsatz
- Temperatur fällt
Schaltplan des Arduino-Batteriekapazitätsprüfgeräts
Das vollständige Schaltbild für den Batteriekapazitätstester 18650 ist unten dargestellt. Die Erklärung der Schaltung ist wie folgt:
Rechen- und Anzeigeeinheit:
Diese Schaltung ist weiter in zwei Teile unterteilt: Erstens eine niedrige 5-V-Versorgung für Arduino Nano und einen alphanumerischen 16 × 2-LCD-Bildschirm und deren Anschlüsse, um die Ergebnisse der Strom- und Spannungsmessungen in Echtzeit anzuzeigen. Die Schaltung wird über SMPS von der 12-V-Stromversorgung gespeist, oder Sie können eine 12-V-Batterie verwenden. Der maximale Strom für die Stromversorgung des Arduino- und LCD-Bildschirms liegt bei 60-70 mA.
Um die Spannung auf 5 V zu senken, verwenden wir einen linearen Spannungsregler, der bis zu 35 V aufnehmen kann und mindestens 7,5 V Eingangsstromversorgung benötigt, um eine geregelte 5 V-Versorgung bereitzustellen, und überschüssige Spannung wird daher als Wärme abgeführt, wenn Ihr Eingang Spannung LM7805 Spannungsregler - IC ist mehr als 12 V, dann so eine Wärmesenke betrachten fügt hinzu, dass es nicht beschädigt wird. Das LCD wird mit einer 5-V-Versorgung vom 7805 gespeist und ist mit Arduino verbunden und arbeitet im 4-Bit-Modus. Wir haben auch ein 10k Ω Wischerpotentiometer hinzugefügt, um den Kontrast des LCD-Displays zu steuern.
Konstantlaststromkreis:
Zweitens ist die PWM-basierte Konstantstrom-Lastschaltung, um den durch den Widerstand fließenden Laststrom durch uns steuerbar und konstant zu machen, so dass kein Fehler aufgrund von Stromschwankungen mit der Zeit auftritt, wenn die Spannung der Zelle abfällt. Es besteht aus dem LM741 OPAMP IC und dem IRF540N N-Kanal-MOSFET, der den durch den MOSFET fließenden Strom steuert, indem er den MOSFET gemäß dem von uns eingestellten Spannungspegel ein- und ausschaltet.
Der Operationsverstärker arbeitet im Komparatormodus.also in diesem Modus. Der Ausgang des Operationsverstärkers ist immer dann hoch, wenn die Spannung des nicht invertierenden Pins des Operationsverstärkers höher als die des invertierenden Pins ist. Wenn die Spannung am invertierenden Pin des Operationsverstärkers höher ist als am nicht invertierenden Pin, wird der Ausgang des Operationsverstärkers ebenfalls heruntergezogen. In der gegebenen Schaltung wird der nicht invertierende Pin-Spannungspegel durch den D9-PWM-Pin des Arduino NANO gesteuert, der mit einer Frequenz von 500 Hz schaltet, der dann durch ein Tiefpass-RC-Schaltungsfilter mit einem Widerstandswert von 33 kΩ und einem Kondensator mit einer Kapazität von 0,47 geleitet wird uF, um ein nahezu konstantes Gleichstromsignal am nicht invertierenden Pin bereitzustellen. Der invertierende Pin ist mit dem Lastwiderstand verbunden, der die Spannung über dem Widerstand und dem gemeinsamen GND liest. Der Ausgangspin des OPAMP ist mit dem Gate-Anschluss des MOSFET verbunden, um ihn ein- oder auszuschalten.Der OPAMP versucht, die Spannungen an beiden Anschlüssen gleich zu machen, indem der angeschlossene MOSFET so geschaltet wird, dass der durch den Widerstand fließende Strom proportional zu dem PWM-Wert ist, den Sie am D9-Pin des NANO eingestellt haben. In diesem Projekt beträgt der maximale Strom, auf den ich meine Schaltung beschränkt habe, 1,3 A, was angemessen ist, da die Zelle, die ich habe, 10 A als maximale Stromstärke beträgt
Spannungsmessung:
Die maximale Spannung einer typischen voll geladenen Li-Ion-Zelle beträgt 4,1 V bis 4,3 V, was weniger als die 5-V-Spannungsgrenze der analogen Eingangsstifte des Arduino Nano ist, die einen Innenwiderstand von mehr als 10 kΩ aufweisen, sodass wir die direkt anschließen können Zelle an einen der analogen Eingangsstifte, ohne sich Gedanken über den durch sie fließenden Strom zu machen. In diesem Projekt müssen wir also die Spannung der Zelle messen, damit wir feststellen können, ob sich die Zelle im richtigen Spannungsbetriebsbereich befindet und ob sie vollständig entladen ist oder nicht.
Wir müssen auch den durch den Widerstand fließenden Strom messen, damit wir den Stromshunt nicht verwenden können, da die Komplexität der Schaltung zunimmt und ein zunehmender Widerstand im Lastpfad die Zellenentladungsrate verringert. Die Verwendung kleinerer Shunt-Widerstände erfordert eine zusätzliche Verstärkerschaltung, damit der von ihr kommende Spannungswert für das Arduino lesbar ist.
Wir lesen also direkt die Spannung über dem Lastwiderstand und dividieren dann unter Verwendung des Ohmschen Gesetzes die Spannung, die durch den Lastwiderstandswert erhalten wird, um den durch ihn fließenden Strom zu erhalten. Der Minuspol des Widerstands ist direkt mit dem GND verbunden, sodass wir davon ausgehen können, dass die am Widerstand abgelesene Spannung der Spannungsabfall im Widerstand ist.
Arduino-Programm zur Messung der Batteriekapazität
Nachdem wir die Hardware-Schaltung fertiggestellt haben, wechseln wir zur Arduino-Programmierung. Wenn Sie Arduino IDE nicht auf Ihrem PC installiert haben, was machen Sie hier? Besuchen Sie die offizielle Arduino-Website und laden Sie die Arduino-IDE herunter und installieren Sie sie. Sie können sie auch in einem anderen Editor codieren. Dies ist jedoch ein Thema für einen anderen Tag. Im Moment bleiben wir bei der Arduino-IDE. Jetzt sind wir mit Arduino Nano, so stellen Sie sicher, dass Sie die Arduino Nano Board ausgewählt durch zu gehen TOOLS> BOARDS und wählen ARDUINO NANO gibt, wählen Sie nun den richtigen Prozessor Ihr, indem Sie auf nano haben TOOLS> PROCESSORund während Sie dort sind, wählen Sie auch den Port, an den Ihr Arduino auf Ihrem PC angeschlossen ist. Wir verwenden Arduino, um das daran angeschlossene alphanumerische 16 × 2-LCD anzusteuern und um die Spannung der Zelle und den Strom zu messen, der durch den Lastwiderstand fließt, wie im vorherigen Abschnitt erläutert. Wir beginnen unseren Code, indem wir die Header-Dateien für 16 × 2 deklarieren Alphanumerischer LCD-Bildschirm. Sie können diesen Abschnitt überspringen, um den vollständig gekochten und servierten Code am Ende der Seite zu erhalten. Nehmen Sie jedoch Kontakt mit uns auf, während wir den Code in kleine Abschnitte unterteilen und versuchen, ihn zu erklären.
Nachdem die Header-Datei definiert ist, fahren wir mit der Deklaration der Variablen fort, die wir im Code verwenden, um die Spannung und den Strom zu berechnen. Außerdem müssen wir in diesem Abschnitt die Pins definieren, mit denen wir das LCD ansteuern, und die Pins, mit denen wir den PWM-Ausgang geben und die analogen Spannungen lesen, die von der Zelle und dem Widerstand kommen.
#einschließen
Kommen wir nun zum Setup-Teil: Wenn Sie Ihr Arduino die ganze Zeit über mit Ihrem PC verbunden halten und den Fortschritt mithilfe des seriellen Monitors überwachen und den LCD-Bildschirm hier initialisieren möchten. Außerdem wird 3 Sekunden lang eine Begrüßungsmeldung „Battery Capacity Tester Circuit“ auf dem Bildschirm angezeigt.
void setup () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); // Setzen Sie den Cursor auf die erste Spalte und die erste Zeile. lcd.print ("Batteriekapazität"); lcd.setCursor (0,1); lcd.print ("Tester Circuit"); Verzögerung (3000); lcd.clear (); }}
Jetzt müssen wir den Arduino PWM-Pin nicht mehr als Ausgang deklarieren, da sich die AnalogWrite- Funktion, die wir in unserer Hauptschleife verwenden werden, um diesen Teil kümmert. Sie müssen den PWM-Wert definieren, der im Code auf diesen Pin geschrieben werden soll. Wählen Sie den PWM-Wert sorgfältig entsprechend dem in Ihrer Anwendung erforderlichen Entladestrom aus. Ein zu hoher PWM-Wert führt zu einem hohen Strom mit einem hohen Spannungsabfall in der Li-Ion-Zelle, und ein zu niedriger PWM-Wert führt zu einer hohen Entladezeit der Zelle. In der Hauptschleifenfunktion lesen wir die Spannungen an den Pins A0 und A1, da der Arduino einen 10-Bit-ADC an Bord hat. Daher sollten wir digitale Ausgangswerte zwischen 0 und 1023 erhalten, die wir auf den Wert zurückskalieren müssen 0-5V-Bereich durch Multiplikation mit 5.0 / 1023.0. Stellen Sie sicher, dass Sie die Spannung zwischen den 5-V- und GND-Pins des Arduino Nano mit einem kalibrierten Voltmeter oder Multimeter richtig messen, da die geregelte Spannung meistens nicht genau 5,0 V beträgt und selbst ein kleiner Unterschied in dieser Referenzspannung zu Kriechen führen würde Messen Sie in den Spannungswerten die richtige Spannung und ersetzen Sie die 5,0 im oben angegebenen Multiplikator.
Um die Logik des Codes zu erläutern, messen wir kontinuierlich die Spannung der Zelle. Wenn die Zellenspannung die von uns im Code angegebene Obergrenze überschreitet, wird die Fehlermeldung auf dem LCD angezeigt, um Sie darüber zu informieren, ob sich die Zelle befindet Überladen oder es stimmt etwas nicht mit der Verbindung und die Stromversorgung des MOSFET-Gate-Pins wird gestoppt, so dass kein Strom durch den Lastwiderstand fließen kann. Es ist wichtig, dass Sie Ihre Zelle zuerst vollständig aufladen, bevor Sie sie an die Kapazitätstesterplatine anschließen, damit Sie die Gesamtladekapazität berechnen können.
analogWrite (MOSFET_Pin, PWM_VALUE); // lese den Eingang an analogem Pin 0: int sensorValue_voltage_Cell = analogRead (A0); // Wandle den analogen Messwert (der von 0 - 1023 reicht) in eine Spannung (0 - 5V) um: Erhaltungsspannung = sensorValue_voltage_Cell * (5.08 / 1023.0); Serial.print ("VOLTAGE:"); Serial.println (Spannung); // Hier wird die Spannung auf dem Serial Monitor lcd.setCursor (0, 0) gedruckt; // Setzen Sie den Cursor auf die erste Spalte und die erste Zeile. lcd.print ("Voltage:"); // Den Spannungswert auf dem Bildschirm drucken lcd.print (Spannung); Verzögerung (100); int sensorValue_Shunt_Resistor = analogRead (A1); Erhaltungsspannung1 = sensorValue_Shunt_Resistor * (5.08 / 1023.0); Erhaltungsstrom = Spannung1 / Widerstand; Serial.print ("Current:"); Serial.println (aktuell); lcd.setCursor (0, 1);// Setzen Sie den Cursor auf die erste Spalte und die zweite Zeile (die Zählung beginnt bei 0!). lcd.print ("Current:"); lcd.print (aktuell);
Wenn nun die Zellenspannung innerhalb der von uns angegebenen oberen und unteren Spannungsgrenzen liegt, liest der Nano den Stromwert mit der oben angegebenen Methode und multipliziert ihn mit der während der Messungen verstrichenen Zeit und speichert ihn in der zuvor definierten Kapazitätsvariablen in mAh-Einheiten. Während dieser ganzen Zeit werden die Echtzeit-Strom- und Spannungswerte auf dem angeschlossenen LCD-Bildschirm angezeigt. Wenn Sie möchten, können Sie sie auch auf dem seriellen Monitor anzeigen. Der Entladevorgang der Zelle wird fortgesetzt, bis die Spannung der Zelle die von uns im Programm festgelegte Untergrenze unterschreitet. Anschließend wird die Gesamtkapazität der Zelle auf dem LCD-Bildschirm angezeigt und der Stromfluss durch den Widerstand durch Ziehen des MOSFET-Gatters gestoppt Stift niedrig.
sonst wenn (Spannung> BAT_LOW && Spannung <BAT_HIGH) {// Überprüfen Sie, ob die Batteriespannung innerhalb der Sicherheitsgrenze liegt millisPassed = millis () - previousMillis; mA = Strom * 1000,0; Kapazität = Kapazität + (mA * (millisPassed / 3600000.0)); // 1 Stunde = 3600000 ms, um es in mAh-Einheiten umzuwandeln previousMillis = millis (); Verzögerung (1000); lcd.clear (); }}
Genauigkeitsverbesserungen
Es ist auf jeden Fall eine gute Möglichkeit, Spannung und Strom abzulesen, aber es ist nicht perfekt. Die Beziehung zwischen der tatsächlichen Spannung und der gemessenen ADC-Spannung ist nicht linear und dies führt zu einem Fehler bei der Messung der Spannungen und Ströme.
Wenn Sie die Genauigkeit des Ergebnisses erhöhen möchten, müssen Sie die ADC-Werte, die Sie durch Anwenden verschiedener bekannter Spannungsquellen erhalten, in einem Diagramm darstellen und dann die Multiplikatorgleichung daraus mithilfe einer beliebigen Methode bestimmen. Auf diese Weise wird die Genauigkeit verbessert und Sie kommen den tatsächlichen Ergebnissen sehr nahe.
Außerdem ist der von uns verwendete MOSFET kein MOSFET mit Logikpegel. Daher werden mehr als 7 V benötigt, um den aktuellen Kanal vollständig einzuschalten. Wenn wir 5 V direkt an ihn anlegen, sind die aktuellen Messwerte ungenau. Sie können jedoch einen N-Kanal-MOSFET mit Logikpegel IRL520N verwenden, um die Verwendung einer 12-V-Versorgung zu vermeiden, und direkt mit 5-V-Logikpegeln arbeiten, die Sie mit Ihrem Arduino haben.
Aufbau und Test der Schaltung
Jetzt, da wir verschiedene Abschnitte unserer Schaltung auf einem Steckbrett entworfen und getestet haben und sichergestellt haben, dass alle wie vorgesehen funktionieren, verwenden wir ein Perfboard, um alle Komponenten miteinander zu verlöten, da dies eine viel professionellere und zuverlässigere Methode zum Testen der Schaltung ist. Wenn Sie möchten, können Sie Ihre eigene Leiterplatte mit AutoCAD Eagle, EasyEDA oder Proteus ARES oder einer beliebigen anderen Software entwerfen. Der Arduino Nano, das 16 × 2 Alphanumeric LCD und der LM741 OPAMP sind auf der weiblichen Bergstik montiert, damit sie später wiederverwendet werden können.
Ich habe eine 12-V-Versorgung über einen DC-Barrel-Jack-Anschluss für den Konstantlaststromkreis bereitgestellt und dann mit Hilfe des LM7805 die 5-V-Versorgung für den Nano- und LCD-Bildschirm bereitgestellt. Schalten Sie nun den Stromkreis ein und stellen Sie den Trimmertopf ein, um den Kontrastpegel des LCD-Bildschirms einzustellen. Sie sollten jetzt die Begrüßungsnachricht auf dem LCD-Bildschirm sehen. Wenn sich der Spannungspegel der Zelle im Arbeitsbereich befindet, dann der Strom -Spannung und Strom von der Batterie werden dort angezeigt.
Dies ist ein sehr grundlegender Test zur Berechnung der Kapazität der von Ihnen verwendeten Zelle. Er kann verbessert werden, indem die Daten in einer Excel-Datei gespeichert und nachträglich mit grafischen Methoden verarbeitet und visualisiert werden. In der heutigen datengesteuerten Welt kann diese Zellenentladungskurve verwendet werden, um genaue Vorhersagemodelle der Batterie zu erstellen, um die Reaktion der Batterie unter Ladebedingungen ohne reale Tests unter Verwendung von Software wie NI LabVIEW, MATLAB Simulink usw. Zu simulieren und zu sehen. und viele weitere Anwendungen erwarten Sie. Die vollständige Arbeitsweise dieses Projekts finden Sie im folgenden Video. Wenn Sie Fragen zu diesem Projekt haben, schreiben Sie diese bitte in den Kommentarbereich unten oder nutzen Sie unsere Foren. Gehen Sie und haben Sie Spaß damit und wenn Sie möchten, können wir Sie im Kommentarbereich unten anleiten, wie Sie weiter von hier aus vorgehen können. Bis dahin Adios !!!