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.
probiers halt aus! Wenn der ADC per Sukzessiver Aproximation funktioniert, wäre der Rückgang der Bittiefe reziprok zur Übertaktung
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.
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.
Was soll es den ADC am Maximum laufen zu lassen ? Und dann ? In die Tonne mit den Werten ?
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.
>Genau deswegen der Titel "Sinnvolle Grenzen". Ausloten ob er die Vorgabe
erreichen kann oder nicht.
Genau. Es gibt Leute, die "muessen" eine Regelung mit 64bit float laufen
lassen. Da ist amn dann mit 10 Hz schon zufrieden.
Dampfheuler schrieb: > Genau. Es gibt Leute, die "muessen" eine Regelung mit 64bit float laufen > lassen. Da ist amn dann mit 10 Hz schon zufrieden. Klingt als fragst du nach dem Grund. Ich möchte ein 125kHz Signal abtasten und am Rechner dann Demodulieren, da brauche ich eine so hohe Samplerate leider, sonst funktioniert es nicht
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
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.
Wie Bernd schon schrieb sind AVRs dafür nicht geeignet. Aber ein STM32F070/F042 wäre es. Der hat einen 1MS/s ADC und USB auch direkt eingebaut. Wäre also deine angeforderte ein Chip Lösung.
Marc S. schrieb: > als billigen Sampler EFM8BB1xxx 12 Bit: 200k/s 10 Bit: 800k/s Preis < 50 Cent und < 30 Cent bei Stückzahlen. -- Wie Du ausgerechnet einen ATMega und "billig" in einem Satz erwähnen kannst ist mir schleierhaft.
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.