enter image description hereI have constructed 2 ceptometers that measure light intensity. Each ceptometer consists of 50 photodiodes that are connected to 2 copper wires (+ and - of the photodiodes are on the same orientation). Those wires are soldered with cable (+ to the copper wire where the positive side of the photodiodes is and the ground wire soldered to the copper wire where the negative side of the photodiodes is). Then, pins were soldered to the cables so as to can be connected to the breadboard.

The paper where the protocol for the construction is present, states that a 1.5 ohms resistor needs to be connected to the copper wires so as to enhance the range of the signal that the ceptometers will give. However, it mentions that this step can be followed later and the resistor can be connected to the wires (that is something that makes sense). I need to mention that one more ceptometer is present that was constructed by another person the previous year and it has the 1.5 ohms resistor soldered on the copper wire. It is something very important to keep in mind for the rest of the text!

I decided to use an arduino uno for my experiment and I connected the 3 ceptometeres (the old from the previous year and the 2 that were constructed by me) to a breadboard. Firstly, I applied light to the ceptometers with a projector and I tried different resistors from 470R to 5K but the values I got were the same. I thought that a kind of signal disturbance or noise may has been caused and I made 3 opAmp circuits in 3 different breadboards. When the breadboards were connected to the Arduino I tried the same resistors again but the values I got were the same. For the old ceptometer that has the 1.5 ohms resistor soldered to the copper wires the change of resistors altered a lot the signal and it gave a wide range of values. Here I have to say that when I applied to the 1.5 ohms resistor to the new captometers I got a pure 0 as a value. And it was the same when I placed them under sunlight.

When I converted the output of the Arduino to voltage signal by multiplying it with 5 and then divide it with 1023 I had the same voltage signal as when I measured it with the multimeter. And it was the same under both artificial and sun light. So, I can imagine that it is something that depends on the resistor that is not applied to the copper wires. I mean that maybe this is the case that I do not get a wide range of values like the old ceptometer but only 20 units

My question is: Do you know any way to enhance the range of the output or do you have any recommendation? Thank you a lot in advance!

With kind regards,


  • 1
    Can you amend your question to include a copy of your schematic? A sketch would do if necessary. It is hard to visualise a circuit which is done purely by description in words.
    – Nick Gammon
    Commented Nov 5, 2020 at 23:40
  • A schematic would really help. Have you been able to confirm the voltage output range of your setup outside of the Arduino, by measuring them with a multimeter for example?
    – StarCat
    Commented Nov 6, 2020 at 8:16
  • Hi Nick and StarCat. Yes StarCat I measured the voltage with a multimeter and it was the same that the Arduino gave me after the conversion of the Arduino output to volts. For example, when I got a value of 90 (from the Arduino) and then did the conversion ((90*5)/1023) what I got was 0.44 that was the same that the multimeter show in voltage. But when I did the calibration with a quantum sensor the value of 90 corresponded to 600 to 690 μmols. Commented Nov 6, 2020 at 11:25
  • This is something that will affect my experiment since 100 μmols of PAR is an important range but from the arduino it is described as one value. Commented Nov 6, 2020 at 11:25
  • I have uploaded the schematic on my question. Thank you a lot both of you! Commented Nov 6, 2020 at 11:27

1 Answer 1


The circuit is a current-to-voltage converter. The - input to the op-amp is held at 0 (the voltage at the + input, since it is grounded) so there will be no voltage across the diodes. The current drawn by the diodes is supplied by the op-amp output through the feedback resistor, so the larger that value, the greater the output voltage will be at any given current. The short answer is that to increase the output voltage, you need to increase the feedback resistor. (7 ohms seems pretty small to me, unless your diodes draw a LOT of current.)

The other complicating issue is that this circuit depends on the op-amp having a low input offset voltage, since its value (~2 mV for the LM358) causes output errors. Normally a low-offset-voltage op-amp would be used here, but maybe the use of so many diodes makes a large enough current to swamp the offset error. If increasing the feedback R doesn't help, you might try a different op-amp (even another LM358) in case the offset of the one you have is trying to force a negative output and that's why you see 0.

Edit 11-8-20: I looked up the sensor used in the PAR-BAR article that seems to be the source of your circuit. It pulls about 10 microamps at 1000 lux, so 50 of them would give 500 microamps. If you want to get (say) a 5V output at 1000 lux, you'd need a feedback resistor of 5/0.0005 = 10 kOhms. That's without the 1.5 ohm shunt. Also, are you applying your test illumination evenly over all 50 sensors? The above calculation assumes that all get 1000 lux.

If you have a single sensor available, I'd recommend breadboarding with just that and a 500 kOhm feedback resistor, and no shunt. That way there will be no issue about equal illumination. If you still have problems, and you are committed to the LM358 for some reason, try using a simple circuit to compensate for input offset. These typically involve a potentiometer (could be a trimmer in the final unit) that adjusts a very small voltage applied to the + input. In your tests you may find that it needs to be negative, which you would have to apply from some external source (since there is no - supply on the Arduino). If that's needed to resolve your problem, consider a better op-amp or a different circuit configuration.

Edit 11-9-20: Had another look at the PAR-bar article and noticed that they are measuring differential voltage across the photodiode array, which is not the same as your current-to-voltage converter (although that is indeed typical of photodiode circuits). The voltages that they get are 30 mV or less. I suggest you get a DMM and measure the voltage across the array, without any connection to other circuitry. Cheap DMMs have 200 mV full-scale, which should at least show you what's going on. The article used an expensive datalogger and only suggests that Arduino-type solutions may be possible, but gives no circuits. You probably don't need a true differential amp, since the photo voltage is always in the same direction.

  • I have tried multiple resistors. Even when I use a 10R or 2200R the output does not change. It seems that the breadboard does not respond to the resistors. But, I have not changed the opAmp yet to see what happens. It is something that I have to do. Thank you a lot! Commented Nov 6, 2020 at 16:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.