Sinnvolle Grenzen von ADC/UART

#5862703
Lesenswert?

Ich möchte erörtern, bis zu welcher Samplerate man effektiv einen 
ATMega8 o.ä. als billigen Sampler verwenden kann.

Was ich schon herausgefunden habe:
> Nur bis zu einem ADC-Takt von 200 kHz, werden die ADC-
Spezifikationen von Atmel garantiert. Damit ergibt sich eine
maximale Samplerate von 15,384 kHz

Das kommt daher, dass eine Conversion ja 13 Zyklen dauert. Wie ich 
jedoch gelesen habe, kann man dan 50kHz-200kHz Bereich verlassen, büßt 
aber dafür Genauigkeit ein. Gibt es Erfahrungswerte in wie weit man 
gehen kann, bis man nur noch 8 statt der 13bit Genauigkeit hat?

Mein eigentliches Ziel wären 250kS/s, das wären aber 3.25 MHz ADC Takt, 
das wäre vermutlich an sich gerade noch machbar, zB 8 MHz Takt und 2 als 
Prescaler, aber ob ich da nicht bei 4bit oder schlimmer lande, lässt 
sich vermutlich nur messen. Wobei ist es nicht eher so, dass ich nicht 
"nur" 4bit habe, sondern die Spannung an sich unbrauchbar wird, so dass 
zB eine geringe Spannung gemessen wird, weil die Zeit nicht reicht um 
die Spannung zu stabilisieren.

Dann auf der anderen Seite: 250kS/s bei uint8_t heißt ja auch 250kB/s 
Datenübertragung. UART sollte das an sich hinbekommen, aber wie sieht es 
da beim Übertragen von einzelnen Zeichen aus. Der AtMega hat zwar eine 
HW UART, aber kann ich da wirklich jeden 13ten Takt ein Byte 
reinschreiben? Und wie sieht es weiter mit den USB Seriell Wandler aus?

Ich hab ja bei 8n1 quasi 10 Bauds pro Byte, heißt auch 2.5MBaud/s, jetzt 
sagt das AVR-GCC Tutorial:
>Es sind Baudraten bis über 115200 Baud möglich, je nach Controller und 
CPU-Frequenz. Siehe Datenblatt.

Das Datenblatt selbst sagt BAUD = f_osc / (2UBRR + 1) für den 
Synchronous Master Mode, anstelle von 8 oder 16 als Vorfaktor wie bei 
den Asynchronen Modi. Das heißt, im Idealfalle könnte ich bei den 8 MHz 
Takt auf 4 MBaud/s kommen, das ist aber wesentlich mehr als die 
angegebenen 115200 Baud, gibt es da ein Limit welches ich übersehen 
habe?

Okay, 250kS scheinen also weit außerhalb der Limits, gibt es noch 
einfache andere Methoden? zB ein "vernünftiger" ADC mit SPI/I2C oder so 
an einen dezidierten UART Chip (am besten gleich mit integriertem 
Seriell USB Wandler) anflanschen und den (eigentlich unnötigen) µC 
dadurch einsparen?

Wenn ja, wie gehe ich bei der Bauteilauswahl vor? Ich habe zB mal den 
ADC0820 angeschaut, aber da steht im Datenblatt nichts von einer 
Samplerate. Gefunden habe ich nur t_RD ReadTime 600ns und t_CRD 
(Conversion from RD Mode) 2.5µS.
Gast #5862903
Lesenswert?

Marc S. schrieb:
> einen ATMega8 o.ä. als billigen

Da liegt der Hase im Pfeffer.  Der Mega8 als Dino kann in der Liga nicht 
mitspielen. Ein zeitgemäßer AVR schon. Mein aktueller default ist z.B. 
der Tiny1616, kostet unter 1€, auch in kleinmengen.
Der hat 2ADC on board mit je 150ks/s@8bit. Im "überschlagenden Einsatz" 
sind 250ks/s damit machbar. Sogar durch das event System mit geringer 
CPU Load,  da die conversions per Timer getriggert werden können.
Gast #5862913
Lesenswert?

Marc S. schrieb:
> Ich habe zB mal den
> ADC0820 angeschaut, aber da steht im Datenblatt nichts von einer
> Samplerate. Gefunden habe ich nur t_RD ReadTime 600ns und t_CRD
> (Conversion from RD Mode) 2.5µS
Ohne jetzt das Datenblatt gelesen zu haben, kann man ja mal die Zeiten 
addieren (=3,1µs) und das Reziprok bilden: 322,5 kHz
Ob die Abtastrate tatsächlich nutzbar ist, sollte sich mit dem 
Datenblatt rausfinden lassen.
#5863129
Lesenswert?

Blue schrieb:
> probiers halt aus!

Aber wie genau? Ich nehme an ich kann nicht einfach den ADC auf 5V 
ziehen und so schnell abtasten und prüfen ob immer 0xFF rauskommt, 
sondern ich bräuchte idealerweise einen Sinus bei 125 kHz dafür?

Minimalist schrieb:
> Der hat 2ADC on board mit je 150ks/s@8bit. Im "überschlagenden Einsatz"
> sind 250ks/s damit machbar.
Das klingt schonmal eher nach einem Plan! Die Tinys gibts aber 
vermutlich nicht als DIP/Ohne SMD? Gäbe es alternative AVRs die 
aktueller sind?

Karl M. schrieb:
> Wie kommst Du auf "13bit Genauigkeit"?
Indem ich nicht genau aufgepasst habe, sind natürlich 10bit, d.h. man 
wäre noch schneller an den 8bit angekommen

Bernd schrieb:
> Ohne jetzt das Datenblatt gelesen zu haben, kann man ja mal die Zeiten
> addieren (=3,1µs) und das Reziprok bilden: 322,5 kHz
> Ob die Abtastrate tatsächlich nutzbar ist, sollte sich mit dem
> Datenblatt rausfinden lassen.

Mein Problem ist, ich weiß nicht auf welche Werte ich dort achten muss, 
denn es gibt zB auch eine "Write" Time, aber da gehe ich davon aus, das 
ist für die Kommunikation via I2C o.ä, aber mehr Ahnung hab ich leider 
auch nicht.

Dampfheuler schrieb:
> Was soll es den ADC am Maximum laufen zu lassen ? Und dann ? In die
> Tonne mit den Werten ?

Genau deswegen der Titel "Sinnvolle Grenzen". Ausloten ob er die Vorgabe 
erreichen kann oder nicht.
#5863189
Lesenswert?

Eventuell könntest Du mehrere AVRs nehmen, diese miteinander 
synchronisieren, so daß die ADC-Abtastungen ineinandergreifen, die 
Bandbreite der analogen Eingansschaltung hat da durchaus Spielraum, 
besonders wenn man die geforderte maximale Ausgangsimpedanz der 
Ansteuerung (Beim ATmega 10k Ohm) merklich unterschreitet. Das Problem 
der Datenübertragung hast Du dann immer noch. Bei einem mit 20 MHz 
getakteten ATmega kommt man, im Asynchronous Double
Speed mode, auf maximal 2,5 MBaud, das würde bei 8 Bit Daten, und 
Verzicht auf das Parity-Bit gerade so für 250000 Bytes/Sekunde reichen, 
eventuell könnte man die Übertragung aber auch auf 2 Strecken aufteilen, 
da müsste man die Datenblöcke nur mit einer Nummerierung versehen, damit 
der PC das wieder korrekt zusammenführen kann.

Mit freundlichen Grüßen - Martin
Gast #5863211
Lesenswert?

Marc S. schrieb:
> Ich möchte ein 125kHz Signal
> abtasten und am Rechner dann Demodulieren, da brauche ich eine so hohe
> Samplerate leider, sonst funktioniert es nicht
Das wird mit den kleinen Atmels eher nichts. Der ADC sind eher für DC 
bzw. langsame Signale gedacht. Außerdem fehlt die schnelle Schnittstelle 
zum PC.

Ich würde vorschlagen, Du verwendest einfach eine Soundkarte mit 384 kHz 
Abtastrate.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren