Hallo an alle,
ich suche zur Zeit einen passenden MUX für meine Schaltung, habe aber
leider keine Erfahrung in diesem Bereich. Vielleicht könnt ihr mir ja
was entfehlen.
Also ich habe drei 16 Bit AD-Wandler. Diese Daten sollen nacheinander an
die 16-I/O Pins meines µC. Nun dachte ich mir das ich einen 4:1 Mux
bräuchte (2 Steuerleitungen). Bekomme ich dabei nicht nur ein Bit am
Ausgang des MUX raus? Es müssten aber doch 16 sein und insgesagt 3*16
Leitungen von den ADC anliegen. Gibt es sowas überhaupt oder muss/kann
man dies eleganter lösen?
Danke schonmal für eure Hilfe
Gibt es so bestimmt nicht, macht man eigentlich so auch nicht.
Gibt es überhaupt AD-Wandler mit 16 Bit Busbreite Ausgang? Habe ich no
nie gesehen. Die sind seriell oder 8 Bit Parallel. Bei Parallel Dann man
2x 8Bit aus.
Normalerweise haben die ADC ein Chip-Select. Mit dieser Leitung kannst
du dem Chip mitteilen dass er gerade gemeint ist und die anderen
schweigen. Somit kannst du den Datenbus Parallel verdrahten.
> Nun dachte ich mir das ich einen 4:1 Mux bräuchte (2 Steuerleitungen)
Das ist im Prinzip schon richtig, nur muss es nicht EIN sondern es
müssen 16 4:1 Multiplexer sein.
Ist es nicht möglich die Übertragung seriell abzuwickeln, sonst würde
das ein ziemliches IC Grab (von den 4:1 Mux sind 2 Stück in einen
Gehäuse, das wären dann z.B. 8 mal 74HC153).
Hab gerade nochmal nachgeschaut. Der ADC ist 16-Bit bidirektionales
parallel Interface.
Das mit dem Chip Select ist ne gute variante, daran hab ich einfach
nicht gedacht. Das heißt ich verbinde die CS Leitungen der ADC`s mit den
I/O Ports des µC und kann dann auslesen wer wann Daten zum abholen
bereit hat...ist das so richtig?
Aber nun muss ich z.B. die 16 Bit vom ADC1 abholen und anschließend vom
ADC2. Aber wie? Mit CS weis ich nur das die Daten bereit zum abholen
sind....mehr auch nicht. Die Datenleitungen müssen doch irgendwie
verbunden mit den µC verbunden sein. Und wie soll dies nun ohne MUX
gehen?
Mit dem Chip Select kannst du den anwählen, mit dem du gerade
kommunizieren willst. Jedes CS an einen seperaten uC-Pin.
Wenn der ADC wirklich 16Bit Ausgänge hast, brauchst du einen Latch, um
die höheren 8-Bit zwischen zu speichern.
>> Mit dem Chip Select kannst du den anwählen, mit dem du gerade>> kommunizieren willst. Jedes CS an einen seperaten uC-Pin.
Das ist schon klar, aber wie kommen nun die Datenleitungen vom ADC zum
µC? Die müssen doch nun schon verbunden sein. Und was ist dann mit den
Datenleitungen vom zweiten ADC....so sollen die noch dran?
Nicht wirklich eine gelungene Kombination zweier Bausteine. Es sollten
sich besser geeignete ADC finden lassen als ausgerechnet dieser Typ.
Zumal der nicht 16 sondern 24 Bits hat, und nicht nur gelesen sondern
auch geschrieben werden will.
Wenn du das am externen Bus-Port eines 8051 anschliessen willst, dann
schau dir mal den 74HC646 an.
Schöne Wandler!
Schau mal im DB deines Controllers wie man den externen Datenbus
handelt. Steht sicher auch drin wie man ein Bidirektionales Latch für 16
Bit Zugriffe anschliesst.
Na alle an den BUS:
ADC1.DB0 ---> ADC2.DB0 ---> ADC3.DB0 ---> µC.PIN1
ADC1.DB1 ---> ADC2.DB1 ---> ADC3.DB1 ---> µC.PIN2
ADC1.DB2 ---> ADC2.DB2 ---> ADC3.DB2 ---> µC.PIN3
:
ADC1.DB15 ---> ADC2.DB150 ---> ADC3.DB15 ---> µC.PIN15
ADC1.CS ------------------------------------> µC.PIN16
ADC2.CS ------------------------------------> µC.PIN17
ADC3.CS ------------------------------------> µC.PIN18
Und da du nicht so viele IO-Pins am µC hast, must du wohl aus 8 IO's 16
machen (wie Andreas Kaiser schon schrieb).
@Andreas Kaiser: So wie das jetzt ist gebe ich dir recht, aber im laufe
des Projektes besteht die möglichkeit alle 24Bit zu nutzen wenn dies
später von Vorteil ist. Warum will der Baustein beschrieben werden?
Meiner Meinung nach besitzt er nur die Möglichkeit hierfür.
@Fly: Kann ich ja alles machen, aber das löst ja nun nicht mein Problem.
Irgendwie muss ich ja nun auf die Daten aller drei ADC`s zugreifen
können.
Ich glaube zwar des geht nur mit den Adressen, diese zu multiplexen.
Hmm es wäre möglich, aber dann musst du die Signale einzeln, von Hand
setzen, kannst den Datenbus nicht automatisch ansprechen, resp. den
Datenbus intern einblenden.
Das einfachste wäre:
Also alle Daten, Adressen, RD und WR Leitungen parallel an einen uC-Pin.
Die Data-Ready Pin und CS Leitungen musst du einzeln auswerten. Ich
fürchte dir werden die Ports ausgehen.
Ich schliesse mich Andreas an, suche dir lieber einen Wandler mit 8B
Interface.
@tastendrücker: Achso geht das? Also brauche ich ja gar keinen
MUX.....macht ja auch Sinn. Ich schaue mir dann ja erst die CS Flags an
und setzte dies entsprechend und lesen dann ja nur die Daten von dem
entspechenden ADC. Ist das wirklich so? Muss ich dann noch irgendwas
beachten?
Donnerwetter, eine anspruchsvolle Aufgabe, allein das "simplified
connection Diagram" auf Seite 18 des Datenblatts macht schon was her.
Optimal wäre ein Referenz Design der Leiterplatte, fehlt aber leider.
Es dürfte auch etwas schwierig werden, die Data ready Meldung der
Wandler zu erfassen, da der Impuls nur 1/2 Clock (von 1 ... 40MHz) lang
ist.
µC erkennen flankengetriggerte Interrupts meistens durch
Mehrfachabtastung und kommen mit so kurzen Impulsen selten zurecht.
@fly: Leider ist der Markt von 24-Bit ADC die eine Samplinrate von
mindestens 500kHz haben leider sehr begrenzt. Wenn du andere kennst wäre
ich auch für andere Bausteine offen. Ein 24-Bit soll es aber schon
bleiben, weil ich später die Möglichkeit haben möchte alle 24-bit nutzen
zu können.
Du siehst dir nicht die CS-Flags an, sondern du setzt die CS Leitung von
dem ADC auf LOW (wenn LOW Aktiv), mit dem du 'reden' willst, die anderen
beiden setzt du auf HIGH. Alle ADC's, deren CS auf HIGH gesetzt wird,
tun so, als wären sie nicht da.
Der µC (also dein Programm) setzt also die CS-Leitungen wie du sie
benötigst.
Muss ich den überhaupt die Data Ready Meldung vom ADC beachten? Da der
Datenstrom kontinuierlich sein soll, dann weis ich wann ich die Daten
vom ADC holen kann/muss.
Jetzt alles im großen und ganzen mal gesehen. Denkt ihr das es überhaupt
so realisierbar ist? Wo seht ihr die größten Probleme?
wozu brauchst du 3 A/D Wandler soll die Samplingrate erhöht werden? Wenn
nicht nimm einen A/D Wandler und schalte dort einen oder mehrere
Analogmultiplexer davor?
Die größten Probleme sehe ich nicht auf der Digital- sondern auf der
Analogseite. Schon mal ein rauscharmes Layout für 24 Bit gemacht? Bei
2.5V Vollaussteuerung des ADC sind das ca 150nV pro LSB. Ein Layout für
sowas erfordert viel Erfahrung. Desweiteren brauchst du ja sicher eine
Eingangsstufe (Vorverstärker) der muss ja für 24 Bit ein gewaltiges SNR
haben....(sowas um die 140dB)...dann mal viel Spaß.
Das sollte eher nicht so das Problem sein, weil eine
Vorverstärkerschaltung bereits vorhanden ist und bei dieser auf wenig
Rauschen sehr geachtet wurde (auch bei der Auswahl der
Operationsverstärker).
Also müssen die 3 Wandlungen gleichzeitig durchzuführen oder wegen der
höheren Auflösung des externen A/Ds?
Wenns nur um die Auflösung geht, nicht ums synchrone wandeln und auch
etwas Zeit zur Verfügung steht könntest auch mehrere Ergebnisse
zusammenzählen
Hier mal ein kleines Beispiel für die Auflösungserweiterung von 8 auf 10
bit für 3 Kanäle.
Ergebniss 1= 255 Ergebniss 2= 253 Ergebniss 3= 254
Ergebniss 4= 254 Ergebniss 5= 254 Ergebniss 6= 254
Ergebniss 7= 254 Ergebniss 8= 253 Ergebniss 9= 255
Ergebniss10= 253 Ergebniss11= 253 Ergebniss12= 254
------- ------- -------
1016 1013 1017
in diesem Fall würde ein externen Multiplexer aber trotzdem hilfreich
sein weil man nicht die erste Wandlung verwerfen muss wie es beim
internen Multiplexer gemacht werden soll.
@fly: Wo sind deiner Meinung nach die Layout Probleme? An welchen
Stellen denkst du das Probleme Auftreten können?
@ Thomas O.: Ich brauche wirklich früher oder später 24-Bit. Da der
Markt an 24-Bit ADC`s mit einer Saplingrate von 500kHz+x sehr klein ist
bleibt mir keine andere Wahl außder diesen zu verwenden.
@ Der_kleine_vom_See (Gast)
>@ Thomas O.: Ich brauche wirklich früher oder später 24-Bit. Da der>Markt an 24-Bit ADC`s mit einer Saplingrate von 500kHz+x sehr klein ist>bleibt mir keine andere Wahl außder diesen zu verwenden.
Dream on!
Wozu glaubst du, einen 24Bit ADC mit 500kHz Samplingrate zu brauchen?
Und viel mehr, wo glaubst du diesen zu bekommen? Ist dir schonmal
aufgefallen, dass sämtliche 24 BIT-ADCs am Markt bestenfalls mit 1 kHZ
Samplingrate daherkommen, und dabei nicht mal 24 Bit erreichen? Echte 24
Bit (tm) erreicht man heute bestenfalls bei ca. 100 Hz, meist eher
weniger.
MFG
Falk
By the way. Vielleicht solltest du besser den AD7763 verwenden, der hat
ein serielles Interface. Wenn du doch den hier nehmen willst, schau ins
Datenblatt. "Sharing the parallel bus", Seite14, kein Mux notwendig.
MFG
Falk
WAS soll denn bitte mit 24 Bit so schnell gemessen werden? Welche
Prozessgröße soll das denn sein? Ist doch irrwitzig. Und dann in den PC?
Ist jetzt eigentlich "Der kleine vom See" und "Thomas" der gleiche? Ist
es denn so schwer, sich mal anzumelden hier?
500KS/s 3 Byte 3 Wandler -> 4,5MByte/s Rohdaten. Da musst du
wirklich einen schnellen USB 2.0 Controller haben, zudem große FIFOs,
wenn es eine kontinuierliche, äquidistante Abtastung werden soll...
Und für eine 24 Bit-taugliche Eingangsstufe brauchst du min. eine
4-Lagen-Platte.
Außerdem hat der ADC bei 625KS/s nur noch 106 dB SNR, das sind ja nur
effektive 17,5 Bit ungefähr, der rest ist Rauschen. Aber mit Werbung
fängt man halt Kunden....
Ich habe ja auch nie behauptet das die Aufgabe leicht realisierbar
ist....und da ist schon klar das nicht einfach standartbausteine
verwendet werden können und somit natürlich viele dinge beachtet werden
müssen und Probleme entstehen können.
>> Und für eine 24 Bit-taugliche Eingangsstufe brauchst du min. eine>> 4-Lagen-Platte.
Wieso ist das nötig???
@ Der_kleine_vom_See (Gast)
>> Und für eine 24 Bit-taugliche Eingangsstufe brauchst du min. eine>> 4-Lagen-Platte.> Wieso ist das nötig???
Um deine ADCs zu versorgen und möglichst wenig Störungn von aussen
dranzulassen.
MfG
Falk
würd mich auch mal interessieren was für ein Signal da digitalisiert
werden soll.
Bekommst du überhaupt die Versorgungsspannung für die OPAMPs so sauber
hin?