I spent quite some time fiddling with home made units - got them working in the end:

1. Whilst the disks may have nice sharp/defined edges, the light source and detector probably occupy some 'area' and are not 'points.' so the interrupt is not a clean ON/OFF?

2. In one application I used the MC14490 de-bounce chip (Cost about $3 with 4 channels with internal pull-ups) and my problems went away - application was a tipping bucket rain gauge.

3. In my home made motor feedback project I had to 'sharpen-up' the pulses by using a 74LS14N Hex inverter Schmitt chip. The OSMC DC motor driver sprang into life and I had proper closed loop speed/position control.

4. Can you used some square wave source to emulate the interrupter to find out if it's dirty pulses or a frequency problem?

I've not used any software de-bounce but presume its fine as long as the delay is acceptable and info is not lost?

Good luck - let me know how you get on.

Gerards Bill Legge