AVR ADC - Merkwürdiges verhalten

Gast #2692279
Lesenswert?

Hallo,

ich habe zur Zeit ein Problem mit einem Mega128-A und dessen ADC.

Kurz zum Aufbau:

Vcc, Vcc, AVcc -> 5V
Gnd's -> Gnd
Aref -> 100nF -> Gnd

Dann habe einen 10k Poti an ADC0 angeschlossen.


Laut Multimeter kann ich linear 0V bis 4.5V einstellen.
Wenn ich das ganze jetzt auf den Mega128 loslasse bekomme ich sehr 
merkwürdige ergebnisse.

Ich kann ziemlich weit drehen, bis ich auf einen (10-bit) ADC wert von 
40 komme. Dabei liegen bereits 4.27V an ADC0 an. Wenn ich nur einen 
hauch weiter drehe, stehe ich bei einem ADC Wert von 900 bei 4.4V.


Da kann ja irgendwas nicht richtig laufen.

Hier ein Auszug aus meinem Quellcode:

1
function ADCRead(channel: byte): word;
2
begin
3
  // AVCC benutzen 7:6
4
  // Right Adjust  5
5
  // Channel       4:0
6
  ADMUX := %01000000 or (%00011111 and channel);
7
  
8
  // Aktivieren       7
9
  // Start Conversion 6
10
  // Free running     5
11
  // Interupt         4:3
12
  // Prescaler (128)  2:0
13
  ADCSRA := %11000111;
14

15
  // Initialberechnung
16
  while ADSC_bit = 1 do
17
    nop;
18

19
  // Wert berechnen lassen
20
  ADSC_bit := 1;
21
  while ADSC_bit = 1 do
22
    nop;
23

24
  // Wert lesen. ADCL zuerst!
25
  lo(Result) := ADCL;
26
  hi(Result) := ADCH;
27
  
28
  // ADC deaktivieren
29
  ADCSRA := 0;
30
end;

Hat jemand von euch vllt eine Idee, was da schief läuft?
#2692309
Lesenswert?

> Dann habe einen 10k Poti an ADC0 angeschlossen.

Wie hast du das angeschlossen?

> Laut Multimeter kann ich linear 0V bis 4.5V einstellen.

Macht mich stutzig.
Wenn deine Vcc 5V ist und du dein Poti so wie es sein soll als 
Spannungsteiler verschaltet hast, dann muss sich die Spannung von einer 
Potiendstellung zur anderen von 0V bis 5V verändern lassen.

Also: Wie hast du dein Poti verschaltet?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren