Inhaltsverzeichnis:
- Schritt 1: Verlauf - Version 1
- Schritt 2: Version 2
- Schritt 3: So stellte sich heraus
- Schritt 4: Der Code
- Schritt 5: Kalibrieren des Messgeräts
- Schritt 6: Letzter HINWEIS
Video: Noch ein Batteriekapazitätstester - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Warum noch ein Kapazitätstester
Ich habe viele verschiedene Bauanleitungen für Tester gelesen, aber keine davon scheint meinen Anforderungen zu entsprechen. Ich wollte auch mehr als nur einzelne NiCd/NiMH- oder Lion-Zellen testen können. Ich wollte einen Akku für ein Elektrowerkzeug testen können, ohne ihn zuerst zu zerlegen. Also beschloss ich, mir die Sache genauer anzuschauen und einen eigenen zu entwerfen. Eins führt zum anderen und ich beschloss schließlich, selbst ein instructable zu schreiben. Ich habe mich auch entschieden, nicht auf alle Details einzugehen, wie man den Tester tatsächlich baut, weil jeder über bestimmte Entscheidungen entscheiden kann, wie z Eagle installieren oder wie man eine Platine macht. Mit anderen Worten, ich konzentriere mich auf die Schaltpläne und den Code und wie man den Tester kalibriert.
Schritt 1: Verlauf - Version 1
Oben ist die erste Version mit der unten erwähnten über 10V-Eingangsunterstützung hinzugefügt (R12 & R17 & Q11 & Q12).
Die erste Version wurde mehr oder weniger von einem instructable von deba168 genommen (leider kann ich sein instructable nicht finden, um einen Link bereitzustellen). Es wurden nur einige kleinere Änderungen vorgenommen. In dieser Version hatte ich einen 10 Ohm Lastwiderstand, der von einem Mosfet gesteuert wurde. Dies brachte jedoch einige Probleme mit sich. Beim Testen einer NiCd- oder NiMH-Zelle konnte die benötigte Zeit leicht in Stunden, wenn nicht sogar Tagen gemessen werden. Ein 1500mAh Akku brauchte über 12 Stunden (der Strom betrug nur 120mA). Andererseits konnte die erste Version nur Batterien unter 10V testen. Und ein voll aufgeladener 9,6-V-Akku kann tatsächlich bis zu 11,2 V betragen, was aufgrund der 10-V-Grenze nicht getestet werden konnte. Es musste etwas getan werden. Zuerst habe ich nur ein paar Mosfets und Widerstände hinzugefügt, damit die Spannungsteiler mehr als 10 V zulassen können. Aber dies brachte auf der anderen Seite ein anderes Problem mit sich. Eine voll geladene 14,4V Batterie kann bis zu 16,8V haben, was mit 10 Ohm Widerstand 1,68A Strom und natürlich eine Verlustleistung vom Lastwiderstand von fast 30W bedeutet. Also bei niedriger Spannung zu lange Testzeit und bei hoher Spannung zu hoher Strom. Es war offensichtlich keine adäquate Lösung und eine Weiterentwicklung war erforderlich.
Schritt 2: Version 2
Ich wollte eine Lösung, bei der der Strom unabhängig von der Batteriespannung in bestimmten Grenzen bleibt. Eine Lösung wäre gewesen, PWM und nur einen Widerstand zu verwenden, aber ich zog es vor, eine Lösung ohne pulsierenden Strom zu haben oder die Mosfet-Wärme abzuleiten. Daher habe ich eine Lösung mit 10 Spannungsschlitzen mit jeweils 2 V Breite erstellt, wobei 10 3,3-Ohm-Widerstände und ein Mosfet für jeden Widerstand verwendet wurden.
Schritt 3: So stellte sich heraus
Kommentare zur SchaltungMan könnte argumentieren, dass der Spannungsverlust über den Mosfet vernachlässigbar ist, weil der Widerstand des Mosfet so niedrig ist, aber ich habe die Wahl des Mosfet dem Leser überlassen und somit kann der Widerstand sogar über 1 Ohm gehen, wo er beginnt zu Gegenstand. In Version eins würde die Wahl des richtigen Mosfets die Notwendigkeit einer Messung des unteren Punktes beseitigen, aber in Version 2 entschied ich mich, die Spannung nur über einen Widerstand zu messen, was es dann wichtig macht, tatsächlich zwei Messpunkte zu haben. Und der Grund für die Wahl war die einfache Verkabelung des Veroboards. Dies fügt einen gewissen Genauigkeitsfehler hinzu, da die gemessene Spannung an einem Widerstand erheblich kleiner ist als die Messung über alle Widerstände. Bei der Komponentenauswahl habe ich mich für das entschieden, was ich entweder schon zur Hand hatte oder leicht beschaffen konnte. Dies führte zu folgender Stückliste:
- Arduino Pro Mini 5V !WICHTIG! Ich habe die 5V-Version verwendet und alles basiert darauf
- 128x64 I2C-OLED-Display
- 10 x 5W 3,3 Ohm Widerstände
- 3 x 2n7000 Mosfets
- 10 x IRFZ34N-Mosfets
- 6 x 10 kOhm Widerstände
- 2 x 5 kOhm Widerstände
- 16V 680uF Kondensator
- 1 alter CPU-Lüfter
Folgendes habe ich in den Schaltplänen nicht hinzugefügt
- Pullup-Widerstände auf I2C-Leitungen, die mir aufgefallen sind, machten das Display stabiler
- Stromleitungen
- Kondensator in 5V Leitung der auch das Display stabilisiert
Beim Testen habe ich festgestellt, dass die Lastwiderstände ziemlich heiß werden, besonders wenn sie alle verwendet werden. Die Temperatur stieg auf über 100 Grad Celsius (das sind über 212 Grad Fahrenheit) und wenn das gesamte System in einer Box geschlossen werden soll, sollte eine Art Kühlung bereitgestellt werden. Die von mir verwendeten Widerstände sind 3,3 Ohm / 5 W und der maximale Strom sollte mit etwa 2 V pro Widerstand auftreten, was 2 V / 3,3 = 0,61 A ergibt, was 1,21 W ergibt. Ich landete beim Hinzufügen eines einfachen Lüfters in der Box. Hauptsächlich, weil ich zufällig einen alten CPU-Lüfter in der Nähe hatte.
Schematische Funktionalität
Es ist ziemlich einfach und selbsterklärend. Die zu prüfende Batterie wird an die Reihe der Widerstände und Masse angeschlossen. Die Spannungsmesspunkte sind der Batterieanschluss und der erste Widerstand. Die Spannungsteiler werden dann verwendet, um die Spannung auf ein Niveau zu senken, das besser zu Arduino passt. Ein digitaler Ausgang wird verwendet, um entweder den 10-V- oder 20-V-Bereich der Teiler auszuwählen. Jeder Widerstand in der Last kann mit den Mosfets, die direkt von Arduino angesteuert werden, einzeln geerdet werden. Und schließlich ist das Display mit Arduino I2C-Pins verbunden. Zum Schaltplan gibt es nicht viel zu sagen J
Schritt 4: Der Code
Oben ist die grobe Funktionsweise des Codes zu sehen. Schauen wir uns dann den Code genauer an (die Arduino-Ino-Dateien sind angehängt). Es gibt eine Reihe von Funktionen und dann die Hauptschleife.
Hauptschleife
Wenn die Messung fertig ist, werden die Ergebnisse angezeigt und die Ausführung endet dort. Wenn die Messung noch nicht abgeschlossen ist, wird zuerst überprüft, welcher Batterietyp ausgewählt ist und dann die Spannung am Eingang. Wenn die Spannung 0,1 V überschreitet, muss mindestens eine Art Batterie angeschlossen sein. In diesem Fall wird ein Unterprogramm aufgerufen, um herauszufinden, wie viele Zellen sich in der Batterie befinden, um zu entscheiden, wie getestet werden soll. Die Anzahl der Zellen ist mehr oder weniger Information, die besser genutzt werden könnte, aber in dieser Version wird sie nur über die serielle Schnittstelle gemeldet. Wenn alles in Ordnung ist, wird der Entladevorgang gestartet und bei jeder Runde der Hauptschleife wird die Batteriekapazität berechnet. Am Ende der Hauptschleife wird das Display mit bekannten Werten gefüllt.
Vorgehensweise zum Anzeigen von Ergebnissen
Die Funktion showResults setzt einfach die anzuzeigenden Zeilen auf dem Display und auch den String, der an die serielle Schnittstelle gesendet werden soll.
Verfahren zum Messen von Spannungen
Am Anfang der Funktion wird der Vcc von Arduino gemessen. Es wird benötigt, um die über Analogeingänge gemessenen Spannungen berechnen zu können. Dann wird die Batteriespannung im 20-V-Bereich gemessen, um entscheiden zu können, welcher Bereich verwendet werden soll. Dann werden sowohl die Batteriespannung als auch die Widerstandsspannung berechnet. Batteriespannungsmessungen nutzen die DividerInput-Klasse, die über Methoden zum Lesen und zur Spannung verfügt, um den Rohwert oder die berechnete Spannung des fraglichen Analogeingangs zu liefern.
Vorgehensweise zur Auswahl der verwendeten Werte
In der Funktion selectUsedValues wird die Anzahl der Zellen geschätzt und die oberen und unteren Grenzwerte für die Batterie eingestellt, die beim Entladevorgang verwendet werden sollen. Auch die Messung wird als gestartet markiert. Die Grenzen für diesen Vorgang werden am Anfang des als globale Variablen gesetzt. Sie könnten jedoch konstant sein, und sie könnten auch innerhalb der Prozedur definiert werden, da sie nicht global verwendet werden. Aber hey es gibt immer was zu verbessern:)
Vorgehensweise zur Berechnung der Batteriekapazität
Die Entladefunktion sorgt dafür, dass die Kapazität des Akkus tatsächlich gezählt wird. Als Parameter erhält er die untere und obere Grenze der Spannungen für die zu testende Batterie. Der hohe Wert wird in dieser Version nicht verwendet, aber der niedrige Wert wird verwendet, um zu entscheiden, wann der Test beendet werden soll. Am Anfang der Funktion wird die Anzahl der zu verwendenden Widerstände mit einer dafür erstellten Funktion ermittelt. Die Funktion gibt die Anzahl der Widerstände zurück und startet gleichzeitig die Entladung und setzt den Zähler zurück. Dann werden die Spannungen gemessen und zusammen mit dem bekannten Widerstandswert verwendet, um den Strom zu berechnen. Jetzt, da wir Spannung und Strom kennen und die Zeit seit der letzten Messung, können wir die Kapazität berechnen. Am Ende des Entladevorgangs wird die Batteriespannung mit dem unteren Grenzwert verglichen und wenn der Grenzwert unterschritten wird, stoppt die Entladephase, die Mosfets werden geschlossen und die Messung wird als bereit gekennzeichnet.
Vorgehensweise zum Ermitteln der Anzahl der zu verwendenden Widerstände
In der Funktion selectNumOfResistors wird ein einfacher Vergleich der Spannung mit voreingestellten Werten durchgeführt und als Ergebnis die Anzahl der zu verwendenden Widerstände festgelegt. Der entsprechende Mosfet wird geöffnet, um einige der Widerstände zu überspringen. Die Spannungsschlitze sind so gewählt, dass der maximale Strom während der Entladung jederzeit etwas über 600mA (2V/3,3Ohm=606mA) bleibt. Die Funktion gibt die Anzahl der verwendeten Widerstände zurück. Da der Lüfter von der gleichen Leitung wie der erste Mosfet angetrieben wird, muss er bei der Entladung immer geöffnet werden.
Schritt 5: Kalibrieren des Messgeräts
Um das Messgerät kalibrieren zu lassen, habe ich eine weitere App erstellt (angehängt). Es verwendet die gleiche Hardware. Am Anfang sind die Korrekturteilerwerte alle auf 1000 eingestellt.
const int divCorrectionB10V = 1000; // Teilerkorrekturmultiplikator im Bereich 10V const int divCorrectionR10V = 1000; // Teilerkorrekturmultiplikator im Bereich 10V const int divCorrectionB20V = 1000; // Teilerkorrekturmultiplikator im Bereich 20V const int divCorrectionR20V = 1000; // Teilerkorrekturmultiplikator im Bereich 20V
in der Funktion readVcc() hängt die resultierende Vcc-Spannung vom Setzen des Wertes in der letzten Zeile der Funktion vor der Rückkehr ab. Normalerweise findet man im Internet einen Wert von 1126400L für die Berechnung. Mir ist aufgefallen, dass das Ergebnis nicht stimmt.
Kalibriervorgang:
- Laden Sie die Mess-App auf Arduino.
- Sie können im Arduino (und im seriellen Ausgang und ob sich der Lüfter dreht) sehen, ob die Last eingeschaltet ist. Wenn dies der Fall ist, drehen Sie den Batterietyp-Wahlschalter.
- Passen Sie den Wert in readuVCC() an, um ein korrektes Ergebnis zu erhalten. Nehmen Sie den Wert, den die Funktion liefert (in Millivolt) und dividieren Sie den langen Wert damit. Sie erhalten den Rohwert der internen Referenz. Messen Sie nun mit einem Multimeter die tatsächliche Versorgungsspannung in Millivolt und multiplizieren Sie diese mit dem zuvor berechneten Wert und Sie erhalten den neuen korrigierten Long-Wert. In meinem Fall gab die Funktion 5288 mV zurück, wenn die tatsächliche Vcc 5,14 V betrug. Berechnung von 1126400/5288*5140=1094874, die ich durch Versuch verfeinert habe. Fügen Sie den neuen Wert in den Code ein und laden Sie ihn erneut auf Arduino hoch.
- Die Einstellung der Korrekturwerte des analogen Eingangswiderstandsteilers erfolgt unter Verwendung einer einstellbaren Stromquelle, die verwendet wird, um den Eingang des Messgeräts zu speisen. Am einfachsten ist es, Spannungen von 1V bis 20V in 1V-Schritten zu verwenden und die Ergebnisse in einer Tabelle aufzuzeichnen. In der Tabelle wird der Durchschnitt genommen. Die korrigierten Werte werden mit folgender Formel berechnet: „ raw_value*range*Vcc/Vin “wobei raw_value der Wert in 10VdivB, 10VdivR, 20VdivB oder 20VdivR ist, je nachdem welche Korrektur berechnet werden soll.
Sehen Sie sich die Tabelle an, wie es für mich aussah. Die Durchschnittswerte werden nur aus den Werten berechnet, die im Bereich liegen sollen, und diese Werte werden dann in der tatsächlichen Zähler-App eingestellt.
So was
const int divCorrectionB10V = 998; // Teilerkorrekturteiler im Bereich 10V const int divCorrectionR10V = 1022; // Teilerkorrekturteiler im Bereich 10V const int divCorrectionB20V = 1044; // Teilerkorrekturteiler im Bereich 20V const int divCorrectionR20V = 1045; // Teilerkorrekturteiler im Bereich 20V
Die Einstellung des Widerstandswerts kann durch Anlegen einer Spannung an den Eingang (dh 2 V), Schalten des Fledermausschalters (um die Last zu erhalten) und Messen des eingehenden Stroms und der Spannung am ersten Widerstand und Teilen der Spannung durch den Strom erfolgen. Für mich gab 2V 607 mA, was 2 / 0,607 = 3,2948 Ohm ergibt, die ich auf 3,295 Ohm gerundet habe. Nun ist also die Kalibrierung abgeschlossen.
Schritt 6: Letzter HINWEIS
Eine wichtige Anmerkung hier. Es ist unbedingt erforderlich, dass alle Verbindungen von der Batterie zu den Widerständen in einwandfreiem Zustand sind. Ich hatte eine schlechte Verbindung und fragte mich, warum ich 0,3 V weniger Volt im Widerstandsgitter als an der Batterie hatte. Dadurch endete der Messvorgang fast sofort mit 1,2V NiCd Zellen, da die untere Grenze von 0,95V schnell erreicht war.
Empfohlen:
On Off Latch-Schaltung mit UC. Ein Druckknopf. Ein Stift. Diskrete Komponente.: 5 Schritte
On Off Latch-Schaltung mit UC. Ein Druckknopf. Ein Stift. Discrete Component.: Hallo zusammen, habe im Netz nach einer Ein/Aus-Schaltung gesucht. Alles, was ich fand, war nicht das, was ich suchte. Ich habe mit mir selbst gesprochen, es gibt unbedingt einen Weg dazu. Das habe ich gebraucht. - Nur ein Druckknopf zum Ein- und Ausschalten. - Muss nur
EIN ALTES HANDY (NOKIA 6600) IN EIN SUPERGADGET-MIKROCOMPUTER VERWANDELN: 37 Schritte
WIE MAN EIN ALTES HANDY (NOKIA 6600) IN EIN SUPERGADGET-MIKROCOMPUTER VERWANDELT: http://www.internetsecretbook.com https://www.youtube.com/thebibleformulaInmitten der Schwierigkeit liegt die Chance. - Albert Einstein Das Nokia 6600 bietet neue fortschrittliche Bildgebungsfunktionen, darunter ein helles TFT-Display mit 65.536 Farben und ca
So richten Sie ein Heimnetzwerk ein: 6 Schritte
So richten Sie ein Heimnetzwerk ein: Das Einrichten eines Netzwerks kann zunächst entmutigend klingen, aber sobald Sie alles haben, was Sie brauchen, ist es sehr einfach. Die traditionelle Einrichtung erfordert ein Modem und einen Router, aber einige benötigen möglicherweise mehr und andere weniger. Es gibt viele verschiedene
So schließen Sie ein Mini-HiFi-Regalsystem (Soundsystem) richtig an und richten es ein: 8-Schritte (mit Bildern)
So schließen Sie ein Mini-HiFi-Regalsystem (Soundsystem) richtig an und richten es ein: Ich bin ein Mensch, der gerne Elektrotechnik lernt. Ich bin eine High School an der Ann Richards School for Young Women Leaders. Ich mache dies anweisbar, um jedem zu helfen, der seine Musik von einem Mini LG HiFi Shelf Syste genießen möchte
Wie konvertiert man ein physisches Buch in ein E-Book?: 7 Schritte (mit Bildern)
Wie wandelt man ein physisches Buch in ein E-Book um?: Als Student im Hauptfach Chemieingenieurwesen habe ich normalerweise umfangreiche Lehrbücher, technische Bücher und Notizen zum Scannen (manchmal drucken) Ich habe seit einiger Zeit nach einem effizienten Buchscanner gesucht, aber die meisten sind es teuer, extrem groß. Es dauerte nicht lange