You are on page 1of 7

FEATURE ARTICLE

by Jingxi Zhang, Yang Zhang, & Huifang Ni

Telephone Message Watchdog


CONTEST WINNER

An Intelligent Call-Forwarding System

The Telephone Message Watchdog is an H8S/2398-based message-forwarding system for


home telephones. The touch-tone detection system triggers when your answering machine
picks up a call. After the caller hangs up, the system contacts you on your cell phone or pager.

owadays, more and more people


that complies with part 68 of the FCC
tal domain. Because the telephone audio
carry cellular phones, which are handy rules to provide safe operation.
signal frequency bandwidth is approxifor conducting business outside the
mately 3 kHz, the embedded ADC must
home and office. But, for reasons of priH8S/2398 ADVANTAGE
be able to digitize the audio signal at a
vacy, most people dont release their cell
To build this smart device, we knew minimum of 6,000 samples per second.
(The sampling rate must at least twice
we needed a microcontroller to moniphone numbers to the public. As a
the highest signal frequency.)
tor and control the telephone calling
result, its a common occurrence to miss
Second, the MCU should contain a
process. We decided not to use a hardtime-critical phone calls placed to home
two-channel digital-to-analog convertand office lines. To solve this problem, ware touch-tone detector and generaer (DAC) for the touch-tone generator.
tor in order to reduce the chip count,
we built the Telephone Message
Both the DAC and pulse width modusimplify the hardware design, and
Watchdog, which is a smart device that
lation (PWM) units can be used for
lower the projects overall cost.
instantly forwards a callers information
audio signal generation. However, the
from a home or office line to a pager.
Using software to detect and generate
audio signal generated from the DAC
With the pager information, you can
touch-tones requires the MCU to meet
has less harmonic distortion than that
contact the caller with your cell phone.
particular criteria. First, the MCU must
of the PWM unit. The touch-tone sigThe Telephone Message Watchdog is
contain an analog-to-digital converter
nal generated with lower order har(ADC) for converting audio signals,
connected in serial between a telephone
port and an answering machine. When
including touch-tone signals, to the digi- monic frequencies is easier to distinguish from voice signals.
you are out, an incoming call
Third, the MCUs CPU core
triggers the answering machine,
Port for setting
which gives the caller two
should possess adequate compupager/home numbers
Telephone
tation power to handle digital
options: either leave a voice mesV+
IC2
Ring
sage or enter a callback number.
signal processing. In the touchAnswering
machine
The smart device monitors the
tone detection process, the sigLoop current
answering machines status and
nal is fed to as many as eight
sensor
Setting
holds a touch-tone signal until
digital filters in a short period of
Answer machine
Normal
S1
condition
the calling process terminates.
time. Each digital filter is impleADC
MCU
Then, the device automatically
mented using a series of 16-bit
Dial tone
Line condition
dials your pager number. If a
fixed-point multiplication and
output
detection circuitry
caller leaves a phone number, the
accumulation (MAC) operations.
Line busy
IC4
Therefore, a fast 16-bit multiplisystem sends it to your pager. If
IC3
Line engage
er in the CPU core is required.
not, the system sends your home
Line
busy
number so you know to call it to
Based on the aforementioned
Off
hook
requirements, we selected the
hear the voice message.
Renesas H8S/2398 microconBefore starting the project,
Tip
troller, which contains an
we made a list of the functions
eight-channel, 10-bit ADC conwe were shooting for. As youll
Figure 1IC2 is a bidirectional optocoupler for the answering machines loop
verter with a sampling rate of
see, we met all of our goals.
current sensor. IC3 is for line-engage control. IC4 is for delivering line voltage
up to 150 kHz. It also has a
The result is a low-cost system condition information to the MCU.

76

Issue 171

October 2004

CIRCUIT CELLAR

www.circuitcellar.com

two-channel, 8-bit DAC converter.


The H8S/2398s CPU performance is
attractive. The system clock is 20 MHz,
and a 16-bit addition operation takes
one cycle (50 ns). The CPU instructions
contain signed and unsigned multiplication and division operations. The 16-bit
multiplication takes 1 s, which is adequate for touch-tone detection.
An embedded DMA controller further enhances the CPUs performance.
With the DMA controller, the digitized
data is transferred automatically to the
digital filter frame buffer without CPU
involvement. This feature liberates the
CPU of the burden of servicing frequent
data transfer interrupts and frees up
power for the CPU to perform digital
signal processing. The 8 KB of RAM
storage make the digital filter frame
buffers easier to design. There are 256 KB
of flash memory for instruction storage,
which is plenty for a small MCU.
Of course, the biggest incentive for
selecting the H8S/2398 MCU was the
H8 Renesas Design 2003 Contest.
Renesas offered a free H8 starter kit. We
selected the H8S/2398 starter kit from
Basic Micro. The kit came with an evaluation board, LCD module, and software package for Renesas MCU development. The evaluation board simplified the hardware construction process.

When the switch is set to the normal


position, the system is in working condition. The touch-tone audio signal is
coupled to the system through an isolation transformer. In order to prevent
the system from drawing a DC current,
a capacitor is used in series with the
isolation transformer. An op-amp conditions the incoming audio to optimal
voltage for the MCUs A/D converter.
After the caller hangs up the telephone receiver, the loop current drops
and the IC2 photosensitive transistor

collector voltage rises. The rising voltage triggers the MCU to stop the

CIRCUIT CELLAR

Issue 171

697 Hz
770 Hz
852 Hz
941 Hz

1,209 Hz
1
4
7
*

1,336 Hz
2
5
8
0

1,744 Hz
3
6
9
#

1,633 Hz
A
B
C
D

Table 1The DTMF matrix consists of a lower frequency


group represented as rows, containing four distinguished
frequencies, which are below 1 kHz, and a high-frequency
group represented as columns, containing four distinguished frequencies above 1 kHz. Each signal is combined
with a high-frequency tone and a low-frequency tone.

PHONE LINE INTERFACE


The telephone message watchdog
system contains the H8S/2398 evaluation board from the kit and analog
telephone interface circuitry. The
MCU in the evaluation board handles
touch-tone signal processing.
Figure 1 is a simplified diagram of the
device interface to a telephone line. In
compliance with part 68 of the FCC
rules, the MCU circuitry is isolated
from the telephone line by an isolation
transformer and optocouplers. An AC
optocoupler (IC2), which is connected
between the telephone input line and
the answering machine, serves as a line
loop-current detector. When the answering machine engages the line, a 20-mA
loop current flows through the optocoupler LED emitter, causing the optically
coupled photosensitive transistor to
conduct. The transistor collector voltage
VCE drops and triggers the MCU to enter
the touch-tone detection state.
www.circuitcellar.com

October 2004

77

touch-tone detection state and start the


message forwarding. First, the line condition detection circuitry checks the line
condition. When the line is free, there is
approximately 48 V across the tip and
ring lines. If anyone is using the line, the
voltage is dropped to a lower level and
the line condition circuitry turns the
photocoupler IC4 photosensitive transistor on to signal a line busy condition
to the MCU. If the phone line is free, the
MCU drives another photocoupler (IC3)
to close a resistor path across the tip and
ring lines. This action draws a 20-mA
DC loop current and engages the telephone line. When the remote telephone
switching office senses the loop current,
it acknowledges by sending a dial tone
and preparing to receive touch-tones.
The MCU, in turn, starts the touch-tone
generator and dials your pager number.
The generated touch-tone is amplified by
an op-amp and coupled to the telephone
line by the isolation transformer.
If you turn S1 to the setting position,
it allows a telephone to connect to the
device. You can then use a regular
telephones touchpad to preset the
pager number and home phone number.

DTMF DETECTION
The telephone tone dialing system is
called dual-tone multi-frequency (DTMF)
signaling. Its a standard telecommunication system developed by Bell
Laboratories. In this system, a matrix is
used to compose a signal, which consists
of a lower frequency group, containing
four distinct frequencies that are below
1 kHz, and a high-frequency group, containing four distinct frequencies above
1 kHz (see Table 1). Each telephone key
is represented by a pair of simultaneous
low- and high-frequency tones.
To detect DTMF signals by software
in the digital domain, many algorithms
have been proposed. The modified
Goertzel algorithm is one of the most
efficient computing techniques for
detecting a limited number of frequencies. In the case of DTMF tone detection,
the Goertzel algorithm analyzes only
eight frequencies instead of performing
an entire transform using something like
FFT. This saves a lot on computational
resources, which are critical for lowerpower processors. Its noncomplexity is
easy to adapt into small MCUs and

78

Issue 171

October 2004

Listing 1Here you can see the Goertzel DFT filter register usages and the variable definitions.
// GoertzelDFT function Parameters:
// R0: Cosine coefficient of the frequency (premultiplied by 2^16)
//
// Return:
// R0 Magnititude^2 of the filtered frequency
//
// Note:
//
// Gozertzel algorithm:
// Sk[n] = x[n] + 2*coefficient*Sk[n-1] - Sk[n-2]
// Only last N (do once):
// Mag^2 = SK[N]^2 - 2*coefficient*SK[N]*SK[N-1] + SK[N-1]^2
//
// The operation is using fixed point data format
// Upper 18bit is integer part of the real data
// Lower 14bit is fraction port of the real data
//
// Register usage:
// ER0:
Sk[n]
// ER1:
Sk[n-1]
// ER2:
Sk[n-2]
// E3
coefficient * 4
// R3L
loop count
// ER4
input sample pointer
// ER5
for temp reg
******************************************************************
SKN1
.REG
(ER1)
SKN2
.REG
(ER2)
COE:
.REG
(E3)
LPCOUNT
.REG
(R3L)
NEGFLG
.REG
(R3H)
SAMPLEPTR
.REG
(ER4)
SKN1HIGH
.REG
(E1)
SKN1LOW
.REG
(R1)
SKN2HIGH
.REG
(E2)
SKN2LOW
.REG
(R2)
Listing 2And here you see the Goertzel DFT filter assembly codes.
// Function: GoertzelDFT
******************************************************************
GoertzelDFT:
PUSH.L ER2
//ER0 and ER1 don't to save
PUSH.L ER3
PUSH.L ER4
PUSH.L ER5
MOV.W
R0, COE
//save coefficient on R3
SUB.L
SKN1, SKN1
//initial SKN1
SUB.L
SKN2, SKN2
//and SKN2
MOV.L
@_DTMFBUFFPTR,SAMPLEPTR //pointer to first sample
MOV.B
#DTMFCOUNT, LPCOUNT //set loop counts
GozertzelLoop:
MOV.L
SKN1, ER0
//use ER0 for temp reg
BPL
?0010
//if Sk[n-1] is positive, go ahead
NEG.L
ER0
//else change it to positive number
?0010: SHAL.L ER0
//Sk[n-1] * 2
;Multiply lower portion of Sk[n-1] with cosine coefficient
MOV.L
ER0, ER5
//ER5 for fraction(Sk[n-1])
MULXU.W COE, ER5
//fraction(Sk[n-1])*2*Coefficient
MOV.W
E5, R5
//move upper word to lower
EXTU.L ER5
//clear upper word
;Multiply upper portino of Sk[n-1] with cosine coefficient
MOV.W
E0, R0
MULXU.W COE, ER0
//temp=integer(Sk[n-1])*4*Coeff
ADD.L
ER0, ER5
//result is in ER5
MOV.L
SKN1, ER0
//test Sk[n-1]
BPL
?0020
//if postive, do nothing
NEG.L
ER5
//else change result to positive
?0020 SUB.L
ER0,ER0
//clear ER0
(Continued)

CIRCUIT CELLAR

www.circuitcellar.com

Listing 2Continued.
MOV.W
SHLR.L
ADD.L
SUB.L
MOV.L
MOV.L
DEC.B
BNE
SUB.B
MOV.W
BPL
NEG.W
INC.B
?0030: MOV.W
BPL
NEG.W
INC.B
?0040: MOV.L
SHAL.L
MULXU.W
MOV.W
MULXU.W
MULXU.W
MULXU.W
ADD.L
BTST
BEQ
ADD.L
BRA
?0050: SUB.L
?0060: MOV.L
POP.L
POP.L
POP.L
POP.L
RTS

@SAMPLEPTR+, E0 //Get next sample (integer potion)


#2, ER0
//divide by 4
ER5, ER0
//Sk[n]=Sample+Sk[n-1]*2*Coefficient
SKN2, ER0
//
- Sk[n-2]
SKN1, SKN2
//Sk[n-2] = Sk[n-1]
ER0, SKN1
//Sk[n-1] = Sk[n]
LPCOUNT
//count-GozertzelLoop //if count != 0, repeat
R0L, R0L
//clear R0L for sign indicator
SKN1HIGH,SKN1LOW
//only integer portion is used
?0030
//check if negtive
SKN1LOW
//if change it to positive
R0L
//neg indication
SKN2HIGH,SKN2LOW
//only integer portion is used
?0040
//check if negative
SKN2LOW
//if change it to positive
R0L
//neg indication
SKN1, ER5
//
ER5
//Sk[n-1] * 2
COE, ER5
//integer(Sk[n-1]) * 2* Coefficient
E5, R5
//take the integer portion of result
SKN2LOW, ER5
//2*Coeff*(Sk[n-1])*integer(Sk[n-2])
SKN1LOW, SKN1
//integer(Sk[n-1])^2
SKN2LOW, SKN2
//integer(Sk[n-2])^2
SKN2, SKN1
//Sk[n-1]^2 + Sk[n-2]^2
#0, R0L
//check the sign of product term
?0050
//if positive, do subtraction
ER5, SKN1
//else, do addition
?0060
ER5, SKN1
//- 2*Coeff*Sk[n-1]*Sk[n-2]
SKN1, ER0
//result in ER0
ER5
ER4
ER3
ER2

DSP. Therefore, we selected the modified Goertzel DFT for our design.
Like an infinite impulse response (IIR)
filter, a Goertzel algorithm contains a
recursive feedback path. For a DTMF
tone filter, the following calculation
step is performed on incoming data:
2k
Sk [ n ] = x [ n ] + 2 cos

N
Sk [ n 1] Sk [ n 2 ]

where n = 0, 1, , N 1. N is the block


size, and k = fDTMF/fSAMPLING. (fDTMF is a
DTMF tone frequency. fSAMPLING is the
ADC sampling frequency.) x[n] is the
newly arrived sampled data.
Initially, Sk[n 1] = 0 and Sk[n 2] = 0
when n equals zero. In the last step,
the modified Goertzel algorithm calculates the power of the frequency:
Y (k )

2k
= Sk2 [ n ] 2 cos
Sk [ N ]
N

Sk [ N 1] + Sk2 [ N 1]

For computation efficiency, DTMF


www.circuitcellar.com

and instructs the DTMF filtering


process to start working on the second
buffer. This ping-pong buffering is
repeated every 14 ms.

DTMF GENERATION
The DTMF tone generator is implemented using a D/A converter and
sine wave look-up table, which is a
50-entry byte array representing a complete precalculated sine wave. Two
16-bit timer units drive D/A converters with accurate clock rates. When a
DTMF tone is requested, the two
basic frequencies are selected. The
clock rate for each DAC is determined
with the following equation:
D / A clock rate =
basic DTMF frequency 50

For example, 38,500 Hz = 770 Hz 50.


The timer units are set to generate
the required clock rate for each frequency. Two channels of DAC output
are mixed at the op-amp in the telephone line interface circuit.

MCU OPERATION
We mixed H8S/2600 assembly and C
languages. Figure 3 is the program flow
chart. When the device is powered on,
the MCU starts a reset process and sets
up the on-chip peripheral I/O modules,
including 16-bit timer units, an ADC, a
DMA controller, D/A converters, and I/O

detection is implemented using the H8S


assembler language (see Listing 1 and
Listing 2). Each filter uses precalculated coefficients from a differHardware resource
ent K value corresponding to the
DTMF basic frequency. The
A/D output
ADC
DTMF
buffer (one word)
input audio signal is digitized by
End of
transfer
8,000 Hz
the on-chip ADC at an 8-kHz
interrupt
Interrupt
System
DMA
TPU
sampling rate. The 20-MHz H8S
service
clock
/2,500
routine
20 MHz
MCU computation speed is adequate to handle the input data at
Swap
Double
Buffer block 1
Buffer block 2
this sampling rate. The A/D sambuffering
(115 words)
(115 words)
pling clock arrives from an onStart
chip 16-bit timer (see Figure 2). A
Row filters 697 MHz 770 MHz 852 MHz
941 MHz
DMA channel is used to feed the
Column filters 1,209 MHz 1,336 MHz 1,477 MHz 1,633 MHz
converted data to a 115-word
Goertzel DFT filters
buffer. A double-buffered memoDTMF analysis logic
ry storage scheme is used. When
the DTMF filtering process is
Figure 2An A/D converter at 8,000 samples per second digiworking on a data-filled buffer
tizes the DTMF tone signal. Its then delivered to one buffer block
(first buffer), the DMA controller
of the double-buffered memory through the DMA channel. An
interrupt service routine triggered by an end-of-transfer signal
is feeding data to a second buffer
from the DMA controls the double-buffered memory in a ping-pong
from the ADC. The interrupt
manner. The filled buffer block is sent to eight filters to determine
service routine then sets the
a single low frequency and a single high frequency, which are sent
DMA pointing to the first buffer
to DTMF analysis logic to convert to a DTMF symbol.
CIRCUIT CELLAR

Issue 171

October 2004

79

Photo 1The bottom is the telephone interface board, which connects to the top evaluation board by a 14-conductor ribbon cable.

pins. The MCU then enters Sleep mode.


A loop current sensor interrupt (IRQ7)
wakes up the MCU when the answering
machine loop current increases in case
an incoming call has arrived. The ring
signal pattern is on for 2 s and pauses
for 4 s. To check if the answering
machine is turned on, the IRQ is disabled temporarily, and the loop-current

80

Issue 171

October 2004

condition is continuously monitored.


Only when a loop current stays on after
the ring on-off period does the MCU
enter DTMF Tone Detection mode.
In DTMF Tone Detection mode, the
ADC continuously samples the line
signal, and the DMA control feeds the
converted data into one of the DTMF
detection buffers. For each 14-ms frame,

CIRCUIT CELLAR

all eight Goertzel filtersfour for the


low-frequency group and four for the
high-frequency groupare executed. If
any of these filters detects a significant
tone, a validation test is performed. The
validation test includes the process of
verifying that both the high- and low-frequency tones are simultaneously present.
It also verifies that only one tone is present in the low-frequency group and only
one tone is present in the high-frequency
group. Finally, the test verifies that the
dual-tone duration lasts at least three
14-ms frames (greater than 40 ms, as
required by the FCC). The pause between
the DTMF tones also should be verified
in order to recognize two separate DTMF
numbers with the same value. If the validation test passes, the number is captured and stored in a memory location.
When the caller terminates the call,
the loop current sensor generates another
interrupt at IRQ7. The MCU stops
DTMF Detection mode and starts
Message Forwarding mode, during which
the line condition is checked first. If the
line is free, the MCU sets the output pin
(PC0) to logic high. This action engages

www.circuitcellar.com

the telephone line. Then the


DTMF tone generator sends your
pager number through the DAC
to the telephone interface. Then
the MCU listens to the incoming
audio signal for the pagers beep.
A few seconds after the beep, the
captured phone number is sent
to the output by the DTMF tone
generator. Finally, the MCU frees
the phone line and returns to
Sleep mode and waits for the
next calling process.

supply, rail-to-rail (I/O) op-amp,


OPA2340. One channel of the
Initialization
OPA2340 (IC1a) is for a touchtone detection signal-conditioning
amplifier. It provides a 5-V outLine loop
current
put range, which is optimal for
Interrupt
sensor
Watchdog wakeup
the ADC. OPA2340 also accepts
rail-to-rail input. That makes
DTMF Generator
DTMF Detection
the DTMF tone generator design
capture number
easier. The DAC can directly
Home number
Captured number
drive the 5-V ranged DTMF sigN
Loop current
N
Y
Any captured
nal to the op-amp. Two channels
== 0?
number?
Y
of generated basic DTMF tone
are mixed by IC1b, the other
N
Line busy
Dial pager
?
half of the OPA2340. The mixed
CIRCUIT CONSTRUCTION
DTMF generator
Y
signal is then fed into the isolaAs we mentioned, we used
Engage telephone line
Delay N seconds
tion transformer T1.
Basic Micros H8S/2398 starter
kit board. The telephone line
IC2 is an AC optocoupler for the
Figure 3The MCU is in Sleeping mode after initialization. The line loop
interface circuit was constructloop
current sensor. Because the
current sensor wakes it up and it starts to detect the DTMF signal. After
ed on a separate board. The
loop current can be as high as
the loop current drops, the MCU starts dialing the pager number and
delivers the message.
starter kit board piggybacks on
70 mA in a short circuit situation,
top of the interface board. A
we selected the Fairchild H11AA3
14-conductor ribbon cable electronically
audio coupling circuit. C1s voltage rating
optocoupler, which has a good IF rating
connects both boards (see Photo 1).
should be higher than 100 V. We selected
(IF = 100 mA). IC3 is Toshibas TLP222G
optocoupler, which contains an infraredFigure 4 is a schematic of the telephone
a 1-F, 250-V metal polyester capacitor.
line interface circuit. T1 is a 600- isolaD1 and D2 provide surge protection.
emitting diode coupled with a bidirection transformer. T1 and C1 compose the
tional photo-MOSFET circuit with a
IC1 is a Texas Instruments dual singlePower on

Figure 4JP1 and JP2 are the connectors of the starter kit board. The power supply block is connected to the evaluation board power supply switch 5-V regulated source and
9-V unregulated source. Note the point in-between T1 and R2 is a connection point to the optional audio monitor circuit.
www.circuitcellar.com

CIRCUIT CELLAR

Issue 171

October 2004

83

350-V/120-mA rating. Therefore, its


safe to use as a relay to connect a 600-
resistor (R7) across the tip and ring lines
when the MCU engages the phone line.
Bridge rectifier D4, Zener diode D5,
high-voltage transistors (VCE = 400 V) Q1
and Q2, and optocoupler IC4 comprise a
phone line condition detector. When the
phone is on the hook, there is a 48-V
voltage across the tip and ring lines. D4
routes the positive voltage polarity to
the 16-V Zener diode D5. Because the
on-hook line voltage is higher than the
Zener diodes breakdown voltage, the
Zener diode conducts and the small current flowing through D5 causes Q1 to
conduct. As a result, Q2 is shut off and
no current flows through the IC4 emitter
LED. The IC4 photosensitive transistor
is therefore turned off, and the line input
to the MCU stays high. If the line is in
use, the line voltage drops to a lower
level in the range of 5 to 10 V. In this
case, D5 is not conducting, and therefore
causes Q1 to shut off. As a result, Q2
turns on and the IC4 emitter LED lights
up. This causes the line input to the
MCU to drop to logic 0, indicating
that the phone line is busy.
S1 is a 4PDT mode switch. In Normal
mode, the telephone line is connected to
the DTMF tone detector. When it is
switched to Setting mode, a specific
phone port is connected to the DTMF
tone detector. This allows a regular telephone (no power) connected to this port
to dial the owners preset pager number
and home phone number. To allow the
regular telephone to be used, the port is
also fed a power supply through resistor

Mode

Selection

Setting

Pager number setting


Home number setting

0+*
1+*

numbers + #
numbers + #

Table 2Presetting the system is a cinch. Use this


table as a guide.

R2. D1 is a protection diode to prevent


damage from mistakenly connecting a
48-V phone line to this port. In that
case, D1 becomes nonconductive.

USAGE AND PRESETTING

You have to preset your pager and


home numbers before use. To do so,
first connect a regular telephone to
the presetting port J1. After the device
is powered on, push in the mode
switch (S1) to enter Presetting mode.
The device now waits for you to enter
the pager number and phone number
using the telephones keypad (see
Table 2). Punching the 0 key followed
by the * key enters Pager Number
Setting mode. The 1 key followed by
the * key enters Home Phone Number
Setting mode. Then the pager or home
phone number can be entered and terminated by pressing the # key.
The LCD will show the number you
entered. Each number entered is
instantly saved even if the mode
switch is changed back to Normal
mode before the # key is pressed to
stop either of the setting modes.
Connect J2 to the telephone port and
J3 to an answering machine. After the
system is preset, switch S1 back to normal. Now the system is ready to use.
To test it, you can use a second line or
cellular phone to
dial this line number. After the
answering machine
triggers and waits
for a message, you
can punch in a callback number. The
LCD should correctly display the
number you
entered. After you
hang up the phone,
the system will
enter Information
Figure 5This optional audio monitor uses the Freescale low-power audio amplifiForwarding mode
er MC34119. With this chip the audio monitor can be built with only a few external
and dial out the
resistors and capacitors. The speaker is directly connected to the output of the chip
pager number as
without an impedance matching transformer.

84

Issue 171

October 2004

CIRCUIT CELLAR

well as the number you entered. To


monitor Information Forwarding mode,
you can add an audio monitoring circuit
to the system (see Figure 5). You can
then hear the generated touch-tone. I
Jingxi Zhang graduated from
Zhongshang Medical University,
Guangzhou, China. He earned an
M.S.E.E. at the University of California,
Irvine and a Ph.D. in Neuroscience at
UCLA. He is currently the Chief
Technologist at JVC North America R &
D Center in California. You may contact him at zhang@jvclab.com.
Yang Zhang is an undergraduate studying electrical engineering and computer
science at the University of California,
Berkeley. Yang recently completed an
internship at Microsoft. You may contact Yang at yang.zhang@overbored.net.
Huifang Ni graduated from Zhongshang
Medical University, Guangzhou, China.
She holds an M.S. in pharmacology
from Zhangshang Medical University.
Previously, she worked as a researcher
at the UCLA Brain Research Institute
and medical school at the University of
California, Irvine. Huifang currently
works as a senior staff researcher at
Elan Pharmaceuticals in California. You
may contact Huifang at huifang.ni@
elan.com.

PROJECT FILES
To download the code, go to ftp.circuit
cellar.com/pub/Circuit_Cellar/2004/171.

RESOURCES
FCC, Part 68 of the FCC rules,
www.fcc.gov/wcb/iatd/part_68.html.

SOURCES
MC34119 Low-power audio amplifier
Freescale Semiconductor, Inc.
www.freescale.com
H8S/2398 Microcontroller
Renesas Technology Corp.
www.renesas.com
OPA2340 Op-amp
Texas Instruments, Inc.
(972) 644-5580
www.ti.com
www.circuitcellar.com

You might also like