Fast photo detector

I need to detect flashes of visible light and timing of these is critical (in the order of ms).

If I understand correctly ...

LDRs aren't going to have a nearly quick enough response time.
Photodiodes are probably going to need some sort of amplifier.
So I think the obvious choice is a phototransistor.

Something like the Vishay BPW96C (Datasheet - I'd trasncribe the highlights, but most of the datasheet means little to me and I'm not sure which bits are particularly important.)

Would the following circuit be sufficient?

That looks perfectly reasonable to me.

The sensitivity has a big variability so you probably have to try different resistor values.

Do you mean the sesnetivity of the BPW96C ?
I was thinking of starting with a 10k trim pot and reducing the resistance until I got a useful voltage on the Arduinos analoge input. Then swapping in a fixed resistor. Does that make sense?

Using an analog input might work for testing (finding a proper resistor value), but analog inputs are SLOW!

How slow?
Slower than using a somethng like a LM393 comparator and a digital input?

idrisdraig:
How slow?
Have a look at this for a rough idea of how slow.
Slower than using a somethng like a LM393 comparator and a digital input?
Also have a look at this for info on how to use the internal comparator.

Interesting.
I'll have to give some thought to whether 0.1ms will cause problems.

If I understand correctly, using the onboard comparator might be difficult as it uses D7 and I'm already using that for an LCD's RS. I dare say it's possible to edit the libraries, but I suspect that's a can of worms that may screw things up in the future.

idrisdraig:
I was thinking of starting with a 10k trim pot and reducing the resistance until I got a useful voltage on the Arduinos analoge input. Then swapping in a fixed resistor. Does that make sense?

It does appart from the 10K bit. Start off at 200K.

However photo transistors are not as fast or sensitive as a photo diode dispite them needing amplicacation. You might struggle for range.

For fast flashes you should get something reasonable putting the signal into a digital pin, perhaps
an interrupt pin set up to interrupt on FALLING edge.

You'll find that the phototransistor will have a wide range in speed. The rise and fall time of the signal is highly influenced by the light intensity, light wavelength, and the load resistance (RL - pullup resistor in your circuit).

Notice that in the datasheet, they use RL of 100Ω and infrared light at 950nm to produce the graphs. In fig 6, you can see that the rise/fall total approaches 10µs.

As you try different load resistance, you may find:

[b]R[sub]L[/sub]     Rise+Fall     Max Hz[/b]
100Ω   10µs          100,000
1K     100µs         10,000
10K    1ms           1,000
100K   10ms          100

Yes but the higher the load resistor the more sensitive it is.

True, a higher load resistance will produce a stronger signal with lower light intensity (at the expense of speed). The only way to achieve the highest speed (response) is to have the max light intensity, preferably at 850nm wavelength (infrared) close (and perpendicular) to the phototransistor with RL=100Ω. Depends on how fast the OP requires the output signal to respond.

For bright flashes it will be plenty fast enough turning on - turning off is where
the delays happen due to storage time of minority carriers.