Sunday, December 19, 2010

Fiberoptic joystick with quadrature encoders and arduino

I have designed and built a joystick that contains no electronic parts -- only fiberoptics. The motion is sensed via quadrature encoding, and the signal processing is handled by an arduino microcontroller.

Here is a similar project for linear position tracking:

This joystick is designed for use in MEG and MRI scanners where the electronics may interfere with the scanner's operation.

Fiber transmitter and receivers:
Avago HFBR-2412TZ (mouser)
Avago HFBR-1414TZ

Quadrature decoder:
Avago HCTL-2032-SC (mouser)

Fiberoptic cables:
62.5 um glass fiber custom cables from

Code wheel from


  1. Dear Mr. Krasnow,

    Hello, my name is George and I am currently working on a project that needs to use a fiber optic cable as a micro bending sensor in a mouth piece to measure bite force while in a MRI. I am looking for small attenuation of a light signal in order to determine if the fiber has been bent. I have to utilize an arduino board and was thinking about incorporating an lcd display. If you have any ideas on how to get a useable signal and what type of receivers I have to use or any other relevant information would be greatly appreciated thank you for your time. My email address is

  2. Hi Ben,

    I am a grad student and I am working on a similar project. I am using an Avago HCTL 2022 and an Arduino Mega to read the position of a Maxon motor with quadrature feedback. In your video you mention that you will post the code you used for the joystick however I have not been able to find the code on your website. Would you mind sending me your code, or informing me where I might be able to find it? My email is I am having some difficulty and any guidance you could offer would be great.



  3. H Mr. Krasnov,

    I have a question regarding the alignment system you used. I was wondering if you used a 3D printer to make the white part.

    Thank you,

    Alexande (

  4. Hi Mr.Krasnow
    I am a grad student and working on the same project .
    I get stuck and I was wondering If you can send me the code,I am facing a dead line .

  5. Hello Ben,

    Wonderfull work. We might be using this kind of design in an experiment. I was wondering if it was possible to share your code, and bluprints to make two copies of this device.
    We would like to test it, measuring noise, usage-deterioration and such, I could also share the results with you if you require.

    You can write to me here :) sboylan (At)