View previous topic :: View next topic |
Author |
Message |
raz
Joined: 22 Feb 2012 Posts: 22
|
Problem interfacing pic16f84a with Dtmf generator Ic TP5088! |
Posted: Sun Apr 15, 2012 10:11 am |
|
|
Hey,
I'm currently working on a project to interface pic16f84a to Tp5088 and then to the telephone line to call a number stored in the uc automatically.
Whats confusing me is that in the datasheet of the tp5088 it says that there is a tone enable pin that on transition from low to high it latches the data on the ports D0-D3 (which represent the binary eq. of the number and coming from the pic).
Say I'm dialing 0123...... does that mean that I have to send the binary of zero to the IC then set the tone enable high then low then send the binary of 1 then make the enable high again and so on for each digit?
I can't find the IC model in Proteus or anywhere. That's why I can't try it as software. |
|
|
dyeatman
Joined: 06 Sep 2003 Posts: 1934 Location: Norman, OK
|
|
Posted: Sun Apr 15, 2012 10:31 am |
|
|
Yes, that's what the datasheet timing diagram shows on page 4. The tone
output will continue until Tone Enable goes back low. _________________ Google and Forum Search are some of your best tools!!!! |
|
|
raz
Joined: 22 Feb 2012 Posts: 22
|
Tp5088 |
Posted: Sun Apr 15, 2012 10:43 am |
|
|
Yeah I got so the mute goes with the enable in highs and lows.
Considering the mark and space time of the dtmf is it okay to make 75ms and 75ms [the digit is on for 75ms then wait another 75ms then send the other digit] instead of 40ms and 40ms or does it depend on the telephone system of the country ?
Thanks |
|
|
dyeatman
Joined: 06 Sep 2003 Posts: 1934 Location: Norman, OK
|
|
Posted: Sun Apr 15, 2012 12:10 pm |
|
|
Standard Whelen timing is 40 msec mark with a 20 msec space which I
would expect would apply to most phone systems. You can actually go much
faster than this if required but for compatibility I would not recommend it.
Not sure if slower will cause a problem. _________________ Google and Forum Search are some of your best tools!!!! |
|
|
raz
Joined: 22 Feb 2012 Posts: 22
|
|
Posted: Sun Apr 15, 2012 12:36 pm |
|
|
Okay thanks alot |
|
|
asmboy
Joined: 20 Nov 2007 Posts: 2128 Location: albany ny
|
|
Posted: Sun Apr 15, 2012 5:39 pm |
|
|
Longer MARK timing is not much of an issue with most detection chips.
But too short a SPACE can be troublesome with chip sets that use an adaptive
filter.
I prefer 50ms mark and 30 ms space for DTMF and/or CCITT in band signaling. |
|
|
raz
Joined: 22 Feb 2012 Posts: 22
|
|
Posted: Sun Apr 22, 2012 5:25 pm |
|
|
Hi again,
I'm done with the circuit and program and connected it to a speaker. I heard pulses so i guess the generator is working fine, but when i connect it to the telephone line the 5v of the regulator drops to 1v and the ics are thus off. So what might be the problem ???? |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9229 Location: Greensville,Ontario
|
|
Posted: Sun Apr 22, 2012 5:44 pm |
|
|
umm... what kind of DAA are you using? That's the circuit to interface your PIC to the telephone wires??
You cannot just wire the PIC to the lines !!!
Simplest DAA would be a 600r:600r transformer... |
|
|
raz
Joined: 22 Feb 2012 Posts: 22
|
|
Posted: Sun Apr 22, 2012 6:11 pm |
|
|
um connecting the output of the generator to a 560 ohm and a bridge rectifier then the telephone lines |
|
|
raz
Joined: 22 Feb 2012 Posts: 22
|
|
Posted: Sun Apr 22, 2012 6:13 pm |
|
|
Can I connect the output of my circuit parallel with a telephone set ?? |
|
|
asmboy
Joined: 20 Nov 2007 Posts: 2128 Location: albany ny
|
|
Posted: Sun Apr 22, 2012 6:28 pm |
|
|
you might want to post the circuit you are trying to use....... |
|
|
raz
Joined: 22 Feb 2012 Posts: 22
|
|
|
raz
Joined: 22 Feb 2012 Posts: 22
|
|
Posted: Mon Apr 23, 2012 3:08 am |
|
|
This is the code in C using PIC C:
Code: |
#include <16F84A.h>
#FUSES XT,NOWDT,NOPROTECT,NOPUT
#use delay(clock=4000000)
//Connection
#define Enable PIN_A1
#define Pwr_led PIN_A0
#define Mute pin_a2
#define dial pin_a3
#define D0 pin_b0
#define D1 pin_b1
#define D2 pin_b2
#define D3 pin_b3
void Init(void);
void main (void)
{
Init();
output_high(pwr_led);
output_low(enable);
output_low(mute);
while(true)
{
if( !input(dial))
{ // 01017774569
//First Digit "0"
output_b(10);
output_high(enable);
output_high(mute);
delay_ms(50); //mark
output_low(enable);
output_low(mute);
delay_ms(40); //space
//Second Digit "1"
output_b(1);
output_high(enable);
output_high(mute);
delay_ms(50);
output_low(enable);
output_low(mute);
delay_ms(40);
//Third Digit "0"
output_b(10);
output_high(enable);
output_high(mute);
delay_ms(50); //mark
output_low(enable);
output_low(mute);
delay_ms(40); //space
//Fourth digit "1"
output_b(1);
output_high(enable);
output_high(mute);
delay_ms(50);
output_low(enable);
output_low(mute);
delay_ms(40);
//Fifth Digit "7"
output_b(7);
output_high(enable);
output_high(mute);
delay_ms(50);
output_low(enable);
output_low(mute);
delay_ms(40);
//Sixth Digit "7"
output_b(7);
output_high(enable);
output_high(mute);
delay_ms(50); //mark
output_low(enable);
output_low(mute);
delay_ms(40); //space
//Seventh Digit "7"
output_b(7);
output_high(enable);
output_high(mute);
delay_ms(50); //mark
output_low(enable);
output_low(mute);
delay_ms(40); //space
//Eight Digit "4"
output_b(4);
output_high(enable);
output_high(mute);
delay_ms(50); //mark
output_low(enable);
output_low(mute);
delay_ms(40); //space
//Nineth Digit "5"
output_b(5);
output_high(enable);
output_high(mute);
delay_ms(50); //mark
output_low(enable);
output_low(mute);
delay_ms(40); //space
//Tenth Digit "6"
output_b(6);
output_high(enable);
output_high(mute);
delay_ms(50); //mark
output_low(enable);
output_low(mute);
delay_ms(40); //space
//Eleventh Digit "9"
output_b(9);
output_high(enable);
output_high(mute);
delay_ms(50); //mark
output_low(enable);
output_low(mute);
delay_ms(40); //space
}
}
}
void Init(void)
{
//initialize ports
set_tris_a(0b01000);
set_tris_b(0);
port_b_pullups(true);
output_a(0);
output_b(0);
} |
|
|
|
asmboy
Joined: 20 Nov 2007 Posts: 2128 Location: albany ny
|
|
Posted: Mon Apr 23, 2012 7:11 am |
|
|
your telephone line coupling circuit in the upper RH corner is defective.
1- it can link the floating tel line to your GROUNDED supply, if it were to work at all.
2- it will allow damaging ring voltage into your circuitry w/o a protective
clamp. and actually - the diode arrangement makes no electrical sense at all.
the national semiconductor data sheet for the part illustrates
a simple ( tho not line protected , ring clamped) proper way to connect to
the tel line circuit , showing how audio transformers are your friend....... |
|
|
raz
Joined: 22 Feb 2012 Posts: 22
|
|
Posted: Wed May 09, 2012 1:35 am |
|
|
Hey I managed to get an audio xfmr from an old telephone but its not 600 ohm its 200 : 160 and with centertaps. I found an interface ct. connecting 470 ohm along with the xfmr and the telephone. That solved the power problem I had, but the call still can't be placed. The telephone line doesn't seem to recognize the generated tone and keeps giving me that tone that is waiting for you to dial :s:s. What could be the problem ???? |
|
|
|