AD-Wandler falscher Wert bei Potentiometer

Bobbybau91

Neues Mitglied
15. Nov. 2013
31
0
0
32
Ayl, Germany
Sprachen
  1. ANSI C
Hallo zusammen,

ich besitze ein MyAVR MK2 Board mit 2 47k Potis. Wenn ich diese mit dem Atmega8A verbinde, bekomme ich einen Wert im Bereich von 8-1023 heraus.
Nun habe ich mir ein anderes Potentiometer für eine Messchaltung gekauft, welches auch einen Widerstand von 47 kOhm hat, allerdings bekomme ich jetzt nur noch einen Wert im Bereich von 10-566 angezeigt.
Hat da jemand eine Idee woran das liegen könnte?
Gibt es eine Möglichkeit, das Minimum und Maximum des AD-Wandlers festzulegen?

Gruß Bob
 
Hi Bob,

ja, gibt es. Du kannst den ADC entweder im 8-bit Modus oder im 10-bit Modus betreiben, aber dann würdest Du den maximalen Wert von 255 bekommen.

Wie hast Du den Poti verschaltet?
 
Du kannst doch die Spannung am ADC-Eingang mit dem Multimeter messen. Da siehst du gleich ob 5V anliegen, wenn das Poti voll aufgedreht ist, oder nur etwa 2,6V.
 
Problem gelöst

Hat sich erledigt, der Poti war falsch beschaltet. Er wurde vorher zu einem anderem Zweck verwendet und war an den Kontakten nicht korrekt gelötet.

Konnte mir leider in der Firma den Plan dank unserer grandiosen Firewall nicht ansehen, da keine .png Dateien geöffnet werden können :confused:


Danke für die Hilfe
 
Da das eigentliche Thema ja bereits erledigt ist, hier noch etwas Klarstellung/Hintergrundwissen:
...Du kannst den ADC entweder im 8-bit Modus oder im 10-bit Modus betreiben, aber dann würdest Du den maximalen Wert von 255 bekommen...
Stimmt nicht ganz, auch wenn Du das richtige meintest. Strenggenommen läuft der ADC immer mit 10 Bit. Da dieses Ergebnis logischerweise nicht in einem Byte abgelegt werden kann, besteht das Ergebnis-Register in Wirklichkeit aus 2 Registern - nämlich dem ADCH (High) und dem ADCL (low). Im "10-bit Modus" werden die 10 Ergebnisbits schön rechtsbündig in die beiden Register geschrieben, also:
0 | 0 | 0 | 0 | 0 | 0 | MSB=DB9 | DB8 in das ADCH
DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0=LSB in das ADCL

Liest man hier also nur das ADCL, kann man logischerweise auch nur Werte zwischen 0 und 255 erhalten - auch wenn mindestens eines der beiden höchstwertigsten Bits gesetzt ist, klar?

Im "8-Bit Modus" ist das eigentliche Ergebnis natürlich dasselbe, es landet nur linksbündig in den Ergebnisregistern, also:
MSB=DB9 | DB8 | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 im ADCH
DB1 | DB0=LSB | 0 | 0 | 0 | 0 | 0 | 0 im ADCL

Die 10 Bit hast Du trotzdem, die beiden niedrigwertigsten Bits könnte man aus dem ADCL auslesen.

Zu beachten ist, daß ein Lesezugriff auf das ADCL die beiden Register quasi einfreiert bis auch das ADCH gelesen wurde - solange ADCH nicht gelesen wurde, wird werden keine neuen ADC-Ergebnisse in die Register geschrieben. Grund ist, daß somit kohärente Ergebnisse aus den Register gelesen werden (erst low, dann high).

Ob die Wandlungsergebnisse links- oder Rechtsbündig in den Registern landen, legt das Bit ADLAR (üblicherweise im ADMUX-Register) fest.
ADLAR = ADC Left Adjust Result - sollte selbsterklärend sein...

Im "8-Bit Modus" (ADLAR=1) hat man also im ADCH die höherwertigen 8 Bit im ADCH, wenn man das ADCL ignoriert, wäre das ein 8Bit-Ergebnis...
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)