DSPRelated.com
Forums

DTMF decoder

Started by ivan September 5, 2006
CBFalconer wrote:

> Joerg wrote: > >>CBFalconer wrote: >> > > ... snip ... > >>>There is a simple cure for availability of 1% capacitors - incoming >>>selection. All the 5% caps can be used by choosing the appropriate >>>resistors, which were relatively cheap. >> >>That is an expensive proposition, plus you have to sell all the ones >>between 1% and 5% on the gray market. Selecting resistors is a labor >>intense job, I would have never been allowed to spec in something like >>that. What we did with Hilbert shifters and stuff like this was passive >>(and sometimes active) laser trim. But we tried our darndest to avoid >>any of that. > > > I was talking about selecting caps, not resistors. ...
Sure, but selecting appropriate resistors as you mentioned is a process that requires labor and some skills. Read a scope, meter or digital test rig. Then select the resistor from a table or as displayed and solder it in. I didn't do industrial design in the 70's since I was still at college but in the 80's when I did this was very much frowned upon.
> ... For those you > could (this is 1970, remember) buy the appropriate values. > Besides, IIRC, the active filter calculations for the > band-splitting filter didn't require better than 5% components > anyhow. >
Yes, the bandsplit would be easier.
> Cap selection requires a jig. Place cap on jig, read, dump in > appropriate bin. Even with manual labor it is hard to see more > than 10 seconds per cap, triple that to 30 sec to allow for breaks, > bathroom time, chatting time, etc. > > Building the jig requires some ingenuity. >
My boss would have gone ballistic if that procedure were in my ECO ;-) -- Regards, Joerg http://www.analogconsultants.com
Hello Rafael,

> > Not much fun doing a DTMF-decoder on a controller. > > a) One can use a bandsplitfilter seperating lowgroup and highgroup. > Getting then the signal in both bands to 1 bit and deciding on the > frequency is the easy part. Virtually all old SC-ICs like the > MT8870 do it that way. > The bandsplitfilter on a controller is difficult. > TI has a applicationnote for the MSP430 using WDFs ( "wave digital > filter" ). But getting WDFs up is a lot of work, i can > scan one or more papers on DTMF bandsplits via WDF if you want > to have a go at it ( Joerg has given up by now i guess ).
No, I haven't but after finishing the technical expose this project is in the VC discussion phase. Those can take a while. If it results in a green light I'll have to calculate all that by hand since decent design SW for WDF doesn't seem to exist. Except for a collection of routines with scant to no documentation.
> b) One can use a filterbank with up to 16 narrow bandpass filters. > * using IIRs out of the textbook is impractical. > * Goertzel is the practical IIR-variant and for some controllers > like the Mitsubishi M16 there are implementations. But usually > it is limited to DSPs.
You can also do it on an MSP430. But only with HW multiplier (F427?). For some reason TI has decided to introduce new F2xx devices with a HW multiplier but taken out the 16bit ADC. Don't know why, banging my head on the table here... -- Regards, Joerg http://www.analogconsultants.com

ivan wrote:

> Hi Vladimir, > > I have another doubt now... I have 10 freqs (2 more for the handshaking), if > I add all the periods for each freq I get about 9ms, this is the time needed > to scan all tones once for one period only. Each DTMF tone last 50ms, this > means that I can scan each tones max 5 times. But I have two square waves to > scan (sin/cos), hence I can only scan each tone for 2 periods only. Would > this be enough to get sensible results?
This doesn't seem to be a working solution. You should do all of the frequencies at the same time. VLV
"Vladimir Vassilevsky" <antispam_bogus@hotmail.com> ha scritto nel messaggio
news:Zr3Mg.16590$%j7.3220@newssvr29.news.prodigy.net...
> > > ivan wrote: > > > Hi Vladimir, > > > > I have another doubt now... I have 10 freqs (2 more for the
handshaking), if
> > I add all the periods for each freq I get about 9ms, this is the time
needed
> > to scan all tones once for one period only. Each DTMF tone last 50ms,
this
> > means that I can scan each tones max 5 times. But I have two square
waves to
> > scan (sin/cos), hence I can only scan each tone for 2 periods only.
Would
> > this be enough to get sensible results? > > This doesn't seem to be a working solution. > You should do all of the frequencies at the same time. > > VLV
I am generating all the freqs by using arrays and calculating values to reduce the timing errors.. Is this the best way to do this? ivan

ivan wrote:


> > I am generating all the freqs by using arrays and calculating values to > reduce the timing errors.. Is this the best way to do this? > > ivan >
You can have the complete DTMF decoder in C if you like. Please write to vlv@abvolt.com. VLV
"Vladimir Vassilevsky" <antispam_bogus@hotmail.com> ha scritto nel messaggio
news:2HeMg.9396$yO7.1549@newssvr14.news.prodigy.com...
> > > ivan wrote: > > > > > > I am generating all the freqs by using arrays and calculating values to > > reduce the timing errors.. Is this the best way to do this? > > > > ivan > > > > You can have the complete DTMF decoder in C if you like. > Please write to vlv@abvolt.com. > > VLV > > > >
I have it in C, but it uses Goertzel and Z8Encore is not fast enough. I want to try this other method and see if it fits into Z8Encore... otherwise will have to choose a faster mcu. Do you mean pay for it?