Maker Pro
Maker Pro

Oscillator to Generate DTMF tones

roboDNA

Jul 22, 2022
9
Joined
Jul 22, 2022
Messages
9
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:

danadak

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

1663078786266.png

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/

1663079725208.png

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

1663079301602.png

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



Regards, Dana.
 
Last edited:

roboDNA

Jul 22, 2022
9
Joined
Jul 22, 2022
Messages
9
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.
 

danadak

Feb 19, 2021
751
Joined
Feb 19, 2021
Messages
751
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.
 

davenn

Moderator
Sep 5, 2009
14,254
Joined
Sep 5, 2009
Messages
14,254
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

1663106168704.png
 

danadak

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

1663111674059.png

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
3,304
Joined
Nov 8, 2019
Messages
3,304
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
 

danadak

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


Regards, Dana.
 

danadak

Feb 19, 2021
751
Joined
Feb 19, 2021
Messages
751
For reference do a burst of specific number of cycles approach -


1663242676649.png


Regards, Dana.
 

roboDNA

Jul 22, 2022
9
Joined
Jul 22, 2022
Messages
9
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.
 

danadak

Feb 19, 2021
751
Joined
Feb 19, 2021
Messages
751
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
9
Joined
Jul 22, 2022
Messages
9
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.

Awesome, thanks for your info. and links. Very helpful.
 
Top