Guten Abend, ich habe das erste mal so richtig mit externen ADCs zu tun. Davor hat immer ein Interner der AVRs gereicht. Jetzt möchte ich aber schneller Werte erfassen. Diese sollen nicht gespeichert werden, also nur ausgelesen und verglichen. Mit einem ADS7888 habe ich schon ein wenig Erfahrungen gesammelt. Mein Problem ist nun, dass ich nicht schnell genug Daten erfassen kann. Der ADS ist nicht schuld sondern mein µC. Schließlich muss ich das clock Signal via Software erzeugen. Der ADC gibt seine Daten Seriell aus. Damit komme ich auf maximal 200kSPS. Meine Idee wäre nun ein anderen ADC zu verwenden. Einen mit einer Parallelen Schnittstelle. Das ganze soll so ablaufen, dass der Clock vom ADC direkt am Quarz vom AVR hängt, also dann auch mit 16MHz getaktet wird. Parallel soll dazu ein Binärzähler hoch zählen. Hat der Binäre Zähler einen gewissen Stand erreicht soll er einen Pin am AVR auf HIGH setzen. Im AVR läuft dann gerade eine Schleife die den Pin auf eine Logische 1 Prüft. Sobald dies der Fall ist, soll der Wert aus dem ADC mit einem anderen Register verglichen werden. Meine Fragen sind nun: 1. Viele ADCs kommen mir vielen einstellbaren Parametern. Diese brauche ich meist nicht. Von Analog Devices ist mir nun der AD9283 in den Blick gefallen. (Datenblatt: http://www.analog.com/media/en/technical-documentation/data-sheets/AD9283.pdf). Dieser ist relativ einfach und meiner Meinung nach auch auf das Wichtigste beschränkt. Der Spannungsbereich für den Analogen Eingang ist mit 1V peak to peak angegeben. Ist so etwas üblich? Ich möchte bis 5V messen. Recht es wenn ich einen OPV + Spannungsteiler vor den Eingang anbringe? 2.Kann das mit dem Binärzähler so klappen? Ich dachte ich verwende irgend einen 74HC93 oder so. Wobei 16MHz da schon zu schnell sein könnten. Was gibt es für alternativen, oder gibt es allgemein andere Vorgehensweisen? MfG
M. M. schrieb: > Jetzt möchte ich aber schneller Werte erfassen. Wie schnell, d.h. welche Abtastfrequenz benötigst du? Welche Auflösung benötigst du? Bist du auf einen bestimmten µC festgelegt, wenn "ja" auf welchen?
Wolfgang schrieb: > Wie schnell, d.h. welche Abtastfrequenz benötigst du? Ich würde schon gerne 1 Millionen vergleiche in einer Sekunde innerhalb des AVRs machen. 2 Millionen wäre Super, mehr brauche ich nicht. Wolfgang schrieb: > Welche Auflösung benötigst du? > Bist du auf einen bestimmten µC > festgelegt, wenn "ja" auf welchen? 8 Bit reichen mir. Den ADS7888 Habe ich mit einem Atmega8 angesteuert. Alternativ könnte ich einen Atmega48 benutzen um dann einen maxinalen Takt von 20MHz anstatt 16MHz zu haben, wenn es die Sache besser macht.
Die meisten A/D-Wandler können dass, was im Datenblatt steht. Sowohl das was die Genauigkeit betrifft, als auch die Geschwindigkeit. Meiner Meinung nach liegen die meisten Probleme darin: 1. Die Analogwerte adäquat hineinzubekommen (Analogteil). 2. Die Daten schnell genug abzuholen (Steuerung). 3. Wenn diese verarbeitet werden sollen, die Geschwindigkeit des Grüblers (MIPS). 4. Zu verstehen, was da eigentlich passiert. Letzteres ist wichtig dafür, um zu verstehen, warum keine Bilderbuchwerte hinten raus kommen (Helmut K. hat mal gesagt: „Wichtig ist was hinten rauskommt“). Wenn nicht, darfst Du dich nicht wundern, wenn die letzten Stellen einem Biotop gleichen, dass ein aktives Eigenleben entwickelt hat.
M. M. schrieb: > würde schon gerne 1 Millionen vergleiche in einer Sekunde innerhalb > des AVRs machen. 2 Millionen wäre Super, Da wird der AVR sich aber schon sehr abmühen müssen, denn wahrscheinlich ist mit den Daten ja noch mehr zu tun, als sie nach dem Vergleich zu vergessen. Möglicherweise ist ein DSP für deinen Zweck das Richtige oder ein Rasperry-Pi, der ja schnell genug ist seine 5 Megapixel Webcam zu verarbeiten. Solche Chips haben auch deutlich mehr RAM an Bord als ein AVR.
:
Bearbeitet durch User
M. M. schrieb: > Der ADS ist nicht schuld sondern mein µC. > ... > Meine Idee wäre nun ein anderen ADC zu verwenden. So ganz versteh ich die Logik, die hinter diesen Aussagen steck nicht. > Schließlich muss ich das clock > Signal via Software erzeugen. Was ist mit dem SPI Modul? > Ich dachte ich verwende > irgend einen 74HC93 oder so. Wobei 16MHz da schon zu schnell sein > könnten. Was gibt es für alternativen, oder gibt es allgemein andere > Vorgehensweisen? Den im µC eingebauten Timer.
Schnelle ADCs sind teuer. Schon mal überlegt, statt einen ADC einen DAC zu nehmen und dann das Vergleichen dem Analog Comparator zu überlassen (der DAC liefert den Vergleichswert)? Wenn du einen AVR mit eingebautem DAC nimmst, brauchst du extern evtl gar nichts mehr. Und btw, ich denke, du solltest dir mal genauer anschauen, was für Hardware die AVRs von sich aus schon eingebaut haben - da gibt es mehr als nur nen ADC (z.B. auch nen Timer, um nach x Takten ein Signal zu erzeugen).
Da bin ich nochmal. Ich habe es jetzt nun am laufen. Die Skizze zeigt das ganze Schematisch. Mithilfe von ein wenig 74er Logik habe ich mir einen parallelen Port an den ADC an geflanscht. Parallel kann ich dann das Byte mit einem PORT am AVR wesentlich schneller einlesen. Ausprobiert habe ich das ganze bis 16MHz welche mit einen Quarz + Schmitt-Trigger erzugt werden. Bei 4 MHz habe ich eine Sample Rate von 250ksp/s, bei 16MHz komme ich auf die 1Msp/s die ich erreichen wollte. Das eine NOT Gatter (das untere) musste ich bei dem Umstieg von 4MHz auf 16MHz hinzufügen da ich ohne NOT Gatter Probleme mir der taktung hatte. Viele Quarze habe ich hier nicht. Mal gucken ob ich mit 20MHz auf 1,25Msp/s komme. Mit dem AVR habe ich dann 250ns Zeit zum Prüfen ob CS vom ADS7888 auf HIGH ist. Also funktioniert alles so wie es soll :).
:
Bearbeitet durch User
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.