PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATMega ADC-Beschaltung von AREF und AVCC



moonwalker99
11.04.2006, 09:00
Hi,


zu meinem Problem: Der ADC ist noch ein kleines bisschen zu ungenau.
Ich benutze das Pollin-Board, bei dem Ist AVCC so verschaltet:

AVCC------------------ VCC
|
|
100 nF
|
|
ground

Nun habe ich vor, noch eine Drossel von 10 uH (wie im datenblatt) rein zu schalten.

AVCC ------------10uH---VCC
|
|
100nF
|
|
ground


Das es das ganze genauer macht, ist ja schon bekannt,
nun zu meiner Frage: Was mache ich mit AREF? Im moment liegt das einfach an AVCC .... (5V).
Soll ich da auch noch ein Siebglied dran machen?!....

Zu der Beschaltung von AREF steht leider auch nichts im Datenblatt, zumindest hab ich nichts gefunden.
Es handelt sich um einen ATMEGA16/32.

Grüße Moonwalker

ogni42
11.04.2006, 09:13
Das hängt davon ab, was Du in ADMUX als Referenz (Bit6 und Bit7) ausgewählt hast. Dementsprechend ergibt sich die Beschaltung.

In Deiner vorgesehenen Beschaltung (ARef und AVcc verbunden) machen nur die Modi Sinn, bei denen ARef oder AVcc die Referenzspannung bilden. Dann brauchst Du auch kein weiteres Siebglied.

BTW, die Drossel wird eine erhebliche Verbesserung bringen. Achte auch darauf, dass der Kondensator möglichst dicht an AVcc und dem zentralen Massepunkt angeschlossen ist.

Bernhard.Erfurt
11.04.2006, 12:16
> Der ADC ist noch ein kleines bisschen zu ungenau.

könntest Du diesen Fehler etwas genauer beschreiben ?

Ist er ungenau, wenn Du Deinen Messeingang gegen GND legst?
Zappeln die Werte?
Wert ungenau, wenn Du eine höhere Spannung anlegst (z.B. 4,5V) ?

moonwalker99
11.04.2006, 12:42
Wir steuern einen Roboterarm, dessen Armstellung über Potentiometer eingelesen werden. (0-5 V).

Der Arm soll nun beispielsweise zu 500 (Integerzahl) fahren. Diese Aktion schwankt aber, er fährt mal ein Stück weiter und mal ein Stück kürzer. Ungefähr stimmts immer.

Da wir uns die Messwerte nicht genau anzeigen lassen, ist es nun schwer zu sagen an was es liegt. Die Spule hab ich gerade besorgt, werde nun das Siebglied einbauen und mal beobachten obs besser wird.

Vitis
11.04.2006, 12:55
ich vermute mal schwankungen auf der Leitung vom Drehgeber.
Störungen durch andere elektriche oder elektronische Baugruppen
im Umfeld oder Abweichungen vom Drehgeber durch Temperaturänderung
usw. usw.

moonwalker99
11.04.2006, 14:53
Es ist auf jeden Fall noch etwas besser geworden durch die Drossel.

Habt ihr noch irgendeine Idee wie mans noch genauer hin bekommt?

ogni42
11.04.2006, 15:27
Da musst Du schon ein paar mehr Informationen bereit stellen :)

- Aufbau
- Schaltung / Layout
- ADC Frequenzen/Modi
- Eingangsbeschaltung
- Typ des Potis
-...

moonwalker99
11.04.2006, 15:40
Ich habe jetzt noch einiges raus messen können, z.B. ist meine AREF leicht schwankend, also um 0,01V. Dann kann das ja nicht genau sein. Im Ruhezustand ist die Quelle absolut exakt auf 5.055V. (Ist das eigentlich zuviel?).
Wenn ich ne Brücke von AVCC auf AREF mache, stimmen die Werte überhaupt nicht mehr.

Wie könnte ich die Spannung an AREF optimal stabilisieren?

ogni42
11.04.2006, 15:48
Was nimmst Du denn für den ADC als Referenz? VRef oder AVcc?

Wie sieht die Schaltung aus?

moonwalker99
11.04.2006, 15:59
Es handelt sich um das Pollin-Board:

http://www.pollin.de/shop/downloads/D810022B.PDF

In diesem PDF befindet sich der Schaltplan.

Da AREF hier über einen Pfostenstecker heraus geführt wird, habe ich es an einem zweiten Netzteil hängen. Wenn ich AREF auf VCC brücke, macht der Arm nur noch krampf.

Wenn ich es an die zweite Spannungsversorgung hänge stimmt es fast, es handelt sich nur um ne leichte Schwankung der Positionen, die sich denke ich durch die Schwanken an AREF erklären lässt. (So bald der Arm fährt, schwankt die spannung leicht (ca. -0,01V).

Warum geht es nicht wenn ich AREF auf VCC brücke?

ogni42
11.04.2006, 16:09
Was sind denn Deine Einstellungen in ADMUX? Wenn Du VRef auf Vcc brückst musst Du das in Deinen Einstellungen in ADMUX auch berücksichtigen.

Je nach Einstellung muss an ARef noch ein 100nF Kondensator nach GND (siehe Datenblatt des Mega32). Zwischen AVcc und Vcc muss auf jeden Fall die Drossel.

moonwalker99
11.04.2006, 16:23
Hi,


also wir haben das ADMUX register folgendermaßen eingestellt:

REFS1 auf 0, und REFS0 auf 1

anders hats glaub nicht richtig funktioniert. (0,0)
ADLAR ist auf 0 und dann wird halt der jeweilige kanal gewählt.

Versuchen das ganze jetzt noch mal auf 0.


Grüße

moonwalker99
11.04.2006, 16:39
Resultat ist folgendes:

der Arm greift die Kiste weiter oben. Noch ein versuch er greift noch weiter oben (in der Luft). Es kommt einem so vor als laufen die Werte davon.. :-(

ogni42
11.04.2006, 17:02
Mit den genannten Einstellungen brauchst Du noch einen Kondensator von VRef nach GND (100nF).

Bernhard.Erfurt
11.04.2006, 19:13
Wenn ich jetzt alles richtig überschaue, dann gebe ich Dir folgende Tipps:

ADMUX wie folgt initialisieren:

REFS1=0 REFS0=0 AREF, Internal Vref turned off


ADCSR wie folgt initialisieren:

Vorteiler auf 128, da wird das Ergebnis genauer


Manchmal empfielt es sich mehrere Messungen hintereinander durchzuführen, die Zwischenergebnisse zu addieren und anschließend durch die Anzahl dividieren.
(Bsp: 256 mal messen)
Geht aber nur dann, wenn auch die Zeit dazu vorhanden ist.

Dein Potentiometer würde ich mit einem kleinen Elko versehen, damit nicht irgend ein Netzbrummen Dein Messergebnis verfälscht.


Ich denke, diese Maßnahmen werden sehr wirkungsvoll sein.

Sollte aber Dein Potentiometer bei jeweils der gleichen Armstellung nicht die gleichen Spannungswerte liefern (Getriebe-Spiel), dann können wir Dir auch nicht helfen ;)

moonwalker99
13.04.2006, 07:49
So, heute geht die Action weiter.

Die Potis sind zwar billig, aber liefern schon immer die gleiche Spannung bei der jeweiligen Armstellung, habe alle Analogeingänge mit einem Kondensator gegen Ground versehen.


Meine nächste Maßnahme:

Da meine AREF leicht schwankt, also bei Belastung, werde ich die AREF nun durch einen extra Trafo der eh schon vorhanden ist, und einen extra Regelung hoffentlich schwankungsfrei vorgeben.
Meine AREF schwankt nämlich wenn der Roboter fährt von 5,055V auf ca.
5,04V, und da das ganze schwankt, bekomme ich dadurch ja auch einen netten Fehler rein.

Werde euch das Ergebniss meiner Maßnahme posten.

Danke für die vielen Tips bisher, das mit den mehreren Messungen ist auch ne interessante Möglichkeit aber durch mehrerer Messungen während der Arm fährt bekomme ich ja auch wieder Fehler durch verzögerung.

Grüße

Bernhard.Erfurt
13.04.2006, 16:08
>Danke für die vielen Tips bisher, das mit den mehreren Messungen ist >auch ne interessante Möglichkeit aber durch mehrerer Messungen >während der Arm fährt bekomme ich ja auch wieder Fehler durch >verzögerung.


Stimmt! Auch wenn die Kondensatoren an den Analogeingängen zu groß sind, bekommst Du einen Messfehler, denn die Kondensatoren müssen sich erst auf den Potentiometer-Wert aufladen bzw. entladen.

Mir fällt gerade nochwas ein:

Wenn der Motor abgeschaltet wird, dann bleibt er doch nicht sofort stehen, er läuft, auf Grund seiner Trägheit immer etwas weiter.

Es darf also erst gemessen werde, wenn der Motor wirklich steht und nicht wenn er abgeschaltet wird.

Noch was:

Du kannst Dir den gemessenen Analogwert doch per USART problemlos auf den PC ausgeben lassen, hilft vielleicht bei der Fehlersuche?

ogni42
13.04.2006, 17:56
Und dann noch daran denken, dass die Quellimpedanz für den ADC nicht größer als 10kOhm sein darf.

Bernhard.Erfurt
13.04.2006, 18:01
>Und dann noch daran denken,
>dass die Quellimpedanz für den ADC nicht größer als 10kOhm sein darf.

Warum nicht? Kann ich jetzt nicht nachvollziehen.

ogni42
14.04.2006, 13:43
Weil es so im Datenblatt steht.

Etwas längere Erklärung:
Die Quelle muss einen Kondensator laden. Wenn die Quellimpedanz zu hoch ist, kann der Kondensator in der Zeit zwischen zwei Samplings (13 ADCTakte) nicht zum tatsächlichen Spannungswert geladen werden. Je niedriger die Samplefrequenz ist, desto höher kann demnach die Quellimpedanz sein.

Bernhard.Erfurt
14.04.2006, 13:57
Da hast Du natürlich Recht, deshalb kam schon der Tipp von mir:

- ADC Vorteiler so hoch wie möglich
- mehrere Male messen
- Kapazitäten nicht zu groß

ogni42
14.04.2006, 16:05
Es reicht den ADC Vorteiler so einzustellen, dass die 200kHz ADC Frequenz bei 10bit Betrieb nicht überschritten wird, s. Datenblatt.

Dann mit möglichst niedriger Quellimpedanz arbeiten und, wie Bernhard schon gesagt hat, kleine Eingangskapazitäten und wenn das nicht reicht Teifpass (Mehrere Male messen und teilen).

Statt ARef über einen externen Trafo zu speisen, wärst Du wahrscheinlich besser mit einer extra Spannungsreferenz dran (wenn es denn richtig genau sein soll). Mit dem zusätzlichen Trafo kommst Du ebenfalls um eine Spannungsregelung nicht herum.

moonwalker99
15.04.2006, 07:58
So, also die Spannung vom Trafo wurde anhand eines Stabilisierungsbausatzes vom Conrad für 7€ stabilisiert und gleichgerichtet.
Nun hab ich eine schöne stabile Spannung von 4,73V eingestellt, und siehe da es wurde noch ein kleines bischen genauer.
Als Eingansimpedanz habe ich 4,7KOhm potis verwendet, ich vermute jetzt einfach mal das die restliche ungenauigkeit eher von den Billigpotis kommt, oder was meint ihr?

Bernhard.Erfurt
15.04.2006, 08:58
>ich vermute jetzt einfach mal das die restliche ungenauigkeit eher von >den Billigpotis kommt, oder was meint ihr?

Eine Fern-Diagnose ist immer nicht ganz einfach, denn

man weiß nicht, ob der Fehler eine mechanische, hardwaremäßige oder

softwaremäßige Ursache hat, oder sogar eine Kombination von allen?