Wie kann ich eine Analog-Digital-Messung stabilisieren?

Ich habe eine Uhr aus einem PIC16F877, einigen LEDs und anderem Zeug gebaut ...

Um die Zeit in 5-Minuten-Intervallen einzustellen, verwende ich ein 22-K-Ohm-Potentiometer, das zwischen GND und +5 V angeschlossen ist, wobei der Kontakt mit dem Analogeingang RA0 meiner MCU verbunden ist.

Es funktioniert, aber es schwankt stark zwischen den Werten. Es ist ein 10-Bit-ADC, und ich betrachte die signifikantesten 8 Bits, und wenn ich meinen Topf ungefähr in die Mitte bekomme, erhalte ich einen Durchschnittswert von 128, aber er flackert zwischen 127, 128 und 129 ... selbst wenn ich lass es in Ruhe und fass es nicht an.

Wie kann ich den Messwert stabilisieren? Ich könnte wahrscheinlich Firmware schreiben, um einen durchschnittlichen Messwert zu erhalten, was ein wenig helfen kann, aber bevor ich damit herumspiele, habe ich mich gefragt, ob ich meiner Schaltung etwas hinzufügen könnte (Kappen, Widerstände usw.), um sie stabiler zu machen? In diesem Teil der Schaltung habe ich nur den Poti an die MCU angeschlossen, sonst nichts.

Die Mittelung einer Reihe von ADC-Messwerten sollte die Dinge verbessern, aber um das Problem wirklich zu beheben, sollten Sie die Uhr des Prozessors oder einen Zähler / Timer verwenden, der auf dieser Uhr basiert (vorausgesetzt, er ist quarzgesteuert).
Haben Sie sowohl Entkopplungs- als auch Versorgungskappen auf der Platine?
Die analogen Töpfe geben manchmal keinen stabilen Widerstandswert, versuchen Sie es mit digitalen Töpfen.
@IgnacioVazquez-Abrams Ja, ich habe Entkopplungs- und Versorgungskondensatoren.

Antworten (2)

Sie haben Rauschen in Ihrem System, schlicht und einfach. Sie handhaben es genauso wie jedes andere Rauschen: Entfernen Sie die Quelle des Rauschens oder filtern Sie das Rauschen heraus. Einige Dinge zu beachten sind:

  • Lange Kabel können Rauschen verursachen. Kürzen Sie diese oder verwenden Sie abgeschirmte Kabel
  • Verwenden Sie nach Möglichkeit Differenzmessungen.
  • Stellen Sie sicher, dass Sie eine gute Stromverteilung, Routing und Filterung verwenden.
  • Stellen Sie sicher, dass Ihre Leiterplatte so ausgelegt ist, dass sie das Rauschen der wichtigen Signale reduziert.
  • Das Platzieren einer Kappe auf Ihrem ADC-Eingangspin zwischen dem Pin und GND kann helfen, das Rauschen von einem Pot zu reduzieren. Dieses C und das R, das Ihr Pot ist, bilden einen RC-Tiefpassfilter. Je größer die Obergrenze, desto besser die Filterung (aber desto langsamer reagiert das System auf Änderungen der Eingabe). Ich würde mit einer Obergrenze von 0,1 uF beginnen und von dort aus nach oben gehen.
  • Verwenden Sie einen POT mit niedrigerem Wert. 10K, 5K oder sogar 1K Ohm. Dies verringert effektiv die Ausgangsimpedanz Ihres Sensors (des Topfes) und verringert die Wahrscheinlichkeit, dass Rauschen aufgenommen wird. Stellen Sie sicher, dass Sie die Leistungsgrenzen auf dem Topf nicht überschreiten.
  • Filtern Sie das Signal in der Software. Es könnte so einfach sein, wie einen gleitenden Durchschnitt zu haben, oder Sie könnten eine komplexere Form des Filters verwenden. Je länger Sie das Signal mitteln, desto bessere effektive Auflösung erhalten Sie, mit den offensichtlichen Nachteilen.
  • Stellen Sie sicher, dass Sie den ADC in der MCU korrekt betreiben.
Das erste, was ich versucht habe: Ich habe eine 0,0-uF-Kappe zwischen GND und dem mittleren Pin des Potis gesetzt, und das Problem wurde vollständig gelöst! Der ADC-Wert ist jetzt vollkommen stabil. Vielen Dank für Ihre Hilfe.
@ BG100 Sie haben dort einen wie großen Kondensator platziert?
Hoppla, Tippfehler ... Ich meine 0,01 uF

Aus dem Gedächtnis erfordert der ADC-Eingang auf diesem PIC, dass das "Signal" eine "niedrige" Ausgangsimpedanz ist (22-kOhm-Pot wäre zu hoch), und dies bedeutet, dass ein Kondensator über dem Eingangspin vorhanden ist. Der ADC-Typ bei diesen Geräten ist "sukzessive Annäherung" und verursacht Rauschen am Eingangspin - dies wird als Messfehler angesehen.

In der Vergangenheit habe ich langsame Eingänge mit einem 100nF-Quereingang gegen Masse entkoppelt und den Eingang mit einem Vorwiderstand von ein paar kOhm gespeist. Für Signale mit höherer Geschwindigkeit würden Sie einen anständigen Operationsverstärkerpuffer verwenden, um eine Ansteuerung mit niedriger Ausgangsimpedanz für den ADC-Eingang zu erreichen.

Möglicherweise haben Sie auch Probleme mit Ihren ADC-Referenzspannungseingängen - diese können intern so ausgewählt werden, dass sie mit Ihrer Vcc und Masse verbunden sind. Wenn sie jedoch mit den richtigen Spannungsreferenzen verbunden sind und Ihr 22k-Pot über die Vcc mit Masse verbunden ist, ändert sich Vcc wird durchkommen. Stellen Sie sicher, dass Sie eine ratiometrische Messung haben oder erwarten Sie diese Art von Diskrepanzen.

Danke. Ich habe eine Kappe zwischen GND und dem ADC-Port hinzugefügt und mein Problem vollständig behoben, sogar mit 22K. Ich habe auch einige 10.000 Töpfe bestellt, aber sie sind immer noch auf dem Weg hierher aus Hongkong ... 22.000 ist alles, was ich herumliegen hatte.