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
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
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
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
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
Die Mittelwertbildung funktioniert. Nutze dieselbe für den int. 10Bit Wandler. Ist nur um ein Byte erweitert. Mfg sascha
Ich suche eine rechnerische infache Methode, die mir im Programm nicht immens viel Zeit kostet aber effektiv ist. Mfg sascha
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.