Forum: Mikrocontroller und Digitale Elektronik ADC Noise Canceler


von juergen (Gast)


Lesenswert?

Hallo zusammen,
ich bin ganz neu in die Programmierung von µC eingestiegen.
Als Einstiegsprojekt habe ich schon mal eine Uhr zum laufen. Zeit,
Datum werden auf einem LCD-Display angezeigt.
Nun geht es um die Benutzung der ADC vom ATmega8. Dazu mal
grundsätzlich:
Sollte der µC besser während der Messung in den Sleepmode versetzt
werden oder sind die Messungen auch so brauchbar?
Ich würde dann sagen wir mal 5 Werte lesen, verwerfe den höchsten und
niedrigsten, bilde dann den Mittelwert aus den restlichen dreien. Wäre
das ok? Ich könnte auch den vorherigen gemessenen Wert mit einbeziehen.

von ,,,, (Gast)


Lesenswert?

Warum willst du den höchsten und niedrigsten verwerfen?

von juergen (Gast)


Lesenswert?

Dann wäre theoretisch schon mal ein grober Ausreißer nach oben oder
unten bei der Messung ausgemerzt und wird nicht in die
Mittelwertbildung einbezogen. Na ja, war halt eine Idee.

von Bri (Gast)


Lesenswert?

Du solltest den Prozessor in den sleep mode setzen. Das mit dem höchsten
und niedrigsten verwerfen ist auch eine gute Idee. Mach beides zusammen.
Ich habe bei mir mal mit dem Oszi nachgemessen. Ohne sleep mode war bei
meiner Schaltung das Rauschen am ADC Versorgungspin nach dem Tiefpass
aus Spule und Kondensator (siehe Datenblatt) sogar größer als vor dem
Tiefpass, direkt am 7805.

von ,,,, (Gast)


Lesenswert?

> Dann wäre theoretisch schon mal ein grober Ausreißer nach
> oben oder [...]

Dazu müsstest du allerdings erst wissen, ob es wirklich ein "grober
Ausreißer" ist. Wenn der höchste bzw. niedrigste Wert relativ dicht
beim Mittelwert liegt, wovon i. d. R. auszugehen ist, bringt dir das
leider nichts. 5 Werte lesen und dann MW bilden, ist schon ok.
Ansonsten bin ich auch gespannt, was über den "Noise Canceler" noch
kommt. Hab den selbst noch nie benutzt.

von Bri (Gast)


Lesenswert?

Das mit den Ausreißern rauslassen ist eine gute Idee. Ein Medianfilter
funktioniert ähnlich und wird als Rauschfilter verwendet. Das Problem
beim Mittelwert ist, dass ein Ausreißer großen Einfluss auf den
Mittelwert hat, wenn er sehr abweicht, weil ja sein Wert direkt in die
Berechnung eingeht. Bei einem Medianfilter fällt er einfach raus und
hat keinen Einfluss. Deshalb ist es besser, den größten und kleinsten
wegzulassen, auch wenn man nicht weiß, wie dicht die am echten Wert
liegen. Haben wir im Physikpraktikum im übrigen auch so gemacht.

von Benedikt (Gast)


Lesenswert?

Also den Noise Canceler muss man nicht unbedingt verwenden, ich habe das
noch nie gemacht.
Viel wichtiger ist ein ordentlicher Aufbau der Schaltung, also immer
schön 100nF dran, und direkt am ADC Pin 1-10nF so kurz wie möglich mit
AGND verbinden.
Dann noch einen kleinen Filter nach dem Verfahren:
ADC_WERT=ADC_WERT-ADC_WERT/8+ADC;
So kann man problemlos >9bits verwenden, und muss nichts wegwerfen.

von Bernhard S. (bernhard)


Lesenswert?

Der Analog-GND-PIN sollte möglichst "stromlos" sein, sonst hat man bei
einem schlechten Platinen-Layout ein sehr seltsames Offset.

Es empfielt sich auch, mit einer möglichst hohen AREF zu arbeiten, denn
unter 1V- AREF treten auch seltsame ADC-Effekte auf.

Wärend der Messung sollten keine "hohen" Ströme (z.B. für LEDs) durch
den µC gegen GND gleitet werden.


Bernhard

von Tubie (Gast)


Lesenswert?

Hallo,

habe das bisher immer so gemacht - also ohne noise canceler:

16 Werte einlesen, diese auf ein Registerpaar draufaddiert und
anschließend das ganze doppelregister 4x nach rechts schieben (/16) mit
dieser methode habe ich sehr gute und Stabile Ergebnisse erziehlt.

Gruß,
Tubie

von TravelRec. (Gast)


Lesenswert?

Bei einem guten Layout, einer niedrigen Quellimpedanz an den
ADC-Eingängen und dem altbewährten L/C-Filter am ADC-Versorgungspin ist
auch bei 10-bit Auflösung noch mit sehr genauen Ergebnissen zu rechnen.
Meines Erachtens und meiner Erfahrung nach bringt eine ordentliche
Schaltung weit mehr als die Noise-Reduction-Funktion, die lediglich den
Prozessor ausbremst.

von juergen (Gast)


Lesenswert?

Ja super,
dann werde ich mal ohne Noise Canceler starten. Ich denke mal, das
sollte aurreichen. Den µC immer wieder schlafen zu legen sah für mich
nicht so sympatisch aus. Hochgenau muß die Messung nun nicht werden.
Also LED's abschalten, Kommunikation zum LCD-Display sperren (sofern
das überhaupt nötig ist, mal schauen), möglichst keine Pegeländerung an
den E/A Ports während der Messung. L/C-Filter hatte ich schon
vorgesehen.

Gruß
Jürgen

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.