Precise Light Intensity Measurement Photodiode/OpAmp

For the measurement of the transparency of differently structured glass I want to measure the change of lightintensity of a HeNe Laser shining through the glass, using a photodiode. I am using the following setup from a blog (Fotodiode am Transimpedanzverstärker – Blog von Familie Jörg):
(Disclaimer:
this is my first programming and electronics project, I do not fully understand all thats going on in this setup and might oversee an obvious soluition :grimacing:)

  1. TLC271ACP OpAmp
  2. BPW 34 Photodiode
  3. Metalresistor 100Ohm Resistor (100kOhm was suggested but while trying other resistors 100 Ohm was giving me the least noisy signal)
  4. 10pF Ceramic condensator
int lightintensity; 
void setup() {    
  pinMode(A0, INPUT);    
  Serial.begin(9600); 
} 
 
void loop() {    
  lightintensity = analogRead(A0);    
  Serial.println(lightintensity);    
  delay(10); 
}

this setup and code is resulting in the following "constant signal" with ambient light.
Shining the laser on it has the same signal just +30 more or less

My issue is, that with the laser on the diode the change of transparency results in way smaller changes, than the noise. Instead of having a signal varrying ~3 units (83-80) and having a "noise variation" of +-1... I'd like to have a signal which varries 30 or even more (830 and 800) with the same noise level of +-1.
What are the components I have to change or what else could I do?

Thank you very much for any help offered!

When I used a BPW34 to detect light. I wired the cathode to v+ the anode to a 1M resistor and the 1Meg resistor to ground. The junction went to the A:D converter.

You appear to have only 50 samples in that plot. You can increase this (see this thread: Allow display of more data points in Serial Plotter · Issue #803 · arduino/arduino-ide · GitHub ). If you use version 1.x.x of the IDE, you get 500 samples.
There is noticeable clipping in your picture but it is not clear if that is an artefact of the plotter or that data is really like that. You could try plotting your data together with two constants 0 and 1023 to suppress the auto scaling of the plotter.
I guess that when you are making measurements, you have to eliminate any effects of an artificial lighting which, depending on the type, could have various frequency components in it. The interference, anyway in this case, appears to be only one analog unit (~0.1% across the full scale).

Hi, @andruinor
Welcome to the forum.

Thanks for using code tags. :+1:

Can we please have a circuit diagram?
An image of a hand drawn schematic will be fine, include ALL power supplies, component names and pin labels.

Thanks.. Tom... :smiley: :+1: :coffee: :australia:

1 Like

Thank you for your quick answer!
Do you still have a picture of your setup, or a drawing? I am not experienced enough to adapt my board to what your describing? :sweat_smile:

Since I use a Python code for signal processing I do not care for the amount of displayed datapoints :slight_smile: I am not sure either what is causing the signal to be as it is.
Thats why I was hoping, that someone with experience can see if the components, there usage or Arduinosettings / code are causing the unprecise signal.
How would you plot the data using 0 and 1023? I dont get that part.

Exactly. One analog unit as interference/ noise would be fine,if the signal itself would be stronger.

Thank you very much!

Here is the circuit diagram from the Blog:
image
I hope it helps you helping me :smiley:

You need a feedback resistor of at least 100K to get a reasonable signal. Make sure that the photodiode is connected the right way around.

The op amp requires a decoupling capacitor, or it may oscillate. Add a 100 nF ceramic capacitor between 5V and GND, as close as possible to the power and ground pins of the op amp.

Finally, pin 8 (bias select) should not be floating. Connect to ground for low gain, low noise or to 5V for high gain, somewhat higher noise.

1 Like

If you are serious about measuring low light intensities, that poorly designed circuit is not the way to go. Take the professional approach instead, using an integrated solution like this one.

1: 100 ohms is a ridiculous value for thte feedback resisitor. The circuit described here works.

however if the light intensity at the photodiode is high you CAN reduce the resistor value (say to 10K)

2: You would be better advised to use an op amp that is suited to rail-rail operation, which the TLC271 is not.

3: Your plot is showing the jitter on the analog reading (58 or 57) which is entirely expected. Its NOT "noise" and with a 100ohm reisistor I'd be amazed if you measured any noise with the ADC.

you will need to take multiple readings and average them as described here to get a more sensible reading

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.