how to construct receiver circuit for optic fiber

I’ve recently built temperature monitoring (30degree-80degree) using plastic fiber-optic (pof ) sensors with integration to iot.

my project need me to built optical receiver circuit for detect optic fiber, and then convert to electrical signal for IoT to show output voltage from photodiode on the phone(blynk app)

my equipment use,

polymer optical fiber (POF) cladding at center
photodiode:IF -D91
op amp LM358p to amplify the signal
light source wavelength: 650nm

I want to read the values I get from receiver circuit into a computer via an Arduino uno R3.

when I’m measuring the light with this photodiode IF D91 and giving the Light source 650nm on the other end, the voltage fluctuations as measured by a multi-meter on the photodiode are linear, but rather small as the fiber is heated from 30degree to 80 degree. the voltage hovers around, 0.50V to 0.47V.

but after i connect to transimpedance amplifier to increase the voltage( C=10p, R=7.8M) , the voltage only reach about 3.7-3.6V

What I am worried about is losing resolution when doing A/D with the Arduino. If my voltage fluctuations are on the order of 10mV, won’t the Arduino’s 10-bit A/D quantize the hell out of it, How can I stretch out that range between 0.5 -0.47V to cover the full range, from 0V to 5V so that I can take advantage of the full range of the Arduino A/D?

I feel like this has got to be a common operation in electronics, but I’ve never studied it formally, so a lot of things are lost on me.

also here is my coding for the output voltage on arduino uno:

// read the raw data coming in on analog pin 0:
int lightLevel = analogRead(analogPin);
// Convert the raw data value (0 - 1023) to voltage (0.0V - 5.0V):
float voltage = lightLevel * (5.0 / 1024.0);
// write the voltage value to the serial monitor:
Serial.println(voltage);

i hope you guys can help me, thanks in advance.



16-bit ADC

FYI,
Don't forget to select 16-bit mode ! (as you can see, the DEFAULT is 12-b-t mode !. If you have to move the "//" from the top line to the second line to enable 16-bit mode.)

 // Adafruit_ADS1115 ads;  /* Use this for the 16-bit version */
  Adafruit_ADS1015 ads;     /* Use thi for the 12-bit version */

FYI,
When posting code, use the CODETAGS toolbutton (first toolbutton from the LEFT) to post your code.
Yours is really long enough to need scrolling but it makes it more obvious it is code if you use it.
As you can see , I used it to post the two lines of code from the ADS1115 Example sketch.

Hello Yoda17,
I just have a few comments:

  1. The opamp circuit maybe needs
    plus and minus power supplies.
  2. Are you using a red LED as a light
    source? I read somewhere that an
    LED can be used as a light detector.
    (Probably from Forrest Mims) You may
    have better sensitivity with an LED
    than with a photo diode.
  3. I don't understand how you are going
    to measure a change in temperature.
    Herb

herbschwarz:
Hello Yoda17,
I just have a few comments:

  1. The opamp circuit maybe needs
    plus and minus power supplies.
  2. Are you using a red LED as a light
    source? I read somewhere that an
    LED can be used as a light detector.
    (Probably from Forrest Mims) You may
    have better sensitivity with an LED
    than with a photo diode.
  3. I don’t understand how you are going
    to measure a change in temperature.
    Herb

thank you for your reply.

actually the opamp (at pin no.5) is connected to vcc=5v from arduino uno r3.

im using light source of 650nm which produce a red light.

for measure for the temperature, ill increase the hotplate with digital display of my choosen temperature



yoda17:
but after i connect to transimpedance amplifier to increase the voltage( C=10p, R=7.8M) , the voltage only reach about 3.7-3.6V

The LM358 doesn't slew fully to the positive rail - you are saturating its output completely I think.

I think you've just got an over-large feedback resistor.

I’ve recently built temperature monitoring (30degree-80degree) using plastic fiber-optic (pof ) sensors with integration to iot.

my project need me to built optical receiver circuit for detect optic fiber, and then convert to electrical signal for IoT to show output voltage from photodiode on the phone(blynk app)

my equipment use,

polymer optical fiber (POF) cladding at center
photodiode:IF -D91
op amp LM358p to amplify the signal
light source wavelength: 650nm( red light)

I want to read the values I get from receiver circuit into a computer via an Arduino uno R3.

when I’m measuring the light with this photodiode IF D91 and giving the Light source 650nm on the other end, the voltage fluctuations as measured by a multi-meter on the photodiode are linear, but rather small as the fiber is heated from 30degree to 80 degree. the voltage hovers around, 0.50V to 0.47V.

but after i connect to transimpedance amplifier to increase the voltage( C=10p, R=7.8M) , the voltage only reach about 3.7-3.6V

What I am worried about is losing resolution when doing A/D with the Arduino. If my voltage fluctuations are on the order of 10mV, won’t the Arduino’s 10-bit A/D quantize the hell out of it, How can I stretch out that range between 0.5 -0.47V to cover the full range, from 0V to 5V so that I can take advantage of the full range of the Arduino A/D?

I feel like this has got to be a common operation in electronics, but I’ve never studied it formally, so a lot of things are lost on me.

also here is my coding for the output voltage on arduino uno:

// read the raw data coming in on analog pin 0:
  int lightLevel = analogRead(analogPin);
  // Convert the raw data value (0 - 1023) to voltage (0.0V - 5.0V):
  float voltage = lightLevel * (5.0 / 1024.0);
  // write the voltage value to the serial monitor:
  Serial.println(voltage);





@yoda17, please do not cross-post. Threads merged.