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.
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.
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.
> 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.
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.
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.
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.