PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR Analog Digital Converter (ADC) Werte sind Falsch



AVRboy
10.10.2006, 14:38
Hi Leute,

ich habe gerade denn ADC eines Mega 32 inbetrieb genommen.
mein Prog sieht so aus ADC 0 wird abgefragt und das ergebnis wird in volt umgewandelt und über den uart zum pc gesendet. jedoch bekomme ich irgend welche werte die garnicht sein können. mein mcu sitzt auf dem stk 500 bei 4 MHz. ich bekomme werte die irgend wie kommisch sind sie liegen bei ca. 1-2 V aber ich habe garkeine Spannung am Pina.0 = ADC0
angesclossen was mache ich denn da falsch. wenn ich eine spannung daranlege (+4V) kommt auch nur dinge die nicht sein können wenn ich (0V) anlege ist der wert auch 0. ](*,) ](*,) 8-[

meine frage mag vieleicht etwas unverständlich sein aber ich weiss irgend wie nicht so recht was ich da falsch mache. 8-[

mfg

Ruppi
10.10.2006, 15:40
hallo,
kannst du den code posten? das ist für die fehlersuche einfacher!

Ruppi

SIGINT
10.10.2006, 16:35
@avrboy: Wäre es fü den Anfang nicht etwas einfacher den Wert unverändert an den PC zu schicken?!?!? Das grenzt die Fehler stark ein!!
Zudem solltest du immer ein Signal am ADC anliegen haben, da sonst nichts Sinnvolles bei der Wandlung rauskommt.

Gruß,
SIGINT

AVRboy
10.10.2006, 18:42
ich habe ja eine spannung von ca. 4V anliegen gehabt (direkt) aber bekamm nur irgend welche scheisse rein. das mit der umrechnung ist kein hexenwerk das ist das einfachste an dem ganzen. nun habe ich einmal noch die counts des adc mitgesendet (schwanke doch sehr stark oder):

409
406
402
832
823
654

die liegen alle in dem bereich bis max. 800
Der datentyp der die werte aufnimmt ist WORD.

$regfile = "m32def.dat"
$crystal = 400000
$baud = 19200

Dim Result As Word
Dim Sresult As Single

Config Porta = Input


Config Adc = Single , Prescaler = Auto , Reference = Avcc




Start Adc

Do
Result = Getadc(0)
Print " Count:" ; Result;
Sresult = Result * 5
Sresult = Sresult / 1024
Print " Volt: " ; Fusing(sresult , "#.###")
Wait 1
Loop

End

das ist mein prog ein wenig seltsam vielleicht.

mfg

teslanikola
10.10.2006, 19:14
deine $Crystal stimmt nicht, oder hast du ein 400kHz Quarz?

AVRboy
10.10.2006, 19:19
oh ja aber das ist leider trotzdem nicht der fehler auf nach der änderung geht es nich .



mfg

uwegw
10.10.2006, 19:24
wie ist der AVCC-Pin beschaltet? Direkt an ne unsaubere Versorgungsspannung, gemeinsam mit dem VCC-Pin, ohne jeglichen Kondensator dabei? Oder über LC-Tiefpass gefiltert, saubere Versorgung, reichlich Abblockkondensatoren?

AVRboy
10.10.2006, 19:29
OH das weiss ich nicht ich betreibe die schaltung testweise auf meinem stk 500 ich denke aber schon das dort alles richtig beschalten ist atmel wird sich doch nicht selber plamieren.

mfg

uwegw
10.10.2006, 20:05
wie ist der Jumper für die Referenz gesetzt?

AVRboy
10.10.2006, 20:36
der jumper befindet sich auf dem board. ich werde das ganze morgen einaml extern aufbauen vielleicht geht es ja dann und ich mache an irgend eoner stelle etwas falsch.

mfg

uwegw
11.10.2006, 14:52
Wenn der Juper gesetzt ist, wird am AREF-Pin die externe Referenzspannung vom STK angelegt. Gleichzeitig wird aber durch dein Programm der AREF-Pin intern im AVR mit AVCC verbunden. Und wenn beide Spannungen nicht genau gleich sind, gibts nen Kurzschluss! Die Regelung der Referenz auf dem STK scheint duch die vom AVR aus eingekoppelte Spannung nicht mehr sauber zu regeln, wodurch die Referenzspannung und damit letztendlich auch die Messwerte so stark schwanken.
Also: Jumper öffnen!