Forum: Mikrocontroller und Digitale Elektronik ADC im ATMEGA28


von Ronny Schulz (Gast)


Lesenswert?

Ich hatte so einige Experimente mit dem ADC unter dem ATmega16 gemacht.
Beim ATMEGA 128 bekomme ich aber nicht so meine Werte, wie ich messen
will raus. Die Initialisierung sieht so aus:

char adc_tab[] = {
  15, 47, 47, 47, 47, 47
};

unsigned short adc_field[ADC_CHANNELS] = {
  0, 0, 0, 0, 0, 0
};

DDRF = 0x00;
ADMUX |= 1<<REFS1 | 1<<REFS0;
ADCSRA |= 1<<ADPS2 | 1<<ADPS1 | 1<<ADPS0 | 1<<ADEN;

Das messen und ausgeben so:

unsigned short       i;
unsigned char       av, amv;
char         conv_buf[5];
unsigned char       count;

for (count = 0; count < ADC_CHANNELS; count++) {
  ADCSRA |= 1<<ADSC;
  while (ADCSRA & (1<<ADSC));
  i = ADC * (256 * 100 / 1024) / 100;
  i = i * (adc_tab[count] + 10) / 10;
  adc_field[count] = i;
  av = i / 100;
  amv = (i - av * 100);
  uart1_puts("\r\nADC");
  itoa(count, conv_buf, 10);
  uart1_puts(conv_buf);
  uart1_puts(": ");
  itoa(av, conv_buf, 10);
  uart1_puts(conv_buf);
  uart1_puts(".");
  itoa(amv, conv_buf, 10);
  uart1_puts(conv_buf);
  uart1_puts(" V\r\n");
  ADMUX++;
}
ADMUX &= ~(0x1F);

Mache ich da einen Programmfehler oder ist das alles richtig und ein
HW-Problem liegt evtl. vor? An allen Kanälen liegen ca. 2V an. Die
Hardware ist so verdrahtet. Umgerechnet wird an Hand der festgelegten
Spannungsteiler (0 = 15k / 10k -> 5V, 1 = 47 / 10k -> 12V, 2 ...).
Aber an der Umrechnung liegt es nicht. Die ausgerechnete Spannung ist
ziemlich genau halb so hoch, wie reell sein sollte.

Es liegen genau 2V an den Eingängen an ... und somit müsste was in ADC
steht so um die 800 - 900 liegen. Es liegt aber auch hier bei der
Hälfte.

Hier mal der Output:

ADC0: 2.55 V
ADC1: 5.64 V
ADC2: 5.64 V
ADC3: 5.70 V
ADC4: 5.70 V
ADC5: 5.70 V

von Ronny Schulz (Gast)


Lesenswert?

Zum besseren Verständnis. Vielleicht hilft es, wenn ich die Schaltpläne
mal mitposte. Wäre nett, wenn mir mal jemand einen Tipp zum ADC geben
könnte. Ich bekomme immernoch nur die halbe Spannung gemessen.

http://mitglied.lycos.de/projectsilence/syscontrol/schematic_syscontrol01.png
http://mitglied.lycos.de/projectsilence/syscontrol/schematic_syscontrol03.png

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.