PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Adc auf weniger als 10 bit schalten



Rohbotiker
05.03.2008, 16:03
Hallo,

ich möchte meinen Adc mit maximal 6 oder 7 Bit betreiben um seine Geschwindigkeit zu erhöhen, wie mache ich das?

Felix G
05.03.2008, 16:07
Naja, du ignorierst einfach die unteren 3 oder 4 Bit des Ergebnisses...

die Geschwindigkeit zu erhöhen ist noch das geringste Problem dabei

zerush
05.03.2008, 16:29
Also wenn man die unteren Bit einfach ingnoriert, ändert das aber nichts an der Geschwindigkeit des ADC.

Meines Wissens nach ist das bei den ATMegas auch gar nicht möglich, die Auflösung zu verändern.
Welchen Controller verwendest du denn überhaupt?

mfg
zerush

Felix G
05.03.2008, 16:31
So habe ich das auch nicht gemeint...

die Geschwindigkeit stellt man ganz normal über den Prescaler ein, nur eben höher als normalerweise erlaubt (das ist völlig problemlos möglich). Die Messgenauigkeit verringert sich dabei allerdings, weshalb man die unteren Bits des Ergebnisses am besten ignorieren sollte (ist eh nurnoch Rauschen).

zerush
05.03.2008, 16:38
Ahh ok, dann habe ich dich falsch verstanden, sorry.

Also der ATMega hat ja z.B. 3 Bits für die Prescaler Auswahl. Das kleinste hier wäre 2.

Noch schneller bekommt man ihn doch nicht oder?

radbruch
05.03.2008, 17:08
Hallo

Die Frage, wie man den ADC dazu bringt weniger als 10 Bit zu samplen habe ich mir auch schon gestellt:

https://www.roboternetz.de/phpBB2/viewtopic.php?t=33070

Das ist dann daraus geworden:

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=33228

Ist zwar in C, aber der selbe ADC ;)

Gruß

mic

Besserwessi
05.03.2008, 18:56
Bei den Atmels kann man die Ausrichtung der Bits auswählen, man kreigt also die oberen Bits zusammen in 1 Register.
Bei etwa 1 MHz ADC takt (13 us je Wandlung) kann man noch mit etwa 8 gültigen Bits rechnen, wenn der Rest stimmt. Dabei sollte man aber darauf achten, dass die Spannung relativ niederohmig anliegt (> 10 KOhm).

dl1akp
06.03.2008, 09:57
Interessiert mich auch, nur versteh ich es nicht.

Wie mache ich aus dem 10bit-wert des ADC (ich speichere den immer als word) einen Byte-wert, also 8 bit?? Einfach das obere Byte oder untere Byte abschneiden?? geht das?

Oder ist das komplizierter?

MfG. dl1akp

radbruch
06.03.2008, 10:10
Hallo


Wie mache ich aus dem 10bit-wert des ADC...einen Byte-Wert
Man aktiviert die linksbündige Ausrichtung des Ergebnisses (ADLAR-Bit im ADMUX gesetzt) und liest dann nur das High-Byte (ADCH) aus.

Gruß

mic

Gento
07.03.2008, 00:17
Config Adc = Single , Prescaler = 32 , Reference = Avcc 'Prescaler = Auto '32'

Besagt wie 'gut' die Wandlung vorgenommen wird.
Je kleiner Prescaler ums so schneller aber 'ungenauer' bei 10 Bit.

Da Du eh nur 8 Bit brauchst Precaler kleiner machen.

Es folgt :Wandlerwert = GetADC(Port_n) 10 Bit groß
Dann Shift Wandlerwert , Right , 2 auf 8 Bit z.b. bringen
Ende : Byte = Wandlerwert

so oder so ca geht's ungetestet.

lg
Gento