- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: Problem mit ADC

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    22.11.2006
    Beiträge
    38

    Problem mit ADC

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    Ich habe bereits im Forum gesucht, jedoch nichts gefunden, was mein Problem beschreiben würde.

    Also das Problem ist, das ich auf allen Port-Pinns eine Spannung von c.A. 0,2 V habe.

    Vor allem beim Port A stört mich das.
    An die Pinns des Port A will ich Themperatursensoren anschließen und diese über den Analogwandler auslesen.

    Habe mich erst gewundert, wiso ich bei diesen einen Wert von 1021 - 1023 heraus bekomme und dann festgestellt, dass ich auf den nicht angeschlossenen Pinns Werte von 150 bis 300 erhalte.

    Abblockkondensatoren habe ich mehr als genügend (2 * 100 uf) angeschlossen. Meine Eingangsspannung wurde auch geglättet.

    Die drei Spannungsanschlüsse meines ATMEGA16 (Dil 40) sind alle miteinander verbunden, genau wie die Masse auch überall miteinander verbunden ist.

    Die Platine ist auch absolut ok. Ich kann die Spannung auch messen, wenn ich die Pinns von den Ports nach oben biege und diese dann keine Verbindung mehr mit dem Bord haben.

    Ach ja, habe es auch mit einem zweiten Atmega16 probiert, ändert aber nichts.

    Ich hoffe Ihr könnt mir helfen.

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Wie hast du die Ports programmiert, wie sieht deine Beschaltung sonst aus. Vielleicht kannst du Schaltung und Code hier posten, dann kann man eher was sagen.

    Hubert

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Portpins müssen für ADC auf Eingang programmiert sein. AVcc muss von Vcc über LC Glied entkoppelt werden.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    22.11.2006
    Beiträge
    38
    <- AVcc muss von Vcc über LC Glied entkoppelt werden.

    Was meinst Du damit ?

    Habe hier gerade keinen Quellcode etc. vorliegen, aber der ist eigentlich das Bsp. aus der Bascom-Hilfe.

    Schaltung ist hier aus dem Tutorial AVR-Einstieg leicht gemacht.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Wie treibst du die Ports denn?

    Nicht angeschlossene Ports sollte man entweder aktiv als Ausgang oder als Eingang mit Pullup betreiben, um floatende Eingänge zu vermeiden.

    An einem Ausgang, der auf LOW treibt, wird man keine 0V messen, das ist durch die Hardware bedingt.

    Um das Potential eines high-Z Eingangs zu messen, brauchst du ein V-Meter mit einem Eingangswiderstand ab dem G&Omega;-Bereich.
    Disclaimer: none. Sue me.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    22.11.2006
    Beiträge
    38
    Habs hinbekommen, indem ich mal alle Ports auf Eingang gesetzt habe und an dem Pin, an dem der Sensor hängt, habe ich einen 1,5k Wiederstand als Pullup gesetzt.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Die Schaltung aus dem "AVR Einstieg leicht gemacht" ist OK um ein bisschen herum zu spielen. Du wirst damit aber keine stabilen ADC Messungen bekommen. Insbesondere nicht, wenn Du noch Timer, PWM etc. benutzt.

    Die LC Entkopplung steht im Datenblatt zum jeweiligen AVR Chip und hier in etlichen Threads.

  8. #8
    Hi!

    Ist ja schon etwas älter der Thread, aber ich les mich grad hier im Forum etwas zur AD-Wandlung schlau und da hab ich grad mal eine Frage:

    Zitat Zitat von ogni42
    Portpins müssen für ADC auf Eingang programmiert sein. AVcc muss von Vcc über LC Glied entkoppelt werden.
    Wie genau ist denn das mit den Portpins gemeint?

    Mal zu meinem derzeitgen Projekt:

    Ich muss für ein Projekt ebenfalls eine Temperaturmessung durchführen, läuft über ein Thermoelement mit AD595 (Kaltstellenkompensation). Jedenfalls hab ich das Signal am Mega16 am PA0.
    Die anderen 3 Ports benutze ich als Ausgänge für LCD etc.. Das LC-Glied habe ich auch an AVCC.
    Ich kann leider nur alle 2 Wochen ins Labor und habe mir zu Hause eine Testschaltung aufgebaut. Da mir der AD595 aber zu teuer ist, hab ich lediglich ein 10k Poti am PA0. Damit funktioniert die Messung und Anzeige zumindest wunderbar.
    Nun ist es mit dem analogen Temperatursignal aber sicherlich kritischer !? Soll der Satz oben heißen, dass ich den PORTA vorher noch als Eingang definieren sollte? Ich dachte das geschieht automatisch wenn man den ADC freigibt.

    Hier mal meine bisherigen Maßnahmen:

    - LC-Glied
    - 100nF zwischen AREF und GND
    - Mittelwert aus 256 Messwerten nehmen (im Programm)

    Reicht das aus, um eventuelle Störungen zu minimieren oder habe ich etwas entscheidendes vergessen / falsch gemacht?

    Danke schonmal

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo niedon,

    es muss nur der Pin auf Eingang, mit dem gemessen wird, also hier PA0, nicht der ganze Port. Die anderen, nicht für ADC genutzten Pins, können für was andres auch Ausgänge genutzt werden.

    Man muss den Pin selber auf Eingang stellen, der ADC verbindet nur intern den Pin mit dem ADC, egal ob dieser evtl. auch auf Ausgang steht !
    In diesem Fall kommt dann entweder 0 oder 1023 raus, je nach dem wie der Ausgang geschaltet ist.

    Warum es trotzdem geht, nach dem Reset des AVR sind immer alle Pins auf Eingang. Sicherheitshalber sollte man trotzdem den Pin per Programm auf Eingang stellen, damit keine unvorhergesehenen Fehler auftreten.

Berechtigungen

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

12V Akku bauen