Optical Sensor for “Live Quartz Mode”

With the addition of a CNY70 optical sensor, you can also try out the live quartz mode, where MagicQuartz constantly monitors and corrects the turntable’s speed.

For the Motor Shield version, an Arduino breadboard shield comes in handy to do the wiring (see next picture). You can get these cheap on the internet (the wiring will be explained below). If you’re building the breadboard version, simply put all components onto this breadboard as well.


The actual sensor should be connected with a shielded cable. In the picture below, I’ve used an old USB cable. I have also glued the sensor to a small magnet, which allows you to easily attach the whole thing on the chassis of the turntable:


The following schematic explains how to connect the CNY70 optical sensor. Please note that the CNY70 is shown from its front, which means that you are looking at the two opical “lenses”, and the legs are showing away from you. The marking area (labeled “CNY70”) is on the right side.

You need two additional resisors, one with 180 Ohm and the other with 47 KOhm. Both connect to the 5V rail. Do not forget to connect the two GND connections. When using a USB cable, you can of course share one wire for the ground.

MagicQuartz Arduino Sensor Connection

Now it should be working! Do not forget to attach a paper sticker on the turntable’s platter (see video here).

Please refer to the MagicQuartz documentation (available on the download page) for detailed instructions. First, you should use the “Show Sensor Information” function to see if the sensor is working. Move your finger near to the two “lenses” and see if the bar on the screen increases. If it does, exit this function and return to the main screen. On the main screen, select the “Q” and press OK (up-button on your keyboard) to enter live quartz mode!

LiveQuartzArduinoBecause the serial terminal can not display graphics, it looks slightly different compared to the full version, especially the buffer status in the upper left corner. The percentage indicates the writing position of the ring buffer, and an “F” is shown if it is already filled. In the screenshot above, the ring buffer is completely filled, and the writing position is at 25%. The size of the ringbuffer can be fully configured, please refer to the manual.