mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LiPo per ADC messen und Mittelwert bilden


Autor: Alfred S. (hood)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich widme mich gerade dem Timer, der x mal pro Sekunde den Akku messen 
soll. Nach y Messungen soll ein Mittelwert gebildet werden und dann eine 
Aktion erfolgen.

Was denkt ihr über folgendes?

4 mal pro Sekunde messen, insgesamt über 4 Sekunden Dauer. Somit hat man 
16 Werte erhalten. Diese 16 Werte addiert dann geteilt durch 16 = 
Mittelwert -> führe dann eine Aktion durch.

Ich wäre dankbar über eine Auskunft, ob obige Vorgehensweise zum Erhalt 
des Messergebnisses Sinn macht oder würdet ihr die Messungen öfters 
durchführen bzw. über einen längeren Zeitraum?

Danke!

Autor: Stefan P. (form)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt drauf an.
Bitte!

: Bearbeitet durch User
Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie soll man das pauschal beantworten? Allein dass du dir Gedanken über 
eine Mittelwertbildung machst zeigt ja, dass du einer Einzelmessung aus 
irgendwelchen Gründen nicht traust. Welche sind das? Welche Genauigkeit 
strebst du an? ...

Autor: Alfred S. (hood)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Worauf? Dann kann ich dir die genaue Anforderung schildern. Es könnten 
ein paar Lastspitzen entstehen (Display mit Controller einschalten 
etc.), von daher die Messung über die 4(?) Sekunden. Eine Genauigkeit 
von 0,01 V reicht.

: Bearbeitet durch User
Autor: Mick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für solche Zwecke verwendet man normalerweise den Median. Spizten werden 
damit rausgefiltert/ignoriert. Messintervall und -dauer musst du gemäss 
deinem Setup wählen.

Autor: Arduinoquäler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alfred S. schrieb:
> Worauf?

Ich denke mal an eine Kamera ...... diese Zeigt den Ladezustand
(Spannung) überhaupt erst an wenn die Kamera einige Sekunden
gelaufen ist. Will heissen sie wartet erst einen "brauchbaren"
eingeschwungenen Lastzustand ab bevor sie misst und ausgibt.
Dieser Zustand ist offensichtlich kurz nach dem Einschalten noch
nicht gegeben.

Vielviel man misst (Mittelung) ist dann erst (später) zu
beurteilen ...

Autor: Alfred S. (hood)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Arduinoquäler schrieb:
> Will heissen sie wartet erst einen "brauchbaren"
> eingeschwungenen Lastzustand ab bevor sie misst und ausgibt.

Verstehe. Also wenn ein paar Sekunden gewartet wird, bis alles "on" ist, 
reicht es den Mittelwert zu bestimmen!?
Wenn ich jetzt an einen USB Hub (Raspberry) noch einen WLAN Stick 
dranklemme und ggf. noch sonstige stromhungrige Peripherie: dann wäre 
Mittelwertbildung Quatsch und die Meridianlösung anzustreben?

Autor: Adc (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Nicht nur mit USB Hub ist der Median der Weg. Sogar, wenn die Belastung 
nicht so hoch ist, kann es trotzdem gut vorkommen, dass du unbrauchbare 
"Ausreisser" mit unter den Werten hast. Du kannst das entweder 
Softwaremässig lösen oder z.B. Einen Filter nutzen. Wenn ich eine 
Akkuzelle mit dem AtMega messe, sind bei 10 Messungen öfter schon mal 2 
unbrauchbare dabei. Einer ist dann z.b. Aus unerklärlichen Gründen 0 und 
einer weicht stark ab (oft die erste Messung). Daher willst du immer 
erstmal filtern.

Autor: Nop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Nachteil eines Medianfilters ist aber der deutlich höhere 
Rechenaufwand. Bei einem Mittelwert muß man nur den ältesten Wert von 
der Mittelwertsumme abziehen und den aktuellen Wert draufaddieren. 
Sinnigerweise wählt man eine Zweierpotenz als Anzahl der Werte, dann 
kann man die Mittelwertsumme shiften anstatt zu dividieren.

Für die Ausreißerwerte: Man hat ja typischerweise einen Bereich, in dem 
man arbeiten kann. Dann kann man einfach auf z.B. Untergrenze-0.2V bis 
Obergenze+0.2V clippen.

Ich würde übrigens empfehlen, wenigstens beim Hochfahren erstmal einen 
Last-Streßtest auf die Batterie zu geben und währenddessen die Spannung 
zu messen. Das ist dann aussagekräftiger.

Vier Sekunden sind auch nicht nötig. Man kann auch alle 10ms im 
Timerinterrupt messen und über z.B. 8 Werte mitteln. Die nächste Messung 
stößt man aus dem Timerinterrupt unmittelbar nach dem Auslesen des 
Meßwertes an  - in 10ms ist das auf jeden Fall fertig.

Autor: Arduinoquäler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nop schrieb:
> Der Nachteil eines Medianfilters ist aber der deutlich höhere
> Rechenaufwand.

Es ist ein Witz beim Vorgang einer Batterieladung/-Entladung
in Rechenaufwand/Geschwindigkeit zu denken .....

Ob ich eine oder hundert Millisenkunden rechnen muss spielt
in solch einem Zusammenhang keinerlei Rolle, schon auch
deswegen weil die Messwerte über einen wesentlich längeren
Zeitraum gemittelt werden als Rechenzeit benötigt wird.

Autor: Harald W. (wilhelms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alfred S. schrieb:

> Eine Genauigkeit von 0,01 V reicht.

Das ist aber schon recht anspruchsvoll.

Autor: Alfred S. (hood)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Input. Ich schaue mir mal die Medianvariante an.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.