Beste Möglichkeit, ADC für Stromerfassungs-MOSFET zu kalibrieren


7

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.ichsense

Der dem Laststrom proportionale ADC-Wert wird berechnet durch:ichL.

V.einlueEIND.C.=680ΩichL.3,3V.kichL.ichS.4095

Mein Problem ist, dass stark vom Laststrom abhängt, wie im Datenblatt gezeigt:kichL.ichS.

Geben Sie hier die Bildbeschreibung ein

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

P.1(0|0),P.2(5|EIND.C.(5EIN))

und kann eine Steigung für eine gerade Linie berechnen:

f(x)=EIND.C.(5EIN)5EINx

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 .

Geben Sie hier die Bildbeschreibung ein

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.


Abbildung 6B im Datenblatt zeigt das aktuelle Erfassungsverhältnis. Es sieht wirklich aus wie ein Gerät, das aus der Sättigung heraus und dann in eine Subvt mit einer exponentiellen IV-Beziehung übergeht (nur die Form betrachten), sodass Ihre lineare Anpassung geändert werden müsste mit einem gewissen rollierenden Wert und keiner rein linearen Beziehung.
B Degnan

@bdegnan Was meinst du mit rollierendem Wert? Im Moment berechne ich die ADC-Werte für 1A, 2A, 3A .... 10A mit und schreibe sie in ein Array. Dann überschreibe ich den Wert für 1A mit dem Wert, den ich tatsächlich bei 1A gemessen habe. Dies verringert meinen Fehler bei Strömen um 1A. Mein nächster Schritt bestand darin, meinen ADC-Wert für 3A und 1A zu nehmen, den Mittelwert zu nehmen und diesen mit dem Wert für 2A in das Array zu schreiben. Das halbierte im Grunde die Abweichung bei 2A.
f(x)=EIND.C.(5EIN)5EINx
JavaForStarters

Sie haben also diese Werte; Ich glaube jedoch nicht, dass sie tatsächlich so linear sind, wie Sie denken, aber Sie können es wahrscheinlich annähern. Wenn Sie sich 1A nähern, haben Sie ein anderes Verhalten, was ich als ein Gerät erwarten würde, das lange weniger Strom bewegt, sodass Sie die anderen Effekte sehen, wie den Eingriff in die Erschöpfung an der Drain-Kante dieses "Super-Riesen" "Mosfet. Ich würde die Korrelation erwarten, wenn Sie zu großen bis kleinen Strömen gehen, linear, ungefähr quadratisch (x ^ 1,8) und dann exponentiell. Ich versuche nur, in diese Grafik zu lesen.
B Degnan

1
Noch ein Hinweis, ich würde eine gute Varianz zwischen Geräten auf demselben Waferlauf erwarten, aber ich sehe normalerweise eine Nichtübereinstimmung von 2% zwischen den Läufen. Stellen Sie daher sicher, dass Ihre Kalibrierungsroutine nicht davon ausgeht, dass sich die Geräte identisch verhalten. Die ersten 10.000 Einheiten könnten funktionieren, aber die nächste Charge könnte einen Versatz haben.
B Degnan

@bdegnan Sie sind nicht so linear, aber für größere Ströme ist K_ILIS ziemlich stabil und linear. Mein Problem war vor allem mit niedrigeren Strömen. Dieses Problem wurde gelöst, indem ein Punkt bei 1A genommen wurde. Die Frage war, ob dies ein guter Weg war, dies zu lösen oder nicht.
JavaForStarters

Antworten:


2

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:

Dieser Bereich für das Stromerfassungsverhältnis bezieht sich auf alle Geräte. Die Genauigkeit des kILIS kann durch Kalibrierung des kILIS-Werts für jedes einzelne Gerät erhöht werden.

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.

  1. Einfache Kalibrierung
  2. 1% Aktuelle Messgenauigkeit von 0A bis 40A (Sie können eine beliebige Zahl für 1% und 40A eingeben)
  3. Niedriger Preis

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.


0

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.