The concepts of synchronous detection
To understand the background I will just touch the basice principler briefly before going to the minimalistic solution.
The basic principle of synchronous detection is that the detection or measurement is synchronized with the excitation of the medium we are trying to measure. The excitation is usually preformed at a set clock frequency and the measurement is locked on to the same clock. Lets use this specific reflected light detector task as an example.
These devices origins from the pre - digital age and aims to get an analog output signal. I dear to say that they are really just a generalized version of a synchronous detector. where the aim is to have a generic excitation driver / generator output. and a generic input. The excitation frequency tuning range of these devices can be quite wide and they have the advantage of not requiring the excitation frequency to be fitted inside the bandwidth of the ADC.
The minimal solution with a microcontroller
The mixer function
Syncronous exitation and demodulation
The Arduino ADC in free running mode
Continuous low pass filtering
Link to code repository: