I would like to create a tachometer with the light sensor OPB704WZ.

I followed this schema https://tonyrobotdt081.wordpress.com/2014/04/10/report-on-the-light-sensor-opb704wz/ on a bread board (for now), and tried to measure the voltage difference on the signal pin (green on the schema).

Light sensor

Problem is, I don't see a clear difference between a white surface and a black one; It does change if I put the sensor closer or further away, but that's about all I can see.

Is there something else I need to add to my wiring to make the difference between high and low depending on the luminosity more obvious? I know others have been able to use this sensor for the same purpose.

  • Are you sure that the LED is on? You can check it using a camera.
    – tttapa
    Oct 27, 2017 at 20:19
  • As with most links Arduino users "find" that one displays a complete lack of basic electronic understanding.
    – Majenko
    Oct 27, 2017 at 22:05
  • Regardless of the colour of the reflector you are most likely driving the transistor into saturation. You'll never see any difference in the reflectivity with it like that.
    – Majenko
    Oct 27, 2017 at 22:06
  • If you read the datasheet you see no mention is made of colour - only how diffuse the surface is. Even a black card can still be highly reflective to infra-red - you just can't see it. A sheet of polished black metal is more reflective that a piece of white paper. You can't see your face in the paper (unless you're a criminal) but you can see it in the polished black metal.
    – Majenko
    Oct 27, 2017 at 22:12
  • @Majenko None of your comments are helping in any way.
    – BernardG
    Oct 28, 2017 at 20:25

1 Answer 1


You expect that the white surface to reflect the infrared light and the black surface does not.

Your theory is correct; white surfaces should reflect pretty much all light and the black surface should absorb all light.

The problem is that the black surface is reflecting enough light to turn the photo-transistor on.

The theory is correct but in the real world this is not perfect. For example a white surface is not completely white. Likewise no black surface is completely black.

We also know that a mirror is much better at reflecting light than a white surface. The black surface could be shiny. I am looking at my shiny black monitor stand, and even though it is black I can still see the reflection of the window.

I suggest trying with a number of black surfaces (such as paint, card, cloth) and finding the one that works best. I would imagine that chalk board paint would work well at absorbing and diffusing the infrared light. Also experiment with the distance away from the surface. You may have to move it further away from the surface.

If I am imagining your tachometer right, your sensor will see a reflective surface and then it will see empty space (and then repeat). This should work fine. Give it a try.

  • 1
    You want some Vantablack 2.0 ;)
    – Majenko
    Oct 28, 2017 at 9:50
  • Vantablack is a substance made of vertically aligned carbon nanotube arrays and is one of the darkest artificial substances known, absorbing up to 99.965% of radiation in the visible spectrum. -Wikipedia
    – sa_leinad
    Oct 28, 2017 at 10:29
  • Vantablack 2.0 is even blacker.
    – Majenko
    Oct 28, 2017 at 10:30
  • I see and understand your point. I need to measure (and change) the number of rpm on a tool. It has a stainless steel surface, and I intend to grind a stripe about a 1/4" wide, and paint with mat black. I do believe this will work, as there should be a maximum contrast between the shiny steel and mat black BUT, before getting there, I would like to test, just moving by hand this sensor. I will try your suggestion.
    – BernardG
    Oct 28, 2017 at 20:33
  • @BernardG, I look forward to your results.
    – sa_leinad
    Oct 29, 2017 at 2:02

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.