NOTA: Si algun Moderador puede editar alguna de las imágenes que aparecen el el post, mejor, ya que algunas no las he podido modificar para que no distorcionen el formato
Bueno, tu proyecto es interesante y ya es algo que muchos han desarrollado, pero siempre queda por agregar alguna mejora.
El control básico, si, lo puedes hacer con los cambios de tensión en el par telefónico, pero tambien, pienso que deberias implementar un decodificador DTMF, y asi, distinguir una llamada Local de una Internacional y hasta la de un Móvil.
Aqui va un poco de Literatura con algunos ejemplos, como para orientarte, que lo disfrutes....
Decodificador DTMF económico
Con sólo un circuito integrado (cuyo precio no supera los 2 dólares) y un puñado de componentes externos discretos se obtiene un dispositivo capaz de entregar el código binario de la tecla pulsada en un teléfono por tonos multifrecuentes. Este circuito, además de decodificar las clásicas teclas del cero al nueve, asterisco y numeral, puede identificar las teclas A, B, C y D que usualmente no están presentes en la mayoría de los teléfonos comerciales, pero que la especificación DTMF las incluye.
El circuito está preparado para ser alimentado con 5v, presentes en cualquier circuito TTL o microcontrolado. La resistencia de 100 ohms limita la corriente y el diodo zener hace las veces de limitador de tensión, bajándola a 3.6v que es lo que el chip requiere para funcionar correctamente. Los capacitores aledaños a esos componentes cumplen con la función de filtrar la tensión de alimentación. La señal proveniente de la línea telefónica es aislada por medio de dos resistencias de 100K y un capacitor de 100nf. Este último impide el paso de corriente, pero deja circular señal de audio. Para su funcionamiento el circuito integrado requiere una base de tiempos, generada en este caso por el cristal de cuarzo de 3.579545MHz. Nótese que este cristal es muy común en el mercado dado que es el empleado para los sistemas de color de los equipos de TV. Una vez que un tono es recibido, decodificado y validado como correcto su valor binario es colocado en los terminales Q1, Q2 Q3 y Q4. A su vez, el terminal SID sube indicando la presencia del dato en la salida. Este terminal permanece alto durante el tiempo que el tono DTMF siga presente en el sistema, o sea que refleja el tiempo que el teléfono remoto permanece pulsado.
El circuito integrado incluye filtros contra ruido, RF y armónicos. Además, incluye controles automáticos de ganancia y nivel de señal para adecuar cualquier tipo de condición de trabajo. Es por ello que la cantidad de componentes externos es ínfima.
Datos presentes en la salida
Tecla Q1 Q2 Q3 Q4
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
0 1 0 1 0
* 1 0 1 1
# 1 1 0 0
A 1 1 0 1
B 1 1 1 0
C 1 1 1 1
D 0 0 0 0
Indicar de Uso de Línea
Este práctico y diminuto circuito permite saber el estado en que se encuentra una línea telefónica. De encontrarse libre (aparato colgado) se ilumina el indicador verde, de lo contrario (aparato en uso) se enciende el colorado.
Como se aprecia a primera vista, el circuito se alimenta completamente de la red telefónica, dado que su capacidad de suministro sobra para el manejo de un led y sus componentes pasivos adjuntos. Primeramente se se obtiene una polarización de la línea por medio del puente rectificador de entrada. El led verde se enciende al estar la línea telefónica desocupada, cuando la tensión de base supera los 40v (fijado por las resistencias de 56K y 4K7) haciendo conducir masa a través de su transistor. Asimismo éste transistor descarga a masa la base del transistor que maneja el led colorado, haciendo que este permanezca apagado. Al descolgar un teléfono se produce en la línea una caída de tensión, llegando ésta a unos 18v. Esta tensión no es suficiente para romper la base del transistor del led verde, pero si es mas que suficiente para iluminar el led colorado, el que queda habilitado por el transistor abierto del led verde.
CONEXION:
Este dispositivo se conecta a la línea telefónica como si de otro aparato telefónico se tratase. No requiere fuente de alimentación ni mantenimiento o control alguno.
Detector de Ring
El circuito que presentamos genera un pulso TTL compatible cada vez que la central de teléfonos hace sonar el timbre.
La línea telefónica, en estado de llamada (ring o campanilla), presenta una corriente alterna de 50 ciclos y alrededor de 60 voltios. El capacitor de 470nF y la resistencia de 3K3 adecuan la señal para poder mover el led del opto, cuyo transistor satura la base del 2N3904 haciendo que este conduzca. Por lo tanto el pulso de salida será un reflejo fiel de la señal de llamada de la línea telefónica.
Es posible monitorear el sistema colocando un led y una resistencia de 470 ohms en serie con este en la salida TTL Ring del circuito. Así, cuando el timbre suene, el led parpadeará indicando el correcto funcionamiento del detector.
Receptor CALLER-ID (Ring-FSK)
Edit
Añado este Link, muy interesante
http://matthieu.benoit.free.fr/cidbasic.htm
El Caller-ID es un mecanismo por el cual el abonado al servicio telefónico puede conocer el número telefónico de la persona que lo llama. Dependiendo de las zonas geográficas y de las compañías el sistema puede ser prestado en varios formatos y con diferentes informaciónes. Por lo general se suele dar la fecha, hora y número del abonado que llama, aunque en algunos sitios además se pueden enviar breves mensajes de una o dos palabras que por lo general informaciónrman el estado de la central de conmutación. Otro aspecto fundamental es la tecnología usada. En algunos países (pocos) han implementado el sistema por medio de la señalización por tonos multifrecuentes o DTMF, que es el mismo empleado para la marcación en todo el mundo. En otros países (la mayoría) se ha implementado el Ring-FSK, el cual se explica abajo.
Sistema Ring-FSK:
Como todos sabemos el llamado de un teléfono se produce por medio de una onda alterna de aprox. 70 voltios la cual tiene una frecuencia de 20 Hz y se produce en una intermitencia de 2 segundos (sonando) por 4 segundos (de silencio). El sistema inserta entre el primero y el segundo timbrado una cadena de datos que representa la información a presentar. Se emplea un sistema binario por desplazamiento de frecuencia en donde el 1 lógico es denominado "marca" y el 0 lógico se denomina "espacio". La marca es señalizada por una frecuencia de 1200 Hz, con una tolerancia del 1% (12 Hz). El espacio es representado por una frecuencia de 2200 Hz, también con una tolerancia del 1% (en este caso 22 Hz). La transmisión de la información se realiza a 1200bps, serial y en forma asíncrona. Estos datos son estipulados por el estándar Bell 202. Otro estándar empleado en el sistema de identificación es el ITU T V23, el cual implica leves diferencias en cuanto a las frecuencias empleadas. En este otro sistema la marca se representa por una frecuencia de 1300 Hz y el espacio por una de 2100 Hz, también a una velocidad de 1200bps. En el caso de nuestro circuito, los filtros pasa banda empleados para construir el chip están preparados para dejar pasar esas señales, por lo que también es apto para este segundo sistema. Como mencionamos recién la información es transmitida entre el silencio que existe durante los dos primeros timbres de la campanilla. El timming es el siguiente:
Primer Timbrado Silencio entre timbres Segundo Timbrado
2 Segundos 0.5 3 Segundos 0.5 2 Segundos
Datos de Caller-ID
Dado que el timbrado es generado por una corriente alterna es preciso aguardar medio segundo luego del primer timbrado para que se produzca una vía apta para la transmisión del FSK.
En teléfonos o equipos que no estén dotados con Caller-ID la señal FSK resulta absolutamente invisible dado que al estar el auricular colgado sólo la señal de CA puede producir efecto alguno sobre el aparato.
Con respecto a la información, el sistema comienza enviando una secuencia de 0's y 1's que son típicos en esta aplicación los cuales no representan información alguna y luego envía la información relativa a la llamada en si. Pese a disponer de 3 segundos completos para enviar datos este sistema sólo necesita de 495mS para llevar a cabo la transmisión, que está conformada de la siguiente forma:
250mS (30 Bytes) de 0's y 1's repetitivos.
70 mS en estado lógico alto (ó Marca).
175mS donde se transmite efectivamente la información como se muestra a continuación:
Los primeros 16 bits no son tomados en cuenta
Los siguientes 144 bits contienen la información propiamente dicha (ver mas abajo)
8 bits mas que no son utilizados.
Luego de esto el sistema entra en estado lógico bajo (ó espacio).
Dentro de los 144 bits el sistema debe informaciónrmar al abonado Mes - Día - Horas - Minutos - Número que Llama. Cada guarismo consume un byte, por lo que la capacidad máxima para el número de abonado asciende a 14 dígitos. El sistema empleado para la numeración es el BCD, por lo que es muy simple de representar en pantallas convencionales.
De lo expuesto arriba lo único normalizado por el estándar es la cantidad de bits. Las compañías pueden enviar la información que deseen, la cual será mostrada en la pantalla del receptor. Incluso en algunos países se transmiten textos con codificación ASCII sin que ello represente problema alguno.
Hasta aquí una breve descripción de un sistema suficientemente potente y a la vez flexible. Queda claro que el desarrollador puede emplear este sistema para recibir información desde la central de conmutación pública o puede utilizarlo para una central privada para lo que solo necesitará generar la señal FSK.
En el circuito observamos que, sacando el integrado, no se requieren componentes activos adicionales. Todo el trabajo está contemplado en su interior. Para entender mejor estos conceptos recomendamos bajar de la web de Holtek el archivo PDF con la hoja de datos del chip.
(Ref. #
http://www.holtek.com.tw)
El circuito en la entrada, si bien a primera vista parece medio complicado, basta con dividirlo en dos funciones simples para entenderlo mejor. Por un lado la señal de alterna (que se presenta cuando suena la campanilla) es rectificada por el puente de diodos PR y limitada en corriente por la serie de resistencias. Desde esa serie se extrae la señal (que a esta altura es continua pulsante en 20 Hz) que el chip empleará para detectar el timbrado. La información del FSK (que recordemos esta en vía de audio) es extraída por medio de los capacitores en serie con resistencias, luego de los cuales es inyectado al circuito integrado. Estos capacitores desacoplan la componente DC de la señal y las resistencias adaptan impedancias a la vez que balancean la línea y limitan la corriente que circula por el sistema de audio. Como notarás a esta altura no se podría simplificar mas que esto.
Para poder interpretar el timming de la señal entrante el circuito requiere de un patrón de tiempo, que en este caso es provisto por un cristal de 3.58MHz. Quien entienda de TV o vídeo estará familiarizado con este cristal, aunque en los últimos años se lo ve en muchos otros tipos de aparatos. La resistencia de 10M y los capacitores a masa acondicionan la señal de reloj generada por el oscilador.
La salida de datos (Data Out) presenta estado lógico no invertido. Esto significa que un 1 lógico (que en FSK se denomina Marca) es representado en el pin de salida por un nivel de tensión igual a +V, mientras que un 0 lógico (Espacio en FSK) es representado por un nivel de masa.
La salida Portadora indica la presencia de información Caller-ID pero en estado lógico invertido. Esto quiere decir que mientras el sistema esté en reposo o cuando no haya portadora alguna esta señal presentará un nivel lógico alto y bajará sólo cuando se detecte una señal de identificación de llamada válida.
En tanto la salida Ring, que presenta el mismo estado lógico invertido que la salida Portadora, está siempre en estado lógico alto y sólo baja cuando la campanilla suena, o sea cuando suena el timbre del teléfono. Esta señal es muy útil para disparar una rutina de interpretación del Caller-ID por medio de interrupciones, haciendo que el circuito encargado del control sólo preste atención a este módulo cuando una señal de timbre se hace presente.
Para emplear este circuito en algo útil todo lo que hay que hacer es disponerlo en un proyecto microprocesado o microcontrolado y monitorear las tres señales arriba comentadas.
Primeramente hay que esperar a que se produzca el llamado de la campanilla, para ello se puede optar por controlar continuamente la señal Ring o activar interrupciones disparadas por ese pin. Luego hay que esperar que la línea Portadora presente un estado lógico bajo, lo que indicará que una llamada identificable será recibida. Seguidamente habrá que recibir los bits en una comunicación serie a 1200bps, 8 bits de datos, sin bit de paridad y sin bit de parada. La forma de saber cuando concluye la recepción de bits es muy simple, cuando la línea de Data Out queda en estado bajo permanente es porque no hay mas información. Otra forma es hacer un conteo de los bits recibidos a fin de detectar la llegada a cero. El método a elegir depende de cada desarrollo y lo que el programador vea conveniente. Cabe aclarar que cada ocho bits recibidos hay que almacenarlo en una posición de la RAM o mandarlo a pantalla, pero a fin de cuentas hay que agrupar los bits recibidos de a ocho para conformar los bytes.
En que emplearlo:
No solo se puede lograr máquinas de identificación para ver a quien se va a tender. También se pueden hacer sistemas inteligentes de derivación de comunicaciones, que cuando se llama de determinados números telefónicos atienda el módem, cuando sean otros atienda el FAX o que derive a operadora otras llamadas o que grabe en cinta conversaciones de números específicos. La cantidad de destinos de este montaje es casi sin límites. Otra aplicación válida es en sistemas de monitoreo de alarma por vía telefónica, cuando la central llama al sistema del abonado y éste detecta que lo está llamando el sistema de control, en lugar de dejar atender al abonado atiende el módem de la alarma, permitiendo su programación o mantenimiento remoto. También se lo puede utilizar en sistemas de control doméstico vía telefónico, para que cuando llamemos del celular atienda el sistema de control, mientras que si llaman de otra línea que no sea esa la llamada la atienda la grabadora de mensajes.
Función HOLD para teléfono común
En todo teléfono con central hay un interruptor que permite dejar la llamada en espera. Pero la mayoría de los teléfonos convencionales domésticos no disponen de esta función y es algo muy útil cuando se tiene mas de un aparato en la casa.
El circuito lo que básicamente hace es generar una carga fantasma (simulando levantar el teléfono hasta en tanto la resistencia de la línea caiga, producto de descolgar otro aparato en el circuito. En ese momento el tiristor se despega quedando la retensión cancelada. El circuito puede ser armado sin problemas sobre una plaqueta universal y esta ser colocada dentro de la caja del conector RJ-45 o, con un poco de trabajo extra, dentro del aparato mismo. Un led intermitente hace que el sistema sea mas eficiente ya que al parpadear le prestará mayor atención evitando que la línea quede indefinidamente retenida por error. Dado que el circuito va sobre los bornes de la línea no es necesario alterar el teléfono.
Discador DTMF
Con solo un circuito integrado de la firma Holtek, este circuito permite generar tonos de discado sobre una línea telefónica convencional. Se lo puede usar tanto suelto como así también agregado dentro de un aparato telefónico que no disponga de discado por tonos.
Como se ve en el circuito el alma de todo es el HT9202H que en su interior contiene todo lo necesario para generar los tonos de marcado multifrecuentes. Un teclado matricial de tres columnas por cuatro filas permite al usuario pulsar las teclas a fin de indicarle al integrado que dígito desea marcar. Basandose en el oscilador interno, controlado por el cristal de 3.58MHz, el integrado acopla distintos osciladores a fin de lograr el tono de dos frecuencias acorde a la tecla pulsada. Esta señal sale por el terminal 13 del integrado que luego de pasar por la resistencia limitadora de base entra al transistor el cual hace las veces de driver sobre la línea telefónica. Este, al accionar sobre la línea la resistencia de 150 ohms produce en la misma los tonos DTMF. El puente rectificador permite determinar la polaridad de la línea dado que el par telefónico no esta debidamente señalizado. La resistencia de 2.2K limita la corriente de alimentación del integrado, el diodo zener de 5.1V impide que pase al integrado mas de esa tensión y los capacitores hacen el desacople de la alimentación para evitar oscilaciones indeseadas.
Quitando el transistor y el puente rectificador este circuito puede colocarse sobre cualquier aparato de audio para hacer uso del mismo con otros fines que no sean el marcado telefónico por todos, esto puede ser: señalización entre estaciones repetidoras, entre generadoras de señales de radio y tv y las cabeceras de distribución, etc.
Control de LCD con PIC 16F84
El programa
El código fuente del programa en ensamblador es el siguiente:
;Control de un modulo LCD
Código:
list p=16f84
indf equ 0h
tmro equ 1
pc equ 2
status equ 3
fsr equ 4
ptoa equ 5
ptob equ 6
r0c equ 0ch
r0d equ 0dh
r13 equ 13h
z equ 2h
c equ 0h
w equ 0h
r equ 1h
e equ 1h
rs equ 0h
org 0
goto inicio
org 05
retardo movlw 0ffh
movwf r13
decre decfsz r13,r
goto decre
retlw 0
control bcf ptoa,rs
goto dato2
dato bsf ptoa,rs
dato2 bsf ptoa,e
movwf ptob
call retardo
bcf ptoa,e
call retardo
retlw 0
tabla2 addwf pc,r
retlw "c"
retlw "u"
retlw "r"
retlw "s"
retlw "o"
retlw " "
retlw "d"
retlw "e"
retlw " "
retlw "m"
retlw "i"
retlw "c"
retlw "r"
retlw "o"
retlw "c"
retlw "o"
retlw "n"
retlw "t"
retlw "r"
retlw "o"
retlw "l"
retlw "a"
retlw "d"
retlw "o"
retlw "r"
retlw "e"
retlw "s"
retlw " "
retlw "p"
retlw "i"
retlw "c"
retlw " "
retlw " "
retlw " "
retlw " "
retlw " "
retlw 0
inicio movlw 0fch
tris ptoa
movlw 00
tris ptob
begin movlw 30h
call control
movlw 07h
call control
movlw 0ch
call control
muestra movlw 0
movwf r0c
ciclo movf r0c,w
call tabla2
call dato
movlw 09fh
movwf r0d
reta1 call retardo
call retardo
decfsz r0d,r
goto reta1
incf r0c,r
movlw 28h
xorwf r0c,w
btfss status,z
goto ciclo
goto muestra
end
Archivo .LST
Espero que esto te ayude o al menos te oriente en tu emprendimiento