Forum: Mikrocontroller und Digitale Elektronik mAh-Zähler mit Atmel-AVR


von Franzl F. (Firma: Elektroniker) (franzl-f)


Lesenswert?

Hallo

Ich möchte gerne eienen Stromzähler für Gleichstrom bauen. Stöme sind so 
zwischen 0A und 50A. Wie mann ne Strommessung macht ist mir soweit klar. 
Aber nicht ganz wie ich das dann in mAh rechnen soll. Ich hab vor einmal 
in der Sekunde eine Messung zu machen und die dann immer einmal in der 
sekunde mit den alten Messungen aufaddieren dann habe ich doch 
Amperesekunden, oder?. Und das dann durch 3600 teilen da die Stunde 3600 
Sekunden hatt dann erhält mann doch mAh, oder?

Dann das etwas andere problem: Wie messe ich am besten 50A? Ich hab nur 
7,2 Volt Stromversorgung die durch nen Schunt nicht zu sehr in die Knie 
gehen solte. Weis da jemand von euch Spezielle Strommess-ICs die leicht 
erhältlich sind?

von Ingo (Gast)


Lesenswert?

Kann man so machen. Wobei ich würde mit 1kHz messen, dann wird's etwas 
genauer. Einschaltsröme gehen sonst evtl. Völlig unter. Musst du halt 
3600 x 1000 Messwerte aufsummieren. Passt noch in eine 32Bit Variable 
bei 10Bit ADC.


Ingo

von Ingo (Gast)


Lesenswert?

Zu 2. Hallsensor, gibt's genügende von LEM.

von MaWin (Gast)


Lesenswert?

> Weis da jemand von euch Spezielle Strommess-ICs die leicht
> erhältlich sind?

Eigentlich braucht man keine speziellen, ein shunt (Widerstand)
reicht, eventuell ein OpAmp um den Messwert zu verstärken.

Es ist nur eien Frage der Genauigkeit, und niemand weiß, welche
du benötigst.

von Ingo (Gast)


Lesenswert?

Bei 50A würde ich versuchen einen Shunt zu meiden. Ganz oft scheitert es 
an dem Verdtärker, für den man etwas Erfahrung braucht, die der TO nicht 
zu haben scheint.


Ingo

von Frank D. (Firma: Spezialeinheit) (feuerstein7)


Lesenswert?

Ich baue gerade auch sowas für ein E Bike, ich habe den Timer zur 
Messung auf 360ms gestellt, dadurch brauchst du nicht mehr eine Division 
mit einen vielfachen von 3,6 es genügt eine Division mit einen 
vielfachen von 10 (ich ignoriere bei der LCD Ausgabe einfach ein Paar 
Nullstellen).

von avr (Gast)


Lesenswert?

Fred Feuerstein schrieb:
> Ich baue gerade auch sowas für ein E Bike, ich habe den Timer zur
> Messung auf 360ms gestellt, dadurch brauchst du nicht mehr eine Division
> mit einen vielfachen von 3,6 es genügt eine Division mit einen
> vielfachen von 10 (ich ignoriere bei der LCD Ausgabe einfach ein Paar
> Nullstellen).

du bist ja lustig. Schlauerweise sollte man ein vielfaches von 2 nehmen. 
Das nimmt dem µC die Arbeit ab.

von Walter S. (avatar)


Lesenswert?

Ingo schrieb:
> Kann man so machen. Wobei ich würde mit 1kHz messen, dann wird's etwas
> genauer. Einschaltsröme gehen sonst evtl. Völlig unter.

macht aber für die Genauigkeit der Messung wenig aus wenn ich eine 
Stunde lang messe

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Nicht vergessen: Das zu messende Signal noch durch einen Tiefpass 
schicken, bevor du es dem Controller als zu wandelnde Spannung 
anbietest.

von Hui (Gast)


Lesenswert?

Magnus M. schrieb:
> Nicht vergessen: Das zu messende Signal noch durch einen Tiefpass
> schicken, bevor du es dem Controller als zu wandelnde Spannung
> anbietest.

Warum?
Wenn 1000 Messungen pro Sekunde gemacht werden , sollte das Rauschen 
doch raus gehen.
Antialising?

von Frank D. (Firma: Spezialeinheit) (feuerstein7)


Lesenswert?

avr schrieb:
> du bist ja lustig. Schlauerweise sollte man ein vielfaches von 2 nehmen.
> Das nimmt dem µC die Arbeit ab.

Bei mir läuft das so:
Beispiel
10A
40V
das wären 400W, in einer Stunde sind das 400Wh, in einer Minute 
400/60=6,66Wh, in einer Sekunde 400/3600=0,111Wh.
1.) Bei einen Intervall von 1Sekunde müsste ich den Wert (400) durch 
3600 teilen, um auf 0,11111 zu kommen.

2.) Bei einer Messung mit 360ms addiere ich den Messwert zu einer großen 
Summe auf die schon den Zahlenwert der Wh entspricht.
Beispiel in einer Sekunde habe ich 400*1/0.36s=1111,11
Also alle 360ms 400 addieren und nichts mehr rechnen. Der Zahlenwert 
passt, und bei der LCD Ausgabe das Komma an die passende Stelle gedacht 
und fertig.

3.) Faktor 2?

von Peter Ullrich (Gast)


Lesenswert?

Hallo!

Hm, 50A... Schade.
Bei 30A hätte ich den ACS712 empfohlen. Mit dem kannst Du glavanisch 
getrennt messen und der kostet nicht viel. Bei Ebay für ca. 2€ sogar 
aufgebaut auf einer PCB mit Schraubanschlüssen.

Datenblatt hier: 
http://www.allegromicro.com/Products/Current-Sensor-ICs/Zero-To-Fifty-Amp-Integrated-Conductor-Sensor-ICs/ACS712.aspx

Ciao
Peter

http://www.ullrich.at.tt

von Euro (Gast)


Lesenswert?

Wenns auch nen externer IC sein kann der per I2C angebunden wird, such 
mal nach DS2745. Ist Shunt-basiert, dieser kann allerdings sehr 
niederohmig ausfallen. Nutze das Teil um Ströme bis 120A in einem 
Flugmodell zu messen.

von Steffen W. (derwarze)


Lesenswert?

Wenn nur in eine (Strom)Richtung gemessen wird reicht eine OPV-Schaltung 
(RtR verwenden) als nichtinvertierender Verstärker und Shunt 2mOhm (die 
gibt es ua. von Isabellenhütte, zu bekommen bei Bürklin).
In beide Richtungen geht so was wie der LMP8601 recht einfach.

Die Hallsensor-Teile gehen zwar recht gut für hohe Ströme nur ist der 
Messbereich nach unten hin begrenzt.

Infos zu den Detail gibt es zu Hauf hier und im weiteren WEB.

von Axel S. (a-za-z0-9)


Lesenswert?

Walter S. schrieb:
>> Kann man so machen. Wobei ich würde mit 1kHz messen, dann wird's etwas
>> genauer. Einschaltsröme gehen sonst evtl. Völlig unter.
>
> macht aber für die Genauigkeit der Messung wenig aus wenn ich eine
> Stunde lang messe

Das eine hat mit dem anderen nix zu tun.

Magnus M. schrieb:
> Nicht vergessen: Das zu messende Signal noch durch einen Tiefpass
> schicken, bevor du es dem Controller als zu wandelnde Spannung
> anbietest.

Noch besser wäre ein Integrator. Bzw. gleich einen ADC mit einem 
integrierenden Meßverfahren verwenden.

Hui schrieb:
> Wenn 1000 Messungen pro Sekunde gemacht werden , sollte das Rauschen
> doch raus gehen.

Es geht nicht um das Rauschen.

Es geht darum, daß impulsförmige Ströme sonst gar nicht oder nur mit 
sehr großem Fehler erfaßt werden.

Einfaches Beispiel: der Verbraucher sei eine Blink-LED, die mit 1 Hz 
blinkt und dabei immer für 500ms 20mA aufnimmt und für die anderen 500ms 
1mA. Wenn der ADC jetzt einmal pro Sekunde den Strom mißt, dann kann man 
je nach Frequenzkonstanz und Phasenverschiebung zwischen 1mA und 20mA 
jeden Wert herausbekommen. Der richtige Wert wäre aber 10.5mA.

Man löst das Problem entweder durch hinreichend häufige Messung (die 
Herren Shannon & Nyquist lassen grüßen) oder - wenn man ohnehin nur den 
Mittelwert wissen will - durch Integration (ein Tiefpaßfilter wirkt wie 
ein Integrator).


XL

von Franzl F. (Firma: Elektroniker) (franzl-f)


Lesenswert?

Hallo das mit der 1mal in der Sekunde Messen war nur mal ein Beispiel um 
den Rechenweg zu leichter zu verstehen. Vor habe ich das Teil dann in 
nen Quadrocpter einzubauen der dann per RFM12 und Atemga die messungen 
dann auf ein LCD auf den Boden sendet. Messung reicht nur eine Richtung.

Zu den Hall-Strommwandler wie genau sind die den? Kann der 0-50A Messen?
http://pdf1.alldatasheet.com/datasheet-pdf/view/81497/LEM/HTB50-P/SP5.html

Vom gewicht her würde ich aber zu nem leichten Shunt tendieren und nach 
einem fertigen verstärker/ADC für sowas suchen damit nicht so viel 
Hünerfutter ausenrumm muss.

Für weitere Infos wäre ich noch Dankbar.

von Jörg E. (jackfritt)


Lesenswert?

Wenns leicht sein soll nimmt man keinen Stromwandler und auch keinen 
Shunt sondern die Leiterbahn selbst. Außerdem willst's ja nicht im mA 
Bereich auflösen.

von Hui (Gast)


Lesenswert?

Axel Schwenke schrieb:
> Es geht darum, daß impulsförmige Ströme sonst gar nicht oder nur mit
> sehr großem Fehler erfaßt werden.

Das müsste unter
Hui schrieb:
> Antialising?
fallen.
In einem Quadrokopter dürften die Ströme mit Frequenzen von 20kHz 
rumzuckeln.
da dürfte es gewichtsmäßig leichter sein einen Tiefpass zu basteln, und 
an den bisherigen Prozessor anzubinden. Wobei sich das alles im Bereich 
von <10g abspielen sollte in wieweit das relevant ist, weis ich nicht

von Peter D. (peda)


Lesenswert?

Fred Feuerstein schrieb:
> Ich baue gerade auch sowas für ein E Bike, ich habe den Timer zur
> Messung auf 360ms gestellt, dadurch brauchst du nicht mehr eine Division

Es ist schon komisch, wie wenig einem MC zugetraut wird. Warum soll 
keine Zeit fürs Dividieren sein?

Für den Mensch sind max 5 Werte/s Ableserate ergonomisch, da ist die 
popelige Division nur Peanuts.
Zum Optimieren gehört erstmal einzuschätzen, wo eine Optimierung sich 
überhaupt lohnt.

von Frank D. (Firma: Spezialeinheit) (feuerstein7)


Lesenswert?

Peter Dannegger schrieb:

> Zum Optimieren gehört erstmal einzuschätzen, wo eine Optimierung sich
> überhaupt lohnt.

Zeit zum Dividieren hat der sicher noch, ich wollte meine Lösung nur 
erwähnen weil sie mir für meine Anwendung geeignet scheint. Ich wollte 
ursprünglich alle halbe Sekunde messen und bin auf die Idee gekommen den 
Faktor 3,6 auf den Timer abzuwälzen, dadurch spare ich mir die Division. 
Was ist den daran falsch optimiert?
PS. Ich schreibe in Assembler dort ist x/3,6 zumindest fummeliger als 
die Timeranweisung Zähle bis 3,6.

von Hui (Gast)


Lesenswert?

Fred Feuerstein schrieb:
> dadurch spare ich mir die Division.
> Was ist den daran falsch optimiert?
> PS. Ich schreibe in Assembler dort ist x/3,6 zumindest fummeliger als
> die Timeranweisung Zähle bis 3,6.

Optimieren bedeutet ein Ziel anstreben, Division einzusparen spart im 
besten Fall Laufzeit. Dafür hast du eine geringere Auflösung im 
Zeitbereich.

Was macht dein Prozessor wenn weniger oft und weniger Rechnen muss?
NOP. Und ihm ist es egal ob der NOP macht oder eine Division durchführt.
Irgendwas muss er ja machen.

Wo ist da jetzt die Optimierung?

von feuerstein (Gast)


Lesenswert?

Fred Feuerstein schrieb:
> Ich wollte
> ursprünglich alle halbe Sekunde messen und bin auf die Idee gekommen den
> Faktor 3,6 auf den Timer abzuwälzen

Hui schrieb:
> Optimieren bedeutet ein Ziel anstreben, Division einzusparen spart im
> besten Fall Laufzeit. Dafür hast du eine geringere Auflösung im
> Zeitbereich.

Wodurch habe ich da eine geringere Auflösung, wenn ich anstatt aller 
halben Sekunde alle 0,36s den Wert erfasse. Es besteht auch die 
Möglichkeit alle 36ms oder gar 3,6ms zu takten.
Mein Ziel war keine Optimierung sondern eine Einfache Lösung, damit 
wollte ich hilfreich auf den ersten Teil der Frage des TO eingehen, wo 
ist da nun das Problem? Nicht Resourcenvernichtend genug?

von Hagen R. (hagen)


Lesenswert?

Hui schrieb:
> Was macht dein Prozessor wenn weniger oft und weniger Rechnen muss?
> NOP. Und ihm ist es egal ob der NOP macht oder eine Division durchführt.
> Irgendwas muss er ja machen.
>
> Wo ist da jetzt die Optimierung?

Unter der Annahme der Prozessor macht in seiner Freizeit kein NOP 
sondern sein Power Down Sleep, was viel vernünftiger wäre, dann spart 
man Energie. Das muß optimaler sein als das gleiche Ziel mit gleichen 
Resourcen aber mit höherem Stromverbrauch weil man eben nicht optimal 
programmiert hat.

von Eumel (Gast)


Lesenswert?

Hagen Re schrieb:
> Unter der Annahme der Prozessor macht in seiner Freizeit kein NOP
> sondern sein Power Down Sleep, was viel vernünftiger wäre, dann spart
> man Energie. Das muß optimaler sein als das gleiche Ziel mit gleichen
> Resourcen aber mit höherem Stromverbrauch weil man eben nicht optimal
> programmiert hat.

Und wie wacht er wieder auf?

von Bernhard D. (pc1401)


Lesenswert?

Jörg Esser schrieb:
> Wenns leicht sein soll nimmt man keinen Stromwandler und auch keinen
> Shunt sondern die Leiterbahn selbst.

Den Tk von Cu kennst Du? Bei nur 20 K Temperaturerhöhung hast Du schon 
fast 8 % Fehler.

von Hui (Gast)


Lesenswert?

Eumel schrieb:
> Und wie wacht er wieder auf?

Wenn der Hund bellt.

von Wattstunde (Gast)


Lesenswert?

Für einen ähnlichen Zweck habe ich das hier ins Auge gefasst. Günstig 
und auch mit sourcen. Tolle Seite nebenbei.

http://dl3jin.de/wh-meter.htm

von feuerstein (Gast)


Lesenswert?

Bitte beim nachbau beachten:
Der Autor schlägt den 34063 als Schaltregler vor:
>> Wird IC1 durch einen Schaltregler mit dem MC34063 ersetzt, verringert sich die 
vom Wh-Meter selbst verbrauchte Leistung. Dann kann der Spannungsmeßbereich auch 
bis 50 V vergrößert werden.

Der Verträgt aber maximal 40V und ein Akku der mit 36V angegeben wird, 
hat im aufgeladenen Zustand 42V (10s Liion). Bei einen 24V Akku kein 
Problem, bei 36V und darüber wirds eng.

Vor dem Problem der Spannungsversorgung stehe ich auch gerade, da ich 
auch eine Lampe mit betreiben möchte. Blöderweise sind die meisten IC in 
der Bastelkiste bei der Spannung am Limit.

von Hannes L. (hannes)


Lesenswert?

feuerstein schrieb:
> Der Verträgt aber maximal 40V

Beim StepUp bekommt der 34063 die Ausgangsspannung nicht zu sehen, wenn 
man einen externen Transistor (oder FET) einsetzt. Somit reicht es, wenn 
der externe Transistor die Spannung verträgt. Es gibt Leute, die 
erzeugen damit die Anodenspannung für Nixie-Röhren. Sollte ein FET 
eingesetzt werden, ist eine Push-Pull-Stufe zum Ansteuern des Gates 
erforderlich. Ansonsten sperrt der FET zu langsam, was ihn zum Schwitzen 
bringt und den Wirkungsgrad drastisch reduziert.

...

von Joachim .. (joachim_01)


Angehängte Dateien:

Lesenswert?

Es geht auch ohne Digital-ICs.
Hier hab ich die Strommeß-Schaltung aus nem Elecraft K2.
Der entsprechende Shunt liegt zwischen 12Vin und 12V, die Schaltung 
funktioniert wunderbar. Ist auch ne schöne Fingerübung sie mal 
durchzurechnen (wenn jemand will). Die Spannung für den ADC wird am 
Punkt 'I Sense' abgenommen. Transistor und OP-Aamp sind beliebig 
(zumindest in der Theorie).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.