www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik 16-Bit AD/Wandler bis Abtast-f von 100 khz

Autor: Roland Bumm (rolandb)
Datum: 04.04.2008 12:53

Hallo µC Gemeinde,

ich benötige für mein Projekt(Atmega32@8Mhz) einen 16 Bit A/D Wandler
mit einer Abtastrate von 100kHz. Das abzutastende Signal besteht aus
+-5V. Eine saubere Null muss gewährleistet werden.

Wenn ich das Datenblatt des Atmega32 richtig verstehe ist der interne
A/D Wandler sowieso zu langsam (Conversion Time), geschweige denn nicht
auflösend genug?

Der digitale Werte soll vom Atmega auf einen externen SRAM geschrieben
werden. Ich glaube damit sollte es keine zeitlichen Probleme geben. Oder
gibt es eine möglichkeit Daten vom A/D Wandler direkt in einem SRAM zu
schreiben, ohne zutun des Atmega32?

Er sollte zwei Kanäle haben. Kann man die Kanäle im allgemeinen getrennt
abfragen, oder werdn diese immer nacheinander abgepollt? Desweiteren
wäre einje serielle Übertragung vielleicht notwendig, das weiss ich noch
nicht.


Zum A/D Wandler denke ich an einen MAXIM, nur welche wäre da der
sinnvollste?


Vlt kann mir der ein oder andere einige Hinweise geben. Danke im voraus


RolandB
Autor: Gast (Gast)
Datum: 04.04.2008 13:50

Autor: Christian R. (supachris)
Datum: 04.04.2008 14:03

LTC1865 wäre ein Kandidat.
Autor: Roland Bumm (rolandb)
Datum: 04.04.2008 14:47

Danke euch beiden,

aber der LTC1865 ist nur 0..5V, ich benötige aber -5..5V. Der andere
Thread ist auch nicht wirklich hillfreich.

Danke
Autor: I_ H. (i_h)
Datum: 04.04.2008 14:56

Ich glaube nicht, dass es einen ADC gibt der unter GND noch irgendwas
misst.
Autor: Alexander Liebhold (lippi2000)
Datum: 04.04.2008 15:09

@I_H.: Und negative Spannungen gibt es nicht.

Also von Maxim mit Vin = +-5V, 135ksps:
MAX1178 (16Bit, 1 Channel, 8Bit parallel, Single Supply)
MAX1179 ("wie der 1178 nur mit 16Bit Interface)
MAX195  (16Bit, 1 Channel, seriell, Single Supply)


Oder auch AD977A (16Bit, 1 Channel, seriell, Single Supply, 200ksps)
Gruß Alexander.
Autor: Alexander Liebhold (lippi2000)
Datum: 04.04.2008 15:21

Mit 2ch sieht es etwas mau aus.

Bei Maxim Sigma-Delta - Wandler dürfte aber was sein.

MAX1415 und MAX1416..
Autor: JensG (Gast)
Datum: 04.04.2008 15:33

Autor: Roland Bumm (rolandb)
Datum: 04.04.2008 15:38

Ja Danke. Der http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3965
Max1415/16 scheint genau das zu sein was ich suche. Muss halt 100Khz
abtakten.

Nun frage ich mich allerdings, wenn ich die SPI Schnittstelle verwende,
ob da der Atmega mitmacht? Die SPI Schnittstelle ist doch mit 400kHz
(2.5 ms) getaktet und mit 8 Bit definiert. Somit erhalte ich 2Byte nach
5ms. Wenn ich diese beiden Werte habe muss ich die noch auf ein externes
SRAM schieben.. kommen da noch Probleme auf mich zu? Oder werden diese
Operationen schnell genug ausgeführt?

RolandB
Autor: Alexander Liebhold (lippi2000)
Datum: 04.04.2008 16:21

Glaub das wird so nix.

Also du meinst bestimmt 2,5µs. 100kHz sind 10µs.
Das bedeutet du benötigts 5µs für reines Auslesen. Mit Hardwarepolling
must du dann noch deine Anfrage zum Auslesen an den ADC senden. Also
wieder 2,5µs weg. Macht 7,5µs...

Soviel zur Theorie. Jetzt treten mehrere Probleme auf. Du schreibst
nicht nur 8Bit an den ADC, sondern mehr, damit intern die Register
ausgewählt werden können. Bedeutet deine Anfrage dauert länger als
2,5µs!!!

Des weiteren werden die Daten als 16Bit Datenstrom vom ADC geliefert.

Schau dir genau die benötigte Kommunikation an und rechne selbst nach.

Am besten wird wohl das parallel Interface sein. Da bekommst du keine
Probleme mit Übertragungsrate.
Autor: Alexander Liebhold (lippi2000)
Datum: 04.04.2008 16:24

Vielleicht überlegst du mal ein SPI für die verschiedenen Datenlängen zu
emulieren!???
Im AVR-Studio kann man doch die Zeiten genau einsehen.
Am besten ASM, dann benötigst du bei 16MHz ca. 63-126ns Ausführungszeit.
Autor: Alexander Liebhold (lippi2000)
Datum: 04.04.2008 16:29

Ach ja, kleine Lektüre fürs WE :-)

http://www.ulrichradig.de/home/index.php/avr/mmc-sd

Dort gibts nen sourcecode.

http://www.roboternetz.de/wissen/index.php/Portexp...


Na dann schönes WE...

Gruß Alexander
Autor: Roland Bumm (rolandb)
Datum: 04.04.2008 17:59

Danke Alexander. Logo µs :-) Langer Arbeitstag...

Ich denke auch, dass das mit dem Hardware SPI nichts wird. Ich habe
allerdings schon eine SPI Emulation mit dem VNC1L hintermir.. bin da
also Momentan recht firm drin :-) Eine Software SPI Emulation wäre aber
anundfür sich ja denkbar. Die Barriere würde halt nur der Hardware SPI
stellen. Einen parallelen Anschluß wäre denkbar.. wenn da nicht der
externe 32kb SRAM und der 16 Bit D/A Wandler wäre, der auch noch
angeschlossen werden muss... (habe ich bis jetzt noch nicht erwähnt,
jetzt ist dazu ein guter Zeitpunkt :-) )

Ich habe anundfürsich(gibts das Wort so?):

1 A/D Wandler (8D+x)
1 D/A Wandler (8D+x)
1 SRAM (8D +x)

ich glaube die x müssten bei alle um die 4 liegen. Summasumarum 36 Pins,
dann kommen noch 3 Taster,1 Imkrementaler Drehgeber,1 Display.

Es wird somit nichts, wenn ich alles über Parallel ansteuere. Das
Display vlt noch an die SPI HW Schnitstelle anschließen wäre am
sinnvolsten. Daher, wenn ich von MAXIM A/D <-> D/A Wandler nehme, könnte
ich mir die SPI Softwareemulation schonmal für beide Wandler nehmen. Ich
denke mal MAXIM hat da nicht viele allzuunterschiedliche "Protokolle"
innerhalb der Produktfamilien.

Falls welche fragen: Nein, die gewamdelten Daten vom A/D sind nicht die
Daten die zum D/A Wandler gehen.

Wenn es aber ein A/D Wandler mit internem SRAM (min 32 KByte) gibt, dann
wäre da bestimmt mir auch schon viel geholfen.

Text war lang, aber danke an alle die mir helfen :-)

RolandB
Autor: Christian R. (supachris)
Datum: 04.04.2008 18:53

Also mit der Hardware-SPI und einem Timer, der als Sample-Timer arbeitet
müsste das doch gehen. Am MSP430 mach ich das so. Ein Timer erzeugt eine
Art PWM-Signal, was das CS/Start Signal für den LTC1864 ist. Das
passiert in hardware und ist somit jitterarm. An der passenden Stelle
lasse ich mir einen Interrupt geben und hol die 16 Bit mit 2
Hardware-SPI Lesebefehlen ab. Ich denke, ein AVR müsste das auch können.
Allerdings muss man ja noch die Zeit einrechnen, die der benötigt, die
Daten an den externen RAM zu schieben, aber das dürfte ja recht wenig
sein, wenn du einen ATMega mit ext. Speicher-Interface nimmst.

Ansonsten kannst du ja auch ein kleines CPLD hinbauen, was die ADCs
bedient und die Daten direkt in den (Dual-Port) RAM schaufelt.
Autor: Arc Net (arc)
Datum: 04.04.2008 19:15

http://www.maxim-ic.com/quick_view2.cfm/qv_pk/4943/t/al
MAX1301 ist zwar nicht gerade günstig, kann aber direkt mit +- 6/12 V
umgehen.
Von Linear gingen z.B. LTC1859 oder LTC1856.
Die SPI Datenrate kann im Mastermode beim ATMega32 bis zu fosc/2
betragen, hier also 4 MBit/s (das mit den 400 kHz klingt nach I2C/TWI).

p.s. die Delta-Sigma Wandler (Max1415/16) sind um Größenordnungen zu
langsam.
Autor: Roland Bumm (rolandb)
Datum: 04.04.2008 21:34

Arc Net wrote:
> http://www.maxim-ic.com/quick_view2.cfm/qv_pk/4943/t/al
> MAX1301 ist zwar nicht gerade günstig, kann aber direkt mit +- 6/12 V
> umgehen.
> Von Linear gingen z.B. LTC1859 oder LTC1856.
> Die SPI Datenrate kann im Mastermode beim ATMega32 bis zu fosc/2
> betragen, hier also 4 MBit/s (das mit den 400 kHz klingt nach I2C/TWI).
>
> p.s. die Delta-Sigma Wandler (Max1415/16) sind um Größenordnungen zu
> langsam.


Herrgott! Danke Arc Net,

zuvieles lesen von Datenblätter lässt die Protokolle verschwimmen.. erst
die µs verschrieben und jetzt noch SPI mit TWI vertauscht... Ich sollte
eine Pause machen :-)

Richtig, SPI läuft mit XTAL/2 maximal. Die MAX1301 habe ich mir auch
schon angesehen, hatte aber keine Bezugsquelle gefunden.
Hat jmd die MAXIM via Hardware SPI schonnmal genutzt?

Danke
RolandB
Autor: Arc Net (arc)
Datum: 05.04.2008 01:15

Den MAX1301 kann man direkt bei Maxim ordern (ziemlich teuer). Die
genannten LTCs sind auch im firmeneigenen Shop zu bekommen (und deutlich
günstiger).
Autor: Roland Bumm (rolandb)
Datum: 05.04.2008 17:26

Arc Net wrote:
> Den MAX1301 kann man direkt bei Maxim ordern (ziemlich teuer). Die
> genannten LTCs sind auch im firmeneigenen Shop zu bekommen (und deutlich
> günstiger).

Danke Arc Net. Aber die von Dir genannten LTC sind in der range von
+-10V. Somit leider im Bereich +-5V zu ungenau. Ich komme immer wieder
zum max1301, allerdings ist das echt teuer.


mfg
RolandB
Autor: Roland Bumm (rolandb)
Datum: 05.04.2008 18:02

Habe mich jetzt für den hier entschieden. Ist zwar mehr als meine
Anforderung, aber das ist vlt gar nichtmal so schlecht.

http://de.farnell.com/1274234/halbleiter/product.u...

Danke an alle
Autor: Christian R. (supachris)
Datum: 05.04.2008 18:22

Vor jeden ADC gehört doch eh ein Verstärker mit Anti-Aliasing-Filter
usw, da spielt doch der Spannungsbereich des ADC nur noch eine geringe
Rolle, lässt sich doch durch den/die ohnehin nötigen OPV sehr gut
anpassen.
Autor: Roland Bumm (rolandb)
Datum: 05.04.2008 18:39

Christian R. wrote:
> Vor jeden ADC gehört doch eh ein Verstärker mit Anti-Aliasing-Filter
> usw, da spielt doch der Spannungsbereich des ADC nur noch eine geringe
> Rolle, lässt sich doch durch den/die ohnehin nötigen OPV sehr gut
> anpassen.


Warum sollte so sein? Mein Messaufbau tastet eh nur ein f von max. 3Khz
ab. Es soll aber so genau wie möglich abgetastet werden. Oder sollte man
trotzdem einen Impedanzwanlder und einen Verstärker von g=2
vorschalten(bei +-10V A/D Wandler)?

Messaufbau:

|--Quelle (Ri=50Ohm)---> <-Leitung Impedanz 50 Ohm)-> --Senke(50Ohm und A/D
Wandler --|

Ein AF mit einer f_c von 3 Khz? ist das wirklich notwendig? Eine
dermassene Überabtastung sollte doch alles so gut kompensieren. Das LSB
kann ich meinetwegen verwerfen.

mfg
RolandB
Autor: Gast (Gast)
Datum: 05.04.2008 19:04

>aber der LTC1865 ist nur 0..5V, ich benötige aber -5..5V. Der andere
>Thread ist auch nicht wirklich hillfreich.


Brauchst Du vielleicht Hilfe, um mit einem ADC, der im
Eingangsspannungsbereich 0 - 5 Volt arbeitet, einen
Eingangsspannungsbereich von +/-5 Volt zu realisieren. Es genügen genau
zwei identische Widerstände.

Ich kann auch nicht nachvollziehen, daß Du einen QPF64 ADC einem im
MSOP8-Gehäuse vorziehst. Dir wurden die Type LTC1864 und LTC1865
genannt. Beide sind bestens geeignet, nur brauchen diese auch einen
geeigneten Anwender. Es würde mich auch nicht wundern, wenn Du gar
keinen 16 Bit ADC brauchst.
Autor: Roland Bumm (rolandb)
Datum: 05.04.2008 19:50

Gast wrote:
>>aber der LTC1865 ist nur 0..5V, ich benötige aber -5..5V. Der andere
>>Thread ist auch nicht wirklich hillfreich.
>
>
> Brauchst Du vielleicht Hilfe, um mit einem ADC, der im
> Eingangsspannungsbereich 0 - 5 Volt arbeitet, einen
> Eingangsspannungsbereich von +/-5 Volt zu realisieren. Es genügen genau
> zwei identische Widerstände.
>
> Ich kann auch nicht nachvollziehen, daß Du einen QPF64 ADC einem im
> MSOP8-Gehäuse vorziehst. Dir wurden die Type LTC1864 und LTC1865
> genannt. Beide sind bestens geeignet, nur brauchen diese auch einen
> geeigneten Anwender. Es würde mich auch nicht wundern, wenn Du gar
> keinen 16 Bit ADC brauchst.

Danke Gast.. sehr sinnvoller Beitrag.

Ich sagte doch das ich das LSB verwerfen kann. Nun frage ich mich, wie
ich bei +-5V Eingangssignal 0..5V machen soll..Messgleichrichter.. oder
wie ist diese Anmerkung gemeint?
Das Signal soll recht unverfälsdcht eingespeist werden, so ist das der
Wunsch des "Auftraggebers" .

mfg
RolandB
Autor: Alexander Liebhold (lippi2000)
Datum: 05.04.2008 20:08

Spannung halbieren und mit 2,5V Referenz Offset beaufschlagen.

Würde auf jeden Fall nicht auf den Messbereich -5V verzichten.
Genau so wenig wie auf den Impedanzwandler. Da kannst du dir auch schon
mal was richtig gutes raus suchen (Rauschen, Offset, Offset-Drift usw.).

Nen AF nicht unbedingt, wenn du garantieren kannst, dass deine Signale
nur bis 3kHz kommen, sollte das gehen. Würde allerdings wenigstens nen
analogen Tiefpass mit fg=10kHz einsetzen, um evt. Störung zu
unterdrücken. Nicht das du irgendwelche totalen Ausreiser drinne hast.
(War das nicht so, dass die eff. Rauschleistung dadurch auch gemindert
wird!?)

Ich hoffe du hast gute Layoutkünste für die Auflösung.

Gruß Alexander
Autor: Gast (Gast)
Datum: 05.04.2008 20:15

>Nun frage ich mich, wie
>ich bei +-5V Eingangssignal 0..5V machen soll..

Ein unlösbares Problem, zwei Widerstände zu verdrahten?
Autor: Alexander Liebhold (lippi2000)
Datum: 05.04.2008 20:28

@Gast: Bitte auch mal lesen. Läuft doch alles auf Teilen und mit
Hilfsspannung  zugefühtem Offset raus.

Bei 16Bit entspricht die Auflösung für +-5V (5V/2^15=159µV).
Jetzt muss man mal genau überlegen, welche Tolleranzen die Widertsände
und die Hilfsspannung haben dürfen, damit der Fehler kleiner 0,03
Promill bleibt. (Nun gut, den Wert wird man sicher auch so nicht
erreichen können).

F= [R2/(R1+R2)]d/dR1*delta(R1)+[R2/(R1+R2)]d/dR2*delta(R2)

So war das doch irgendwie ne? Jetzt noch den Fehler der Hilfsspannung
und fertig.
Autor: Alexander Liebhold (lippi2000)
Datum: 05.04.2008 20:39

Eine Einkopplung mit Kondensator und zwei Spannungsteilern wäre denkbar,
nur wie sieht der Fehler aus?

[Impedanzwandler]-->[1:1 Teiler]-->[Serien C]-->[1:1 Teiler von
+5V]-->[ADC]

Hier sind es nun 2 Teiler und wieder eine Referenzspannung. Klasse.
Autor: Martin L. (mla)
Datum: 05.04.2008 20:39

Warum wollt ihr eigentlich mit 100kHz abtasten wenn das Signal nur
Anteile bis 3kHz hat?
Das Abtasttheorem ist ja schon erfunden und hat sich auch als
tatsächlich wahr herausgestellt ...
So hohe Überabtastung macht ja eigentlich nur sinn wenn man hinterher
digital filtert und so die effektive Auflösung nochmal um ein paar Bits
erhöht. Willst Du ja aber wohl nicht machen, oder?

Viele Grüße,
 Martin L.

PS: Es soll auch Möglichkeiten die Referenzspannung so zu addieren, dass
man den Fehler inherent vermeidet... Und dann kann man das ganze Ding
sich immer noch (automatisch) kalibrieren lassen. Sollte man bei 16Bit
sowieso in Erwägung ziehen.
Achja - ich würde so rein vom Gefühl her - einen größeren uC verwenden.
Autor: Alexander Liebhold (lippi2000)
Datum: 05.04.2008 21:39

@Martin L.: Richtig,eine Selbstkalibrierung sollte unbedingt
durchgeführt werden. Damit lassen sich statische Einflüsse verringern,
Bauteiltoleranzen und Referenztoleranz, sowie Nullfehler und
Linearitätsfehler des ADC (wobei der Linearitätsfehler bei nem 16bit'er
schon sehr gut sein sollte). Zudem müssen noch Ausgleichströme der
Massen beachtet werden. Sendermasse ist nicht gleich Empfängermasse.
Sprich sehr niederohmiger Potentielausgleich. (Sprech da nur aus
erfahrung mit National instruments Messkarte)

Viel Schmalz in die Planung und alles wird gut.

Warum eigentlich nicht gleich auf den Mega64 wechseln?
Autor: Roland Bumm (rolandb)
Datum: 05.04.2008 22:04

Danke euch allen.

Ich stelle das Projekt jetzt richtig vor. Im Rahmen meines
Übertragunglabor an meiner FH soll ich als studentische Hilfskraft eine
Schaltung entwickeln, welche eine Wahrscheinlichkeitsdichte und
Wahrscheinlichkeitsverteilung durchführen soll. Die Eingangsignale sind
periodisch wiederholende Grundsignale (Dreieck,Rechteck,Sinus) sowie
stochastische aus einem Rauschgenerator. Es sollen die Signale mit hoher
Abtastrate und Auflösung abgetastet werden. Eine max. Signalfrequenz von
1kHz wird im Labor gefahren, ich möchte nur für ein weiteres Projekt
3kHz abtasten(80Hz..3kHz Sprache). Somit ergibt sich folgender Aufbau:

Signaleingang A/D Wandler 16Bit:
1. Kanal Stochastisches/Deterministische Signale (Dr,Re,Sin,Rauschen)
2. Kanal mein eigenes, soll aber jetzt hier noch nicht behandelt werden,
da natürlich noch Filter vor müssen
3. Kanal für Wahr.Dichte der Schwellwerte (analoge Eingabe mittels
Potentiometer +-5V)
4. Kanal für wahr Verteilung dUs einstellen (ebenfalls analoge Eingabe
mittels Potentiometer +-5V)

somit hat sich mein erstes Posting soweit abgeändert, das ich jetzt 4
Kanäle brauche. Eine SPI Kommunikation zw µC und A/D Wandler ist
angedacht und ein muss.

Signalausgang D/A Wandler 16Bit:
Es soll auf dem Oszilloskop die eingestellen Schwellwerte wieder
ausgegeben werden (Y Kanal am Oszi) und mit dem eingespeisten Signal
zusammen dargestellt werden, sodass die Schwelle und das Signal auf dem
Oszi erscheinen.
Das sieht jetzt vlt komisch aus, so ist aber nunmal die Forderung. Der
eingestellte Wert am A/D Wandler wird hier nur durchgereicht an den D/A
Wandler.

Die hohe Auflösung lässt nun noch einige andere math. Untersucheungen am
PC zu(FFT, W-Dichte,W-Verteilung für jeden Zeitpunkt nachvollziehbar und
mit var. Schrancken am  PC). Die Auflösung wurde gewählt um die Fehler
alle so klein wie möglich zu halten. DAFÜR brauchen wir 16Bit Auflösung.

max f = 1Khz -> 1ms diese mit 100kS/s (10µs) abtasten ->100 Abtastwerte
pro 1ms -> 2Byte pro Abtastwert -> 32786 Messungen -> 64Kbyte Speicher
wird benötigt

Überdiese Zeit wird die Wahr. Dichte/Verteilung ermittel und auf einem
Display dargestellt. Am PC kann dazu aufgrund der gepseichertren WErte
auf dem Oszilloskop noch ein Histogramm berechnet werden.

Hardware habe ich mir schon neue Ideen:
-Atmega162@16Mhz mit externen SRAM 64Kbyte , bzw 1*128Kbyte mit einem
zusätlichen Port für die höherwertigen Adressen (parallelmode)
-SPI Emulation VNC1L 4 Ports
-A/D Wandler SPI Hardware
-D/A Wandler SPI Hardware <- wird ja nur benutzt wenn 32k Messungen
vorbei sind, dann wird "Poti Kanal" abgefragt und direkt wieder ausgeben
-4 Bit Display

Vlt sollte das einwenig den Aufwand erklären :-)

mfg
RolandB

-Anmerkung
Aufgrund der math Algorithmen im µC ergibt sich eine
Durchschnittsbildung automatisch.
Autor: Alexander Liebhold (lippi2000)
Datum: 05.04.2008 22:35

Was studierst du? Kommt mir noch sehr bekannt vor und klingt ganz
verdächtig nach Nachrichtentechnik!?

Willst du nicht die 4 Kanäle getrennt halten. Sprich 4xADC. Die SPI
Signalleitungen kannst du doch muxen.

Laufen denn immer alle 4 Kanäle? Wäre sonst sinnvoll das jeweilige
Signal an einen Eingang zu stöpseln.
Autor: Roland Bumm (rolandb)
Datum: 05.04.2008 22:39

Alexander Liebhold wrote:
> Was studierst du? Kommt mir noch sehr bekannt vor und klingt ganz
> verdächtig nach Nachrichtentechnik!?
>
> Willst du nicht die 4 Kanäle getrennt halten. Sprich 4xADC. Die SPI
> Signalleitungen kannst du doch muxen.
>
> Laufen denn immer alle 4 Kanäle? Wäre sonst sinnvoll das jeweilige
> Signal an einen Eingang zu stöpseln.

Richtig NT an der FHTW :-)

Die 4 Kanäle laufen natürlich nicht immer, erst wenn alle Werte
eingelesen wurden wird z.Bsp die Potistellung abfegragt und der D/A
Wandler aktualsiert. Ich denke Auch D/A (nur 1 Kanal!) und A/D Wandler(4
Kanäle) auf SPI Bus und muxen. Das muss aberschon ein flotter SPI Bus
des D/A und A/D Wandler sein.
SRAM -> 16 Adressleitungen, 8 D-Bit mit Latch + RW,CS Darf ruhig
sequentieller Zugriff sein
das Display..

mfg
Autor: Alexander Liebhold (lippi2000)
Datum: 05.04.2008 22:48

Jetzt ist der Groschen gefallen. Du willst anhand einer gewählten
Empfängerschwelle (in deinem Fall variabel Kanal 3) und
Empfängerauflösung die  Empfangswahrscheinlichkeiten und Dichten
bestimmen. Also das soll untersucht werden.
Damit du alle Variablen Schwelle und dUs in der Hand hast, gibst du die
analog vor und rechnest dann damit. Deine Schaltung muss natürlich viel
genauer sein als die dUs, damit du noch ordentliche Aussagen treffen
kannst und der Fehler minimiert wird.
Autor: Alexander Liebhold (lippi2000)
Datum: 05.04.2008 23:00

Ich denk du bist jetzt vollkommen auf den richtigen Weg. Am besten
vorher noch ein Blockschaltbild machen und anhand dessen nochmals über
Timing nachdenken und rechnen. Vergiss auch eine Kalibriermethode nicht
(Nullpunktfehler des ADC  und Offset des Impedanzwandlers)
Beispielsweise wird zu Beginn ein Kurzschlussstück auf den BNC-Eingang
gesetzt und der Nullfehler ermittelt, für die Spätere korrektur.

So, nun ist schluss für heut. Ist ja Samstag.

P.S. Hab übrigens bis vor 2 Jahren in auch Nachrichtentechnik studiert
an der HFT-Leipzig :-)
Autor: Roland Bumm (rolandb)
Datum: 05.04.2008 23:03

Alexander Liebhold wrote:
> Jetzt ist der Groschen gefallen. Du willst anhand einer gewählten
> Empfängerschwelle (in deinem Fall variabel Kanal 3) und
> Empfängerauflösung die  Empfangswahrscheinlichkeiten und Dichten
> bestimmen. Also das soll untersucht werden.

:-) Richtig, so ist es angedacht.

> Damit du alle Variablen Schwelle und dUs in der Hand hast, gibst du die
> analog vor und rechnest dann damit. Deine Schaltung muss natürlich viel
> genauer sein als die dUs, damit du noch ordentliche Aussagen treffen
> kannst und der Fehler minimiert wird.

Ich gebe die schwellen analog vor, wandle sie digital und rechne dann
mit denen intern im Atmega. Für noch weiter Berechnungen und für
"Lerneffekte" sollen die Daten am PC dann noch weiter verarbeitet werden
können.
Die dUs sollen schon in den Schritten eingestellt werden, wie die
Einteilung des zu messenden Signales!
Autor: Roland Bumm (rolandb)
Datum: 05.04.2008 23:04

Jo, danke Dir! Gutes nächtle

Am Anhang schnell zusammengeschustertes Pap. Muss jetzt noch mi den
Timings aufpassen.


RolandB
Autor: Roland Bumm (rolandb)
Datum: 05.04.2008 23:21
Dateianhang: Wahrscheinlichkeitsverteilung.jpg (140,9 KB, 46 Downloads)
preview image for Wahrscheinlichkeitsverteilung.jpg

So hier jetzt aber.

Habe mich da einmal verschrieben! Alles Wahrscheinlichkeitsdichte im
PAP.
Autor: Roland Bumm (rolandb)
Datum: 06.04.2008 01:31

Habe mir jetzt den LTC1859 als Sample bestellt. Er hat zwar 8Kanäle, vlt
kann man die ja dann später mal nutzen. Die wurden oben ja schonmal
genannt habe mich aber da noch zu sehr auf die MAXIM fixiert.

Gute Nacht
Autor: Gast (Gast)
Datum: 06.04.2008 10:30

>@Gast: Bitte auch mal lesen. Läuft doch alles auf Teilen und mit
>Hilfsspannung  zugefühtem Offset raus.

@Alexander: Scheint ja enorm aufwendig zu sein, solch eine Schaltung.

Da ich ein bißchen schlichter gestrickt bin, nehme ich als Hilfsspanung
Vref des ADC, die ich an ein Ende des 1:1 Widerstandteilers lege. An das
andere Ende lege ich Vin und erhalte am Mittelabgriff Vmess.
Kohleschichtwiderstände sind hierfür allerdings nicht geeignet.

Wo bitte schön ist das Problem? Etwa den Offset zu ermitteln und vom
Ergebnis abzuziehen und mit Faktor 2 zu multiplizieren?
Autor: Alexander Liebhold (lippi2000)
Datum: 06.04.2008 11:59

@Gast: Und was ist jetzt anders daran???? Du nimmst einen Teiler und
fügst Vref, also eine Hilfsspannung ein.
Die interne Ref-Spannung kommt sowieso nicht in Frage, daher extern. Du
eliminierst zwar das Schwanken der Vref dadurch, dass du die an den
Teiler anlegst, aber die Tolleranzen der Widerstände änderst du nicht.
Die Herstellungsbedingten Tollernazen kannst du tzwar rausrechnen, aber
die Temperaturdriften nicht. Da müssen am besten schon
Präzissionswiderstände im gemeinsamen Chip her.

Jede Stufe des Signalweges bringt zusätzliche Einflüsse wie Offset,
Drift, Rauschen....! Daher ist immer die Lösung mit den wenigsten
Bauteilen die Beste. Daher wird nach der Impedanzwandlung sofort
gemessen und alles auf sehr geringen Abstand gehalten mit ner
ordentlichen Ground-Flächen-Planung.

Und noch etwas, damit man mal sieht wie anspruchsvoll das Thema ist:
Schließ mal dein Oszi - Tastkopf kurz und dreh deine Amplitude auf. Bei
den meisten Oszi's kommt man bis 1mV/DIV noch und dieses eine Milivolt
ist auch noch vollkommenes Rauschen. WIR REDEN HIER UM RAUSCHFREIE
300µV!!!!

Aus Erfahrung kann ich nur sagen, die meisten Probleme haben Verstärker
und Widerstände bereitet. Referenzspannungen müssen genau so gut bedacht
sein, wie ein guter Potentielausgleich. (Bei einer National Messkarte
16Bit und ner Treiber und Messumformer Platine hatte ich Offsets und
Peaks im 1mV-3mV Bereich aufgrund der Verwendeten Netzteile und
Groundverbindungen. Durch anbringen eines 2,5mm² Kabel an PC-Gehäuse und
Netzteil-Masse konnte dies unterdrückt werden. Die Messfehler ergaben
sich durch Ausgleichsströme über die Messmasse.)

Also die Auflösung ist wirklich sehr schwierig.
Autor: Christian R. (supachris)
Datum: 06.04.2008 12:10

Also ein OPV zur Impedanzwandlung und wenigstens minimalistischen
Tiefpassfilterung gegen Aliasing muss schon davor. Schließlich kannst du
nicht davon ausgehen, dass der Generator keine höheren Frequenzen als
die halbe Abtastfrequenz rausgibt, und der Eingangswiderstand des ADC
ist auch selten konstant. Deweiteren solltest du einen 50 Ohm Eingang
machen, mit Verstärkung 2 dahinter, sonst hast du eine klassische
Fehlanpassung.
Ich würd allerdings ein mehrstufiges Filter aufbauen, mit hochwertigen
OPVs (Zero-Drift, geringes Rauschen, extrem geringer Offset). Wenn du
schon 16 Bit Auflösung willst, dann solltest du auch die analoge
Vorstufe entsprechend auslegen.

Übrigens, dein LTC1859 kann nur einen Kanl gleichzeitig messen, der
Multiplexer sitzt noch davor. Der von mir vorgeschlagene LTC1865 nimmt
beide gleichzeitig auf, du musst dann ein 32 Bit Wort per SPI auslesen.

Und 16 Bit mit nur 87dB SNR. Naja, die Werbung halt. Für echte 16 Bit
bräuchtest du 96dB und besser.
Autor: Alexander Liebhold (lippi2000)
Datum: 06.04.2008 12:13

@Christian R.: Endlich mal einer der hier auch sieht, dass es keine
Triviale Lösung ist.
Autor: Christian R. (supachris)
Datum: 06.04.2008 12:17

Kein Wunder, untere anderem damit verdiene ich meine Brötchen.

Dem Theadersteller kann man nur raten, die Vorlesungen zu anloger
Schaltungstechnik sowie Messtechnik zu besuchen, und sich den
Tietze/Schenk* zuzulegen. Eine analoge Eingangsstufe für 16Bit macht man
nicht mal eben so mit einem TL082 oder sowas.
* Anzeige-Link
Antwort
Autor: Andreas Auer (andi)
Datum: 06.04.2008 12:20

Hi

Ich wollte hier auch noch kurz was dazu sagen, was den ADC und dessen
Interface betrifft.
Ich weiß jetzt nicht, ob du ein Anti-Aliasing Filter vorgesehen hast,
aber ich würde das unbedingt reinbauen (und zwar so nahe wie möglich am
Eingang des ADC. Sonst bekommst du ein Problem mit deinen Clocks auf der
Platine, die sich dann als Rauschen in deinem Nutzband abzeichnen (würde
vermuten, dass die Clockfrequenzen als einzelne Spikes in das Nutzband
gespiegelt werden). Ein Anti-Aliasing Filter erspart dir da sicher viel
ärger und du bekommst vielleicht noch 1 Bit mehr aus deinem ADC raus.

Das bringt mich auch gleich zum nächsten Thema. Und zwar die Anzahl der
Bits, die du vom ADC effektiv nutzen kannst. Es hat ja weiter oben schon
jemand angemerkt, dass du da echt vorsichtig beim Layout erstellen sein
musst (der Beitrag ging aber ein bisschen unter). Ahm... also ich weiß
selbst von einer Laborübung im Bereich DSP an der TU, dass du
wahrscheinlich nicht nur das LSB verwerfen musst. Wir hatten ein Board
von TI mit TI DSP drauf und dort wurde ebenfalls mit 16 bit abgetastet.
Nutzbar waren am Schluss aber nur noch 12 Bit -> 4 Bit Auflösung gingen
im Rauschen unter.

Soweit so gut... das waren noch ein paar Tipps von meiner Seite. Wünsch
dir viel Spaß bei deinem interessanten Projekt.

mfg
Andreas


PS: Bei der Mikrocontroller Auswahl solltest auf jedenfall darauf
achten, dass das Ding einen Hardware Multiplizierer hat, falls du auf
dem Controller auch was rechnen willst (in Echtzeit) - ATMega32 bzw. 162
haben einen.
Autor: Alexander Liebhold (lippi2000)
Datum: 06.04.2008 12:26

Ich hatte für meine Anwendung den OPA227 verwendet. Und Widerstände von
Tyco (CHIP 0805) mit Tolleranz 0,01% und TK=5ppm/K.
siehe: http://www.tycoelectronics.com/aboutus/news/prodne...

Allerdings wurden nur Gleichsspannungen gemessen. Eingangsfilter
2.Ordnung bei nur ein paar Hz und ne Mittelwertbildung von 100 Werten.

Für den OPAmp gibts sicherlich auch mittlerweile was besseres.
Autor: Alexander Liebhold (lippi2000)
Datum: 06.04.2008 12:32

Beim Layout müssen strikt die Massen und Versorgungsspannungen räumlich
getrennt werden. Also für den Analogteil wird sowieso ein extra
Spannungsregler (nicht getaktet) mit EMV-Induktivität verwendet. Alle
Signalleitungen am besten in Masseflächen (Seitlich und Unterseite)
einhüllen und so kurz wie nur irgendwie möglich an den Signaleingang
hängen.

@Andreas Auer: Also im Datenblatt findet man noch ne Angabe,wieviel Bits
überhaupt nutzbar sind. in der Regel 14 bis maximal 15. Zeihst du das
Vorzeichen-Bit ab, sind es gerade mal 13-14.

Ach ja, noch ein heißer Tipp, in den Datenblättern oder Application
Notes findet man häufig Vorgaben und Anleitungen zum Layout. (Vorallem
die Stelle ADC, an der Analog und Digital zusammentreffen ist besonders
kritisch.)
Autor: Alexander Liebhold (lippi2000)
Datum: 06.04.2008 12:35

Schaut mal den OPA378 an.
http://focus.ti.com/docs/prod/folders/print/opa378.html

Leider im Moment nur als Preview, aber vielleicht kann man schon Samples
bekommen.
Autor: Roland Bumm (rolandb)
Datum: 06.04.2008 12:45

Christian R. wrote:
> Kein Wunder, untere anderem damit verdiene ich meine Brötchen.
>
> Dem Theadersteller kann man nur raten, die Vorlesungen zu anloger
> Schaltungstechnik sowie Messtechnik zu besuchen, und sich den
> Tietze/Schenk* zuzulegen. Eine analoge Eingangsstufe für 16Bit macht man
> nicht mal eben so mit einem TL082 oder sowas.

Tietze Schenk* liegt im Regal.. :-) Standartlektüre...
Anpassung mit 50 Ohm, daran habe ich gedacht sihe weiter oben:

Messaufbau:

|--Quelle (Ri=50Ohm)---> <-Leitung Impedanz 50 Ohm)-> --Senke(50Ohm und A/D
Wandler --|

Wieso eine V von 2? Bei Anpassung ist doch alles in Ordnung? Ein
Impedanzwandler vorm Messkanal des A/D Wandler denke ich auch. Ich
brauch keine "gleichzeitige Messung" somit ist das muxen ok.

Nun gibts da noch eine frage, natürlich besteht das Messignal
(Dr->si^2,Re-> si) aus höheren f-Anteilen als deren Grundfrequenz von
1kHz. ---> Ahjo, AF muss davor! AF mit fc von theoretisch min 50Khz.

Also müsste es so aussehen:


|--Quelle (Ri=50Ohm)---> <-Leitung Impedanz 50 Ohm)-> -->Senke(50Ohm) -->AF
Filter(fc<50kHz) -> Impedanzandler -->A/D Wandler Kanal 1--|

Das gleiche mit Kanal 3 (Sprache) nur mit fc von min. 3Khz. Da aber
relativ unkritisch wo fc liegt, da Sprache max (je nach Quelle) 16Khz.
Vom Sinn her und der Praxis aber trotzdem notwendig.

Ein Atmega162 soll es werden. Ok, das mit den Massen werde ich dann
unter Multism richtig vernünftig machen, dann muss ich nochmal einige
Professoren sicherheitshalber fragen die sich mit HF Leiterplatten
Entwicklung auskennen.

Ich merke dass das Projekt sich immer weiter entwickelt. Es wurde ja
auch erstmal besprochen und ich mache jetzt meine Notwendigen
recherchen. Sicherlich kann ich noch nicht alles so genau abschätzen,
kann aber mit vielen Hinweisen doch recht viel anfangen! Danke euch
allen, das ist der Übergang Theorie-->Praxis. :-)


Danke
Rolandb
* Anzeige-Link
Antwort
Autor: Andreas Auer (andi)
Datum: 06.04.2008 12:49

@Alexander Liebhold:
Ohne jetzt das Datenblatt genau studiert zu haben, glaube ich, dass man
den Einfluss des Controllers sowie die schnellen und steilen Taktflanken
des SPI Interface oder des parallelen Interface zum RAM von den
"sensiblen" analogen Eingängen nur sehr schwer richtig gut abschirmen
kann.
Ich würde also vermuten, dass dir für den gesamten 10V Eingangsbereich
"nur" etwa 12 vielleicht 13 Bit (inkl. Vorzeichen) übrig bleiben werden
(da bist dann schon bei 1-2mV Auflösung).

mfg
Andreas
Autor: Alexander Liebhold (lippi2000)
Datum: 06.04.2008 12:55

@Andreas Auer: Na das denk ich doch. Aber wenn er 12Bit raus holt, dann
hat ers seine Arbeit gut gemacht. Da kann dann keiner meckern.

@Roland Bumm: Der Filter müsste doch nach der Impedanzwandlung, sonst
ist deine Anpassung futsch.
Autor: Roland Bumm (rolandb)
Datum: 06.04.2008 13:01

Alexander Liebhold wrote:
> @Andreas Auer: Na das denk ich doch. Aber wenn er 12Bit raus holt, dann
> hat ers seine Arbeit gut gemacht. Da kann dann keiner meckern.
>
> @Roland Bumm: Der Filter müsste doch nach der Impedanzwandlung, sonst
> ist deine Anpassung futsch.

Auch gerade gesehen... muss umgefreht werden. Naja, ob mein
"Auftraggeber" zufrieden ist, werde ich am Dienstag hören :-)

Wenn ich in der LP Entwicklung überlege.. ohgott, Signalleitungbreite
berechnen, optimale lngen berechnen.. oho :-)
Autor: Christian R. (supachris)
Datum: 06.04.2008 13:11

Verstärkung 2, weil du durch die Leistungsanpassung (50 Ohm Ausgang, 50
Ohm Eingang) nur die Hälfte dessen rausbekommst, was der Generator
ausspuckt. Wenn du nur ein einpoliges TP-Filter machst, sollte die
Grenzfrequenz weit weg von der Nyquist-Frequenz sein. Bei mehrpoligen
Filtern kannst du immer weiter ran rücken, weil´s ja immer steiler wird.

Leitungslänge spielt bei kHz nicht wirklich eine Rolle, sehr wohl aber
die Masseführung, Versorgungsspannung-Aufbereitung (kein!!!
Schaltregler) und die räumliche Anordnung. Auf einer 2-Lagen-Platine
wird´s schon schwierig. 4 Lagen (außen Signale, innen Vcc und GND) sind
für ordentliches Analogteil kaum umgehbar.

Mehr als 14 Bit sind bei 87dB SNR sowieso nicht auswertbar. in der
Praxis eher 13 Bit.
Autor: Roland Bumm (rolandb)
Datum: 06.04.2008 13:23

Christian R. wrote:
> Verstärkung 2, weil du durch die Leistungsanpassung (50 Ohm Ausgang, 50
> Ohm Eingang) nur die Hälfte dessen rausbekommst, was der Generator
> ausspuckt. Wenn du nur ein einpoliges TP-Filter machst, sollte die
> Grenzfrequenz weit weg von der Nyquist-Frequenz sein. Bei mehrpoligen
> Filtern kannst du immer weiter ran rücken, weil´s ja immer steiler wird.
>
> Leitungslänge spielt bei kHz nicht wirklich eine Rolle, sehr wohl aber
> die Masseführung, Versorgungsspannung-Aufbereitung (kein!!!
> Schaltregler) und die räumliche Anordnung. Auf einer 2-Lagen-Platine
> wird´s schon schwierig. 4 Lagen (außen Signale, innen Vcc und GND) sind
> für ordentliches Analogteil kaum umgehbar.
>
> Mehr als 14 Bit sind bei 87dB SNR sowieso nicht auswertbar. in der
> Praxis eher 13 Bit.

? Am Generator steht sein Ri,so weit ich weiss an jedem. Steht zum Bsp
Ri=50Ohm und ich an dem 1Vss einstelle, dann bedeutet das nur bei einer
Last von 50Ohm auch 1Vss anliegen.
Hat meine Last Ri=unendl. dann liegen dort 2Vss an.

--
Mist, ein TP haut mir ja wieder Verzerrungen rein.. Gruppenlaufzeiten. 4
lagige Platine ist leider nicht möglich, oder man muss die
Platinenentwicklung auslagern.. So weit ich weis gibts die net bei uns
die Maschine.
mfg
RolandB
Autor: Alexander Liebhold (lippi2000)
Datum: 06.04.2008 13:36
Dateianhang: PCB-Layout_EMI.pdf (372,8 KB, 34 Downloads)

@Roland Bumm: Mach mal nen auführliches Blockschaltbild, in dem die
wichtigsten Teile (Eingangsstufe) ausführlich dargestellt sind. Dort
auch die Masseplanung mit rein und dann mal Posten. Da können wir dann
nochmals ggf.ändern und weitere Tips zu Layout & Co geben. (Vorallem mal
in der Eingangsstufe die Ströme einzeichnen, dass ist auch immer schon
Gold wert und man entdeckt doch so manche Fehler oder Verbesserungen.)

Also wir warten mal auf Post. Grundlagen hast du ja jetzt ausgiebig. :-)


Platinen kannst du recht günstig bei PCB-Pool bekommen. Schau dir dort
die angaben über Leiterbreiten und Paddurchmesser an.

Für die ganze Layout-Geschichte habe ich dir mal eine Sonntagslektüre
angehangen, in der auf alle bereits genannten Sachen eingegangen wird.
Autor: Gast (Gast)
Datum: 06.04.2008 13:57

>Also die Auflösung ist wirklich sehr schwierig.

Stimmt doch garnicht, und die Genauigkeit von 16Bit ist auch erreichbar.
Wenn eine Referenz für den ADC vorhanden ist, wäre es doch Blödsinn,
eine weitere zu erzeugen.
Bei einem Widerstandteiler ist nicht die absolute Drift über die
Temperatur entscheidend, sondern die relative der Widerstände
zueinander. 5ppm/K scheinen schon arg übertrieben.

Daß man eine saubere Leiterplatte verwendet ist doch selbstverständlich.
Autor: Roland Bumm (rolandb)
Datum: 06.04.2008 15:02

Habe was im Netz gefunden, fast so sind meine Anforderungen:

http://www.heise.de/ct/07/13/202/default.shtml

externe Ref :  LT1019-2,5

mfg
RolandB
Autor: Alexander Liebhold (lippi2000)
Datum: 07.04.2008 16:15
Dateianhang: AN748.pdf (153,4 KB, 27 Downloads)

@Roland Bumm: Sieht gut aus. Denk die kannst du auf jeden Fall
verwenden. Denk an nen Filter (aus Vorwiderstand und Kondensator
parallel zur Referenz) und alles ganz nahe an den ADC, die Referenz ist
eins der empfindlichsten Teile.
Auch wenn hier einige anderer Meinung sind, was vorallem interne
Referenzen angeht, hab ich noch ein Artikel angehängt. Siehe S.11!!!
Autor: Martin L. (mla)
Datum: 07.04.2008 17:06

Ich würde ja eine 32Bit CPU nehmen. Da hat sich das ganze gerassel mit
dem Adressraum erledigt. Und vermutlich sind die dann auch schnell genug
die 100kS/s zu verarbeiten bzw. in einen Speicher zu schreiben.
Denn mit 16Bit Daten (zu denen bestimmt fast nochmal so viele Header
usw. Bits dazu kommen) wird es auf einem 10MHz-SPI Bus schon ziemlich
voll. Ausserdem erspart man sich das "Ich emuliere ein Businterface für
den SRAM" weil man entweder genug internen SRAM hat (eher nicht) oder
eben ein echtes externes Speicherinterface sein Eigenen nennt.

Und wenn ein Anfänger so ein Projekt macht würde ich ganz dringend zu
einer 4-Lagen Platine raten. Da wird das mit den Störungen am Wandler
alles um einiges unkritischer.

Viele Grüße,
 Martin L.
Autor: Hans (Gast)
Datum: 07.04.2008 17:48

ich will ja nicht nörgeln.. aber mit dem LTC1859 wirst du 16bit nicht
zusammenbringen.. das ding hat nur 15bit ohne missing-codes!

den rest hab ich mir noch ned angeschaut... prinzipiell könnts hinhaun..
ich messe 16bit auf 3V flicker-free.. aber nur auf 16Hz bandbreite.. bei
mir rauscht aber auch der Vorverstärker... wenn du keinen verstärker am
eingang hast gehts...

bei den ganzen flash convertern ist das übrigens normal, dass die
missing codes haben...also aufpassen ;)

irgend ein 18bit wandler sollte dir 16bit ermöglichen.. mit 16bit
wandlern wird das nicht gehn...

73
Autor: Alexander Liebhold (lippi2000)
Datum: 09.04.2008 16:18

Hab mal noch nen anderen rausgesucht.

ADS8325:   SNR=91dB; INL = +-1,5 Bit
Autor: Roland Bumm (rolandb)
Datum: 09.04.2008 16:54

Ja, so heute habe ich ein OK bekommen für 14Bit. Es müssen also 14Bit
sein, sonst ist halt der Aufwand viel zu groß, bzw könnnen das einfach
weggelassen werden in der Auswertung.
Somit ergibt sich eine lineare Einteilung von +-5V auf 610µV. Ich werde
trotzdem den LTC1859 verwenden.

Vor dem Messignalkanal (stoch,Dr,sin,Re) kommt ein TP mit fg von ca.
48khz. Bei dem Sprachkanal ein fg mit ca.3,3Khz. Gibt es einen
"programmierbaren" TP Filter, welcher halbwegs in dieses Messsystem
passen kann/soll?
Nebenbei such ich ein Tool womit man vernünftige Blockschaltbilder
erstellen kann. :-)


mfg
RolandB

PS: Ich hoffe jetzt fallen einige nicht wegen der Abspeckung um, oder
ärgern sich :-)

@Alexander Liebhold
Danke für das raussuchen, dieser Typ hat leider nur +5 input.
Autor: Hans (Gast)
Datum: 09.04.2008 16:58

es gibt switched-capacitor filter.. damit kann man sowas machen.. oder
du machst das dann in software...

73