Forum: Mikrocontroller und Digitale Elektronik Ziemlich heftige ADC-Schwankungen :-/


von Paul H. (powl)


Angehängte Dateien:

Lesenswert?

Hi!

In meiner Testschaltung wird mein ATtiny26 über einen LM317 bzw µA7805 
betrieben. Das billige Steckernetzteil enthält nur einen Transformator. 
Gleichgerichtet wird das ganze mit vier 1N4148 Dioden und geglättet mit 
einem 100µF Elko.

Der ADC des Tiny verwendet die interne Referenz von 2,56V die auch an 
dem AREF pin anliegen sollte (in Wirklichkeit messe ich hier 2,68V). Der 
µC läuft auf 8Mhz, per Timer1 OVF Interrupt wird 15 mal in der Sekunde 
eine ADC-Messung im ADC Noise Reduction mode ausgeführt (Wandler läuft 
mit 62,5kHz) deren Ergebnis per TWI an mein LED-Display gesendet wird.

Bei der Messung des ADC stelle ich nun leider ziemlich starke 
Schwankungen fest. Der ADC schwankt zwischen ~400 und 450. Liegt das an 
der Brummspannung so heftig?

Irgendwelche Kondensatoren an AREF->Masse oder Vcc->Masse, 100µF, 100nF, 
beides parallel.. hat alles keine Wirkung gezeigt.

Das Problem ist, das hier ist ja nur ne Testschaltung. In der Wirklichen 
Schaltung ist das ganze so eingestellt, dass der ADC bei 5V einen Wert 
von 1000 hat. Nun lade ich mit der Netzteilspannung drei in reihe 
geschalteten NiMh Zellen über einen Widerstand auf. Mit dem ADC Messe 
ich die Spannung der Zellen. Leider schwankt der ADC auch hier übelst 
weshalb ich die Messung vergessen kann. Wie krig ich diese heftigen 
Schwankungen beseitigt?

mfg PoWl

von Defender (Gast)


Lesenswert?

Hallo powl,

du musst dir einen Widerstand und eine Spule nehmen um die Störungen die 
immer noch auf VCC liegen etwas zu mildern.

Also an AVCC einen extra Kondensator!
Dann kommt da bei mir immer einen kleinen Widerstand ran, der zu einer 
Spule geht und die Spule geht dann zu VCC.

AVCC---------|100R|-----|spule|--- VCC
        |            |
       ===          ===   <--- Kondensatoren
        |            |
       GND          GND

So in der Art, kannst dir ja einen für dich >passenden< Tiefpass (RC 
oder LC) bauen.
:-)

von Thorsten (Gast)


Lesenswert?

Hi,

1. Ext. Cs für alle Versorgungsspannungspins zum Ableiten der Spitzen 
des µC nach Masse.

2. Dein Spannungsteiler ist meiner Meinung nach keiner. Wenn es einer 
sein soll, schaue ihn Dir noch mal genauer an.

3. Brummspannung... 50 vom ADC entspricht bei Dir 125mV

von Paul H. (powl)


Angehängte Dateien:

Lesenswert?

Defender wrote:
> Hallo powl,
>
> du musst dir einen Widerstand und eine Spule nehmen um die Störungen die
> immer noch auf VCC liegen etwas zu mildern.
>
> Also an AVCC einen extra Kondensator!
> Dann kommt da bei mir immer einen kleinen Widerstand ran, der zu einer
> Spule geht und die Spule geht dann zu VCC.
>
> AVCC---------|100R|-----|spule|--- VCC
>         |            |
>        ===          ===   <--- Kondensatoren
>         |            |
>        GND          GND
>
> So in der Art, kannst dir ja einen für dich >passenden< Tiefpass (RC
> oder LC) bauen.
> :-)

Hi, danke, werd ich mal probieren aber bringt das auch was? Wenn bei mir 
an AVCC keine Spannung anliegt funktioniert der ADC trotzdem. Woher 
nimmt der seine Spannung? Wird die intern umgeschaltet sobald an AVCC 
was anliegt?



Thorsten wrote:
> Hi,
>
> 1. Ext. Cs für alle Versorgungsspannungspins zum Ableiten der Spitzen
> des µC nach Masse.

Hab ich schon mit jeweils 100µF jeweils probiert, bringt leider 
überhaupt nichts :-S

> 2. Dein Spannungsteiler ist meiner Meinung nach keiner. Wenn es einer
> sein soll, schaue ihn Dir noch mal genauer an.

Hast recht, habs geändert, war wohl schon zu müde :-)

> 3. Brummspannung... 50 vom ADC entspricht bei Dir 125mV

Ist das denn möglich? Hab leider kein Oszilloskop um das irgendwie 
festzustellen. Leider tut sich an den Schwankungen auch nicht wenn ich 
zur Glättung der Netzteilspannung noch ein paar Kondensatoren dazusteck 
:-(

mfg PoWl

von Andreas C. (acdc)


Lesenswert?

Hallo Paul !

Ich würde an Deiner Stelle erstmal bei der Versorgung anfangen. Den Elko 
am Eingang würde ich auf min. 1000uF erhöhen, zudem noch jeweils 
keramische 100nF von Eingang und Ausgang des 7805 gegen Masse, wobei 
diese beiden C's so nah wie möglich an den entsprechenden Beinen des 
7805 sitzen sollten (kurze Verbindungen mindern Störungen).

Zudem sind mit den C's, die Torsten vorschlug, keine Elkos gemeint, 
sondern ebenfalls Keramik-Kondensatoren in der Größenordnung 100nF.

Wenn Du alle Tips zusammen nimmst, (Tiefpaß mit Spule für , C an VCC, Cs 
an 7805) dann sollte Dein Ergebnis schon besser werden.

Gruß, Andreas

von clio (Gast)


Lesenswert?

Die Schwankungen hatte ich auch mal. Hab dann eine Mittelwertbildung 
über 128 Werte gemacht, und die Schwankungen waren weg :)

von Stefan (Gast)


Lesenswert?

Die Tipps mit L's und C's sind ja alle schön und gut!
Ich frage mich jedoch, was es überhaupt bringen soll, die 
gleichgerichtete aber ungeregelte Netzteilspannung zu messen? Vor dem 
Spannungsregler wird man je nach Belastung immer einen mehr oder weniger 
starken Ripple messen, auch wenn man noch so große Kondensatorbänke 
reinbastelt!

von Tim (Gast)


Lesenswert?

Und 100n an AREF sollten auch sein...

von Paul H. (powl)


Lesenswert?

Also wie gesagt das ist nur eine Testschaltung. In meiner richtigen 
Schaltung wird über einen Widerstand mit der Spannung direkt hinter dem 
Gleichrichter ein Akku, bestehend aus 3 AAA NiMh Zellen, geladen. Wenn 
ich nun während dem Laden die Akkuspannung messen möchte habe ich auch 
diese blöden Schwankungen mit drin, die auch hier noch bei 
schätzungsweise fast +-100 liegen.

Die Ladeschaltung während der Messung ausztuschalten habe ich noch nicht 
probiert. Allerdings hat dies beim Vorläufer auch nicht funktioniert. Da 
habe ich mit einem NPN-Transistor einen PNP angesteuert welcher wiederum 
den Strom für einen LM317 in Konstantstromschaltung bereitstellt.

mfg PoWl


Tim wrote:
> Und 100n an AREF sollten auch sein...

Bisher waren die 100n an AREF bei jedem Schaltungsprojekt ohne Wirkung 
und der ADC hat auch so an stabilen Messspannungen bis aufs letzte Bit 
genau ohne Schwankungen (ausser eben zwischen zwei Werten, was sich ja 
nicht verhindern lässt) den richtigen Wert angezeigt.

von Stefan (Gast)


Lesenswert?

Wie gesagt, die Spannung vor dem 7805 'brummt' immer, je nach Größe der 
Siebelkos! Und diese Brummspannung wird halt vom ADC mit gemessen, das 
ist völlig normal!
Mal abgesehen davon, dass es keine gute Idee ist, NiMH ungeregelt über 
einen R zu laden... und wie Du selbst schon gesagt hast, wird die 
Akkuspannung beim Laden stromlos gemessen! Dann wäre auch der Ripple 
weg.

von nides (Gast)


Lesenswert?

Hallo!

Wie oben schon von einem Kollegen geschrieben hat der Spannungsteiler 
einen Designfehler.

Zur Brummspannung:
Die Brummspannung wirst du nie vollständig wegbekommen.
Wenn du den Kondensator größer machst, wird zwar auf den ersten Blick 
die Amplitude kleiner, aber die Stromspitzen beim Laden des C größer.
Dadurch hast du höhere Frequenzen im Signal und du müsstest viel 
schneller abtasten. (ABTASTTHEOREM!!!)

Meine Empfehlung lautet daher:
Der Spannungsteiler (wenn er richtig rum ist) hat einen Ersatzwiderstand 
von ca. 910 Ohm. Mach ihn (viel) hochohmiger (z.B. 100k, 10k) und 
verpasse ihm am Ausgang einen 2µ Kondensator. Damit hast du ein 
Tiefpassfilter mit einer fg von unter 1 Hz.
Wenn du dann noch über mehrere Messwerte mittelst, sollte sich das 
Problem aufgelöst haben.

Schönes WE,

nides

von Ralf W. (Gast)


Lesenswert?

Hallo,

wie schon andere geschrieben haben, der Spannungsteiler
ist kein Spannungsteiler.
Du belastest mit dem 1k die gleichgerichtete Spannung.
Der 10k ist als Vorwiderstand zum ADC zu sehen.
Wenn du schreibst, das du hier mit der 2,56V Referenz
arbeitest, frage ich mich warum du überhaupt sinnvolle
Werte erhälst. Der ADC sollte eigentlich überlaufen,
da Uin > Uref.
Desweiteren sollte Uin für den ADC nicht über Uv (5V) des
Tiny gehen!
Oder habe ich hier einen Denkfehler?
Vielleicht ist ja nur dein Schaltbild falsch und du
hast richtig verdrahtet.

Wie die anderen schon sagten, nach dem Gleichrichter
wirst du immer einen Brumm haben, denn du nur schwierig
Schaltungstechnisch wegbekommst. Vorallem je höher der
Strom ist. Eine Mittelwertbildung in Software höhrt sich
hier sinnvoll an.
Ansonsten mißt du die Spannung hinter dem Spannungsregler.
(der macht ja ua. den Brumm weg)
Für die Akkus mußt du die Ladespannung abschalten.
Dazu findest du sicher diverse Schaltungen.

gruß ralf

von Paul H. (powl)


Lesenswert?

Hi!

An alle die den Thread nicht ganz gelesen haben und mich auf den 
fehlerhaften Spannungsteiler hinweisen:

Den Plan mit dem korrigierten Spannungsteiler hab ich bereits oben schon 
gepostet, war nur ein Fehler in Eagle, die Schaltung stimmt hingegen :-)



@nides, danke für den Tip! Hatte auch schon an so etwas gedacht, leider 
hatte das mal nicht funktioniert aber war wohl ein Fehler im Aufbau. 
Habe grad einen 100µF kondensator am messeingang parallel gegen masse 
geschaltet. Mit größerem Widerstand kann ich dann auch einen kleineren 
nehmen. Danke :-)

Spannung ist jetzt soweit relativ stabil.


Ach ja wegen den Akkus, das Provisorium mit dem einfachen Widerstand 
habe ich erstens verwendet um zu testen ob es auch ohne 
Konstantstromquelle noch gut funktioniert und zweitens, weil mein LM 
zuviel Spannungsdrop hatte und schon viel zu früh nicht mehr genug Strom 
liefern konnte. Warum hat der da eigentlich soviel Drop? 4V fast.

mfg PoWl

von Thilo M. (Gast)


Lesenswert?

Hast du schon mal mit dem Oszi die Spannung gemessen, ob die wirklich 
schwankt?
Und wie realisierst du die 15 Messungen bei 8MHz?
Der Tiny26 ist beim Output-Compare etwas abweichend vom Standard.

1. 8-Bit-Timer
2. wenn das CTC1-bit gesetzt ist läuft er bis zum Inhalt von OCR1C und
   löst dann den TOV1 - Interrupt aus, nicht den OCR1A (oder B)-INT.

Ich würde den ADC auch mit 125kHz laufen lassen, wie's das Datenblatt 
empfiehlt.

von Paul H. (powl)


Lesenswert?

ich benutz den OVF interrupt.

8.000.000Hz / 2048 (Vorteiler) = 3906,25 Hz / 256 (Timer) = 15,26 Hz

von Thilo M. (Gast)


Lesenswert?

Passt!
Habe mir da gestern ein paar graue Haare geholt (wollte 1s-Timer 
programmieren), bis ich das Datenblatt vollständig gelesen hatte. :-/

von Ralf W. (Gast)


Lesenswert?

Hallo,

ja hab den korrigierten Plan übersehen. ;-)
Aber wie schon gesagt, den Brumm wirst du passiv nur
mit mehreren Siebstufen reduzieren können.
Such mal nach RC und LC Filter.

So ein Filter (Mittelwertbildung) in Software ist hingegen billig.


gruß ralf

von Paul H. (powl)


Lesenswert?

ja, die analoge Mittelwertbildung mit dem RC-Glied reicht ja vollkommen 
zum messen, danke nochmals :-)

Wie ist eigentlich der ADC innen verschaltet? Wenn man nix an Agnd und 
Avcc anlegt funktioniert er ja auch. Weiß der AVR wo was anliegt? Sonst 
würde es ja garnix bringen da eine stabilisierte Spannung anzulegen wenn 
er eh nicht darüber versorgt wird.

lg Paul

von Thilo M. (Gast)


Lesenswert?

An AVCC sollte auf jeden Fall über das im Datenblatt beschriebene 
LC-Glied 5V anliegen,AREF mit 100nF gegn GND, AGND ist mit GND intern 
verbunden.

von Philipp B. (philipp_burch)


Lesenswert?

AVcc versorgt den ganzen PORTA und den ADC. Allerdings gibt es intern 
auch eine Verbindung zwischen Vcc und AVcc, die zu belasten sollte man 
aber unterlassen (Siehe Datenblatt -> Maximum difference between Vcc and 
AVcc pins). AGND existiert eigentlich gar nicht, im Datenblatt ist das 
auch mit GND angeschrieben, daher gehe ich davon aus, dass es da keinen 
Unterschied zum normalen GND gibt. Die stabilisierte Spannung gehört 
auch eher an ARef, nicht an AVcc.

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.