Forum: Mikrocontroller und Digitale Elektronik Ein Paar Fragen zu Analog/Digital Wandlern


von M. M. (mrmcchicken)


Lesenswert?

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

von Wolfgang (Gast)


Lesenswert?

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?

von M. M. (mrmcchicken)


Lesenswert?

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.

von Amateur (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

Wenn es schnell gehen soll, hilft ein Parallel-ADC mit 74HC85 o.ä.

von Hp M. (nachtmix)


Lesenswert?

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
von Logiker (Gast)


Lesenswert?

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.

von asdfasd (Gast)


Lesenswert?

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).

von M. M. (mrmcchicken)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.