I wanted something more "hardware" for doing the same CCIR demodulation than what I did by software, and i found the CMX823 chip. Audio in, data (and interrupt line) out. 'nuf said, here is my printed circuit board and MCU firmware for using that IC.


The CMX823E4 (tone decoder) is the TSSOP chip. The other one is a PIC16F870 microcontroller.


The schematics. Click for larger view.

Two audio connectors for "in series" audio tapping. Jumper for optional electret microphone power supply. Op-amp (integrated to the CMX823) gain is adjusted by R8 (pot), and I wired the output to ADC input pins of the MCU for audio level monitoring. The TTL serial data is connected to a USB/TTL serial converter board. Buttons are for a possible future use. The CMX823 data connection is something called "C-BUS" by the chip manufacturer. It also has an interrupt ouput pulled low when active, allowing us not to poll the chip continously and uselessly.

Some demonstration (Youtube video) with the CCIR tones (selcal) found on wikipedia. Please enable annotations to understand what you see. You can see some printed datasheet pages used for tones calculations in the background.


My spreadsheet used for the CMX823 tones parameters calculations. All these "magic numbers" and formulas are from the datasheet's pages 11 and 12.

I only use 16 tones (all the CCIR signaling), but the chip has a memory for two banks of 32 tones (one bank enabled at the time). Only simple tones can be decoded, DTMF can't, which is composed of two frequencies at the same time. On my spreadsheet, N and R are the result of tone calculations, but they are 7 bits numbers, and should be packed together to form a 14 bits field following the two bits for bank selection. These resulting 16 bits are cut in half to form two (A and B) bytes. Operation is then reversed to check if the calculations and bit manipulations are correct.
Bonus: the enclosure CNC work for LCD screen window and buttons. It needed some thinking because of the end mill bit finite radius size - you can't do sharp corners on internal pocketings!


G-Code simulation with Camotics


Machined with LinuxCNC


It's a perfect fit! :D


Finished. Connectors are: ICSP (for firmware upgrades), serial over USB, audio connections and optional DC jack (if power over USB isn't used)


The tone detector project in use to monitor the street lighting radio remote control (coming soon!)