Thank you everyone for all the replies. So, in order:
...
Rick Law: wow mate! That’s fantastic! I’m gonna print it out and go through it once I’ve posted this reply!
...
Nice of you to say that. Let's hope that indeed helps you narrow the problem.
As you work through that, the most important would be the
Vdelta baseline which is the difference (in absolute value) between
VmaxBlocking and
VminBlocking. That will tell you a lot. Take note on the noise level there too. Since you are moving the fan blade manually, any of significant noise there (compared to Vdelta) is going to cause problem.
I think there is a good possibility that your reflected light (plus ambient light) is overwhelming that light that hits directly your photo diode. Looking at the size of your light source, it will leak a lot of light to eventually reflect on to your photo diode, so reflected light could be a significant problem-contributor.
It is not necessary good to have an overly strong light source. Strong light source reduces ambient light problem but it also introduce more reflected light. The idea is to
maximize Vdelta.
Beside moving the blade to get VmaxBlocking and VminBlocking, you should also note the reading when the fan is absent (VnoFan). That will give you a sense of the best way to approach maximizing Vdelta.
Let us know how it goes.
Rick