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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.