PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Adc messfehler



goara
15.07.2008, 21:17
Hallo.

Habe eine Frage zum ADC, und zwar bekomme ich wenn ich alle kanäle nacheinander messe immer fuer die erste Messung einen falschen Wert.

Gyro_nick_adc = Getadc(7)
Gyro_roll_adc = Getadc(4)
Gyro_yaw_adc = Getadc(6)
Besch_x_adc = Getadc(1)
Besch_y_adc = Getadc(2)
Besch_z_adc = Getadc(3)
Wenn ich aber vor die erste Messung eine Dummymessung mache, bekomm ich sinnvolle Werte.

Dummy = Getadc(1)
Dummy = Getadc(2)
Gyro_nick_adc = Getadc(7)
Gyro_roll_adc = Getadc(4)
Gyro_yaw_adc = Getadc(6)
Besch_x_adc = Getadc(1)
Besch_y_adc = Getadc(2)
Besch_z_adc = Getadc(3)

Ist das ein Hardwareproblem, oder was mache ich falsch ??
Danke schon mal.

homedom
15.07.2008, 21:26
Hi,
ich bin mir nicht sicher, aber ich glaub das ist normal. Normal macht man immer eine "Dummymessung". Wenn es so klappt, dann mach es doch so ;-)

gruß, homedom

pongi
16.07.2008, 09:40
Im Datenblatt von den AVRs (falls es sich hier überhaupt um ein AVR handelt) steht, dass nach einschalten des ADC-s immer mehrere Dummymessungen gemacht werden sollen, quasi zum warmlaufen. Ausserdem sollte nach jeder Änderung des ADC-Kanals auch eine Dummymessung gemacht werden.

Also wenns mit Dummymessung funktioniert, würde ich es so lassen. Oder sind die Messungen zu zeitkritisch?

MeckPommER
16.07.2008, 09:57
Es kommt darauf an, wie mit "config adc" der wandler eingestellt wurde.

wenn du "single" angibst, generiert bascom ein konstrukt, welches selber eine dummy-messung vornimmt und den ersten wert verwirft.
wenn du "free" nimmst, musst du das verwerfen des ersten wertes selber durchführen.

"free" ist dann sinnvoll, wenn du nur einen kanal überwachst, bzw. selten wechselst.

Gruß MeckPommER

goara
16.07.2008, 11:05
also zeitkritishc ist das ganze shcon, aber eine Dummymessung verpacke ich noch, das ist ok.
habe den adc auf single configuriert, allerdings habe ich damit trotzdem Messfehler..
werde das dann jetzt einfach mit der dummyMessung machen... das funktionioniert ja ganz gut..
danke fuer die Hilfe

Besserwessi
16.07.2008, 17:02
Die Dummymessung ist eigentlich nur nach dem Einschalten oder dem Aufwachen aus dem Tiefschlaf nötig (aber da wird der AD in der Regel ohnehin abgeschaltet). Nach dem Kanalwechsel sollte auch die erste Mesung verwendbar sein, wenn die Spannung von einer niederohmigen Quelle kommt (ca. < 10 K). Man muß nur beachten, das der gewählte Kanal zum Start der Wandlung festgelegt wird, nicht erst danach.

goara
16.07.2008, 21:24
@besserwessi
""Man muß nur beachten, das der gewählte Kanal zum Start der Wandlung festgelegt wird, nicht erst danach.""
versthe ich nicht.. wo kann ich den kanal vorher festlegen??
ich mache ja einfach wert = getadc(kanal) wie kann man das vorher /nachher festlegen??

pongi
17.07.2008, 10:10
Ich glaub er meint sowas:

1. ADC während einer Messung
2. Änderung des Kanals
3. Auslesen des Messwerts --> Messwert aber noch vom vorherigen Kanal

Du musst also sicherstellen, dass die Wandlung abgeschlossen, und das Messwert ausgelesen worden ist, bevor du ein Kanal wechselst.

Besserwessi
17.07.2008, 16:37
Ich hatte da mehr an die Programmierung in C oder Assembler gedacht. Die Basicfunktion wird das wohl zumindestens im Einzelmodus schon richtig machen.
Der Eingangsumschalter wird mit dem AD Wandler Syncronisiert. Man darf also das Register mit der Kanalwahl auch dann beschreiben, wenn die Wandlung gerade im Gange ist. Wenn man den kontinuierlichen Mode wählt geht das auch gar nicht anders. Was zählt ist immer der Wert, der beim Starten der Wandlung drinsteht.