This project contains the details of using a Microchip PIC12F683 8 bit microprocessor to detect DTMF tones. The completed program allows the processor to be programmed with a string of DTMF tones to detect. If the programmed string is detected in the audio applied the audio input, the output will turn on (go high), and can be used to control other circuitry of the users design.
UPDATE! 11/2/2010:
Due to requests for the source code, I have attached it. I have created a new step (Step 9) containing the *.asm file, along with some important notes.
UPDATE! 10/12/2010:
The HEX file for progdramming that I originally attached to this instructable had a bug that prevented successful programing of the tone sequence, unless the microprocessor was in serial output mode while in programming mode. The HEX file attached now works properly. Sorry for any inconveniene caused for those who may have tried the original code.
I have included the *.hex file needed to program the microprocessor, 12F683_DTMF_DECODE_01A.HEX. You will need a programmer for PIC microprocessors. I have seen instructions on this site for building your own, but I cannot speak for any of them. The programmer I use came from a company called Micro Engineer Labs, Inc at www.melabs.com.
The only other parts needed are the electronic components, as shown in the schematic in step 3, Circuit Details. Digikey (www.digikey.com) is an excellent source for electronic components .
A telephone or other means of generating DTMF tones is also needed for programming the microprocessor with the the sequence of tones you want to detect. This is described in more detail in step 4.
Remove these ads by
Signing Up








































Visit Our Store »
Go Pro Today »




Thank you..
thank you!
marC:)
thank you!
marC:)
I am working on a project requiring similar functionality, the only different is that it requires the learning function of a single tone (not DTMF).
Would you be able to point in the right direction of modifying the ASM file ?
Thanks,
http://www.instructables.com/id/Frequency-Detector-using-PIC-12F683-Processor/
That project detects a single frequency between 148Hz and 2148Hz. The frequency to be detected is set using a potentiometer.
My project requires the learning feature, is it easier to modify the codes so the detected frequency is set by capturing the tone into the EEPROM instead of the use of potentiometer ?
You could just adjust the potentiometer while the frequency is applied and leave it in the position where the frequency is detected.
So, there isn't a real straightforward way to train the device by having it determine the input frequency with the present revision of the code.
The hex file attached should work as described in the instructable regardless.
Good luck on your repeater project! Let me know if it works out for you.
Included learning function of the CTCSS tone.
Frequencies: 67Hz, 71.9Hz, 77Hz, 82.5Hz, 88.5Hz, 94.8Hz, 100Hz, 103.5Hz, 110.9Hz, 118.8Hz and 74.4Hz, 79.7Hz, 85.4Hz, 91.5Hz, 97.4Hz, 123.0Hz
There are only 4 dual - frequency. These will only be changed:
697 Hz: replace = 28 Hz
Delete: 770 Hz
Delete: 852 Hz
941 Hz: replace = 38 Hz
and
1209 Hz: replace = 48 Hz
Delete: 1336 Hz
Delete: 1477 Hz
1633 Hz: replace = 58 Hz
http://www.eetindia.co.in/STATIC/PDF/200604/EEIOL_2006APR04_EMS_RFD_SIG_TA.pdf?SOURCES=DOWNLOAD
The article doesn't use a PIC processor, but it does give a good amount of detail about using this approach for CTCSS.
I can answer a few questions if you have any. I'd be interested in any cool applications that anyone come up with.
Enjoy.
You can check back with this instructable in the future, to see whether I have updated the intro section with a notice stating that the source code has been added.