Photon counter (~20E6 pulse/sec counter)

Hi,

I'm working on a project which involves measuring photons from a single-photon source that emits at 20E6 photons/sec. I have access to a fancy detector which will give me a clean analog signal in form of a pulse when it detects a photon.

Is there any way to read that signal (rising-edge) using Arduino or any other microcontroller?

Thank you.

Edit: changed 100E6 to 20E6 pulse/sec.

Not at 100 MHz.

What would you do with the counts?

jremington: Not at 100 MHz.

Not true - you can use an interrupt driven counter on something like a Teensy 4.0 with a ridiculous clock speed.

No, certainly not an interrupt driven counter, on ANY computer.

A counter with an external clock input could work, if it were spec'd for well over 100 MHz.

jremington: What would you do with the counts?

It's a physics experiment, I just need the count rate every 0.1 seconds.

Most people use specialized counters for experiments like that.

If it is for a physics lab, they will have the equipment you need.

jremington: Most people use specialized counters for experiments like that.

If it is for a physics lab, they will have the equipment you need.

I have access to specialized counters but I can't use those for this project. I'm designing a lab setup for undergrads on a limited budget.

Filter the signal in hardware and correlate the analog output of the filter to average photons detected. This will take some calibration to figure out the conversion factor, but it certainly is possible

Power_Broker: Not true - you can use an interrupt driven counter on something like a Teensy 4.0 with a ridiculous clock speed.

I was thinking of using Teensy 4.0. Could you please elaborate on the interrupt-driven counter?

jremington: A counter with an external clock input could work, if it were spec'd for well over 100 MHz.

Please provide some examples or links. Are you talking about AVRs? I have no experience with them.

What is the electrical output specification of the photon counter?

An interrupt driven counter WILL NOT WORK at 100 MHz. Interrupts have far too much overhead.

To see if the Teensy 4.0 can be used, consult the Cortex-M7 processor data sheet to see if there is a timer/counter with an external clock input that can be clocked directly by your detector.

The lowly Arduino Uno has one, for Timer1, but it can be clocked at 8 MHz maximum. The ATmega328 data sheet has the details.

Consider using a neutral density filter to reduce the photon count rate.

Do you need a resolution of 1 part in 1E7?
If not use a hardware divider chip to reduce the count rate to something more manageable.

Blackfin: What is the electrical output specification of the photon counter?

The photon counter gives a pulse of amplitude 3V, with ~15ns pulse width.

jremington:
An interrupt driven counter WILL NOT WORK at 100 MHz. Interrupts have far too much overhead.

To see if the Teensy 4.0 can be used, consult the Cortex-M7 processor data sheet to see if there is a timer/counter with an external clock input that can be clocked directly by your detector.

The lowly Arduino Uno has one, for Timer1, but it can be clocked at 8 MHz maximum. The ATmega328 data sheet has the details.

Consider using a neutral density filter to reduce the photon count rate.

Yeah, using ND filters is the last resort. I’ll check Cortex-M7 datasheet, do you have any other microcontroller in mind that can do better than 8 MHz? Thanks.

shandilya: The photon counter gives a pulse of amplitude 3V, with ~15ns pulse width.

Do you know anything more?

Is it analog? 50-ohm? Single-ended or differential? If digital is it HCL, ECL or ... ? Is the output a BNC or a specialized high-speed digital connector?

I'm doubting that, for this sort of frequency, the output is a single-ended 3V square wave that can be directly connected to any microcontroller counter input pin; signal integrity on PCBs and interconnecting cables is definitely a thing for VHF. Even if you find a uC with the digital capability you may need an interface circuit of some sort.

Blackfin: Do you know anything more?

Is it analog? 50-ohm? Single-ended or differential? If digital is it HCL, ECL or ... ? Is the output a BNC or a specialized high-speed digital connector?

I'm doubting that, for this sort of frequency, the output is a single-ended 3V square wave that can be directly connected to any microcontroller counter input pin; signal integrity on PCBs and interconnecting cables is definitely a thing for VHF. Even if you find a uC with the digital capability you may need an interface circuit of some sort.

Yes, it is analog, 50 Ohm. The output is BnC. I'm not sure about single-ended or differential. We can look at the pulse profile on the standard lab oscilloscope with a low enough rate if that answers the question in any way.

Yeah, interfacing is also an issue, but I didn't mention that in this post.

fancy detector which will give me a clean analog signal in form of a pulse when it detects a photon.

Is there any way to read that signal (rising-edge) using Arduino or any other microcontroller?

You mention analog and rising edge... Really, what is the outputs relationship to the beam count?

Why does the pulse rate in the post title keep changing?

Please take a few moments to carefully investigate your apparatus, and give us the [u]correct details[/u] about your project and the requirements.

A 15ns pulse width, assuming a 50% duty cycle is 33Mhz.

If you get one pulse per photon of light, that would be a maximum of 33,000,000 photons per second.

A 0.1mW laser emits 3,400,000,000,000,000 photons in 1 second. (link).

Something seems a bit off. Until we have a link to the actual detector, we can't really help much more.