# Oscillator to Generate DTMF tones

#### roboDNA

Jul 22, 2022
6
I'm want to build a project which outputs DTFM tones like a telephone. I looked at different oscillator circuits like the wein to create clean sine waves for each tone but still investigating. There are a few parts which already do DTFM tone generation like HT9200A but I wanted to design my own similar oscillator circuit. I'm aiming to create as clean a DTFM signal as possible, with low total harmonic distortion.

Basically, I want to build a circuit that duplicates what HT9200A does as far as tone generation. Here is the datasheet: https://pdf1.alldatasheet.com/datasheet-pdf/view/64509/HOLTEK/HT9200A.html

I looked at using an RC type oscillator to generate each tone, but not sure I can get the exact frequencies ( or within 0.6% ) I need for DTFM. Capacitor and Inductor based oscillator circuits have inaccurate tolerances so I'm looking at a resistor based oscillator. The HT9200A part uses a 3.58MHz crystal to get about 0.6% accuracy for frequencies, but I require a few additional frequencies generated.

The following frequencies need to be generated:

120Hz, 350Hz, 440Hz, 600Hz, 697Hz, 770Hz, 852Hz, 941Hz, 1209Hz, 1336Hz, 1477Hz, 1633Hz, 2400Hz, 3600Hz

UPDATE: I should have mentioned I require an analog output signal, and not digital.

Thank you!!

Last edited:

Feb 19, 2021
330
PSOC 5LP would work fine in this application. Below single chip application. In addition to DTMF could do CTCSS
tone set. All one chip.

Basically onchip DDS generates clock for a Wavedac which generates sine. With ext xtal
probably around .1% accurate.

Could use a port to select tone, or do it all over USBUART or SPI or UART or I2C, also
onchip.

Can trigger the tone and generate a fixed number cycles of tone is so desired, eg. tone burst of
known length.

Still leaves a lot of functionality for use in other parts of system See right hand window for what was used/left.

Board ~ $15. https://www.infineon.com/cms/en/product/evaluation-boards/cy8ckit-059/ Here is what else is onchip, in many cases multiple copies of them : Here is the kind of distortion you would get with this approach : Regards, Dana. Last edited: #### roboDNA Jul 22, 2022 6 PSOC 5LP would work fine in this application. Below single chip application. In addition to DTMF could do CTCSS tone set. All one chip. View attachment 56162 Basically onchip DDS generates clock for a Wavedac which generates sine. With ext xtal probably around .1% accurate. Could use a port to select tone, or do it all over USBUART or SPI or UART or I2C, also onchip. Can trigger the tone and generate a fixed number cycles of tone is so desired, eg. tone burst of known length. Still leaves a lot of functionality for use in other parts of system See right hand window for what was used/left. Board ~$ 15. https://www.infineon.com/cms/en/product/evaluation-boards/cy8ckit-059/

View attachment 56164

Here is what else is onchip, in many cases multiple copies of them :

View attachment 56163

Here is the kind of distortion you would get with this approach :

Regards, Dana.

That part would do the trick. I forgot to mention I require an analog output signal I realize the DAC is very high speed but was hoping for an actual analog output signal.

Feb 19, 2021
330
The DAC output is analog, buffered with on chip OpAmp. You might use a single RC LPF
to get rid of clock noise, but my guess not really necessary.

You need to do a small amount of coding to make every thing work. With no serial
interfaces, just the DTMF, maybe 25 lines max. Standard C code. The core in part
is ARM. The COMM would take a little more work, although I just did a USBUART
interface and it was < 5 lines.....

Note part is reprogrammable, so if you want to add features later a snap to do.

Regards, Dana.

#### Harald Kapp

##### Moderator
Moderator
Nov 17, 2011
13,054
Mod edit: changed the title to DTMF

#### davenn

Moderator
Sep 5, 2009
14,142
I'm want to build a project which outputs DTFM tones like a telephone. I looked at different oscillator circuits like the wein to create clean sine waves for each tone but still investigating. There are a few parts which already do DTFM tone generation like HT9200A but I wanted to design my own similar oscillator circuit. I'm aiming to create as clean a DTFM signal as possible, with low total harmonic distortion.

you keep talking of a single oscillator
You do realise that the DT in DTMF stands for Dual Tone ? that means that each keypress produces a dual tone - 2 different tones combined

Feb 19, 2021
330
If you wanted to do dual tone simple mod of what I showed earlier :

The DACs were converted to current out, summed by the resistor, and buffered by opamp. Still
single chip. I added PWM to create a timed burst for the pulse train. Whatever.

Regards, Dana.

Last edited by a moderator:

#### bertus

Moderator
Nov 8, 2019
2,850
Hello,

Why do you need 14 different frequencies?
The origenal DTMF only used 8 different frequencies.
The DTMF frequencies are carefully choosen to have less interference between them.

Bertus

Feb 19, 2021
330
Because he has added the "Precise Tone Plan" tones for equipment signaling ?

Regards, Dana.

Feb 19, 2021
330
For reference do a burst of specific number of cycles approach -

Regards, Dana.

#### roboDNA

Jul 22, 2022
6
Thanks for all this great info. I looked into different oscillator types including the wein. I'm currently looking at trying a simple STM32 part to generate 2 sine waves using lookup tables in memory, DAC, and combine the 2 waves in software ( sin()+sin() ) I have a STM32 discovery board already so I'll see how 'clean' the sin looks on the oscope. I think a table with 1208 values and a high enough sample rate will work, but not sure yet. I'm also planning to test with an rc filter on the DAC output to remove digital artifacts to see how that looks.

Feb 19, 2021
330
You dont need really big table sizes :

Also you can either "lift" a table off net or gen them in code with trig function.

Make sure any onchip PLL is setup to minimize jitter, if applicable.

Regards, Dana.

#### roboDNA

Jul 22, 2022
6
You dont need really big table sizes :

Also you can either "lift" a table off net or gen them in code with trig function.

Make sure any onchip PLL is setup to minimize jitter, if applicable.

Regards, Dana.

Replies
7
Views
170
Replies
6
Views
219
Replies
24
Views
649
Replies
4
Views
510
Replies
35
Views
1K