empowering creative people

Showcase Image


This project began as an experiment when I inexplicably decided to learn how an optical rotary encoder worked (FYI, 2-bit gray code). It transformed into a learning experience around USB - specifically the HID protocol. Ultimately I ended up with a simple gadget that now sits on my desk and allows me to control the PC volume. A salvaged optical encoder was used to detect rotation along with a reclaimed head drum of a VCR which was repurposed as a control knob.

Project Description

Key concepts for the project were:

    • The optical encoder parts (sensors and disk) were salvaged from an old track-ball.
    • The "knob" was made from the head drum of a VCR (remember those?). I liked it because of the smooth bearings - it spins forever. This is the part that spins and is used to adjust volume on my PC.
    • The optical disk was fixed to the shaft and optical sensors mounted off some strip-board and attached to the base of the vcr head.
    • This assembly is mounted to a custom PCB with some nylon stand-offs. The PCB became the base of the whole unit.
    • Some wooden rings were cut to enclose the electronics and the base of the vcr drum.
    • The custom PCB was designed in eagle and etched at home from some single-sided copper-clad board. The circuit was designed around an AVR at90usb162. The code is written in C and implements the LUFA library developed by Dean Cameron.
    • The whole unit plugs into a PC via USB and is automatically identified as a HID - no drivers required (tested in Debian Linux and Windows). It's a very simple device - rotate clockwise to increase volume, counter-clockwise to decrease.
    • Code and PCB design are available via github. Here are some reference links:

Here's the completed device. You can just make out the USB port on the lower right:

An inside view; note the rotary encoder:

This is the underside of the PCB - DIY designed and etched. Just the SMD Atmel chip is soldered on this side:


1. 1469940452_VolCon Schematic.zip