How to Make a Simple DTMF (tone) Phone Line Decoder
by Adam Sindelar in Circuits > Arduino
771 Views, 2 Favorites, 0 Comments
How to Make a Simple DTMF (tone) Phone Line Decoder
This is a simple project that lets you decode DTMF signals on basically any phone line. In this tutorial, we are using the decoder MT8870D. We are using a prebuilt tone decoder because, believe me, it is a pain in the rear to try and do it with the Arduino (It is basically impossible). This decoder is also fairly smartly built, so it has notches in the filter for common dialling tones (350 and 440Hz) which let you recognize any DTMF tone WHILE dialling. Smart, isn´t it? This chip has a binary output (Q1-Q4) and a hardware update flag (ESt). The four binary outputs stay the same until a new different number is dialled. This would be a problem, because we could only detect when a new number was pressed. But ESt to the rescue! This way, when a new number is pressed, the pin ESt will inform us that a new number was pressed and that the binary output was updated. With this we are able to detect any press of a button. If you are interested, here is the datasheet for the chip.
Supplies
A DTMF decoder (In the diagrams I am using the MT8870D 'cause it's cheap)
A microprocessor (Would recommend Arduino)
Breadboard
Some Wires
102KΩ resistor
71.5KΩ resistor (don't think they make these; just put a 68KΩ and 3.3KΩ and 200Ω resistor in series)
390KΩ resistor
two ceramic 100nF capacitors
A crystal of precisely 3.579545MHz
And a 5v power supply
Think About What You Want to Do With Your Circuit Afterwards and Order the Parts
Plan what you will do with your built circuit (etc. what will I connect to the Arduino; what will I control with it?)
Then, order your parts.
Put Your Circuit Together.
Here is a simple schematic of how everything goes together:
Remember to also wire up your other controlling components (etc. a relay)
Congratulations
AAAAND, congrats! You have a functioning circuit that can decode any DTMF signals on YOUR phone line! This is about how it should look: