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
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
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
Hört sich irgendwie so an, als ob Vref doch 5 V wäre. Also kontrollier das nochmal genau nach.
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.
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 ;-)
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.
Hallo Jungs, ich habe was gefunden. In der Bedienungsanleitung steht 5V Intern. Herzlichen Dank an euch allen.
Shouti Huang wrote:
> ich habe was gefunden. In der Bedienungsanleitung steht 5V Intern.
Wie bitte? Wenn Du REFS0 und REFS1 im ADMUX setzt (also so wie es oben
steht), ist die interne 2,56V-Referenz aktiv, und nix mit 5V!
@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.
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... ;-)
@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?
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
Zur Not schnapst du dir einfach mal ein Multimeter und misst die Spannung am AREF Pin nach. Dies ist deine Referenzspannung. Wenn der ADC Eingang die Höhe dieser Referenzspannung hat, meldet der ADC 1024
Karl heinz Buchegger wrote: > Wenn der ADC Eingang die Höhe > dieser Referenzspannung hat, meldet der ADC 1024 Naja, eher 1023. ;-)
Vielen Dank für die Tipps. Habe im Schaltplan die 5V an AREF PIN gefunden. Werde öfter in die Pläne reinschauen. Jungs, ihr seid spitze. Weiter so.
> 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.
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.