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
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
Ich glaube nicht, dass es einen ADC gibt der unter GND noch irgendwas misst.
@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.
Mit 2ch sieht es etwas mau aus. Bei Maxim Sigma-Delta - Wandler dürfte aber was sein. MAX1415 und MAX1416..
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
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.
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.
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/Portexpander_am_AVR#Ohne_SPI-Hardware Na dann schönes WE... Gruß Alexander
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
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.
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.
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
Den MAX1301 kann man direkt bei Maxim ordern (ziemlich teuer). Die genannten LTCs sind auch im firmeneigenen Shop zu bekommen (und deutlich günstiger).
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
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.us0?sku=ANALOG-DEVICES-AD7656BSTZ Danke an alle
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.
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
>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.
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
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
>Nun frage ich mich, wie >ich bei +-5V Eingangssignal 0..5V machen soll.. Ein unlösbares Problem, zwei Widerstände zu verdrahten?
@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.
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.
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.
@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?
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.
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.
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
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.
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 :-)
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!
Jo, danke Dir! Gutes nächtle Am Anhang schnell zusammengeschustertes Pap. Muss jetzt noch mi den Timings aufpassen. RolandB
So hier jetzt aber. Habe mich da einmal verschrieben! Alles Wahrscheinlichkeitsdichte im PAP.
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
>@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?
@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.
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.
@Christian R.: Endlich mal einer der hier auch sieht, dass es keine Triviale Lösung ist.
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.
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.
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/prodnews.asp?id=1362 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.
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.)
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.
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
@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
@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.
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 :-)
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.
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
@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.
>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.
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
@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!!!
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.
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
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.
es gibt switched-capacitor filter.. damit kann man sowas machen.. oder du machst das dann in software... 73
In Software ist das meiner Ansicht nach nicht mehr ganz so sinnvoll, da das Filter ja vorallem Störsignale rausfiltern soll, die sonst in den Nutzbereich gespiegelt werden (durch das abtasten). Diese Störungen bringst in Software nicht mehr raus, außer du "oversamplest" das Inputsignal (was durch die vorgegebene Samplingfrequenz nicht drinnen sein wird). mfg
Roland Bumm wrote: > 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. :-) Wenn du mit 100kHz abtastet, musst du aber ein sehr steiles Filter bauen, wenn das nur 48kHz haben soll. Wenn ich das oben richtig gelesen habe, dann sollen eh nur Frequenzen im einstelligen kHz Bereich gemessen werden, oder? Dann bau lieber ein ordentliches Filter, was meinetwegen 15kHz Grenzfrequenz hat, denn das Nyquist-Theorem ist ja der Grenzfall, je nach Filtersteilheit hast du dann noch genug Alias-effekte, die halt dann zwar eine geringere Amplitude haben, aber noch lange nicht weg sind. Im Normalfall sollte man Faktor 3 bis 5 von der Abtastfrequenz weg sein mit dem Filter. Blockschaltbilder gehn ganz gut in Visio.
Anbei der Entwurf für das gesamte Syste. Es sind verdammt viele Anschlüße von nöten... Ich bin für jeden Anstoß dankbar! mfg RolandB --Edit Es kommt noch ein Taster hinzu, also noch eine Leitung
So es ist recht vorangeschritten. Habe im pdf den Stromlaufplan angehangen. Bauteile: µC: Atmega1280 A/D: LTC1859 Filter: 1562-2 (fg=20Khz) extSRAM:512Kbyte A0..A15 sowie 3 "Pages" Latch: 74hc573 OPV´s :LM324 Versorgung: -5V, 5V Masse: Analog, Digital -------------------------------------------- Werde bestimmt noch eingie Fehler drinne haben.. :-) Habe aber noch einige Layout Fragen: 1. Sollte jeder Digitale/Analoge Baustein mit einem Puffer-C ausgestattet werden? Also zusätzlich zu jedem Entstör-C? 2. Es besteht die die Möglichkeit einer 4 lagigen Platine: 1. Signal 2. Versorgung +5V/-5V 3. AGND/DGND 4. Signal Wie bekommt man sinnvollerweise eine DGND Leitung an einen Baustein, welche über die AGND Fläche liegt (LTC1859)? "Einfach" eine DGND Leitung aus deren Fläche herausholen und auf der Signal Ebene ziehen? Das gleiche mit der Versorgung... wenn also die Vesorgung +5V auf der zweiten Ebene liegt, wie bekomme ich eine -5V Spannung an die Pins die nicht in der nähe/darüber liegen, bzw wie kann das ganze genau aussehen? Kurzgerfagt: Wie teile ich die +-5V und die Masseflächen am sinnvollsten auf? ---- Programmieren: Zum Programmieren werde ich den myAVR USB Prog nehmen, der hat auch gleich einen TTL<>RS232 auf USB Umsetzer mit an Board. Des programmieradapter kenne ich bereits und finde den echt klasse. LCD: Werde dort ein 8Bit Hitachi kompatibles nehmen. D/A Wandler: auf den wird verzichtet, das Signal wird direkt von den Eingangspotis abgekoppelt. (AHA, da fehlt mir noch jeweils ein Impedanzwandler :-) erster Fehler den ich noch ausbessern muss). Anmerkung: Habe die +-5.5V durch +-5V ersetzt. Das ist im pdf noch nicht ersichtlich. A/D Eingänge: 4 Kanäle mittels Filter und Impedanzwandler direkt am Filtereingang und Filterausgang angeschlossen. 4Kanäle mittels Impedanzwadnler vorbelegt, damit eine später Erweiterung möglich ist. Alles unter Multisim erstellt, Layout wird in Ultiboard erzeugt. Platinenhersteller soll Würth werden. Werde die Symboldarstellung aktualisieren. mfg RolandB
Bilder Die Filter sind im Schaltplan unter X1...X4 ersichtlich. Habe nur einen Filter X1 dargestellt, jeder Filter besteht aus 2 LTC1562 Bausteine!
So, das Projekt kann jetzt erst weitergeführt werden. Ich hatte keine Zeit und nu gehts weiter. Ich werde jetzt doch Eagle nehmen, nachdem Multisim absolut "suboptimal" funktionierte (viele Abstürze, Buggs ohne Ende...). Egal, neues Spiel mit Eagle. Bauteile erstellen ging recht schnell und gut. Also meine Frage zum LTC1562 mit fg=20Khz. Ich bin mit net sicher ob das Sinn macht, ist zwar laut LTC Filtertool alles OK(schön steil, keine Überschwinger). Nur was sagt ihr dazu? Wie gesagt, soll so steile wie möglich und keine "Wellen" im f-gang haben. Mein Aufbau soll nun recht modular werden. So möchte ich die Filter Platine mit dem A/D Wandler auf einer extra Platine unterbringen. Es soll eine "Mutterplatine" geben, an der alle anderen Module angeschlossen werden sollen. Könnt ihr mir da bitte einen Hinweis geben, was man da nehmen kann? Welche Stecker/Buchse Kombination (Sandwich), mit Berücksichtigung SPI@8Mhz bei 16Mhz Quarztackt. mfg RolandB.
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.