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