mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem: ADC wackelt an AT90CAN128


Autor: Johannes Philippi (ohanica)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

an meinem AT90CAN128 verwende ich von den 8 Eingängen die Kanäle ADC0, 
ADC1 (jeweils Potiausgang, direkt am ADC-Pin) und ADC7 (Stromsensror 
0.25...4.75V). Wenn ich am Poti von ADC0 dreh, dann wackelt die Spannung 
am AD-Pin ADC7, und zwar um knapp 2 V (Stromsensorausgang nicht 
angeschlossen). Dreh ich am anderen Poti, passiert nichts ?!?! obwohl 
alles genau gleich aufgebaut ist. Schließe ich den Stromsensor nun an, 
wackelt die Spannung viel weniger (nur noch ca. 10...12mV) - aber auch 
nur wenn ich an dem einen Poti drehe. Verwende ich einen anderen Kanal, 
zB ADC6 für den Stromsensor, dann tritt genau das gleiche Verhalten auf.

Wenn ich die Pull-ups an den ADC-Pins einschalte dann verfälscht das 
meine Messung (es entsteht offensichtlich ein Spannungsteiler), dafür 
wackelt sie aber nicht mehr.

Hat jemand sowas schon erlebt? Oder ist der AD-Wandler des uC hin? Was 
geht da ab?

Danke für Tipps bzw. Aufklärung!

Mg,
Johannes

Autor: Dirk Hofmann (arm-dran)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Johannes,

welche Widerstandswerte habe Deine Potis ?
Hast Du Dämpfungskondesatoren über die Potieingänge geschaltet?

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verstehe ich das richtig, du versuchst an einem nicht angeschlossenen 
Pin die Spannung zu messen?

Autor: Dirk Hofmann (arm-dran)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Außerdem,

an einem unbeschaltetem AD-Eingang ( mit welchem Messgerät) ist heikel.
Der Widerstand des Meßgerätes selbst stellt schon eine Fehlerquelle dar.
Wenn schon denn schon solltest Du Dir gemessenen AD Werte über die 
Wandlung des Controllers ansehen.
Du hast doch sicher ein Display dran oder ?

Autor: Johannes Philippi (ohanica)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die Widerstände der Potis sind 10k. Dämpfungskondenstoren hab ich nicht 
eingebaut - müsste man die von Masse zum Poti-Ausgang schalten? Was für 
Kondensatoren/Werte nimmt man da?

Ich hab einfach mal die AD-Wandlung gemacht, ohne den Pin zu beschalten 
(hängt frei in Luft) - das ist aber natürlich nicht Sinn und Zweck der 
Sache... Dabei wackelt die Spannung halt stark (ok, das kann ja von mir 
aus sein). Aber sie wackelt nur, wenn ich an einem der beiden Potis 
drehe, das wundert mich. Warum nicht auch beim anderen? Und wenn ich 
dann den  Ausgang des Stromsensors dranhänge messe ich die Spannung, das 
funktioniert auch sehr gut und genau, aber die Spannung wackelt halt ein 
wenig wenn ich an dem einen Poti drehe.
Die AD-Werte wandle ich in einen Stromwert um, den ich Anzeige (auf 
einem LC-Display :) ). Die Änderung dieses Wertes entspricht 2-3 LSB des 
ADC-Wertes. Multipliziert mal der Auflösung des AD-Wandlers (4,8mV) 
ergibt das die Werte um 10..12mV, genau die Differenz, die ich mit dem 
Multimeter auch messe.

Irgendwie ist die Sache komisch...

Mg,
Johannes


Autor: Johannes Philippi (ohanica)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kaum beschreibt man seine Probleme, fängt man an "richtig" zu suchen...

In Beitrag "Mega8 ADC Meßproblem" steht: "...aber meiner
Erfahrung nach muss nach dem Umschalten des MUX eine Pause von min. 40µs
'rein, sonst kommt Mist 'raus. Probier's einfach mal mit Pausen zwischen
den Kanälen. "

Vielleicht liegt es daran, daß ich eine Wandlung hinter der nächsten 
mache. Nach dem Auswählen des Kanals muss man scheinbar zuerst ein wenig 
warten. Im Datenblatt des AT90CAN128 steht (bei mir auf seite 272) The 
user is thus advised  not to write  new channel or reference selection 
values to ADMUX until one ADC clock cycle after ADSC is written. Leider 
steht aber nichts dergleichen im Abschnitt "Operating the ADC"...
Ich werds mal mit einer kleinen Pause nach dem ADMUX = KANAL7 - Befehl 
probieren.

Datenblatt lesen bildet - hoffentlich liegt es daran.

Mg,
Johannes

Autor: Dirk Hofmann (arm-dran)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Johannes,

die Kondensatoren sind nur dazu gedacht, das der gemessenen Wert der 
Potis
nicht ständig hin und her zappelt. Eine gewisse Trägheit sozusagen.
C = 10n zwischen Gnd und Schleifer.

Du mußt freilich Pausen zwischen den Wandlungen machen. Normalerweise
gibt es eine Art Busy Flag, welches angibt, wann die Wandlung beendet 
ist.
Deswegen haben AD Wandler auch Sample and Hold Stufen.
Ich habe bei dem Controller noch nicht nachgeschaut, werde ich später 
aber mal tun.
Melde mich dann hier nochmal im Forum.

Autor: Dirk Hofmann (arm-dran)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Johannes,

habs mir grad mal angesehen.

65-260µs Conversion Time
bis zu 15Ksps

den freerunning mode würde ich nicht benutzen.
Beim lesen der Potis mußt du (sofern es ein 270 oder 300° Poti ist)
sowieso eine Filterung der unteren Bits vornehmen.
Bei 10Bit kann keiner mehr am Poti drehen, ohne das der Wert zappelt.

Beim anderen AD Eingang. Wie hoch ist dort die Strombelastung?
Hast Du die AD-Referenz verwendet?
Lies mal das Kapitel noise reduction.

Gruß
Dirk

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Johannes Philippi:
Wenn dein Eingang nicht beschaltet, ist ist er sehr hochohmig gegen 
Masse
für den ADC ist irgendetwas zwischen 20k und 100k. Dein freier Pin ist 
induktiv und kapazitiv mit JEDEM Gegenstand im Raum gekoppelt. Er ist 
wie eine kleine Antenne. Da er sehr hochohmig ist verschiebt sich das 
Potential, was du als Spannungsänderung mißt. Du kannst ja mal den Pin 
auf eine definiertes Potential legen und ihn dann wieder unbeschaltet 
messen. Er ist wie ein kleiner Kondensator ca 10pF. Mit jedem 
Samplevorgang entlädst du ihn ein bißchen, wie stark kommt auf den ADC 
an.


Ansonsten halte dich an das Datenblatt, nicht an zitierten Thread, wer 
eine 10fach zu hohe Samplerate an den ADC anlegt muss sich nicht wundern 
wenn da nur noch Schrott rauskommt.

Autor: Johannes Philippi (ohanica)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk, hallo Wolfram,

danke für die Tipps. HAbe gerade ausprobiert zwischen ADMUX-Auswählen 
und Start Conversion eine Zeit lang zu warten (16us...100us). Das 
Ergebnis bleibt immer das gleiche. Ich habe dann zwischen alle Befehle 
eine Warteschleife eingefügt (16us). Die drei AD-Wandlungen mache ich 
jede Sekunde einmal hintereinander. Hat alles nichts gebracht... ich 
vermute, daß das Problem nicht in meiner Software liegt.
Den Prescaler für den ADC-clock hatte ich auf 64 (=4us-Takt für den 
ADC). Jetzt hab ich ihn auf 128 gesetzt ==> alles beim Alten... keine 
Verbesserung

Das mit der Antenne ist mir bewusst, aber daß sich deswegen die Spannung 
um mehrere Volt ändert glaube ich kaum, einige mV oder zig mV würde ich 
aus solchen Gründen akzeptieren (rein gefühlsmäßig, bin kein HF-Fritze). 
Und warum passiert das Ganze nur beim Drehen einem Poti? Das andere ist 
2cm nebenan und hat überhaupt keinen Effekt. Die Potis sind genau 
gleich...

Den free-running mode verwende ich gar nicht, sondern ganz normal den 
single conversion mode.

Ich habe den uC im  Verdacht, daß der ein wenig geschädigt ist... wie, 
oder warum kann ich leider nicht sagen.

Jetzt hab ich noch eine Idee: vielleicht ist der AD-Kanal von dem Poti 
"kaputt", ich könnt ja den einmal an einen anderen Kanal hängen und 
schauen was passiert...

Mg,
Johannes

Autor: Dirk Hofmann (arm-dran)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ändere doch mal die Konvertierungsreihenfolge.

AD-Eingang zu erst, dann die Potis.

Autor: Johannes Philippi (ohanica)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau, anstatt Poti1, Poti2, Sensor mal Sensor,Poti1,Poti2 probieren.
gute Idee, danke.

Mg,
Johannes

Autor: Johannes Philippi (ohanica)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

jetzt hab ich beides probiert: Reihenfolge ändern (also Sensor-ADC zu 
erst, dann Potis) und Kanal des "spinnenden Potis" gändert, hat beides 
nichts geholfen...Alles nach wie vor beim gleichen Verhalten. Ich 
versteh die Welt immer weniger. "Manchmal braucht man einfach eine gute 
Idee zum weiterkommen." Darauf wart ich jetzt mal...

Mg,
Johannes

Autor: Johannes Philippi (ohanica)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es kann doch nicht am Poti liegen?!?! das ist doch kein Funkmast!
Johannes

Autor: Dirk Hofmann (arm-dran)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hast <du denn momentan am AD-Port angeschaltet?

Autor: Johannes Philippi (ohanica)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am AD-Port hängen drei zu messende Teile: zwei Potis und der 
StromSensor.

Die Pins 2 und 3 des ADPorts (PortF) verwende ich um zwei Schalter 
anzuschließen. Pin 2 und 3 sind also als Input konfiguriert (DDRF- 
Register).

Hätte ich vielleicht gleich am Anfang schreiben sollen... Hmm, kann es 
damit aber zusammenhängen, daß ein AD-Kanal einen anderen beeinflußt? 
Also sowas hab ich noch gemacht, und bislang keine Probleme gehabt. Aber 
wer weis... vielleicht hatte ich es ja auch nur nicht gemerkt.

Mg,
Johannes

Autor: Johannes Philippi (ohanica)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab grad etwas im Netz nach solchen Störungen gesuht, aber nicht viel 
gefunden. Hat jemand einen Tipp dazu? Warum ein AD-Kanal einen anderen 
beeinflusst?

mg,
Johannes

Autor: tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
leg mal die nicht verwendeten AD-Eingänge auf Masse oder ein anderes 
festes Potential. Wenn die offen sind gibts auf jeden Fall Störungen.

Autor: Hauke Radtki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVCC richtig anständig mit VCC verbunden (über LC filter) und AGND auch 
anständig mit GND (sternförmige masseführung)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.