Forum: Mikrocontroller und Digitale Elektronik ADC schwankt um Wert 10


von Mike (Gast)


Lesenswert?

Hallo,

ich habe ein Problem bei dem ich nun nicht weiterkomme. Ich benutze eine 
ATxmega16D4. Ich lege nun an ADC4 keine Spannung an, sondern auf Masse.

Ich nutze Freerun und 12 Bit. und lese den Wert ständig aus und gib den 
Wert auf dem Display aus. Nun habe ich aber das Problem das die Anzeige 
von 160 bis 170 schwingt.

Das schwingen habe ich überall, auch wenn ich Diff Modus benutze. 
Weitere Eigenart ist, das ich je nach Einstellung von Prescaller Werte 
von 170 bis 1000 bekomme.

Hatte jemand schon das Problem ?

Meiner Ansicht müsste das ganze Ding schwingen ? Wenn ich ein Rauschen 
draufhabe dann dürfte es ein Unterschied machen ob ich Gain habe oder 
nicht. Das tuts aber nicht. Kann mir da jemand helfen. Seidenn die 
Referenzspannung würde schwingen, aber das kann ich mir nicht 
vorstellen.

Wenn genaueres dazu gebraucht wird, liefere ich auch gerne das.

Danke

von Icke (Gast)


Lesenswert?

Schaltplan Code Fotos vom Aufbau.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Mike schrieb:
> Ich nutze Freerun und 12 Bit. und lese den Wert ständig aus und gib den
> Wert auf dem Display aus. Nun habe ich aber das Problem das die Anzeige
> von 160 bis 170 schwingt.

Ein schwingen von 3...5 Werten ist bei der Serie normal. Größere 
Abweichungen deuten auf Einstreuungen hin. Welche Quellimpedanz hast Du 
am ADC-Pin angeschlossen? Schließe mal probehalber direkt am ADC-Pin 
einen Keramikkondensator von 10nF nach Masse und beobachte Deine 
Messung.

Mike schrieb:
> Weitere Eigenart ist, das ich je nach Einstellung von Prescaller Werte
> von 170 bis 1000 bekomme.

Klingt nach zu hoher Quellimpedanz oder Software-Fehler bei der 
Triggerung und Abfrage des ADC. Mehr kann man sagen, wenn Du mit Details 
´rausrückst.

von Klaus (Gast)


Lesenswert?

Knut Ballhause schrieb:
> Ein schwingen von 3...5 Werten ist bei der Serie normal. Größere
> Abweichungen deuten auf Einstreuungen hin. Welche Quellimpedanz hast Du
> am ADC-Pin angeschlossen? Schließe mal probehalber direkt am ADC-Pin
> einen Keramikkondensator von 10nF nach Masse und beobachte Deine
> Messung.

Mike schrieb:
> Ich lege nun an ADC4 keine Spannung an, sondern auf Masse.

Das kann's also nicht sein.

MfG Klaus

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Klaus schrieb:
> Mike schrieb:
>> Ich lege nun an ADC4 keine Spannung an, sondern auf Masse.
>
> Das kann's also nicht sein.

Okay, dann liegt´s am Layout und oder an der Versorgung. Außerdem gibt 
es noch ein Erratum, die Referenzspannung betreffend. Ist diese größer 
als 2.4V oder Vcc-0.6V, treten merkwürdige Effekte auf.

von Knut (Gast)


Lesenswert?

Ich habe ein ähnliches Problem mit dem 128A3. Hier schaukelt auch alles 
vor sich hin. Hatte allerdings fälschlicherweise 3.3V als Referenz 
benutzt.
Das Layout war auch nicht optimal. Habe nun eine 2.5V Referenz und ein 
Redesign gemacht, aber leider noch nicht getestet.

Knut

von Mike (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die schnellen Antworten.

Leider hat kein Vorschlag zu besseren Ergebnissen geführt. Eigenartig 
war, dass wenn ich beide Eingänge mit Masse verbunden habe auch 
tatsächlich einen konstanten Wert erhalten habe im Diff - Modus.

Desweiteren wundert es mich,, dass die Schwingung unabhängig von der 
Verstärkung ist. Meiner Meinung nach muss es dann etwas mit der 1V 
Konstantspannungsquelle zu tun haben ? Hat jemand mit dieser schon 
gearbeitet und perfekte Werte erhalten ?

Ich verwende Freerun Modus ? hat es damit was zu tun ?

Danke für die Hilfe.

von avion23 (Gast)


Lesenswert?

Hallo Mike,
wie schnell samplest du? Und wie hast du die Geschwindigkeit berechnet?

Schaltest du den ADC-Kanal um? Dir ist klar, dass im freerunning modus 
jeder kanal mindestens zweimal gesamplet wird, selbst wenn du 
umschaltest?

von Fabian (Gast)


Lesenswert?

Hallo,
ich kann dir nur empfehlen noch mal die Errata genau zu lesen. Ich meine 
da schon mal etwas in Zusammenhang mit dem Freerun-Modus gelesen zu 
haben.

Gruß

Fabian

von Mike (Gast)


Lesenswert?

Hallo avion23,

ich messe zur Zeit nur ein Kanal ohne Verstärkung und interne Referenz 1 
V im Freerunning modus.



Messung:

    Strom_a = 0;
    for (unsigned long a = 0; a<1000; ++a)
      {
        //ADCA_CTRLA = 0x05;
        while(!ADCA.CH0.INTFLAGS);
        ADCA.CH0.INTFLAGS=ADC_CH_CHIF_bm;

        Test = ADCA.CH0RES +2000;
        Strom_s = (unsigned long) Test;
        Strom_b = Strom_s;
        Strom_a = Strom_a + Strom_b;
      }

    Strom = (Strom_a / (1000) );//- 2300;


ich versuchte auch den Mittelwert zu bilden, dort waren die Abweichungen 
dann nur noch 3 LSB.
Median hab ich auch schon probiert.

Beim Mittelwert scheint dann der Wert über die Zeit zu wandern. zB. von 
882 auf 908 und wieder zu 900 unnd so weiter. Das Hilft mir dann auch 
net weiter.

von avion23 (Gast)


Lesenswert?

Hi Mike,

Mike schrieb:
> ich messe zur Zeit nur ein Kanal ohne Verstärkung und interne Referenz 1
> V im Freerunning modus.

Das ist schonmal gut. Kannst du einen neuen Testcode aufsetzen in dem 
nur das nötigste vorhanden ist? D.h. adc init und samplen?

Spielchen wie Tiefpass würde ich erst viel später machen. Je mehr Code, 
destso mehr Fehler.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Mike schrieb:
> Leider hat kein Vorschlag zu besseren Ergebnissen geführt. Eigenartig
> war, dass wenn ich beide Eingänge mit Masse verbunden habe auch
> tatsächlich einen konstanten Wert erhalten habe im Diff - Modus.

Das riecht nach murksigem Layout. Möglich wäre außerdem eine falsche 
Init der Eingangsmultiplexer.

von Nacktaktiver (Gast)


Lesenswert?

Die Quellen haben eine ziemlich hohe Impendanz (bedingt durch die 
Reihenwiderstände). Wenn der Kondensator nun unglücklich im Layout 
platziert ist kann ein Wechselspannungsanteil von 10LSB durchaus 
auftreten.
Das Layout müsste man mal begutachten.

von Thomas (kosmos)


Lesenswert?

wie hoch ist deine Sampling Frequenz, es kann gut sein das die Zeit 
nicht ausreicht den Kondensator ausreichend zu laden wenn man ihn zu oft 
durch Sampling belastet.

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.