ADC gibt nur den halben Wert raus

OP #685740
Lesenswert?

Hallo Jungs,
erstmal vielen Dank für euer Interesse. Alle Tipps sind willkommen.
Laut Formel müsste ADC=Vin/Vref*1024 sein. Die Vref ist 2,56V, so steht 
im Handbuch(ATMEGA32).
Kriege nicht raus, wo ich den Mist gebaut habe. Bitte seid nicht geizig 
mit euren guten Tipps. Danke
Angehängte Dateien:
Gast #685782
Lesenswert?

Was kommt denn bei einer gekürzten Fassung raus?
1
void usart_put_int(int data)
2
{
3
    char buffer[7];
4
    itoa(data, buffer, 10); // #include <stdlib.h> ist noetig
5
    USART_puts(buffer);
6
}
7

8
int main (void)
9
  {
10
  DDRA = 0b11100000;
11
  USART_init();
12
  do
13
  {
14
    qvi=adc_do(0);      
15
    pi=adc_do(1);
16
    ti=adc_do(2);
17
    li=adc_do(3);
18
/* OHNE die Rechnung
19
 als ADC-Test */
20
    usart_put_int(pi);
21
    usart_put_int(ti);
22
    usart_put_int(qvi);
23
    usart_put_int(li);
24
  }
25
  while (1)
26
    ;
27
  return 0;
Wenn das geht, musst du deine Formeln überarbeiten ..

hth. Jörg
OP #685812
Lesenswert?

Hallo Jörg,
Danke für deine schnelle Antwort.

Habe probiert. Leider sind die Werte auch daneben. Bei 0,4V am Eingang 
habe ich Werte um die 50 (Spannungsschwankung), bei 0,8V ist um die 160 
rausgekommen. bei 1,2V auch um 160.

In meiner Formel bin ich von 10bits=1024 ausgegangen. Wenn es 512 wäre, 
dann stimmen alles. Habe den Verdacht, dass 1024= -512 bis +512. Wenn so 
ist, wie kriege ich den vollen Bereich von 1024?

Danke
Gast #685825
Lesenswert?

Was hast du am AREF-Pin angeschlossen?

- Nichts? Gut.

- Einen Kondensator gegen GND? Besser.

- 5 V? Ganz schlecht.


> bei 0,8V ist um die 160 rausgekommen. bei 1,2V auch um 160.

Ist das so zu verstehen, dass 160 der maximale Wert ist, egal wie hoch
die Eingangsspannung ist? Das wäre wirklich komisch.
Gast #685838
Lesenswert?

Noch etwas:

Du solltest
1
  ADMUX = kanal;
2
  ADMUX |= (1<<REFS1) | (1<<REFS0);
durch
1
  ADMUX = (1<<REFS1) | (1<<REFS0) | kanal;
ersetzen. Warum?

Mit deiner ersten Anweisung schaltest du die Referenz auf extern, mit
der zweiten auf 2,56 V. Gleich darauf erfolgt die Messung. Zitat aus
dem Datenblatt:

  "The first ADC conversion result after switching reference voltage
  source may be inaccurate, and the user is advised to discard this
  result."

Weil du die Referenz vor jeder Messung umschaltest, solltest du auch
jede Messung discarden ;-)
OP #685934
Lesenswert?

Vielen Dank für die vielen Tipps.

Ich bin jetzt von 512 ausgegangen.  Die Werte stimmen.

Meine Frage ist, warum nicht 1024, sondern 512? Habe 2,56V am Eingang, 
ADC gibt nur 512 raus. Habe es umgepolt, kommt nur "NULL" raus. Ist ja 
ein 10 Bit ADC. Ich möchte so gern den vollen Bereich von 1024 benutzen.
Die Vref sollte schon 2,56V sein. Weiß nicht wo ich die Angabe sonst 
noch finde. Kann jemand mir sagen? Danke.

@yalu: Danke. Die Werte schwanken nicht mehr hin und her.
OP #686164
Lesenswert?

@Johannes
Danke.

So habe ich auch vor. Aber irgend wie kriege ich nicht aus 2,56V 1024. 
In der Beschreibung von meinem Board steht Intern 5V. Weiß natürlich 
nicht ob es wirklich die Vref gemeint ist.
Wenn ich doch die 2,56V habe, warum kriege ich bei 2,56V am Eingang nur 
512 raus?

Man bedankt sich.
Gast #686223
Lesenswert?

Wie schon gefragt wurde:
> Was hast du am AREF-Pin angeschlossen?
> - Nichts? Gut.
> - Einen Kondensator gegen GND? Besser.
> - 5 V? Ganz schlecht.
sag mal, was jetzt wirklich von außen dranhängt... ;-)
OP #686596
Lesenswert?

@Gast

entschuldige, habe vergessen die Frage von Yalu zu beantworten.
Danke, dass du mich daran erinnerst.

Ich habe am AREF PIN nichts angeschlossen.
Aber in der Bedienungsanleitung steht so ein Satz:
      Auswählbare Referenzspannung Intern=5V / Extern durch Jumper.

Heißt doch, dass von der Boardgestaltung her 5V statt üblicher 2,56V. 
Oder?
#686616
Lesenswert?

Hallo,

@Shouti Huang:
>Heißt doch, dass von der Boardgestaltung her 5V statt üblicher 2,56V.

Solltest Du das nicht am einfachsten selbst rausfinden können?

Du hast das Board, die Beschreibung und hoffentlich auch den 
Schaltplan...
Da sollte es doch relativ einfach sein, rauszufinden, was WIRKLICH am 
AREF Pin angeschlossen ist, oder?

Wir kennen das Board nicht, die Schaltung nicht, eventuelle 
Jumperstellungen nicht.

Gruß aus Berlin
Michael
Gast #687476
Lesenswert?

> Habe im Schaltplan die 5V an AREF PIN gefunden.
na hoffentlich hats deine interne Referenz überlebt. (Du hast ja 2,56V 
von intern mit 5V von extern "kurzgeschlossen"). Deshalb ist (so finde 
ich) die beste Außenbeschaltung ein simpler Kondensator. So bist du 
komplett frei. Da kannst du von innen 2,56V oder 5V auswählen. Und wenns 
wirklich einmal nötig sein sollte, ohne Probleme eine andere Spannung 
außen anlegen.
Jedenfalls hast du das Problem jetzt gefunden und wirst es auch lösen.

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