Ich verwende den Infinion BTS6143 als Stromschalter und Strommessgerät in Kombination mit einem STM32-Controller.
Der BTS6143 ist ein integrierter MOSFET mit interner Ladungspumpe und -Ausgang.
Der dem Laststrom proportionale ADC-Wert wird berechnet durch:
Mein Problem ist, dass stark vom Laststrom abhängt, wie im Datenblatt gezeigt:
Besonders für sehr kleine Ströme unter 1A.
Meine "Lösung" für das Problem bestand darin, das Gerät mit 5A zu kalibrieren, was ich mit einem Fluke-Multimeter ziemlich genau gemessen habe. Damit weiß der µC nun, was 5A sind.
Wenn der Kalibrierungspunkt 1 und der ADC bei Null beginnen, erhalte ich 2 Punkte
und kann eine Steigung für eine gerade Linie berechnen:
Ich habe einige Geräte nach dieser Methode gemessen und dies ergab einen Fehler von ungefähr 5% bei Strömen von 6 ... 10A, aber bei einigen Geräten bekam ich Fehler von 50% für Ströme um 1A.
Also habe ich bei 1A einen weiteren Kalibrierungspunkt eingeführt, der mich bei 1A auf 3% Fehler reduziert hat. Ich habe diesen Punkt nur verwendet, um dem Gerät mitzuteilen, was 1A ist. Meine gerade Linie , die ich immer noch aus dem 5A-Punkt berechne, nicht zu ändern .
Mit dem Fehler bei 1A nach unten habe ich überprüft, was der nächste kritische Punkt bei 2A (10-15%) ist, also habe ich (ADC (1A) + ADC (3A)) / 2 versucht, was den Fehler bei 2A ungefähr halbiert.
Jetzt liegt alles unter 10% des Fehlers vom idealen Wert für den Strom und ich könnte damit leben, aber gibt es einen besseren Weg oder Dinge, die verbessert werden könnten? Ich kann aufgrund einiger Einschränkungen nur 2 Kalibrierungspunkte nehmen und ich kann keine Linie aus dem ADC-Wert bei 1A und 5A berechnen, da der Punkt bei 1A die Linie für größere Ströme ruiniert.
quelle
Antworten:
Möglicherweise können Sie nicht das erreichen, was Sie sich vorgenommen haben. Bei der Kalibrierung wird das System als Black Box behandelt. Es gibt Ein- und Ausgänge. Sie versuchen herauszufinden, was in der Box vor sich geht, und modellieren es auf irgendeine Weise. Das Modell kann einfach oder schwierig sein. Wenn Sie ein ausreichend gutes Modell entwickeln können, können Sie fast alles kalibrieren. Wenn es linear ist oder einer Polynombeziehung folgt, ist es noch einfacher zu kalibrieren.
Sie sehen das System als eine Box mit Strom in (dem tatsächlichen Strom, den Sie messen möchten) und die Black Box als Ihren IC / Mosfet und die von Ihrem ADC gemessene Spannung aus dem IC als Ausgang. Ihr Modell ist die oben beschriebene Gleichung.
Bei der Kalibrierung müssen Sie die Ein- und Ausgänge kennen. DAS IST WESENTLICH!
Wenn K_ILIS konstant wäre, könnte Ihre Kalibrierungsroutine folgende sein:
1) Legen Sie einen bekannten Strom wie 1 Ampere (Eingang) ein, messen Sie die Spannung am ADC (Ausgang)
2) Legen Sie einen bekannten Strom wie 2 Ampere (Eingang) ein, messen Sie die Spannung am ADC (Ausgang)
(1 Ampere ADC-Wert) = 680 Ω (1 Ampere) / (3 V ≤ KILIS ≤ 4095)
(2 Ampere ADC-Wert) = 680 Ω (2 Ampere) / (3 V ≤ KILIS ≤ 4095)
Und der Rest ist Plug and Chug. Sie erhalten Ihren Wert für K_ILIS. Dies gibt Ihnen ein anständiges Ergebnis für den Teil der Kurve, der sich nicht ändert (über 3A oder so).
Wenn Sie detaillierter werden möchten, können Sie eine lineare Anpassung erster Ordnung durchführen.
y = m * x + b wobei y Ihre ADC-Messung (Ausgabe) und x Ihre I_L und 680 * 4095 / (K_ILIS * 3.3) Ihr m-Wert ist. Das Problem dabei ist, dass Sie immer noch keine gute Passform bekommen. Sie können nur eine Linie modellieren, was dem Erhalten eines Lineals und dem Zeichnen einer Linie durch die Kurve entspricht. Im Bereich von 0 bis 3 Ampere bleibt noch ein Rest übrig.
Ein weiterer Trick in der Tasche besteht darin, zu einer höheren Ordnung wie diesem Modell zu wechseln:
y = c3 * x ^ 3 + c2 * x ^ 2 + c1 * x + c0
Das Problem dabei ist, dass eine Linie mindestens zwei Punkte benötigt, um definiert zu werden es. Das Anpassen einer Kurve würde viel mehr Daten erfordern. Es gibt andere Anpassungsfunktionen, ein Sigmoid könnte
y = c2 / (c1 + exp (c0 * t)) + b funktionieren,
aber diese erfordern Optimierungsroutinen, um alle Konstanten zu finden, und Sie möchten wieder so viele Proben wie möglich nehmen .
Eines der Probleme, die ich sehe, ist, dass K_ILIS auch von der Temperatur und der Sperrschichttemperatur abhängt, was bedeutet, dass es am IC passieren müsste, wenn Sie es messen würden. Sie müssten es für die Temperatur kalibrieren und die Temperatur kennen. Es scheint, dass die Temperaturkurve von K_ILIS auch von Gerät zu Gerät variiert.
Dieser Satz legt nahe, dass K_ILIS auf jedem Gerät konstant ist, dies widerspricht jedoch den Informationen im Abschnitt über diagnostische Merkmale. Ich denke, es ist eine Mischung aus beiden:
Wenn Sie also eine Temperaturkalibrierung durchführen würden, müssten Sie die Temperatur kennen. Sobald Sie die Temperatur kennen, können Sie den Wert von K_ILIS nachschlagen, müssen aber noch herausfinden, wie er sich über die Temperatur ändert. Es sieht nicht so aus, als könnten Sie sich eine einfache emperische Formel oder Funktion (wie Exponential oder Sigmod) einfallen lassen. Wenn ich dies tun würde und keine andere Möglichkeit hätte, das Design zu ändern, würde ich die mir gegebene Tabelle verwenden ODER Experiment für Experiment ausführen, um K_ILIS über der Temperatur in einer laborbasierten Umgebung zu charakterisieren. Dann würde ich diese Daten in einer Nachschlagetabelle auf dem Mikro verwenden, aber ich müsste immer noch die Temperatur kennen. Können Sie einen Thermistor auf den IC setzen? Wahrscheinlich nicht. Der aktuelle Bereich, den Sie messen möchten, ist sehr groß. Nach meiner Erfahrung ist es wirklich schwierig, die ersten 5% des aktuellen Messbereichs zu erhalten. Ein Teil des Problems besteht darin, dass Leckströme und Offsets so groß werden wie die Spannungsmessung von allem, was den Strom misst, sei es ein Differenzsignal von einem Messwiderstand oder über andere Mittel.
Ich denke, es ist Zeit, dass Sie Ihre Anforderungen überdenken. Es scheint, dass Sie zwei oder drei Anforderungen haben.
Wenn Sie 2) und 3) haben müssen, können Sie nicht 1) haben. Wenn Sie 3 nicht benötigen, würde ich in Betracht ziehen, eine andere Methode für eine Strommessung mit "hoher Verstärkung" hinzuzufügen, mit der Sie den Bereich von 0 bis 1A auf Null setzen können.
Ich denke auch, dass ein Teil Ihres Problems darin besteht, überhaupt keine Anforderungen zu schreiben. Es ist eine gute Möglichkeit, Dinge zu entwerfen. Dann haben Sie eine Diskussion über Ihre Optionen, bevor sie sich auf einer Leiterplatte befinden.
quelle
Ich habe nicht genug Ruf für Kommentare, aber hier ist ein Vorschlag. Sie können versuchen, manuell oder in Matlab Ihre Funktion k = f (I) in Bezug auf Abbildung 6b zu erstellen (MATLAB verfügt über einige Interpolationsfunktionen auf der Grundlage der von Ihnen eingegebenen Punkte). Dann können Sie diese Funktion verwenden, anstatt k zu verwenden.
quelle