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
Hallo Johannes, welche Widerstandswerte habe Deine Potis ? Hast Du Dämpfungskondesatoren über die Potieingänge geschaltet?
Verstehe ich das richtig, du versuchst an einem nicht angeschlossenen Pin die Spannung zu messen?
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 ?
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
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
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.
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
@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.
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
Ändere doch mal die Konvertierungsreihenfolge. AD-Eingang zu erst, dann die Potis.
Genau, anstatt Poti1, Poti2, Sensor mal Sensor,Poti1,Poti2 probieren. gute Idee, danke. Mg, Johannes
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
es kann doch nicht am Poti liegen?!?! das ist doch kein Funkmast! Johannes
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
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
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.
AVCC richtig anständig mit VCC verbunden (über LC filter) und AGND auch anständig mit GND (sternförmige masseführung)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.