• 23.04.2024, 09:49
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Strom mit Hall-Sensor messen und per Arduino anzeigen.

Montag, 8. Dezember 2014, 14:46

Servus zusammen,

für ein Netzteilprojekt (regelbar, 0-16V, max 160A@12V) möchte ich eine Sensorik basierend auf einem Arduino aufbauen.
Momentan bin ich dafür auf der Suche nach einem Stromsensor, welcher auf dem HALL-Prinzip aufbaut.

Gefunden habe ich z.B. den HTB 200-P/SP5 welcher für meine Anwendung ganz gut geeignet wäre.
Jetzt gehe ich in Gedanken gerade die Schaltpläne bzw. die Software durch (Hardware ist noch nicht bestellt).

Die Strommessung soll ersteinmal nur bei 13,8V realisiert werden! Daher nur der 200A-Sensor.
Ausgegeben wird vom Sensor:

Vc = 12V (galvanisch getrennte Versorgung des Messsystems!)
Voe (Offset) = Vc/2 +- 30V / A
Vout = Voe + 1.667 V

Nach meinen Berechnungen kommt dann an Vout bei I = x folgendes heraus:

I = 10 // Vout = 7,967 V
I = 50 // Vout = 9,167 V
I = 160 // Vout = 12,467 V
I = 180 // Vout = 13,067 V

Da der ADC des Arduino ja nur maximal 5V abbekommen darf, würde ich einen Spannungsteiler mit 8k und 4k7 Ohm einsetzen.
Das wären dann folgende Werte am ADC:

I = 10 // Vout = 7,967 V // U2 = 2,949
I = 50 // Vout = 9,167 V // U2 = 3,393
I = 160 // Vout = 12,467 V // U2 = 4,613
I = 180 // Vout = 13,067 V // U2 = 4,836

Die Bereichsbreite vom 10 Bit ADC wären 0,0049 V.
Änderung von I=1A macht eine Änderung an U2 von 0,0111 V
Macht dann eine Genauigkeit der Messung von ~0,44 A.

Liege ich mit meiner Berechnung bzw. meinem Denkansatz denn wenigstens ansatzweise richtig? ?(

Wenn ich nicht ganz daneben liege und ich meinen Genauigkeitsbereich in den 0,1 A-Bereich verschieben möchte, müsste ich ja mindestens einen 12 Bit ADC benutzen.
Da wäre ich dann bei einer Genauigkeit von ~0,11 A.

Ich hoffe, es ist einigermaßen verständlich und vor allem korrekt, was ich mir hier zusammenrheime :thumbsup:
Da steht nix :-P

Montag, 8. Dezember 2014, 21:15

Warum willst Du unbedingt gegen die analoge Versorgungsspannung des AVR messen? Ist die bei Dir so genau?
Das ist doch ein ATmega48/88/168/328 oder? Der hat doch 'ne interne 1,1V-Referenz...

Dienstag, 9. Dezember 2014, 07:35

Andere Vorschläge sind gern gesehen :thumbup:

Defaultmäßig wird auf dem Arduino Uno eine 5V-Referenz benutzt: klick
Verbaut ist ein ATmega328. Man könnte auf 1,1V oder 2,56V umschalten, wenn man wollte. Externe Referenzspannungen sind ebenfalls möglich (0-5V)...

Ich wollte dieses mal so wenig Außenbeschaltung wie möglich haben, da das Arduino Uno noch hier rumliegt und ich bei dem Netzteil nach Möglichkeit keine zusätzlichen Selbstbaumodule einsetzen will.
Daher z.B. auch der fertige, gekapselte Sensor (ok, Adapterplatine mit Steckverbindung muss ich wohl selbst machen).
Da steht nix :-P

Dienstag, 9. Dezember 2014, 12:23

Default werden 5V (oder 3,3V wenn die Schaltung damit versorgt wird) ALS Referenz verwendet.Dabei handelt es sich dann aber nicht um eine präzise Spannung Referenz, sondern um die Spannung, die der AVR am AVCC bekommt. Die wird dann intern auf den DAC (zur Generierung der sukzessiven Vergleichsspannungen) gelegt, und liegt ggf außerdem am ARef an. Schwankt die Spannungsversorgung, schwanken auch die Ergebnisse.
Alternativ kannst Du 'ne interne Referenz auf den DAC schalten, der 328 hat da nur 1,1V.
Oder 'ne externe Referenz an Aref, dann darf intern natürlich keine drauf gelegt werden, klar...
Alle Pins dürfen nur Spannungen innerhalb der verwendeten Versorgungsspannung "sehen", die analogen also zwischen AGnd und AVcc.

Dienstag, 9. Dezember 2014, 12:40

Hmm...
Was wäre deiner Meinung nach dann das Sinnvollste?

Den Wertebereich per Spannungsteiler auf 0-1V verlagern und die interne Referenz benutzen? (Spannungsteiler 47k / 3k9 => 0,59 bis 1,05 V bei 0-200A)

Sind denn die anderen Berechnungen soweit korrekt?
Was mich da immer stört ist die "Grundspannung", die gute 50% des Messbereiches schonmal "vernichtet"...
Habe ich hier einfach nur einen Denkfehler oder kann man den Messbereich so sinnvoll verlagern, dass dieses Offset vernachlässigt werden kann?
Da steht nix :-P

RE: Strom mit Hall-Sensor messen und per Arduino anzeigen.

Dienstag, 9. Dezember 2014, 18:50

...Vc = 12V (galvanisch getrennte Versorgung des Messsystems!)
Voe (Offset) = Vc/2 +- 30V / A
Vout = Voe + 1.667 V
...

versteh ich nicht...
mal bei LEM 'n DB gesucht...

Zitat

VOUT Output voltage (Analog) @ ± IPN, RL = 10 kΩ, TA = 25°C VOE ± 1.667V

Also bei +/- IPN (eben die gewählten 200A in beide Richtungen) und den restlichen Bedingungen ist Vout=Voe+/-1,667V
Zwischen -200A und +200A soll das relativ linear sein (Fehler <1%)

Zitat

VOE Electrical offset voltage @ TA = 25°C Vc/2 ± 30mV

Voe ist also die halbe Versorgungsspannung mit einer Toleranz von 30mV (also bei Dir 5,97V..6,03V).

So würde ich das interpretieren, also bei -200A 4,333V am Ausgang; bei +200A 7,667V...

Um da jetzt sinnig was messen zu können, solltest Du als erstes klären ob Du beide Richtungen nutzt (und wenn nicht-> ausschließen kannst, daß in der falschen Richtung gemessen wird), danach dann nach 'ner geeigneten Formung der Ausgangsspannung suchen. Wird wohl auf irgendwas mit 'nem OPAMP als Subtrahierverstärker hinauslaufen.

Tante Edith läßt noch nachfragen, ob Du auch nach fertigen Sensor-ICs mit TWI/SPI-Anbindung gesucht hättest...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »LotadaC« (10. Dezember 2014, 12:19)

Mittwoch, 10. Dezember 2014, 13:28

Ok, also hab ich das Datenblatt leider wohl falsch verstanden :S

@Tante Edith: Ja habe ich. Habe allerdings nicht wirklich was gefunden, was diesen Wertebereich abkann...

Aaaalso nochmal alles nachgerechnet (Toleranzen erstmal ignoriert!):

Vc=12V
Voe=Vc/2=6V
Vout=Voe+((1.667/200)*Imeasure) =>
6V bei Imeasure=0A
7,667V bei Imeasure=200A

Sofern ich diese Differenzverstärkerschaltung richtig verstanden und nachgerechnet habe: klick


R5 + R6 = 10 Ohm
U1=Vc*(R5/(R6+R5))= 6V*(10/(10+10)) = 6V (Spannungsteiler mit 10 / 10 Ohm) //Edit nummer 10.000: Diese Variante der Berechnung von U1 hat den charme, dass die Versorgungsspannung auch etwas schwanken dürfte. Das Ergebnis von U2in bleibt gleich)
U2=Vout
R1-R4=10 Ohm
Macht dann folgende Resultate:

Imeasure=0A => Ua = 0V
Imeasure=10A => Ua = 0,08335V
...
Imeasure=200A => Ua = 1,667

Um auf die gewünschten Werte von 0-1,1V zu kommen einen Spannungsteiler von 1960 Ohm / 3800 Ohm dazwischen.
Das macht dann eine

U2inMin = 0
U2inMax = ~1,0998

Bereichsbreite = 1,1V (interne Referenz) / 1024 (10Bit ADC) = ~0,001074 V
V/A = U2inMax/200 = ~0,005499 V/A
Genauigkeit = Bereichsbreite / V/A = ~0,001074 V / ~0,005499 V/A = ~0,195 A

Bereichsbreite = 1,1V (interne Referenz) / 4096 (12Bit ADC) = ~0,000269 V
V/A = U2inMax/200 = ~0,005499 V/A
Genauigkeit = Bereichsbreite / V/A = ~0,000269 V / ~0,005499 V/A = ~0,0488 A

Bereichsbreite = 1,1V (interne Referenz) / 65536 (16Bit ADC) = ~1,67847E-05 V
V/A = U2inMax/200 = ~0,005499 V/A
Genauigkeit = Bereichsbreite / V/A = ~1,67847E-05 V / ~0,005499 V/A = ~0,00305 A

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »Freakmaster« (10. Dezember 2014, 14:23)

Da steht nix :-P

Donnerstag, 11. Dezember 2014, 12:03

Sind alle Widerstände gleich, versucht (!) der OPAMP am Ausgang die Differenz der Eingänge einzustellen. Die Ausgangsspannung wird aus der Spannungsversorgung des OPAMPs gespeist, wobei im OPAMP ein Teil der Spannung abfällt (der braucht also "Luft" zum Regeln - für 0V eine negative Versorgung.) Außerdem gilt die Gleichung am Rand nicht mehr ganz...
Mit 'nem Rail to Rail kommst Du dichter an die Grenze. In Deinem Fall kannst Du aber auch die Minuendenspannung etwas höher wählen (was allerdings Auflösung kostet).

Die AVR haben nur 10bit ADC...

Achso, ich würde die Widerstände am OPAMP aus dem Bauch heraus auf 100K dimensionieren...

Donnerstag, 11. Dezember 2014, 12:20

Nachdem es kein Hochpräzisionsmesswerkzeug werden soll setz ich lieber die Mindest und die Maximalspannung etwas rauf bzw. runter und akzeptiere die geringere Auflösung :)

Da der ADC im AVR nur 10bit hat werde ich einen externen 4-Kanal 16bit ADC mit I2C einsetzen (dann hab ich das auch mal gemacht ;) )

Wird erledigt :)

/edit: Anbei mal ein paar Bilder vom Netzteil :)
»Freakmaster« hat folgende Bilder angehängt:
  • Gehäuse.jpg
  • Gehäuse_unten.jpg
  • Lüfter.jpg

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Freakmaster« (11. Dezember 2014, 21:31)

Da steht nix :-P