-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: AD-Wandler läuft nicht korrekt...

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    32
    Beiträge
    647

    AD-Wandler läuft nicht korrekt...

    Anzeige

    Hi,

    ich habe ein Arduino Nano. Daran habe ich einen alten Joystick per Gameport angeschlossen. Die Potis in dem Joystick sind 100kOhm groß.

    Ich frage 30 mal pro Sekunde die AD´s[2,3,5,6,7] ab. Die Werte springen wie verrückt von 0-255. Erst nachdem ich einen 4,7kOhm Widerstand von AD[2] nach GND angeschlossen habe, wurden die Werte deutlich ruhiger. Wenn der Widerstand an einen der hinteren AD´s ist, springen die Werte wieder.
    Das lässt mich vermuten, das die Spannung am AD nicht schnell genug abfällt. Denn der AD wird ja gemultiplext.

    Sind die Potis zu hochohmig? Ich habe irgendwo im Internet gelesen, das man unter 10kOhm bleiben sollte.
    Muss ich den AD noch zusätzlich beschalten?

    Danke
    Gruß Daniel
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    26
    Beiträge
    1.192
    Hallo,
    die Potis sind relativ hochohmig. Das Datenblatt eines Atmega32 verrät zu den analogen Eingängen:
    The ADC is optimized for analog signals with an output impedance of approximately
    10 kΩ or less. If such a source is used, the sampling time will be negligible. If a source
    with higher impedance is used, the sampling time will depend on how long time the
    source needs to charge the S/H capacitor, with can vary widely. The user is recommended
    to only use low impedant sources with slowly varying signals, since this
    minimizes the required charge transfer to the S/H capacitor.
    Also 10kOhm oder niedriger wären ideal für die Potis. Ansonsten musst du dem AD-Wandler mehr Zeit geben, den internen Kondensator aufzuladen. Hat der nicht genug Zeit, werden die Werte beeinflusst von den vorherigen Messungen. Das dürfte der Effekt sein, den du beobachtest.

    Also ich sehe da prinzipiell 3 Möglichkeiten:
    - das Poti niederohmiger wählen, z.B. die genannten 10kOhm oder weniger
    - dem ADC mehr Zeit geben, d.h. nach dem internen multiplexen mehr Zeit einplanen bevor dann endgültig gemessen wird, oder mehrere Messungen an ein und demselben Eingang durchführen und dann entweder nur den letzten Wert verarbeiten oder einen Durchschnitt ausrechnen
    - die Potis im Joystick lassen sich vielleicht nicht auswechseln, damit das Signal für den ADC dennoch niederohmiger wird, könnte man einen Operationsverstärker dazwischen schalten (als Spannungsfolger bzw. Impedanzwandler)

    Grüße,
    Bernhard

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    32
    Beiträge
    647
    Danke für die schnelle Antwort!

    Potis tauschen fällt leider raus.
    Die Lösung mit den OP´s ist auch nicht so mein ding, weil erhöhter beschaltungsaufwand.
    Also werde ich einfach mehrmals (reicht da 10mal?) messen und nur den letzten Wert nehmen. (Weiss einer in welchem Register steht, das die AD-Wandlung fertig ist? Dann würde ich darauf warten.)
    Ein bekannter meinte, ich könnte auch versuchen 100nF kondensator nach GND zu schalten. Das werde ich morgen auch noch ausprobieren.

    Gruß Daniel
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  4. #4
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Wenn das ADSC Bit auf 1 gesetzt wird startet der A/D-Wandler eine Messung. Wenn diese Messung abgeschlossen ist setzt der Controller das Bit automatisch wieder auf 0. Wenn du dieses Bit auf 0 abfragst kannst du sehen wann er fertig ist.
    Und 10 Messungen Zeit sollte ausreichen.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  5. #5
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Das mit dem Kondensator am AD Eingang funktioniert auch, und kann zusätzlich auch gegen kapazitiv eingekoppelte Störungen (z.B. 50 Hz) helfen. Auch der 100 K Poti hat als Spannungsteiler maximal eine Impedanz für den Ausgang von 25 KOhm - nämlich in der Mittelstelung, und da sind dann 2 mal 50 K dran, die für eine Last am Poti wie eine Parallelschaltung wirken. Das spricht dafür, dass der etwas zu hohe Widerstand nicht die alleinige Ursache für die Probleme ist.

    Wie sieht das denn mit der Frequenz für den AD Wandler aus, stimmt die ?

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Potis in alten PC-Joysticks sind nicht mit GND verbunden:


    (Bild aus http://www.roboternetz.de/community/...l=1#post516619)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    32
    Beiträge
    647
    @Besserwessi: Das...
    Wie sieht das denn mit der Frequenz für den AD Wandler aus, stimmt die ?
    verstehe ich nicht. Was genau meinst du damit?

    @radbruch: Das die Potis (evtl.) nicht mit GND sondern mit 5V verbunden sind, bedeutet doch im Prinzip nur das die Messerte "invertiert" sind oder nicht?

    Gruß Daniel
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Es bedeutet, das Poti im Joystick ist kein Spannungsteiler.

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  9. #9
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Damit man die Variablen Widerstände mit dem AD Wandler auslesen kann braucht man noch einen Widerstand gegen GND dazu - das ganze wird aber nichtlinear.

    Beim ADwandler kann man die Geschwindigkeit über einen Vorteiler einstellen, und da gibt es gewisse Grenzen zu beachten, sonst arbeitet der ADC nicht gut. Ich weiss aber nicht in wieweit das beim Arduino schon gemacht wird.

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    26
    Beiträge
    1.192
    Damit man die Variablen Widerstände mit dem AD Wandler auslesen kann braucht man noch einen Widerstand gegen GND dazu - das ganze wird aber nichtlinear.
    Oder man verwendet eine Konstantstromquelle, dann ist die daran abfallende Spannung in dem Fall linear.

    Einfacher wäre es, im Joystick umzulöten, sodass es ein Spannungsteiler wird. Das wäre auf jeden Fall die beste Lösung!

    Und noch eine Alternative: Den Joystick so lassen, einen Kondensator zwischen Pin und Masse und dann mittels RC-Zeitkonstante messen.
    D.h. der Rest ist Software: Den Pin als Ausgang schalten und auf Low, dann auf Eingang und viele Messungen machen.
    Nach t=R*C sind 63% der Spannung erreicht. Dann kann man ausrechnen, welchen Widerstandswert das Poti gerade hatte.
    Die Messung dauert dann eben länger, fraglich ist auch wie genau man dann messen kann.

    Grüße,
    Bernhard

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. LCD-Ansteuerung nicht korrekt
    Von EagleStar im Forum AVR Hardwarethemen
    Antworten: 30
    Letzter Beitrag: 20.11.2007, 20:08
  2. [läuft+Code] Servotest an ATtiny13 läuft nicht
    Von oberallgeier im Forum Motoren
    Antworten: 4
    Letzter Beitrag: 18.10.2007, 17:49
  3. Pic führtprogramm nicht korrekt aus
    Von cavorca im Forum PIC Controller
    Antworten: 3
    Letzter Beitrag: 16.04.2007, 20:01
  4. USB/Seriell Wandler funktioniert nicht korrekt
    Von Andree-HB im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 11.10.2006, 16:47
  5. Antworten: 3
    Letzter Beitrag: 15.08.2005, 17:41

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •