www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mittelwert-Bildung


Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich messe mit einem 89C51AC2 und einem MAX1284 A/D-Wandler eine
Akkuspannung. Erst habe ich es mit der aufaddierung von Werten
versucht, einen Mittelwert zu bilden. Das ergebnis ist aber nicht so
befriedigend. Hab hier mal was von einem Ringbuffer gelesen. Könnte mir
einer das mal etwas genauer erklären?

Mfg sascha

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Ringbuffer hat zunächst einmal nichts mit Mittelwertbildung zu tun,
sondern ist eine Speicherverwaltungsstruktur (FIFO). Beschreibe doch
einmal genauer, was Dein Problem bei der Mittelwertbildung ist, bzw.
was nicht befriedigend funktioniert.

Gruß, Frank

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieviele Messwerte hast du denn? Und wo liegt dein Problem?
256 Messwerte kann man doch addieren und dann acht mal nach rechts
schieben, was der Teilung duch 256 entspräche.
Ringpuffer werden IMHO meist für Datenkommunikation verwendet, wenn
mehr Daten zum Senden anstehen als gerade verschickt werden können.
Der Ring ist dann der Effekt, wenn Daten, die am Anfang des Puffers
stehen und schon verarbeitet wurden überschrieben werden.
Es gibt also eine Schreibpostion und eine Leseposition.
Gruß Rahul

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mit der Mittelwertbildung habe ich kein Problem. Addier momentan 64
Meßwerte und dividiere anschließend durch 64. Geht auch einigermaßen.
Habe eine Referenzspannung von 2,5V. Am A/D-Eingang ist ein
Spannungsteiler von 8, da ich bis 20V messen möchte. Mein Messwert
schwankt bei einer Messspannung von 1,233V zwischen 1,211V und 1,243V.
OK, das Haptproblem liegt halt daran, das alles momentan auf Lochraster
aufgebaut ist. Hab es aber bei dem int. Wandler des 89C51AC2 auch
hingekriegt, das nur noch das letzte LSB "wackelt".

Mfg Sascha

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, aber was heißt "geht einigermaßen"? Entweder die
Mittelwertbildung funktioniert oder sie funktioniert nicht. Das sollte
sich mit einem Taschenrechner doch sehr schnell herausfinden lassen.

Gruß, Frank

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Mittelwertbildung funktioniert. Nutze dieselbe für den int. 10Bit
Wandler. Ist nur um ein Byte erweitert.

Mfg sascha

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wo liegt jetzt Dein Problem?

Gruß, Frank

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich suche eine rechnerische infache Methode, die mir im Programm nicht
immens viel Zeit kostet aber effektiv ist.

Mfg sascha

Autor: Bernd Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch mal den GND anderss zu Verlegen. Ich würde den GND Anschluss des
MAX direkt an den Akku anschließen, ohne Schleife.
100 Ohm Widerstände vor den Digital-Inputs des Max helfen manchamal ein
wenig. Ausserdem vor die Versorgung einen 10 Ohm Widerstand und 10uF
Kondensator. Oder eine 100uH Spule statt des Widertands.

Bernd

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es damit?

#define COEFF 7
...
value = (COEFF * previous_value + (10 - COEFF) * current_value) / 10;
previous_value = value;

Das ist ein Tiefpaßfilter welches die vorherig gemessenen Werte
kumulativ berücksichtigt und damit mittelt.  Die Wahl von COEFF
bestimmt, wie stark die alten Werte und der neue Wert berücksichtigt
werden.  "Ausreißer" und LSB-Fehler werden damit natürlich auch schön
eliminiert.

Mal in EXCEL o.ä. simulieren und graphisch anzeigen lassen.

Reiner

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.