Upload
tanatos666
View
1.380
Download
2
Embed Size (px)
Citation preview
Segundo Congreso Virtual, Microcontroladores y sus Aplicaciones
pág. 1
Control de dispositivos mediante DTMF
Autor: Gaspar Daniel Gómez
País: Argentina
Correo-e: [email protected]
Abstract. Planteada la necesidad de controlar dispositivos eléctricos tanto de manera local como remota, se propone la investigación del sistema de marcación por tonos, utilizado en el sistema telefónico estándar como medio de comunicación entre el usuario y el equipo final. Utilizando el circuito integrado CM8870 para decodificar dichos tonos y el microcontrolador MC68HC908 derivativo QB8, para el control y procesamiento de señales. Se intenta realizar un dispositivo capaz de controlar la activación y desactivación de cargas eléctricas y electrónicas, contestar automáticamente una llamada entrante e interpretar los comandos introducidos por el usuario mediante funciones implementadas por software.-
1. Que significa DTMF?
En telefonía, el sistema de marcación por tonos,
también llamado sistema multifrecuencial
o DTMF (Dual-Tone Multi-Frequency), consiste en
el envío de dos tonos de frecuencias diferentes que
identifican cada tecla pulsada en un teléfono. De esta
manera se sustituye el disco de marcado de los
teléfonos más antiguos, obteniéndose a la vez varias
ventajas adicionales como por ejemplo mayor
velocidad de marcado. Los tonos que el usuario oye
cuando presiona una tecla de su teléfono, están
compuestos por dos frecuencias como se indica en la
tabla 1.-
Las frecuencias ubicadas en la primera fila se
conocen como frecuencias de rango alto (Mayores a
1KHz), mientras que las frecuencias ubicadas sobre
la primera columna se conocen como frecuencias de
rango bajo (Menores a 1KHz). Nótese que a cada
tecla le corresponde un solo par de frecuencias
compuesto por una frecuencia de rango alto y una de
rango bajo.-
Este sistema de marcación es posible gracias al
desarrollo de circuitos integrados que generan dichos
tonos, como así también los decodifican. En este
proyecto se utiliza el decodificador CM8870.-
Frecuencias DTMF - Tabla 1.-
2. El Tono de Llamada.-
En estado de reposo, la línea telefónica se
encuentra con una tensión de aproximadamente 40,
45V a 20Hz que se oye de manera continua, cuando
el usuario comienza a marcar el número de otro
abonado el tono se silencia para que los tonos DTMF
se envíen de manera limpia a la central, que
identificará el numero destino y establecerá la
comunicación. Inmediatamente después de que un
usuario termina de marcar el número del destinatario,
se produce el conocido “Tono de llamada”. Esta señal
es una onda sinusoidal, con una frecuencia de 20Hz y
una amplitud que puede alcanzar los 90V, viaja a
través de la línea telefónica desde la central hasta el
usuario destino, para indicarle al mismo que esta
presente una nueva llamada entrante. Al mismo
tiempo, la central envía la misma señal al usuario que
inicio la llamada (Tono que el usuario origen oye
mientras espera a ser atendido) a modo de indicarle
que su llamada esta en curso. En este caso no se oye
el tono de manera continua, sino que se han
establecido códigos de “Tono-espacio” que indican el
estado de la llamada en curso. De esta manera
sabemos que si la separación entre tonos es de un
tiempo mínimo, el abonado al que estamos llamando
se encuentra “Ocupado”, si los tonos tienen una
separación de mas de 2 segundos, sabemos que solo
nos queda esperar a que conteste el abonado destino.-
Cuando el usuario destino contesta la llamada, en
realidad, lo que esta haciendo es aplicar a la línea una
carga de 600Ω, la cual cierra el circuito de
comunicación indicando a la central que este usuario
esta listo para comenzar la comunicación. Cuando
esto sucede la tensión de la línea desciende hasta los
10V. De esta manera queda establecido el enlace
entre ambos abonados.-
1209
Hz
1336
Hz
1477
Hz
1633
Hz
697Hz 1 2 3 A
770Hz 4 5 6 B
852Hz 7 8 9 C
941Hz * 0 # D
Segundo Congreso Virtual, Microcontroladores y sus Aplicaciones
pág. 2
3. Los Objetivos.-
• Principalmente, el proyecto se basa
en lograr una comunicación entre el usuario
y el equipo a desarrollar, para que el mismo
usuario pueda controlar equipos eléctricos y
electrónicos desde cualquier teléfono
comercial. Dado que el sistema de
marcación por tonos es un estándar mundial
y que, actualmente, desde cualquier parte del
mundo, se puede realizar una llamada a otro
teléfono que no necesariamente se encuentre
en la misma localidad, estamos en
condiciones de afirmar que este desarrollo
puede ser controlado desde cualquier parte
del globo.-
• Si consideramos que el sistema se
conecta a la red de telefonía pública,
cualquier persona que conozca el número de
línea al que este conectado dicho sistema
puede tener acceso al mismo, por lo que será
necesaria la implementación de un código
que restrinja el acceso solo al grupo de
usuarios que lo conozcan. Esta clave deberá
ser ingresada de manera secuencial al
sistema y no tendrá que dar lugar a llamadas
accidentales, ya que si se utiliza de modo
local (El teléfono desde el que se genera la
marcación esta conectado a la misma línea
que el sistema) los tonos generados por el
teléfono también se envían a la central que
provee el servicio.-
• Mediante funciones implementadas
por software realizar tanto las activaciones y
desactivaciones individuales de las salidas,
como así también en forma conjunta.
• No hay una manera precisa de saber
cuando el usuario termina la comunicación,
es decir, cuando “cuelga el tubo”, por esta
razón será necesario generar una función
que libere la línea pasado un cierto tiempo
desde que se recibió el último comando.
Este tiempo será de 10 segundos
aproximadamente.
• Si el equipo se instala sobre una
línea compartida, que se utiliza para voz y
datos, el sistema no deberá contestar
inmediatamente cuando detecte una llamada
entrante, sino que deberá esperar a que
alguien atienda y si después de tantos tonos
ninguna persona contesta, lo deberá hacer el
mismo sistema.-
4. El Sistema.-
El corazón del sistema es el microcontrolador
68HC908QB8, de este micro se utilizan los módulos
KBI (Keyboard Interrupt), TIM (Timer Interrupt Module) y ambos puertos de entrada/salida (PTA y PTB). La lógica de apoyo esta constituida por el
decodificador de tonos CM8870, el cual se encarga
de la interpretación de los tonos recibidos.
Como se vio en la sección 2, la tensión de línea
varía en un rango bastante amplio por lo que se debe
adaptar para que pueda ser ingresada al
microcontrolador sin causar ningún daño al
dispositivo. Para esto se implemento un enlace óptico
que permite separar las variaciones de tensión de la
línea con respecto a las del circuito impreso. Al
aplicar este opto-acoplador también se rectifica en
media onda la tensión de entrada.-
A continuación se describen los detalles más
importantes de cada etapa del sistema.-
4.1 Entrada de Línea.-
Esta etapa se caracteriza por adaptar los niveles de
tensión de la línea telefónica y llevarlos a niveles
TTL para su posterior ingreso a las otras etapas. Un
circuito integrado LM555 en configuración
monoestable se dispara con el primer flanco
descendente de cada pulso del tono de llamada y
mantiene su salida en alto durante el transcurso del
tono. Gracias a esto se puede utilizar el modulo de
interrupción por teclado (KBI) para detectar y contar
los tonos de una llamada entrante.
4.2 Decodificador.-
Se toma una derivación de la línea de entrada y se
envía al decodificador CM8870 mediante un
capacitor de 0.1µF para bloquear la componente de
corriente continua. El decodificador separa ambas
frecuencias, las decodifica, envía el valor a su salida
y lo indica activando dos bits de señalización
denominados ESt (Early Steering output) y StD
(Delayed Steering Output). Estos bits tienen conexión
física al exterior. El pin 15 (StD) se envía
directamente al microcontrolador. Indica que durante
un tiempo prudencial estuvo presente un tono
considerado como válido y que el valor ya esta
disponible en la salida.
4.3 Contestador.-
Para contestar una llamada basta con cargar la línea
telefónica con una impedancia de 600Ω. Para lograr
Segundo Congreso Virtual, Microcontroladores y sus Aplicaciones
pág. 3
esto, se conectan a la línea un par de resistencias en
serie, de 270Ω y 330Ω, y los contactos “Normal
abierto” (NO) y “Común” (C) de un relé que va a
actuar como la horquilla del teléfono. Este relé es
controlado por el microcontrolador.
Por software se indica la cantidad de tonos de
llamada que el sistema debe recibir antes de
contestar. Un contador interno lleva esta cuenta y si
después de un lapso de 10 segundos no se reciben
más tonos (De llamada o DTMF), se resetea para
poder iniciar la cuenta nuevamente.-
4.4 Salidas Controladas.-
El sistema cuenta con 6 salidas TTL para controlar
6 cargas independientes. Para controlar cargas de
220Vca o 110Vca deberá aplicarse una interfaz de
potencia tal como puede ser un banco de relés. Estas
salidas se controlan mediante un protocolo propio.
Los pasos a seguir para realizar cualquier acción
sobre las mismas son los siguientes:
• Ingresar la contraseña de manera
secuencial.-
• Indicar la función que se desea realizar
(Teclas del teléfono):
(1): ACTIVAR una salida.-
(2): DESACTIVAR una salida.-
(7): ACTIVAR TODAS las salidas.-
(8): DESACTIVAR TODAS las salidas.-
(9): RESETEAR secuencia.-
Cualquier otra tecla: CORTAR COMUNICACIÓN.-
• Indicar la salida a la que ataca la función
indicada, en caso de ser (7) u (8), este paso se
omite ya que ataca a todas las salidas.-
Una vez que se ingresa al sistema mediante la
contraseña, hasta que éste corte la comunicación, no
es necesario reingresar dicha contraseña nuevamente.
Se procede desde el segundo paso.-
4.5 El Microcontrolador.-
Siendo el “cerebro” del sistema, controla,
administra y procesa todas las señales del mismo. El
microcontrolador utilizado para este proyecto es el
MC68HC908QB8 de la familia “Nitron”
perteneciente a la firma Freescale. Este micro se
considera idóneo para este tipo de procesamiento ya
que en su encapsulado DIP-16 posee 14 pines de
entrada/salida de propósito general (GPIO) que se
encuentran interconectadas internamente a los
diferentes módulos como son el Conversor A/D,
Interrupción por teclado, reloj interno, puertos A y B,
temporizadores, comunicación serie, etc. El entorno
de desarrollo integrado (IDE) utilizado es
CodeWarrior y se programó en lenguaje C.-
4.6 El Software.-
El software se basa fundamentalmente en el uso de
interrupciones y funciones. El programa principal lo
único que hace es refrescar los estados de las salidas
y chequear la ejecución de la secuencia de control. Se
setean dos interrupciones principales por KBI y una
por desborde del modulo temporizador TIM.
En el primer caso, se interrumpe el cauce normal
del programa ya sea porque, se ha detectado un tono
de llamada o porque el decodificador CM8870 acusa,
mediante la señal StD, que hay un tono válido
presente en la salida del mismo. Para averiguar que
evento fue el que causo la interrupción, se interrogan
las entradas del microcontrolador destinadas al
módulo KBI.-
Si el resultado de la interrogación es que hay un
tono de llamada válido, entonces se incrementa un
contador que registra la cantidad de tonos de
llamadas entrantes ocurridos hasta el momento y se
compara con un valor establecido por software que
determinará la cantidad de tonos que deben esperarse
antes de contestar automáticamente la llamada. Si la
llamada es contestada antes de que se alcance dicha
cantidad de tonos el sistema no actúa, caso contrario,
se activa el relé de la etapa del contestador
automático cargando la línea con 600Ω y se espera el
ingreso de una contraseña (por defecto es * 0 #) que
habilite el ingreso al sistema. Esta contraseña es de 3
dígitos y tiene una secuencia preestablecida la cual
debe ser respetada. De no ingresarse en la secuencia
correcta, el sistema identificará esta acción como una
intrusión, y provocara la apertura del relé que cortara
la comunicación.
Otro caso de interrupción del módulo KBI, como
se dijo anteriormente, es mediante la activación de la
señal StD del decodificador CM8870. En este caso se
revisa el valor entregado por el decodificador y se
envía a una función que se encargara de determinar
en que paso de la secuencia se encuentra el programa
y el significado del comando ingresado por el
usuario. De esta manera se saltea la cuenta de tonos
de llamada entrante y se puede acceder al sistema en
modo Local ingresando directamente la contraseña.
Segundo Congreso Virtual, Microcontroladores y sus Aplicaciones
pág. 4
Una vez que se autoriza el ingreso, ya sea Local o
Remoto, el usuario puede proceder con el ingreso de
comandos indicados en el apartado 4.4. Secuencia de
ejemplo: *, 0, #, 1, 6, 0, 2. Donde:
* 0 #: Contraseña de acceso.-
1, 6: Activar Salida número 6.-
0, 2: Desactivar Salida número 2.-
Se pueden seguir ingresando más comandos.
Cuando pasen 10 segundos del último comando
recibido, el sistema cortara la comunicación como se
explica a continuación.-
La interrupción por el modulo TIM, se utiliza para
generar una base de tiempo de 10 segundos. El
temporizador se resetea cada vez que se ingresa un
tono DTMF, lo que nos permite generar el corte
automático por falta de comando, esto significa que si
no se ingresa un comando válido dentro de un
margen de 10 segundos, se libera la línea telefónica y
el sistema se prepara para iniciar una nueva secuencia
de control.-
5. Conclusiones.-
El sistema nos brinda la capacidad de controlar 6
cargas tanto de manera local como remota.
Dependiendo de las cargas que se deseen controlar el
usuario optará por la interfaz de salida que más se
ajuste a sus necesidades.
Con el acceso por contraseña, nos aseguramos que
solo los usuarios que la conozcan tengan acceso al
sistema, pero a la vez, si conectamos varios de estos
equipos a la línea telefónica y a cada uno le
asignamos contraseñas distintas, podríamos controlar
mas salidas de las 6 disponibles en un solo equipo
(posibilidad de expansión). Para esto solo hay que
tener en cuenta que la impedancia con la que
cargamos la línea no sea demasiado baja, lo que se
podría solucionar compartiendo el modulo del
contestador automático.-
Debido a que la plataforma de comunicación
utilizada es un estándar mundial, el sistema puede ser
controlado desde cualquier parte del mundo. Es
evidente que cualquier línea telefónica puede ser
contactada por medio de una llamada.-
El hecho de conectarse a la línea telefónica no
implica que el sistema deba estar al lado del teléfono,
solo con conectarlo a la línea y a la fuente de
alimentación, es suficiente para que éste pueda
operar. Esto significa que el sistema podría ser
instalado discretamente en un altillo, sótano, armario,
etc.-
Siendo más críticos, los “contra” que tiene este
sistema son, principalmente, que si operamos de
manera remota no tenemos ninguna clase de
confirmación de que el comando que enviamos ha
sido procesado con éxito. En modo local solo
tenemos confirmación visual mediante LED’s que
actúan como monitores que, al instalar el sistema de
manera discreta, se puede perder dicha
confirmación.-
Apéndice I.-
En el enlace siguiente se puede ver un video DEMO
del sistema en funcionamiento, esta instalado sobre
una línea residencial y muestra ambos modos de
trabajo, local y remoto.
Enlace: DTMF DEMO
Apéndice II.-
Plano eléctrico esquemático (En la pagina siguiente).-
Referencias:
[1] CM8870/70C Datasheet “CMOS Integrated DTMF Receiver” 9/28/2000.-
[2] MC68HC908QB8 Data Sheet, Rev. 1 6/3/2005.-
[3] Artículo “Marcación por tonos” 24 ago 2010
Wikipedia.org
“Copyright ©2010. Gaspar Daniel Gómez”: El autor delega a la Organización del Segundo Congreso Virtual de
Microcontroladores la licencia para reproducir este documento para los fines del Congreso ya sea que este
artículo se publique en el sitio web del congreso, en un CD o en un documento impreso de las ponencias del
Segundo Congreso Virtual de Microcontroladores.
1
1
2
2
3
3
4
4
D D
C C
B B
A A
Title
Number RevisionSize
A4
Date: 08/10/2010 Sheet ofFile: D:\Proyectos Protel\..\DTMF1.SchDoc Drawn By:
12
P3
Header 2H
100K
R17
GND
3.3K
R14
61
2
4
5
3
U4
4N25
0.43uF x 200V
C5
0.1uF
C4
100K
R5
100K
R7
TRIG2
OUT3
RST4
CVOLT5
THR6
DIS7
+VCC8
GND1
U5
LM555CN
IN+1
IN-2
OSC17
OSC28
EST16
ST/GT17
GS3
VREF4
VDD18
VSS9
STD15
Q111
Q212
Q313
Q414
PDN6
INH5
TOE10
U2
MT88L70AE
VDD1
PTB72
PTB63
PTA54
PTA45
PTB56
PTB47
PTA38
PTA29
PTB310
PTB211
PTA112
PTA013
PTB114
PTB015
VSS16
HC908QB8U3
HC908QB8
Line_In
Line_In
12
3.579
Y1
GND
10K
R12
VCC
VCC
GND
0.1uF
C7
100uFC6
18K
R21
GND
VCC
VCC
GND
VCC
150KR8
150KR10
0.1uFC3
VCC
12
34
5
*
RELE
Q3BC548C
D10Diode
VCC
GND
1K
R23AT
Line_In
330
R16
270
R19
1
23
J1
GND
470uFC1
100nF
C2
IN OUT
GND
U1
LM7805
GNDGND GND
VCC
Q2BC548C4,7K
R22
GND
10K
R20
VCC
470
R13
470
R18
GND
VCC
D8LED0
D9LED0
D2
LED0
D1
LED0
D7
LED0
D3
LED0D4
LED0D5
LED0
D6LED0
470
R1
470
R2
470
R4
470
R6
470
R9
470
R11
GND
Out_1
Out_2
Out_3
Out_4
Out_5
Out_6
Estado
1KR3
GND
VCC
GND
TONO
TONO
AT
Q1Q2Q3Q4
StD
Q1
Q2
Q3Q4
StD
Out_1
Out_2
Out_3
Out_4Out_5
Out_6
123
P1
123
P2
12
P4
Estado
GND
Estado
470R24
D11
GND
StD