Hallo Programmierer und Bastler, Was haltet ihr davon : ich habe in letzter Zeit ein dringendes Verlangen nach einem Oszi. Da die Teile aber teuer sind und schon fertig aufgebaut [ :-) ] möchte ich mir ein ganz einfaches langsames Speicheroszi selber bauen. Dazu braucht es nicht viel. Der Schaultungsaufwand wär minimal und der Preis unter 10 Euro. Ich denke mir das so: ein günstiger Prozi (zB. Mega8) mit ADC soll mir so etwa 400 Werte in voller Geschwindigkeit mit 8 Bit sampeln. Diese Werte werden im Prozi zwischengespeichert und nachdem alle 400 Werte angekommen sind soll er die Werte via Uart an meinen PC weitergeben. Dort werden diese dann zb.in Excel automatisch dargestellt. Nach der Datenübergabe an den PC fängt der µC von vorn an. Die Frage ist, wie schnell schafft das der Prozi ? * Ich gehe von 16 MHz aus. * Der ADC schafft mit 8 Bit 200kS/s (das sampling soll free-running sein) * Ich zeichne somit 0,002 s lang auf (entsprechned länger für langsamere Sample-Raten, welche ich über irgendwelche Taster wählen können muss) Sind 200kS/s realistisch ? Wenn ja, wie weit kann ich noch gehen, wenn ich zB. einen externen ADC mit zB. 500kS/s nehme ? Dann kommt doch der Prozi mit dem Einlesen gar nicht mehr hinterher, oder ? Gibt es da eine Möglichkeit, die Werte in ein SRAM-Baustein oder so zu schreiben und die dann ganz ruhig mit dem µC auszulesen ?? Jeder Vorschlag oder Kommentar hierzu könnte hilfreich sein. Es ist ja nur ein Hobbyprojekt und kann auch wackelig sein.
Hallo Andreas, Dir sollte erstmal klar sein, daß man für eine Schwingung mindestens 10 Samples braucht, d.h. bei 200kSPS kannst Du maximal bis 20kHz messen. Wobei mir nicht wirklich klar ist, wie schnell der interne ADC ist. Die 200kHz sind der Arbeitstakt des ADCs, er braucht 13 Takte für die Konvertierung, das ergibt die angegebenen 15kSPS bei 10 Bit Auflösung. Bei höherem Takt sinkt die Auflösung, es ist aber nicht angegeben um wieviel. Prinzipiell würde ich einen externen A/D-WAndler nehmen. Der TDA8703 ist relativ günstig und macht 40MSPS. Die Werte kannst Du dann mit ein paar MHz ins interne RAM einlesen (einfache Lösung) oder mit 13MHz in externes RAM (60ns RAM ist relativ günstig herzukriegen) oder 40MHz in externes RAM (25ns RAM bekommt man quasi umsonst von alten 486er Mainboards). Dazu brauchst Du noch einen Adressgenerator (z.B. Zähler-ICs, gibts bis 200MHz) oder ein CPLD (schnell, elegante Lösung, aber vermutlich viel zu aufwendig für Dich). Für den Anfang würde ich Dir die Lösung ohne externes RAM empfehlen, das macht die Sache sehr viel einfacher. Wie schnell Du konkret auslesen kannst kann ich nicht genau sagen. Du brauchst eine Schleife, die den Wert einliest, evtl. dann die neue Konvertierung startet (der externe ADC braucht ja auch einen Takt), das gelesene Byte in den Speicher schreibt, den Speicherpointer erhöht und überprüft, ob der Speicher schon voll ist. Die Geschwindigkeit dieser Schleife bestimmt, wie schnell Du die Daten einlesen kannst. So aus dem Stehgreif würde ich mal auf 1-2MSPS tippen. Markus
Hallo, wenn du sowieso nur mit 200kS/s abtasten willst und wie oben schon gesagt damit nur 20kHz darstellen kannst, könntest Du doch auch die Soundkarte verwenden. Es gibt glaube ich eine ganze Menge Infos dazu im Netz. Viele Grüße, Ralf
Hallo Such mal nach Oszifox im Internet, das ist zwar kein richtiges Oszilloskop, aber für meine Hobbybastelei hat es bisher gereicht, und es ist günstiger als ein "echtes" Oszilloskop.
Ralf: Wenn man mit der Soundkarte arbeitet, dann kann man nur mit ca. 44kSPS (je nach Modell) Abtasten und erhält dann eine nutzbare Bandbreite von 4kHz. Markus
hier ein Lösungsansatz mit ADC TDA8703 und PC (LPT-Port) als Schnittstelle http://forum.electronicwerkstatt.de/phpBB/viewtopic.php?topic=5080&forum=6 Gruß Tim
Sollte frei nach Shannons Abtasttheorem eine Sampling-Rate von 200kS/s nicht für ein Signal mit maximaler Frequenz von 100kHz ausreichen? Abtastfrequenz >= 2 * max. Signalfrequenz, oder?!
Hi für ein reines Sinussignal (fast) ja. Das Gleichheitszeichen muß weg. Für alles andere: Nein. Matthias
Hallo Rainer, Es geht dabei um zweierlei: a) Nach Shannon muß die Abtastrate min. 2*f_max sein, um die Frequenz restaurieren zu können. Die Wellenform wird dabei allerdings noch nicht restauriert! Stell Dir mal vor, die Abtastfrequenz sei doppelt so hoch wie die Frequenz des Sinussignals, die Amplitude des Signals ist +-1. Versuch 1: Die 1. Messung geht von 0-180°, d.h. das Signal beginnt bei 0, steigt auf +1 und sinkt dann wieder auf 0. Im Mittelwert sind das 0,64. Bei der 2. Messung gehts von 180°-360°, das ergibt diesmal im Mittel -0,64. Versuch 2: Gleiches Signal, aber diesmal beginnt die Messung etwas später. Und zwar genau um 90° später. Die 1. Messung erfolgt dabei von 90°-270° (Start also bei +1, Ende bei -1, Ergibt im Mittel 0), die 2. Messung geht dann von 270° bis 450° (Start also bei -1, Ende bei +1, Ergibt im Mittel 0). Man bekommt eine Nulllinie, obwohl sehr wohl ein Signal anliegt. Beim ersten Versuch ist die gemesene Amplitude falsch (36% Meßfehler), beim zweiten Versuch bekommt man gar keine Werte. Man sieht sofort, daß man damit nicht arbeiten kann. An der Stelle könnte man einwerfen, daß die Abtastrate natürlich nicht genau 2*f_max sein darf, sondern darüber liegen muß. Aber zum einen macht es ja nicht wirklich einen Unterschied, ob ich nun ein zu messendes Signal mit 10kHz habe oder eines mit 9,99999999kHz, zum anderen ergibt sich hier der nächste häßliche Effekt: Das Meßergebnis schwankt zwischen den Werten von Versuch 1+2 hin und her. Wenn ich also z.B. einen Sinus mit 9,9kHz mit 20kSPS abtaste, dann kommen als Meßwerte ungefähr (nicht gerechnet) folgende Werte raus: +0,64, -0,64, +0,6, -0,6, +0,55, -0,55, ... usw. bis 0 und dann steigt das langsam wieder. Jetzt scheint also auch noch die Amplitude zu schwanken. Man mißt totalen Unsinn. b) Man braucht einen Filter, der die unerlaubt hohen Frequenzanteile rausfiltert. Wenn man nun bei 20kSPS ein Rechtecksignal mit 9kHz hat, dann hat dieses eben Oberwellen bei 27kHz, 54kHz, ... Diese werden dann vom Filter weggefiltert, so daß das Rechteck dann eher wie ein Sinus aussieht. Markus
Hi! Wäre es theoretisch möglich, mehrere ADCs "parallel" zu schalten und deren CLK verzögert zu takten, um so die Sampling-Rate zu erhöhen? Jeder ADC bräuchte wohl ein eigenes RAM...oder ist SRAM schnell genug, um alle Daten aufzunehmen? Hab mir nämlich über die Timings noch keine Gedanken gemacht. Ich denke, ein anderer Ansatz wäre, bei periodischen Signalen die Zeit, die zwischen Trigger und Beginnn der Abtastung vergeht, variabel zu machen, um so mehr Abtastpunkte zu erhalten. mfg Reinhard
Hallo Reinhard, ja, das geht im Prinzip. Probleme: a) Die Samplezeit muß kurz genug sein, d.h. wenn Du z.B. zwei A/D-Wandler mit 1MSPS hast, dann nutzt es Dir nichts, wenn beide das Meßsignal 1µs lang abtasten. Dann würde ja der erste von 0-1µs messen und der zweite von 0,5-1,5µs. Damit hättest Du ja nichts gewonnen. Du brauchst A/D-Wandler, bei denen die Samplezeit kürzer als die Wandlungszeit ist. Wenn der A/D-Wandler 1MSPS macht, dann braucht er für eine Wandlung 1µs. Wenn die Samplezeit bei 0,5µs liegt, dann kannst Du zwei A/D-Wandler benutzen die abwechselnd arbeiten. b) Genauigkeit. Kein A/D-Wandler ist ganz genau. Sind die beiden A/D-Wandler aber verschieden genau, dann wechseln sich die Fehler beim Ergebnis ab. Hat der Wandlertyp z.B. eine Genauigkeit von +-1% und der erste Wandler ist gerade bei +1% und der andere bei -1%, dann schwankt der gemessene Wert im Ergebnis von Messung zu Messung immer um 2%. Völlig vermeiden läßt sich sowas wohl nicht, man sollte dabei wohl darauf achten, daß man zwei identische Typen möglichst aus der gleichen Charge nimmt und der Schaltungsaufbau möglichst symetrisch für die beiden Wandler ist. Zur Geschwindigkeit von A/D-Wandlern und SRAM: Wenn man sich mal auf den Seiten der A/D-Wandlerhersteller so umschaut, dann kann man ganz schnell ins träumen kommen. Ein Blick auf die Preise holt einen dann recht unsaft wieder in die Realität zurück. Ähnlich ist es bei SRAM. Man könnte als Speicher z.B. SD-RAM oder DDR-RAM vom PC nehmen. Sehr schnell, sehr groß, ziemlich billig. Aber wenn man ein DDR-RAM voll ausnutzen will, dann braucht man ein CPLD/FPGA mit sehr vielen Pins (200+), eine vierlagige Mulitlayer-Platine (wegen Masse- und Versorgungsplane) und außerdem eine gesunde Portion Erfahrung im Layoutdesign bei diesen Frequenzen... Markus
Hi Markus! Danke für deine Info! Werd mich - falls ich dazu komme - in nächster Zeit ein wenig mit diesem Thema beschäftigen...mal schaun, was rauskommt.... mfg Reinhard
@Ralf BVezüglich Soundkarte: Der Tip ist nicht soo schlecht. Ich habe mir gleich mal "Oszi für Win" und weitere Shareware-Tools runtergeladen. Prinzipiell ist die Sache ganz gut, zumal auch ein FFT-Programm dabei ist mit variablem Sweep usw. Die Sache hat aber auch einige Nachteile: Der AD-Wandler der Soundkarte (ich habe eine Creative, welche zu den Rausch- armsten günstigen Modellen gehört) hat eine Eingangsimpedanz jenseits von gut und böse (unter 20KOhm). Das läßt sich mit einer Vorschaltung korrigieren (Spannungsfolger). Das Rauschen macht sich bisher nicht bemerkbar. Des Weiteren sind die mir bekannten soundkarten ac-gekoppelt, und ich kann somit keine Gleichanteile messen, selbst bei sehr guten Rechtecksignalen wird das deutlich :-( Lässt sich da was machen ?? Vielleicht kann mir jemand sagen, ob es einen Eingangskondensator gibt, den man mal brücken könnte ? Dann gibts das Problem der Absolutwerte. Die sind nämlich nicht ermittelbar. Ich könnte mir da höchstens eine Referenz mit einem mir bekannten Sinussignal vorstellen. Aber durch die stark begrenzte Bandbreite ist die jeweilige Freqenz von großer Wichtigkeit, da mir der Eingangsverstärker eine kräftige Dämpfung einbringt. Alles in allem ist das mit den Soundkarten schon machbar, aber nur zum Schauen, nicht zum Messen. Es sei denn, die AC-Kopplung läßt sich unterbinden. Wer kann da helfen ??
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.