If you are looking for a dtmf decoder, your best option is to use a dtmf decoder ic instead of trying to write up software.
Using software in your microcontroller-based project (Arduino or other) to decode dtmf signals to me is like reinventing the wheel. For sure the software approach is a “free”solution, since you’re not paying for a chip, but you’ll pay the price in development time and possibly performance. Robust dtmf decoding in software is not impossible but is for sure challenging and time consuming.
the easy way: dtmf decoder ic
When it comes to selecting a dtmf decoder ic to do the job, there are two that I recommend. I have been using both for some time now, in my MICO and DTMF boards, and they work great. Here they are:
- Holtek 9170D link : this ic operates in 2.8 to 5v; and is easy to find for sale
- Zarlink MT8840DE: this only operates at 5v and is a bit harder to find for sale from authorized distributors. mt8870 datasheet coming soon
Other than the operating voltage I conclude that both IC are functionally identical.
Side note: One interesting fact about these dtmf decoder chips. There seem to be several companies that make the exact same chip: Holtek, Mittel, Zarlink, to name a few. I’m not sure what’s the deal on why so many companies make the exact same die. It may have to do with company acquisitions over time… if I ever find out I’ll update this post.
Save time with dtmf decoder board
If your application require a dtmf decoder ic and you want to save time, feel free to grab the DTMF Shield for Arduino from HelloMico.com. This development board will help you to cut some days off your project development.
The dtmf shield is very easy to use. You just plug it into your Arduino, load the sample sketch and off you go.
did I mention this shield can also encode dtmf? that’s right, this shield is also a dtmf generator!