Forum: Mikrocontroller und Digitale Elektronik Signalauswertung (Puls-Höhen-Ermittlung)


von Pius W. (piusw)


Lesenswert?

Guten Abend,

Ich möchte hier meinen ersten Post erstlellen, da ich über das Forum 
bereits bei vielen kleinen Projekten gute Ideedn und Tipps gefunden 
habe. Nun möchte ich mich auch "Neuland" begeben.

Fachkenntnisse besitzte ich leider aktuell Hauptsächlich in sogenannten 
"I/O-Devices" also z.b. Digitale I/O's über Schnittstellen oder einfache 
Ansteuerungen uns Auswerten von Sensoren. Dazu kommt 
Programmierkenntniss auf AVR sowie STM32 (C++, C#)


Privat Interessiere ich mich ebenfalls für Radioaktivitä, speziell für 
Gammaspektrometrie. Dies ist als "Hobbyuser" leider etwas schwierig zu 
machen, da man entweder vollkommen überteuerete Ausrüstung (+5k€) 
benötigt oder sich auf die aktuellen Hobbylösungen verlassen muss. Die 
bekannteste Hobbylösung ist das Signal des Detektors (PMT) mit einer 
Soundkarte zu erfassen. Hier sind aktuell nur Sampleraten bis 384kHz 
16bit möglich. Ebenfalls haben fast alle Programme ihre Problemchen.

Ich kann mir vorstellen das es auf dem Markt sicher halbwegs bezahlbahre 
Hardware gibt, welche mit dem Eingangsignal klarkommt und genügend 
performante Controller (ob MCU oder ähnlich) gibt.

Grundsätzlich ist die Anforderung an an solches System folgende:

1.) Signal erkennen
2.) Signal aufzeichnen
3.) Pulshöhe ermitteln
4.) Fehler unterdrücken
5.) Ausgabe auf Schnittstelle bzw. weitere Verabreitung der Daten


Nun habe ich einige Fragen:

1.)
Der erste Ansatz wäre das Signal mittels zwei Coomparators zu erkennen, 
also steigende und fallende Flanke über/unter einer Referenz. Steigt das 
Signal über die Schwelle wird solange gesampelt bis es wieder unter die 
Schwelle fällt. Danach können die Daten ausgewertet werden.

Nun frage ich mich, ob sowas heute "noch" Stand der Technik ist, oder ob 
es möglich ist die Pulse per Software zu erkennen, so kann man sich den 
Schwellwert schenken, welcher ja verstellbar sein müsste (poti,DAC).In 
einem Oszilloskop sind die "Trigger" vermutlich ja auch nichtmehr in 
Hardware ausgeführt.

2.)
Mit welcher Samplerate sollte man rechnen, wenn man die Pulse per ADC 
samplen möchte?
Ein Puls ist ca. 10-50us lang:
http://physicsopenlab.org/wp-content/uploads/2017/09/csp2.bmp

Die Samplerate muss ja genug gross sein um die Spitze zu samplen.
In der Annahme das ein Signal 10us lang ist, und kontinuierlich pulst, 
wären das umgerechnet rund 100kHz. würde man man nun einen 25MSPS ADC 
verwenden, würde man ja 250 Samples pro Puls erhalten. Wäre das Signal 
dann 50us lang, wären es 1250 Samples pro Puls. Wäre das möglich, oder 
muss die Samplerate noch viel höher sein? ADC's über 25MSPS werden 
bereits sehr teuer oder schwer erhältlich

3.)
Welche Controllerleistung wäre für so einen ADC überhaupt tauglich. Geht 
man davon aus, das man die Daten erst nach dem samplen auswertet, kann 
es sein eine nicht unbeachtliche Datenmenge anfällt.

Beispiel: 1250 Samples * 24bit = 3.75kbyte an Daten, die innert 50us 
auflaufen. Das nächste Problem ist sicherlich auch die Clock-Rate den 
bei 24bit @ 24MSPS müsste man ja mit 600M die Daten abführen. Sowas kann 
kein aktueller MCU.

Habe ich das korrekt eingeschätzt oder gibt es einen Denkfehler. Falls 
korrekt, was für Controller werden hierzu eingesetzt. Z.b. bei einem 
Oszilloskop werden ja noch viel höhere Sampleraten schon bei den 
"Startermodellen" gefahren (z.b. 70Mhz, 100Mhz).


4.)Hat man die Daten erst mal vorliegen, muss man ja irgendwie die 
Signalhöhe ermitteln. Ich gehe hier davon aus das hier nicht nur eine 
Suche nach dem Maximum ausgeführt wird, sondern weit komplizierte 
Mathematik. Eine einfache suche nach dem Maximum wäre ja wie folgt 
simpel zu programmieren

if (sample[n] > max){
    max = sample[n];
}

das erscheint mir viel zu einfach. Ich meinte ich hatte schon sachen 
gelesen wo das Signal mittels Mathematik analysiert wird. Kann mir 
jemand vieliecht eine Hilfestellung geben, wo ich informationen zu 
dieser Art von Mathematik finden kann?



Soviel mal fürs erste :)
Ich hoffe nun, das mir hier jemand mit den genannten Punkten 
weiterhelfen oder Aussagen dazu machen kann!

Vielen Dank
Grüsse
Pius

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Schaue dir doch mal diesen Beitrag hier an, klassisch analog :-)
Beitrag "Re: Vierkanal Beta, Gamma Detektor mit BPW 34 Photodioden"

von Pius W. (piusw)


Lesenswert?

Joe G. schrieb:
> Schaue dir doch mal diesen Beitrag hier an, klassisch analog :-)
> Beitrag "Re: Vierkanal Beta, Gamma Detektor mit BPW 34 Photodioden"

Leider finde ich dort nichts über die Auswertung. Und klassisch "analgo" 
wird nur bis zum Digitalisierer sein. Denn irgendwie müssen die Daten ja 
digital an den PC übertragen werden.

von GEKU (Gast)


Lesenswert?

Pius W. schrieb:
> bei einem Oszilloskop werden ja noch viel höhere Sampleraten schon bei
> den "Startermodellen" gefahren (z.b. 70Mhz, 100Mhz)

aber meist nur mit 8 Bit

von Nosnibor (Gast)


Lesenswert?

Die Oszilloskope arbeiten typischerwiese nur mit 8 Bit; das ist ein 
bißchen wenig für ein Gammaspektrum. Wenn sie digital triggern, dann 
wird das wohl in einem FPGA passieren, damit es schnell genug reagiert.
Der nächste Schritt nach dem Triggern wäre dann wohl, in den 
gespeicherten Samples den Puls zu erkennen und eine Gaußkurve zu fitten, 
wenn einem das einfache Maximum nicht gut genug ist. Solange die 
Software am Rechnen ist, darf kein zweiter Puls kommen, weil der 
ignoriert würde; das ist dann eben die Totzeit.

Wenn das zu viel digitaler Aufwand ist, muß man der Analogseite mehr 
vertrauen: die begrenzte Bandbreite der Verstärker wird den Impuls schon 
passend formen, und es gibt seit Jahrzehnten bewährte Schaltungen für 
Sample&Hold und Trigger, so daß der Maximalwert dem A/D-Wandler 
zugeführt wird. Da dann für jeden Impuls nur noch ein Wandlungsvorgang 
nötig ist, darf der auch etwas länger dauern und wird dementsprechend 
eine höhere Auflösung haben.

von Falk B. (falk)


Lesenswert?

Pius W. schrieb:
> Fachkenntnisse besitzte ich leider aktuell Hauptsächlich in sogenannten
> "I/O-Devices" also z.b. Digitale I/O's über Schnittstellen oder einfache
> Ansteuerungen uns Auswerten von Sensoren. Dazu kommt
> Programmierkenntniss auf AVR sowie STM32 (C++, C#)

Dann ist das Projekt aus Hardwaresicht für dich mindestens 2 Nummern zu 
groß.

> 1.) Signal erkennen
> 2.) Signal aufzeichnen
> 3.) Pulshöhe ermitteln
> 4.) Fehler unterdrücken
> 5.) Ausgabe auf Schnittstelle bzw. weitere Verabreitung der Daten

Um von einem 10-50us Puls ein Maximum zu ermittlen, braucht man nicht 
zwingend eine volldigitale Lösung, auch wenn die Profis das heute so 
machen würden. Als vereinfachen Amateuransatz kann man auch einen 
schnellen Spitzenwertdetektor nutzen.

> Der erste Ansatz wäre das Signal mittels zwei Coomparators zu erkennen,
> also steigende und fallende Flanke über/unter einer Referenz. Steigt das
> Signal über die Schwelle wird solange gesampelt bis es wieder unter die
> Schwelle fällt. Danach können die Daten ausgewertet werden.

So in etwa.

> Nun frage ich mich, ob sowas heute "noch" Stand der Technik ist, oder ob
> es möglich ist die Pulse per Software zu erkennen, so kann man sich den
> Schwellwert schenken, welcher ja verstellbar sein müsste (poti,DAC).In
> einem Oszilloskop sind die "Trigger" vermutlich ja auch nichtmehr in
> Hardware ausgeführt.

Irrtum. Gerade wenn es schnell und genau sein soll, kommt man um 
Hardware nicht herum. Wozu auch?

> Mit welcher Samplerate sollte man rechnen, wenn man die Pulse per ADC
> samplen möchte?
> Ein Puls ist ca. 10-50us lang:
> http://physicsopenlab.org/wp-content/uploads/2017/09/csp2.bmp

Die Pulsbreite ist hier fast egal, dann das Maximum wird DEUTLICH 
schneller erreicht. Hier ist die minimale Anstiegszeit entscheidend. Die 
kann man auf dem Bild nur schätzen, vielleicht 100-1000ns?

> Die Samplerate muss ja genug gross sein um die Spitze zu samplen.
> In der Annahme das ein Signal 10us lang ist, und kontinuierlich pulst,
> wären das umgerechnet rund 100kHz. würde man man nun einen 25MSPS ADC
> verwenden, würde man ja 250 Samples pro Puls erhalten. Wäre das Signal
> dann 50us lang, wären es 1250 Samples pro Puls. Wäre das möglich, oder
> muss die Samplerate noch viel höher sein?

Siehe oben. Die Anstiegszeit ist das Kriterium.

> ADC's über 25MSPS werden
> bereits sehr teuer oder schwer erhältlich

Nicht wirklich. Aber vor allem fehlt dir das Wissen und die Erfahrung, 
diese gescheit zu nutzen. Wenn man dich in ein Formel 1 Auto setzt, 
wirst du auch nur mit Müh und Not das Rennen beenden, von einer 
Platzierung ganz zu schweigen ;-)

> Welche Controllerleistung wäre für so einen ADC überhaupt tauglich.

Gar keine, denn sowas steuert man per FPGA an.

> Geht
> man davon aus, das man die Daten erst nach dem samplen auswertet, kann
> es sein eine nicht unbeachtliche Datenmenge anfällt.

Kommt auf die Pulswiderholrate an.

> Beispiel: 1250 Samples * 24bit = 3.75kbyte an Daten, die innert 50us
> auflaufen. Das nächste Problem ist sicherlich auch die Clock-Rate den
> bei 24bit @ 24MSPS müsste man ja mit 600M die Daten abführen. Sowas kann
> kein aktueller MCU.

Und du glaubst ernsthaft, daß ein 24 Bit ADC mit 25 Msps arbeitet ? 
Dream on.


> Habe ich das korrekt eingeschätzt


Nö.

> oder gibt es einen Denkfehler.

Mehrere.

> Signalhöhe ermitteln. Ich gehe hier davon aus das hier nicht nur eine
> Suche nach dem Maximum ausgeführt wird, sondern weit komplizierte
> Mathematik.

Tja, DAS ist eine entscheidende Frage. Wenn man nur das Maximum braucht, 
reicht ein analoger Spitzenwertdetektor. Wenn man den Kurvenverlauf 
braucht, muss es fast eine (voll)digitale Lösung sein.

> Ich hoffe nun, das mir hier jemand mit den genannten Punkten
> weiterhelfen oder Aussagen dazu machen kann!

Mein Tipp. Besorg die eines der preiswerten Picoscopes, die haben 12, 
teilweise 16 Bit Auflösung für kleines Geld. Damit kannst du relativ 
leicht die Pulse erfassen und dann beliebig langsam am PC analysieren. 
Alles andere, vor allem in bezug auf die Hardwareenetwicklung, 
übersteigt deine aktuellen Fähigkeiten um Größenordnungen.

von Pius W. (piusw)


Lesenswert?

Falk B. schrieb:
> Um von einem 10-50us Puls ein Maximum zu ermittlen, braucht man nicht
> zwingend eine volldigitale Lösung, auch wenn die Profis das heute so
> machen würden. Als vereinfachen Amateuransatz kann man auch einen
> schnellen Spitzenwertdetektor nutzen.

Sind den Spitzenwertdetektoren sehr genau?

> Irrtum. Gerade wenn es schnell und genau sein soll, kommt man um
> Hardware nicht herum. Wozu auch?

Ich war nur verwundert, warum alle professionellen Lösungen 
Digitalbausteine, ja sogar ASICS verwenden um soetwas zu erreichen. 
Irgendwo muss ja bei der "Hardware" ein Problem enstehen, das man sich 
entscheided einen ASICS zu bauen, oder CPLD's zu verwenden.

Ein Grund sehe ich darin, das es mit Hardware immer an diverse 
Limitationen gebunden ist, bei einer Softwarelösung ist lediglich die 
Maximaleingangspauung des ADC's entscheidend.



>> Mit welcher Samplerate sollte man rechnen, wenn man die Pulse per ADC
>> samplen möchte?
>> Ein Puls ist ca. 10-50us lang:
>> http://physicsopenlab.org/wp-content/uploads/2017/09/csp2.bmp
>
> Die Pulsbreite ist hier fast egal, dann das Maximum wird DEUTLICH
> schneller erreicht. Hier ist die minimale Anstiegszeit entscheidend. Die
> kann man auf dem Bild nur schätzen, vielleicht 100-1000ns?
>
>> Die Samplerate muss ja genug gross sein um die Spitze zu samplen.
>> In der Annahme das ein Signal 10us lang ist, und kontinuierlich pulst,
>> wären das umgerechnet rund 100kHz. würde man man nun einen 25MSPS ADC
>> verwenden, würde man ja 250 Samples pro Puls erhalten. Wäre das Signal
>> dann 50us lang, wären es 1250 Samples pro Puls. Wäre das möglich, oder
>> muss die Samplerate noch viel höher sein?
>
> Siehe oben. Die Anstiegszeit ist das Kriterium.
>
>> ADC's über 25MSPS werden
>> bereits sehr teuer oder schwer erhältlich
>
> Nicht wirklich. Aber vor allem fehlt dir das Wissen und die Erfahrung,
> diese gescheit zu nutzen. Wenn man dich in ein Formel 1 Auto setzt,
> wirst du auch nur mit Müh und Not das Rennen beenden, von einer
> Platzierung ganz zu schweigen ;-)


>> Welche Controllerleistung wäre für so einen ADC überhaupt tauglich.
>
> Gar keine, denn sowas steuert man per FPGA an.

Ich habe hier extra "Controller" geschrieben, da ich ja nicht wusste 
welche Technologien eingesetzt werden könnten. Ein FPGA ist natürlich 
eine Aussage. Was ist denn genau die Aufgabe eines FPGA in dieser 
Applikation? Mir wurde mal vermittelt, das FPGA vorallem dann zum 
Einsatz kommen, wenn extrem schnelle, aber sehr einfache Prozesse 
notwendig sind. Für komplexe Aufgaben wie Mathematische Funktionen sind 
sie eher nicht geignet.

Würde der FPGA in diesem Fall einfach den ADC bedienen, und dann die 
rohen Pulsdaten ein einen weiteren Controller zur Auswertung senden? Ich 
meinte sowas habe ich bei einer Professionellen lösung schonmal gesehen, 
dort hängt ein grosser Altera Baustein (Typ leider abgefräst) an einem 
8051 MCU.


>> Beispiel: 1250 Samples * 24bit = 3.75kbyte an Daten, die innert 50us
>>auflaufen. Das nächste Problem ist sicherlich auch die Clock-Rate den
>> bei 24bit @ 24MSPS müsste man ja mit 600M die Daten abführen. Sowas kann
>> kein aktueller MCU.
>
> Und du glaubst ernsthaft, daß ein 24 Bit ADC mit 25 Msps arbeitet ?
> Dream on.

Das war eine Beispielhafte annahme. Da ich weiss das  es 1G/s 16bit ADC 
gibt, dachte ich mir 24bit /25MSPS sein ein klax, aber du hast recht! Es 
geht wohl auch da nur bis 16 bit.


>> Signalhöhe ermitteln. Ich gehe hier davon aus das hier nicht nur eine
>> Suche nach dem Maximum ausgeführt wird, sondern weit komplizierte
>> Mathematik.
>
> Tja, DAS ist eine entscheidende Frage. Wenn man nur das Maximum braucht,
> reicht ein analoger Spitzenwertdetektor. Wenn man den Kurvenverlauf
> braucht, muss es fast eine (voll)digitale Lösung sein.
>

Ich könnte mir sogar vorstellen, das die volle Signalhöhe garnicht 
vorhanden sein kann, sondern das auf Grund des auf und abteigenden 
Signals die Höhe theoretisch errechnet wird. Nehmen wir an du hast 50Hz 
Sinus, und schneidest den oberen teil des Sinus ab (weil dein ADC den 
oberen bereich nicht messen kann). So wäre es doch mathematisch noch 
möglich, den Sinus "nachzubilden" wenn du eine art Fenster vom aufstieg 
und abstieg hättest, sowie die Pulsdauer, nicht?

Ich sehe vorallem das Problem, das die meisten ADC einen extrem kleinen 
Eingangspannungsbereich bestitzen. Ofmals 3V oder weniger.

Rechnet man das wie folgt um:

Zu messender Gamma-Bereich 0keV bis 4000keV, sind das bereits 4000 
mögliche Werte. Das sind ja schonmal 12bit.
Rechnet man das jett z.b. auf eine Referenzspannung von 2500mV herunter, 
wäre die Auflösung eines Pulses lediglich 0.6mV. Ich könnte mir 
vorstellen das man da arge Probleme mit der Genauigkeit bekommt.



Ich habe ein Handbuch eines Professionellen Gerätes gefunden, auch mit 
ein paar Schemadeteils, der komplette Schaltplan fehlt natürlich :)
http://atomfizika.elte.hu/muszerek/Amptek/Documentation/User%20Manuals/DP5%20User%20Manual.pdf

Vorallem die Info zu dem Grossen Schwarzen IC, was mit unter nur für 
Amptek produziert wird.

von Falk B. (falk)


Lesenswert?

Pius W. schrieb:

>> machen würden. Als vereinfachen Amateuransatz kann man auch einen
>> schnellen Spitzenwertdetektor nutzen.
>
> Sind den Spitzenwertdetektoren sehr genau?

Was ist denn "sehr genau"? Und glaubst DU, daß du als Hobbybastler mit 
magerem Elektronikwissen eine ""state of the art" Lösung brauchst und 
vor allem hinkriegst?

Keine Ahnung wie genau so ein schneller Spitzenwertdetektor ist, ich 
tippe mal 10 Bit und etwas mehr Auflösung und Genauigkeit wird man 
schon schaffen, wenn man weiß was man tut.

>> Irrtum. Gerade wenn es schnell und genau sein soll, kommt man um
>> Hardware nicht herum. Wozu auch?
>
> Ich war nur verwundert, warum alle professionellen Lösungen
> Digitalbausteine, ja sogar ASICS verwenden um soetwas zu erreichen.

Ja eben WEIL man es in Hardware machen will/muss!

> Irgendwo muss ja bei der "Hardware" ein Problem enstehen, das man sich
> entscheided einen ASICS zu bauen, oder CPLD's zu verwenden.

Bist du so schwer von Begriff?

> Ein Grund sehe ich darin, das es mit Hardware immer an diverse
> Limitationen gebunden ist, bei einer Softwarelösung ist lediglich die
> Maximaleingangspauung des ADC's entscheidend.

Träumer!

>> Gar keine, denn sowas steuert man per FPGA an.
>
> Ich habe hier extra "Controller" geschrieben, da ich ja nicht wusste
> welche Technologien eingesetzt werden könnten. Ein FPGA ist natürlich
> eine Aussage. Was ist denn genau die Aufgabe eines FPGA in dieser
> Applikation?

Ja was wohl? Den ADC anzusteuern und die Daten zu verarbeiten!

> Mir wurde mal vermittelt, das FPGA vorallem dann zum
> Einsatz kommen, wenn extrem schnelle,

Ja.

> aber sehr einfache Prozesse
> notwendig sind.

Nein. Auch FPGAs machen schon komplexe Steuerungen und 
Signalverarbeitungen.

> Für komplexe Aufgaben wie Mathematische Funktionen sind
> sie eher nicht geignet.

Das stimmt so allgemein nicht, wenn gleich im Extremfall eine 
Softwarelösung in bezug auf komplexe Algorithmen irgendwann mehr kann, 
wenn gleich deutlich langsamer.

> Würde der FPGA in diesem Fall einfach den ADC bedienen, und dann die
> rohen Pulsdaten ein einen weiteren Controller zur Auswertung senden?

Kann man machen. Man kann aber auch einen guten Teil der Vorverarbeitung 
ins FPGA packen, das vermindert vor allem die Datenrate zu den 
nachfolgenden Verarbeitungsstufen, hier CPU etc.

> Ich
> meinte sowas habe ich bei einer Professionellen lösung schonmal gesehen,
> dort hängt ein grosser Altera Baustein (Typ leider abgefräst) an einem
> 8051 MCU.

Ja, der 8051 ist nur der "Hausmeister", welcher den eigentlichen "Star", 
das FPGA betreut. 95% der Verarbeitung macht der FPGA.

>> Und du glaubst ernsthaft, daß ein 24 Bit ADC mit 25 Msps arbeitet ?
>> Dream on.
>
> Das war eine Beispielhafte annahme. Da ich weiss das  es 1G/s 16bit ADC
> gibt,

Wirklich? Wo? Ich glaube kaum, daß die bei 1Gsps ECHTE 16 Bit 
Genauigkeit erreichen. Da ist viel Marketingblabla dabei.

> dachte ich mir 24bit /25MSPS sein ein klax, aber du hast recht! Es
> geht wohl auch da nur bis 16 bit.

Und selbst das ist bei 25 Msps SEHR sportlich!

> Ich sehe vorallem das Problem, das die meisten ADC einen extrem kleinen
> Eingangspannungsbereich bestitzen. Ofmals 3V oder weniger.

Quark. 3V ist ein RIESIGES Signal!

> Zu messender Gamma-Bereich 0keV bis 4000keV, sind das bereits 4000
> mögliche Werte. Das sind ja schonmal 12bit.

Mag sein, aber in den meisten Fällen gibt es umschaltbare Meßbereiche, 
wie sie jedes Multimeter kennt.

> Rechnet man das jett z.b. auf eine Referenzspannung von 2500mV herunter,
> wäre die Auflösung eines Pulses lediglich 0.6mV. Ich könnte mir
> vorstellen das man da arge Probleme mit der Genauigkeit bekommt.

Naja, deine Vorstellungswelt ist auch etwas naiv.

http://atomfizika.elte.hu/muszerek/Amptek/Documentation/User%20Manuals/DP5%20User%20Manual.pdf

Naja, ganz nett, aber eher untypisch. In solchen Dokumenten für den 
Anwender gibt es sinnvollerweise Blockschaltbilder. Ein echter 
Schaltplan ist wenig sinnvoll, erstens weil es die Masse der Anwender 
weder daran interessiert ist noch sie damit was anfangen können. Und 
außerdem will man ja dem Wettbewerber nicht gleich alles auf dem 
Silbertablett präsentieren, wenn gleich die Grundstrukturen kein 
Geheimnis sind.

> Vorallem die Info zu dem Grossen Schwarzen IC, was mit unter nur für
> Amptek produziert wird.

Möglich, aber eher unwahrscheinlich. Für sowas nimmt man heute ein FPGA, 
das ist vor allem bei kleinen und mittleren Stückzahlen DEUTLICH 
billiger und schneller entwickelt als ein ASIC. Den nimmt man nur bei 
SEHR großen Stückzahlen oder wenn man WIRKLICH eine extrem schnelle 
Schaltung braucht.

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
Noch kein Account? Hier anmelden.