Forum: Mikrocontroller und Digitale Elektronik Impulshöhenanalysator im einem Mikrocontroller (FRDM-K64F) realisierbar?


von Erwin M. (nobodyy)


Lesenswert?

Ich habe einige MCs, beispielsweise einen FRDM-K64F, und möchte damit 
einen Impulshöhenanalysator machen, beispielsweise für ein 
Gammaspektrometer, also Pulse mit einer Länge von 1 µs oder kleiner.
Ein bischen Software, neben einen angeschlossenen Szintillationszähler 
als Hardware, wird wohl nicht reichen, weil man es nicht schafft alle 10 
ns die Spannung abzutasten, oder?

Gibt es irgendwo ein Beispiel für einen Impulshöhenanalysator mit einem 
MC das man als Vorlage nehmen könnte?

von Georg (Gast)


Lesenswert?

Erwin Meyer schrieb:
> weil man es nicht schafft alle 10
> ns die Spannung abzutasten, oder?

Jedenfalls nicht mit einem Microcontroller. Was brauchst du denn genau, 
die Spitzenhöhe oder auch den zeitlichen Verlauf? Möglicherweise könnte 
man die Impulse verlängern durch externe Vorverarbeitung, etwa wie ein 
Spitzengleichrichter, so dass mehr Zeit zum Messen bleibt. Kommt drauf 
an, wie schnell die Pulse aufeinanderfolgen.

Georg

von Uwe Bonnes (Gast)


Lesenswert?

Wie genau soll es den werden?
Und ohne einen Stretcher wird es wohl nichts. Der schnellste On-Chip ADC 
ist ein 12-bit 50 MHz ADC auf dem LPC4370. Bei den kurzen Impulsen von 
Plastikszintillatoren sind die Chancen gross, dass Du die Impulse 
uebersiehst. Und die Datenrate ist dann fuer den ARM  schon recht hoch.

Ich versuche gerade mit einem STM32F3 Photomultiplier Impulse zu 
erfassen.
Die Pulse laufen in ladungsempfindliche OPAMPs und werden dann CR-RC^4 
gefiltert. Eine Auswertung ist dann die Koinzidenzauswertung zweier 
solcher Kanaele. Einer der Pfade geht auch auf einen 
Spitzenwertgleichrichter mit Haltekondensator und gesteuerter Entladung. 
Mit einem 1 nF Kondensator als Haltekondensator sieht es nach dem 
Stretcher am Scope schon schon recht ordentlich aus. Jetzt fehlt noch 
die ADC Erfassung der Spannung nach dem Stretcher.

Fallgruben:
- Der Ausgang des OPs des Spitzenwertgleichrichter rauscht nach der 
Spitze in die andere Richtung. Ueber die Kapazitaet der 
Gleichrichterdiode gibt das mit dem Haltekondensator eine kapazitiven 
Spannungsteiler, der den Spitzenwert verfaelscht. Mit BAV99 und 100 pF 
war das auch am Scope deutlich zu sehen. Den Groesse des Effektes bei 
BAV99 und 1 nF muss die Messung zeigen.

- Irgend eine Diskriminierung muss sagen, wann ein Ereigniss vorliegt. 
Eine Schwelle am Gaussimpuls triggert eine von der Pulshoehe abhaengige 
Zeit vor der Spitze des Signales. Gleichzeitig wird der Haltekondensator 
von Leckstroemen entladen. Falls man also nach einer festen Zeit nach 
dem Trigger die ADC Werte auswertet, bekommt man 
Triggerschwellenabhaengige Messwerte. Das wird aber trotzdem mein erster 
Ansatz sein.

von Erwin M. (nobodyy)


Lesenswert?

Georg schrieb:
> Erwin Meyer schrieb:
>> weil man es nicht schafft alle 10
>> ns die Spannung abzutasten, oder?
>
> Jedenfalls nicht mit einem Microcontroller. Was brauchst du denn genau,
> die Spitzenhöhe oder auch den zeitlichen Verlauf?

Ich brauche nur die Spitzenhöhe, denn die gibt die Gamma-Energie wieder.

von Noch einer (Gast)


Lesenswert?

Wie hoch muss eigentlich die ADC-Auflösung sein?

Vielleicht umgekehrt - mit Timern statt ADC. Für jede Stufe eine 
Schwelle und dahinter die Impulse mit Timern im Capture-Mode zählen.

von Erwin M. (nobodyy)


Lesenswert?

Noch einer schrieb:
> Wie hoch muss eigentlich die ADC-Auflösung sein?
>
> Vielleicht umgekehrt - mit Timern statt ADC. Für jede Stufe eine
> Schwelle und dahinter die Impulse mit Timern im Capture-Mode zählen.

Das Spektrum sollte mindestens 128 Punkte haben, also mindestens 7 Bit 
Auflösung. Üblich sind 1024 Punkte, also 10 Bit.
Für die 128 Punkte bräuchte man 128 Timer, oder?

: Bearbeitet durch User
von Nosnibor (Gast)


Lesenswert?

Noch einer schrieb:
> Wie hoch muss eigentlich die ADC-Auflösung sein?
>
> Vielleicht umgekehrt - mit Timern statt ADC. Für jede Stufe eine
> Schwelle und dahinter die Impulse mit Timern im Capture-Mode zählen.

Anderswo nennt man das Flash-ADC: 2^n Komparatoren sorgen sehr schnell 
für ein n-bit-Ergebnis. Möchte man aber meist nicht selber zusammenlöten 
müssen.

Wenn viel Zeit für die Messung zur Verfügung steht, kann man natürlich 
auch einen klasischen single-channel-analyzer bauen: ein Komparator 
entscheidet, welche Impulse gezählt werden. Man liest dann nach einer 
Weile den Zähler ab und verstellt die Komparatorschwelle, usw., solange 
die Geduld reicht.

Etwas besseres als ein Spitzenwertgleichrichter usw. fällt mir auch 
nicht ein.
Höchstens als moderne hacker-style Alternative: man nehme ein billiges 
Digital-Oszi und programmiere das FPGA und die Firmware geeignet um, so 
daß das FPGA die Spitzenwerterkennung und die Firmware das Zählen 
übernimmt. Da ist man dann allerdings auf die 8 bit des eingebauten 
schnellen ADCs beschränkt. Naja, ein bißchen was kann man vielleicht 
noch durch irgendeine geschickte Kurvenanpassung rausrechnen...

von Ulrich H. (lurchi)


Lesenswert?

An sich steckt die Energie in der Fläche unter dem Peak. Da die 
Kurvenform fest ist, kann man natürlich auch die Spitzenhöhe nehmen. In 
Grenzen kann man die Peaks durch Filterung auch etwas verlängern und so 
zwischen maximaler Zählrate und Aufwand für die Messung einen Kompromiss 
finden.

Ein schneller ADC und dann rein in Software/FPGA ist heute tatsächlich 
eine Option. Ein 8 Bit ADC könnte da schon reichen, denn man hat 
deutlich mehr als 1 Wert für den Peak.

Sonst halt analog mit Spitzenwertgleichrichtung. Die Haltezeit muss in 
der Regel nicht so riesig werden, halt nur einige µs bis der ADC messen 
kann. Dazu ist die Verzögerung auch noch relativ konstant. So wirklich 
trivial ist die Spitzenwertschaltung trotzdem nicht. Wenn dabei jeweils 
ein gewisser Teil der Ladung etwa über die Kapazität der Diode wieder 
abfließt ist das kein so großes Drama - der Effekt ist immerhin 
reproduzierbar.

Für Pulse mit ein paar µs Länge hab ich so etwas schon mal gemacht, mit 
Peak Detektor und einem kleinen 8 bit AVR. Der µC bzw. ADC begrenzt ggf. 
die maximale Rate, ist aber nicht so kritisch.

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.