Hallo, Hoffentlich habe ich das richtige Forum gewählt. Ich möchte mich mit einem neuen Thema der Elektronik befassen uns suche nach guten Beispielen oder Texten die sich mit dem Thema befassen. Ich möchte ein Analogsignal umwandeln und in einzelne Werte separieren. Frequenz und Spannung sind aktuell mal nicht interessant, da es mir um das Verstehen des Prinzips geht. Jedoch wäre das Ziehl dan ca. 500kHz mit Signalen mit 100mV-1V peaks, die Pulslängen wären dann etwa 200-500ns, da die Pulse nicht regelmässig sind. Wird ein ADC von einem Analogsignal ausgelesen, erhalte ich ja zum Beispiel folgende Werte bei einem Sinuns-Signal (natürlich wären es mehr, sind ja nur als Beispiel) 1) 0V 2) 2V 3) 4V 4) 2V 5) 0V Bei einem anderen Signal vieleicht 1) 0V 2) 10V 3) 20V 4) 10V 5) 5V 6) 2V 7) 0V Mich würde in meiner Applikation dann aber jeweils nur der Höchstwert interessieren, also 4V und 20V. Relevant wäre auch das das Signal nur einmal registriert wird, also nicht ein "Rechtecksignal aus dem Spitzenwert". Dies würde ja dann zb folgendes bringen: 1.) 0V 2.) 10V 3.) 10V 4.) 10V 5.) 0V Dann würde die Software ja 3mal ein Signal mit 10V sehen. Da müsste man schon so etwas wie Sigle-Shot haben oder die die Flanken auswerten. Prinzipell wäre es aber schon aus einem Pulsförmigen (Sinus) Signal ein Rechteeck mit dem Spitzenwert zu machen. Kennt jemand gute Beispiele oder Texte liefern wo solche vorgänge erklärt werden? Das ganze sollte natürlich auf dem aktuellen Stand der Technik gelöst werden. Ich denke fast, sowas sollte als "In-Chip" auf dem Markt exisiteren. Grüsse Urs
Da passt was nicht mit deinen Zahlen. Zunächst sprichst du von 1V dann von 10V Signal. Du sprichst von 500kHz aber von 200ns (-> 5MHz). Du müsstest dann sogar mit 10MHz abtasten. Das heißt ein interner ADC in einem uC reicht wohl nicht aus. Du brauchst einen externen. Die Maximalbildung ist später nur Software.
Hi, Wie bereits erwähnt war das im Beispiel nur ein Beispiel... Bezüglich der Signale, es sind nicht 5Mhz, sondern höchstens 500kHz, denn die Signale kommen ja nicht dauerhaft. Wenn du von zb. 1Hz aus gehst, ist es ja egal ob der Puls 1us oder 100us ist, es sind ja dann trozdem 1Hz also 1 Signalwechsel pro Sekunde, oder habe ich jetz etwas verwechselt? Bezüglich der Bauteile bin ich völlig offen. Nur hatte ich gehofft das es etwas gibt was das schon kann, also eine Art Bauteil dem man einen Befehl übergibt "miss peaks" oder so ähnlich.
Du möchtest die Amplitude dieses Spannungsimpulses auswerten. Es ist keineswegs egal wie lange der Puls anliegt. Ein ADC benötigt eine gewisse Zeit diesen auszuwerten.
Bei einer Frequenz des Signals kannst du nur reden wenn das Signal auch periodisch ist. Aus deinem ersten Beitrag ist hervorgegangen, dass es eben NICHT periodisch ist. Du möchtest aber bei einem sporadisch auftretendem (nicht periodischen) Signal den Spitzenwert bestimmten, richtig?
Hi, Das Signal tritt "spontan" auf, also keineswegs mit einer fixen on/off Zeit wie ein Rechtecksignal aus einem Funktionsgenerator Prinzipiell meine automatische "one-shot" Messung: 1.) Warten auf Signal... 2.) TRIGGER löst aus 3.) Spitzenwert bestimmen und ausgeben 5.) TRIGGER setzen 6.) Warten auf Signal... Dabei muss natürlich sichergestellt werden das der Puls nur einmal und korrekt gemessen wird. Trifft zb. beim Abfallen des Signals schon das nächste ein, "baut" dieses auf dem Abfallenden Signal auf und produziert einen falschen Spitzenwert. Man müsste also bei abfallen des Signals die Zeit "auf den Spitzenwert" zurückspulen und notieren, und dann warten bis das Signal wieder komplett 0 ist, bevor der Trigger wieder aktiviert wird. Eigentlich könnte man zb. bei ansteigen des Signals anfangen dauerhaft zu messen und beim Abfall dann den höchsten Wert zu nehmen. Das benötigt dann aber wohl einen extrem schnellen ADC mit entsprechend schneller Auswertung.
Nunja also deine One-Shot Messung wird so wohl nicht unbedingt funktionieren. Wenn du einen externen ADC hast musst die die Kommunikation zwischen ADC und uC mit beachten. Das heißt sobald dein Impuls kommt, müsste der uC ein Startbefehl an den ADC senden. Je nach Kommunikationsgeschwindigkeit ist dann der Impuls schon vorbei. Der ADC müsste also dauerhaft messen, und die Software muss aus den Spannungswerten irgendetwas sinnvolles herausfiltern. Woher kommt denn eigentlich dein Signal? Das hört sich alles für mich etwas komisch an.
Das hab ich mir auch gedacht, das es zu schnell ist. Desswegen suche ich ja nach einer anderen Lösung. Ein Oszilloskop kann ja auf den Trigger hin auch das Signal messen und Anzeigen. Bei meiner Applikation wäre ja sogar alles was nach der Spitze kommt völlig irrelevant -> Brauch also weder erfasst noch verarbeitet werden. Das Signal kommt von einer Photo-Röhre (Photomultiplier) mit einem Kristall davor. Das Signal steigt relativ schnell an und fällt dann eher langsam ab. Ein Signal sieht ca so aus: https://www.intechopen.com/source/html/45892/media/image3.png Die Dauer hängt jedoch vom Kristallmaterial ab, und ist in meinem Fall ca. 250ns
Urs schrieb: > Bei meiner Applikation wäre ja > sogar alles was nach der Spitze kommt völlig irrelevant -> Brauch also > weder erfasst noch verarbeitet werden. um zu wissen das es die Spitze war musst du die Daten nach der Spitze auswerten. Die vor der Spitze sind die irrelevanten. Du musst erkennen wann die Ableitung dauerhaft das Vorzeichen geändert hat.
Ich meinte man müsse nach der Spitze triggern, also "abfallende Flanke" und dan die letzte Zeit auswerte wo die Spitze war. Aber wie gesagt, ich suche eigentlich auch Sachkunde zu den Grundkentnissen wie man sowas überhautp macht, und welche Bausteine es dazu gibt. Es gibt X DSP IC's, aber welcher ist der Richtige?
Im Prinzip hast du zwei Möglichkeiten Burstmessung ein Komparator erkennt eine Triggerschwelle starten den ADC mit N Messungen danach sucht ein µC den größten Wert aus den N Samples. = günstig, wenig Flexibel Kontinuierliche Messung der ADC läuft dauerhaft der µC berechnet die Ableitung und erkennt am Vorzeihenwechsel (und anderen Kriterien) den Puls und sein Spitzenwert. = teuer, sehr Flexibel
Du musst einfach nur schnell genug abtasten damit der Abtastzeitpunkt möglichst nah an die "Spitze" rankommt. Sowas in Richtung 100MSPS. Je nachdem wie genau du es brauchst. Dann speicherst du im uC die letzten x-Werte und nimmst den größten (bzw laut Diagramm den kleinsten).
Guten Morgen Ich habe vermutlich zuwenig/ungenaue Informationen genannt. Nochmals eine genaue Beschreibung des Signals. Signal Das Signal das an der Schaltung ankommt kann Spitzen von 100mV bis 900mV haben, und ist etwa 250ns lang. Es ist nicht linear, es steigt schnellt an, und fällt eher langsam ab. Die Maximale Anzahl der Pulse pro Sekunde soll auf 30'000 festgelegt werden. Treffen mehr als 30'000 ein, können die überzähligen "ignoriert" werden, da sie durch längeres "Aufzeichnen" auch registiriert werden. Ich möchte dabei die Signalspitze registrieren und speichern, dessen Einheit/Mass ist irrelevant, da es nur um das Verhältniss geht. Es kann also vorher das Signal verstärkt werden oder ähnliches Fachkunde Ich möchte lernen WIE man soetwas umsetzt. Also wie man ein Spitzenwert Signal praktisch auswertet. Eine Aussage "ADC dauerhaft sampeln lassen und dann den Wert in der Software auswerten" ist mölicherweise korrekt, nur kann ich damit nicht viel anfangen, da ich ja nicht weiss WIE man das Auswertet. Ich suche nach Infos/Beispielen wo sowas gemacht wird, die Signalfrequenz oder Dauer ist für das Beispiel irrelevant, ich möchte doch nur erst mal wissen WIE man sowas löst. Grüsse Urs
Urs schrieb: > Das Signal das an der Schaltung ankommt kann Spitzen von 100mV bis 900mV > haben, und ist etwa 250ns lang. Es ist nicht linear, es steigt schnellt > an, und fällt eher langsam ab. Schau dir das Signal auf einem schnellen DSO an. Stell den Trigger so ein, daß du ein brauchbares Bild erhältst. Dann lässt du dir die Daten z.B. als cvs-Datei ausgeben und suchst darin das Maximum. MfG Klaus
Urs schrieb: > Fachkunde > > Ich möchte lernen WIE man soetwas umsetzt. Also wie man ein Spitzenwert > Signal praktisch auswertet. Eine Aussage "ADC dauerhaft sampeln lassen > und dann den Wert in der Software auswerten" ist mölicherweise korrekt, > nur kann ich damit nicht viel anfangen, da ich ja nicht weiss WIE man > das Auswertet. Die Praxis beruht auf Theorie. Die Theorie, um die es hier geht (digitale Signalverarbeitung), wird dir nicht gefallen, die ist nämlich randvoll mit Mathematik. Aus der Theorie kann man ein paar Fakten und, angepasst an die Praxis, ein paar Daumenregeln ableiten. Wenn man jedoch wissen will wie man es macht, dann sollte man die Theorie dahinter schon grundsätzlich verstanden haben. Man muss die Lösung nämlich auf das Problem zuschneiden. > Ich suche nach Infos/Beispielen wo sowas gemacht wird, > die Signalfrequenz oder Dauer ist für das Beispiel irrelevant, Doch, die sind wichtig, da das Problem die Lösung beeinflusst. > ich > möchte doch nur erst mal wissen WIE man sowas löst. Ok, was hältst du von diesem Beispiel? https://docs.google.com/viewer?url=patentimages.storage.googleapis.com/pdfs/US6100829.pdf Merkst du was? Die Kameraden haben eine sehr spezifische Lösung auf ein spezifisches Problem zugeschnitten. Wir können statt dessen mal die Kernphysiker fragen http://root.cern.ch/root/html/TSpectrum.html Die haben auch gewisse Vorstellungen über Peak-Detection, bzw. je nach Anwendung andere Vorstellungen https://docs.google.com/viewer?url=patentimages.storage.googleapis.com/pdfs/US7123176.pdf Sogar für eine ganz einfache Lösung (analoges Abtast-Halte-Glied vor dem ADC) muss man das zu erwartende Signal verstanden haben um zu erkennen ob es Sinn ergibt das so zu machen und wenn ja das Abtast-Halte-Glied zu dimensionieren.
Im ersten Schritt musst du dir Gedanken machen um die Hardware. Und dafür sind die Zahlen die du nennst enorm wichtig. Da passt wieder etwas nicht mit deinen Zahlen 30000 Signale pro sekunde? Dann wäre ein Impuls nur maximal 33ns lang statt 250ns. Heißt Hauptaufgabe ist es erst einmal dein analoges Signal in irgendeiner Form zu digitalisieren. Dafür braucht man Zahlen. Sobald das Signal digital vorliegt sind die Möglichkeiten in der Software grenzenlos. Also die Auswertung ist dann der zweite Schritte. Die Software dahinter ist für einen totalen Anfänger vielleicht nicht ganz einfach aber sicherlich auch kein Hexenwerk. Du möchtest Beispiele hierzu? Dann kann ich dir sagen. Jede Schaltung dir irgendetwas mit Messtechnik zu tun hat funktioniert genauso so. Du kannst dir ein x-beliebiges Beispiel nehmen um das Grundprinzip zu verstehen.
Antwort schrieb: > Im ersten Schritt musst du dir Gedanken machen um die Hardware. > Und > dafür sind die Zahlen die du nennst enorm wichtig. Da passt wieder etwas > nicht mit deinen Zahlen 30000 Signale pro sekunde? Dann wäre ein Impuls > nur maximal 33ns lang statt 250ns. Nein, ein Signal mit 250ns Pulsdauer und 1ns pause würde in 3.9Millionen Signale pro Sekunde resultieren... bei 30'000 Signalen sind wir irgendwo bei 33uS, nicht ns... Wenn man das Signal sowieso komplett aufzeichnen muss, kann man das ja ganz ohne uC sondern direkt auf dem PC machen?
Urs schrieb: > Nein, ein Signal mit 250ns Pulsdauer und 1ns pause würde in 3.9Millionen > Signale pro Sekunde resultieren... bei 30'000 Signalen sind wir irgendwo > bei 33uS, nicht ns... Ups Asche auf mein Haupt... Aber worum geht es denn hier. Soll bei der Messung jetzt die ganze Zeit ein PC laufen? Möchtest du nur einmal etwas auswerten und gut ist?
Nein klar nicht, darum möchte ich ja das Signal vorher "präparieren". Am Ende der Schaltung soll am besten ein Standart-uC mit Daten bedient werden. Diese "Schnittstelle" soll nur die Pulshöhen übergeben bekommen (also ca. 30k Signale pro Sekunde) und diese dann z.b. in eine Datei auf SD Speichern. SD soll ja mit Atmega und Co bis zu 13Mhz funktionieren, das sollte reichen. Gibt es zb. keine "programmierbare" ADCs die zb. auf einen Trigger-Befehl zb. 100 Samples aufzeichnen?
Urs schrieb: > Eine Aussage "ADC dauerhaft sampeln lassen > und dann den Wert in der Software auswerten" ist mölicherweise korrekt, > nur kann ich damit nicht viel anfangen, da ich ja nicht weiss WIE man > das Auswertet. Das ist ein Anfängerübung im programmieren. der ADC liefert die Wert ein ein Array (Liste) da nimmst du den ersten vergleichst ihn mit dem zweiten den größeren merkst du dir. Den gemerkten vergleichst du mit dem dritten ist der größer merkst du dir den. denn den mit dem vierten usw. am ende der Liste hast du dir den höchsten wert gemerkt. Im Kopf würdest du auch nicht anders machen
Urs schrieb: > Nein klar nicht, darum möchte ich ja das Signal vorher > "präparieren". Am > Ende der Schaltung soll am besten ein Standart-uC mit Daten bedient > werden. Diese "Schnittstelle" soll nur die Pulshöhen übergeben bekommen > (also ca. 30k Signale pro Sekunde) und diese dann z.b. in eine Datei auf > SD Speichern. SD soll ja mit Atmega und Co bis zu 13Mhz funktionieren, > das sollte reichen. > > Gibt es zb. keine "programmierbare" ADCs die zb. auf einen > Trigger-Befehl zb. 100 Samples aufzeichnen? Warum willst du den ADC programmieren wenn du doch einen uC hast auf dem du alles machen kannst?
Was genau sprach jetzt gegen den vorgeschlagenen (schnellen) Schwellwertkomparator? Damit kannst Du, zusammen mit einem möglichst schnellen & präzisen Taktgenerator (TCXO), einfachst genaue, zeitliche Messungen durchführen. Falls super billig -> Int Eingang des uC, falls extra edel -> CPLD/kleines FPGA, dann uC
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.