CONVERTIDOR DE MARCACIÓN DE PULSOS A MARCACIÓN DTMF PARA TELÉFONOS ANTIGUOS

 

Lo que se trata en este artículo es un circuito electrónico que permite habilitar los clásicos teléfonos dotados del disco de marcar (vulgarmente denominados por algunos como teléfonos con “rueda”) a las modernas redes de telefonía fija y de telecomunicaciones, para las cuales son obsoletos en cuanto a que su sistema de marcación ya no es soportado por parte de estas modernas redes (y que cada vez serán más las que no lo soporten, por lo que este antiguo sistema de marcación desaparecerá con el tiempo).

Actualmente los teléfonos fijos modernos usan un sistema de marcación desde un teclado que genera una serie de tonos que codifican cada cifra a marcar. Este tipo de marcación es conocido como marcación DTMF, acrónimo de “Dual Tone Multi Frequency”, que viene a significar “marcación multifrecuencia por parejas de tonos”.

En efecto, este sistema de marcación consiste en la emisión simultánea de un par de tonos de audio por cada cifra marcada desde el teclado del teléfono. El conjunto de tonos empleados es estándard y está establecido de manera que hay dos grupos de tonos, uno de frecuencias más bajas, que representan las filas horizontales del teclado de marcación, y el otro de frecuencias más altas, que representan las columnas verticales del teclado. De manera que, cuando se pulsa una tecla, se genera la transmisión de los dos tonos correspondientes a la fila y a la columna del teclado donde está situada la tecla pulsada.

Las frecuencias de todos estos tonos están dentro de la banda vocal, por lo que se pueden transmitir por canales de voz. La asignación de tonos en un teclado DTMF (también conocido como teclado “Touch Tone” ) y sus frecuencias es la siguiente:

 

Asignación de tonos en un teclado DTMF completo
Asignación de tonos en un teclado DTMF completo. Cada fila horizontal tiene asignado un tono 'bajo' y cada columna vertical un tono 'alto'. Normalmente los teclados DTMF usados en telefonía no incluyen la última columna.

 

Así, si es pulsada la tecla 2, se transmitiran simultáneamente los tonos de 697 Hz (fila) y de 1336 Hz (columna), mientras que si se pulsa la tecla 9 se transmitirán simultáneamente los tonos de 852 Hz (fila) y de 1477 Hz (columna).

El sistema de marcación y señalización DTMF es un estándard desde 1968 que se emplea no sólo en telefonía, sino también en muchos otros ámbitos de las telecomunicaciones, para transmitir informaciones numéricas por canales de fonía. El teclado DTMF completo es de 4 filas y 4 columnas, aunque para uso telefónico el más habitualmente empleado es de 4 filas y 3 columnas.

La marcación DTMF se comenzó a introducir en las redes telefónicas públicas a partir de 1963 por la histórica operadora estadounidense Bell System, conforme la evolución de la electrónica permitió la implementación eficaz de circuitos electrónicos en los teléfonos y equipos telefónicos, hasta entonces de concepción bastante sencilla y sin apenas electrónica alguna. El sistema de marcación empleado por los teléfonos hasta entonces, y desde los principios de la telefonía automática a finales del siglo XIX, era la “marcación decádica” o “marcación por impulsos”.

Basada en las técnicas telegráficas de aquella época, esta técnica de marcación consiste en transmitir cada cifra marcada como un tren o secuencia de impulsos de corriente por la línea telefónica. El número de impulsos que se envían representan la cifra marcada: Marcando la cifra 1 se envía un impulso, marcando la cifra 2 se envían dos impulsos, marcando la cifra 9 se envían 9 impulsos, y la cifra cero se transmite mediante 10 impulsos. La velocidad de transmisión de los impulsos es de 10 impulsos/segundo (se admite entre 6 y 15 impulsos/segundo), y la pausa de separación entre cifra y cifra marcada ha de ser de al menos 0,25 segundos, para que los equipos de la central telefónica diferencien los sucesivos trenes de impulsos como cifras sucesivas y no como un único tren de impulsos.

Para realizar esta marcación, los teléfonos se equiparon con un dispositivo giratorio denominado “Disco de marcar” (“Rotary Dial ” o “Pulse Dial ” en la terminología inglesa), el cual actúa un interruptor eléctrico que genera los impulsos de marcación cuando es operado. Dichos impulsos de marcación en realidad son interrupciones en el circuito establecido por la línea telefónica y el teléfono descolgado, ya veremos más adelante cómo funciona esto. Más modernamente, los teléfonos fueron dotados de un teclado que generaba electrónicamente los impulsos de marcación cuando se pulsaban las teclas, como si de un disco de marcar electrónico se tratara.

La marcación decádica se ha mantenido desde los inicios de la telefonía automática a finales del siglo XIX hasta prácticamente todo el siglo XX. En el caso de España, en el momento en que se está escribiendo este documento (agosto 2019), la operadora principal española, Telefónica (fundada en 1924 y que tuvo el monopolio de las comunicaciones telefónicas en España hasta finales de la década de 1990) está sustituyendo completamente su red telefónica clásica, la ahora llamada “red de cobre” en algunos medios (llamada así por basarse en líneas telefónicas de dos hilos de cobre o “par de cobre” que conectan el domicilio del usuario con la central telefónica de su zona o sector) por una moderna red de fibra óptica, la cual permite ya no sólo soportar el servicio de telefonía fija, sino servicios de telecomunicaciones avanzados digitales y de gran capacidad (acceso a Internet, televisión por cable, etc...) que no podían ser ofertados por las líneas telefónicas clásicas de par de cobre, ya que el par de cobre no tienen capacidad suficiente para transmitir grandes cantidades de información digitalizada.

Telefónica ha optado por las redes FTTH (Fiber To The Home), esto es, red con la que se llega a los domicilios de los clientes directamente con fibra óptica. Otras operadoras utilizan la tecnología FTTB (Fiber To The Building), esto es, “Fibra hasta el edificio”, en la cual la fibra óptica llega hasta un armario terminal ubicado en el edificio con equipos ópticos en su interior, y desde este armario se conecta a los domicilios de los clientes mediante líneas de cable coaxial. Tanto si la red es FTTH como si es FTTB o de otro tipo, las comunicaciones telefónicas funcionan transmitiendo la voz digitalizada a través de la red VoIP (Voice over IP) de la operadora, esto es, a través de su red digital de tecnología IP (que emplea el protocolo IP utilizado en Internet y de las grandes redes de datos) dedicada a las comunicaciones de voz digitalizada.

En las redes FTTH al domicilio de cada usuario llega una fibra óptica que se conecta a un equipo OTN (Optical Termination Network) o equipo de terminación de red óptica, el cual dispone de tomas para servicios de red (acceso a Internet), y también una toma para conexión de teléfono fijo a través de la cual se emula una línea telefónica convencional (de par de cobre). Esto permite utilizar los teléfonos convencionales conectados a esta toma, pero mientras que la red de cobre de Telefónica aún admite la marcación decádica (además de la marcación DTMF), esta marcación ya no es soportada por las redes de fibra óptica - VoIP de otras operadoras (parece que la red FTTH de Telefónica aún la admite, a fecha del 2020), ya sólo admiten la marcación DTMF.

Esto deja fuera de juego a los teléfonos clásicos con disco de marcar (o con teclado decádico), aunque aún se pueden utilizar como meros aparatos telefónicos supletorios para contestar llamadas, y sin embargo hay bonitos modelos de teléfono clásicos que no pocos usuarios los gustaría mantener en funcionamiento. Ya que la vieja marcación decádica no es soportada por las modernas redes telefónicas soportadas sobre fibra óptica, el circuito aquí propuesto permite utilizar el disco de marcar en un teléfono de tipo clásico, realizando la conversión de la marcación decádica del disco en los correspondientes tonos de marcación DTMF. El circuito, basado en un microprocesador programado, se incluye dentro del aparato telefónico, y con unas sencillas modificaciones en el circuito del teléfono (que afectan al disco de marcar), se consigue adaptar el teléfono a la marcación DTMF.

Antes de entrar de lleno en este circuito, veamos cómo funciona un teléfono clásico.

 

EL TELÉFONO CLÁSICO CON DISCO DE MARCACIÓN

Las líneas telefónicas convencionales están alimentadas desde la central telefónica con una tensión continua típicamente de 48 V, y permanecen abiertas cuando el aparato telefónico está “colgado”. Cuando se descuelga el aparato telefónico (para realizar o contestar una llamada), cierra la línea en corriente continua, provocando la circulación de corriente continua en bucle por la línea (razón por la que la línea telefónica también es conocida como “bucle telefónico”) y el aparato telefónico. Debido a los circuitos en la central telefónica, la resistencia eléctrica del par de cobre de la línea, y la propia resistencia del aparato telefónico descolgado, la tensión en la toma de línea del aparato telefónico suele quedar por debajo de los 15 voltios cuando es descolgado (recordemos: 48 V con el aparato colgado o desconectado de la línea), y circulando una corriente por la línea y el aparato de unos cuantos miliamperios (normalmente por encima de los 15 mA).

Conocido el funcionamiento básico de una línea telefónica convencional (de la red de cobre), veamos la constitución y funcionamiento básico de cualquier aparato telefónico clásico. La gran mayoría de aparatos telefónicos clásicos que utilizaron el disco de marcar eran de concepción bastante sencilla, y típicamente estaban constituidos por:

Cualquier teléfono clásico dotado de disco de marcar está constituido básicamente por estos elementos, no habiendo notables diferencias entre unos modelos y otros. La circuitería del aparato suele estar cableada al aire en los modelos de teléfonos antiguos, mientras que en teléfonos con disco de marcar más modernos los componentes y las conexiones entre ellos se incorporan en un circuito impreso. La siguiente figura muestra el diagrama básico de un teléfono clásico con disco de marcar:

 

Diagrama básico de un teléfono clásico con disco de marcar
Diagrama básico de un teléfono clásico con disco de marcar. (Clic en la imagen para ampliarla).

 

Antes que nada, para el cada vez mayor número de usuarios que no conocen este dispositivo de marcación o su funcionamiento, diremos que un disco de marcar típico dispone de una rueda giratoria con diez ventanas en su periferia en la que se puede introducir la punta de un dedo, cada una de ellas asignada a una cifra (1, 2, 3..... 8, 9, 0). Para marcar una cifra, debe introducir la punta del dedo en la ventanilla correspondiente a dicha cifra, arrastrar la rueda en el sentido de las agujas de reloj hasta que el dedo sea detenido por un tope fijo existente, y a continuación, se retira el dedo. Gracias a un muelle helicoidal de tensión conectado al eje de giro del disco, la rueda giratoria volverá a su posición de reposo, y durante ese retroceso, se generarán los impulsos de marcación correspondiente a la cifra marcada. El proceso se repetirá con cada una de las restantes cifras que deban ser marcadas para componer el número de la línea a la que se desea llamar.

Y sin entrar en detalles en cuanto al mecanismo de un disco de marcar típico (aunque más abajo se muestra su mecanismo básico), diremos que el disco marcador dispone de dos juegos de contactos eléctricos:

Los contactos de cortocircuito no son estrictamente necesarios para la marcación decádica ni para el funcionamiento del teléfono en sí (y de hecho hay discos de marcación que sólo disponen del contacto de marcación), pero su uso está plenamente justificado: Por un lado cortocircuitan el auricular o receptor del teléfono durante la marcación de cada cifra, evitando que los bruscos cambios de la corriente que circula por la línea y el teléfono generados por el contacto de marcación del disco sean escuchados como fuertes y molestos chasquidos en el sensible receptor. Y al mismo tiempo cortocircuitan el micrófono de carbón durante la marcación de cada cifra, eliminando la influencia que éste pueda ejercer en la circulación de la corriente de línea durante la marcación de cada cifra.

 

Simplificación de la constitución de un disco de marcar.
Simplificación de la constitución de un disco de marcar, mostrando las partes más importantes dispuestas de manera para mostrar más claramente cómo funciona el disco. (Clic en la imagen para ampliarla).

 

Vistos la constitución y el funcionamiento de un teléfono clásico con disco de marcar, vamos a continuación a ver el circuito convertidor de impulsos decádicos a tonos DTMF para un disco de marcar convencional.

El disco de marcar convencional es aquél que tiene la secuencia de dígitos “1,2,3....8,9,0” en su rueda de marcación y que se corresponden respectivamente con 1, 2, 3....8, 9, 10 impulsos de marcación, tal como se ha descrito anteriormente. En algunos países se han usado otros discos de marcar con otras secuencias de dígitos tales como “0,1,2,3...8,9” (empleado en Suecia), “9,8,7..2,1,0” (empleado en Nueva Zelanda) o “0,9,8,7...2,1”. Estos “extraños” tipos de discos de marcar en principio no van a ser considerados en este documento.

 

EL CIRCUITO CONVERTIDOR DE MARCACIÓN DECÁDICA A DTMF

Para poder utilizar los clásicos teléfonos de disco en las más modernas redes de telefonía (tanto de redes de cobre como las más modernas soportadas por fibra óptica) que ya no soportan la marcación decádica, algunos usuarios aficionados a la electrónica han desarrollado (y publicado en Internet) circuitos un tanto complicados que se intercalan entre el teléfono de disco y la línea telefónica, cuya función principal es “leer” los impulsos marcados por el disco del aparato y transformarlos en las correspondientes señales DTMF que se enviarán por la línea hacia la central telefónica. No es una solución fácil ni elegante, ya que el circuito está intercalado entre la línea y el aparato telefónico, y ha de realizar su trabajo sin perturbar el funcionamiento normal de la línea telefónica (tanto al realizar una llamada como al recibir una llamada), por lo que básicamente es una especie de equipo de interface entre la línea y el aparato telefónico que, sin perturbar el funcionamiento normal de la línea, debe realizar la conversión de impulsos de marcación a tonos DTMF cuando se desea realizar una llamada, y además, debe ser alimentado permanentemente desde red eléctrica o batería, ya que no puede ser alimentado desde la propia línea telefónica (pues supondría una grave perturbación en el funcionamiento de la línea).

Una versión comercial de un dispositivo de este tipo es el Dialgizmo, aunque pensado sólo para líneas VoIP, y que se intercala entre el teléfono y la línea, tomando la alimentación de línea. Incluso permite la selección de diversos tipos de disco de marcar (convencional, neozelandés, sueco...).

Las soluciones más elegantes pasan por diseñar algún tipo de circuito electrónico que realice la conversión pulsos-DTMF y que pueda ser incorporado en el propio teléfono, con algunas sencillas modificaciones en el circuito del teléfono, pudiendo ser alimentado desde la propia línea telefónica cuando se use el aparato (igual que el micrófono de carbón del aparato). Estos circuitos están basados en el uso de un microprocesador de bajo consumo convenientemente programado, que supervise el disco de marcar cuando éste sea utilizado, y genere en una de sus salidas la correspondiente señal DTMF para su envío a la línea telefónica. Su inclusión dentro del aparato telefónico no modificará ni el aspecto exterior del teléfono ni la calidad de las comunicaciones que se efectúen.

Existen algunos circuitos comerciales de este tipo que realizan la conversión pulsos-tonos DTMF, fáciles de incorporar en el interior del aparato telefónico, siendo el más conocido (y bastante completo en cuanto a prestaciones) el RotaTone, fabricado en Reino Unido.

Aquí se propone un circuito de este tipo, que sin ser tan completo en prestaciones como el Rotatone, realiza su función perfectamente, la simple conversión de los impulsos del disco de marcar en los correspondientes tonos DTMF. Como tal, convierte las cifras 1....9 y 0 de un disco de marcar en los correspondientes pares de tonos DTMF. También contempla los símbolos '*' y '#', que no están presentes en el disco de marcar aunque sí en los teclados telefónicos, pero no contempla otras opciones como la repetición del último número marcado (función “redial” o rellamada), ni memoria para varios números telefónicos frecuentemente usados por el usuario, etc..., opciones que sí están disponibles en el Rotatone. Simplemente este circuito convierte los impulsos del disco de marcar a los correspondientes tonos DTMF, nada más que eso (salvo que se modifique el programa con el que funciona el microprocesador del circuito para implementar esas funciones extras).

El circuito está basado en un sencillo microprocesador de la firma Atmel Corporation, el ATtiny 45, un microprocesador de 8 bits de muy bajo consumo (por lo que apenas consumirá corriente de alimentación de la línea telefónica) y de baja tensión (máximo 5,5 voltios). Es un chip microcontrolador de la familia ATtiny x5, chips diseñados por Atmel especialmente para ser pequeños, rápidos y eficientes, y además son de muy bajo consumo. Disponen de una memoria flash o de programa (la que va a alojar el código software o programa con el que van a funcionar) de 8, 4 o 2 kilobytes, según se trate respectivamente del ATtiny 85, 45 o 25, disponen de 512, 256 o 128 Bytes de memoria EEPROM (respectivamente), y la misma cantidad de memoria SRAM. Aunque parece poca memoria, es suficiente para alojar pequeños programas como el que vamos a utilizar aquí. Además, el reloj interno de estos chips funciona por defecto a 1 MHz y puede programarse a 8 MHz, pero la velocidad es ampliable a 20 MHz si se les dota de un cristal de cuarzo externo y se configura el chip adecuadamente para ello. La alimentación de estos pequeños microprocesadores no ha de superar los 5,5 voltios, y pueden funcionar a tensiones tan bajas como 2,7 V , e incluso 1,8 V para una determinada serie de estos microcontroladores (Attiny85V/45V/25V). Sus consumos de corriente son muy bajos, dependiendo del chip puede ser de 5 mA cuando están encendidos, y hasta 5 µA cuando están en modo reposo.

 

 

 

Como se ve en la anterior figura, los chips de esta familia tienen dos patillas (pins) de alimentación, una de reset, y 5 de entrada/salida, de las cuales tres son analógicas y dos digitales, permitiendo estas dos últimas usar señales PWM (Impulsos modulados en anchura).

Para este proyecto, vamos a utilizar el ATtiny 45 (4 kB de memoria flash y 256 Bytes de memoria EEPROM). Utilizando este microprocesador ya convenientemente programado, el circuito convertidor de pulsos decádicos a tonos DTMF es el siguiente:

 

Circuito convertidor pulsos-DTMF
Circuito convertidor pulsos-DTMF. (Clic en la imagen para ampliarla).

 

Listado de componentes

 R1  =  1K5 - 1/8 W
 R2  =  4K7 - 1/8 W
 R3  =  330 ohm - 1/8 W (ver nota más abajo)

 C1       =   100 a 220 µF - 16 V (electrolítico)
 C2 a C6  =   100 nF - 63 V
 C7, C8   =   10 pF cerámico

 D1 a D4  = Diodos 1N4148 ó 1N4448
 Z1    =    Diodo Zéner 18 a 24 V - 1 W
 Z2    =    Diodo Zéner 4V7 ó 5,1 V , 1 W
 TR    =    Transistor NPN 2N3904 o equivalente
 XT    =    Cristal de cuarzo de 4,0 MHz
 IC    =    Microcontrolador ATtiny 45 programado

 

L y L' se conectan a línea dentro del aparato telefónico. Los contactos del disco de marcar se han de desconectar del circuito del teléfono, y se han de conectar a P y M el de impulsos y a CC y M los de cortocircuito. Más adelante se detallarán estas conexiones.

La tensión de línea (con el teléfono descolgado) alimenta al circuito a través del puente rectificador constituido por los diodos D1 a D4. Este puente rectificador protege al circuito de los cambios de polaridad de la tensión de línea, la cual en algunas redes telefónicas puede sufrir inversiones de polaridad durante el establecimiento de una comunicación telefónica (como es en el caso de la red de Telefónica en España).

El diodo zéner Z1 protege al circuito de posibles sobretensiones en la línea telefónica, que pueden tener valores elevados durante la recepción de una llamada (la corriente de llamada de timbre adoptada en España es de 75 V alternos, enviados superpuestos a los 48 V de tensión continua de la línea telefónica llamada, lo que implica valores de pico de más de 100 voltios), si bien la mayoría de aparatos telefónicos de disco más modernos ya disponen de limitadores de sobretensiones en su circuitería en posición de descolgado. Además, al descolgar el aparato, su baja impedancia de carga cuando está descolgado hace que la tensión de línea en bornes del aparato disminuya mucho, normalmente por debajo de los 15 voltios. R1 y el diodo Z2 limitan la tensión de alimentación del chip microprocesador IC a un máximo de 4,7 V (5,5 V es el máximo que admite el chip). C6, conectado a la patilla de reset del chip (patilla 1), asegura un reseteo del chip al conectarse la alimentación (al descolgar el teléfono).

En esta situación, cuando se utiliza el disco de marcar, al comenzar a girar el disco para seleccionar una cifra, se cierran los contactos de cortocircuito del disco, que están conectados entre los terminales CC y M del circuito, con lo cual el microprocesador detectará y reconocerá que se va a marcar una cifra. (Nota: Internamente las patillas 1, 6 y 7 del chip han sido puestas a nivel alto por el programa cargado en el chip).

Seleccionada la cifra, al liberar el disco, éste retrocede a su posición de reposo, provocando durante este retroceso los impulsos de marcación mediante el contacto de marcación del disco, conectado entre los terminales P y M del circuito. El microprocesador los contará, y cuando detecte la apertura de los contactos de cortocircuito (cuando el disco ya llegado a su posición de reposo), sabrá que ha finalizado la marcación de la cifra seleccionada por el usuario.

Nota: C4 y C5 actúan como supresores de rebotes (“debouncing”) en los contactos del disco, esto es, de los microrrebotes de muy corta duración que se pueden producir en el momento de cerrarse un contacto hasta que el contacto eléctrico se estabiliza. Estos microrrebotes dan lugar a variaciones de tensión espúreas en el contacto cuando se cierra que pueden ser detectadas por el microprocesador, para el cual sería información errónea del funcionamiento del disco.

Una vez detectado el fin de la marcación de la cifra, el microprocesador genera en su salida (patilla 5) una señal PWM (impulsos modulados en anchura) durante unas décimas de segundo, señal que es integrada por el filtro paso-bajo constituido por R2 y C3, dando lugar a la señal DTMF correspondiente a la cifra marcada (más adelante se explica cómo funciona esto). Esta señal DTMF es amplificada por el transistor TR, configurado como seguidor de emisor, el cual entra en conducción y modula la corriente que toma de la línea telefónica (y limitada por R3) por la señal DTMF generada, con lo cual la señal DTMF generada se transmite a la línea hacia la central telefónica.

(Nota: Si el nivel de señal de los tonos DTMF inyectado en línea fuera bajo, lo que podría dar lugar a que no fueran detectados en la central telefónica o fallos en la detección de los tonos, puede disminuirse el valor de R3 a valores más bajos, por ejemplo, 150 ohmios. Esto aumenta el nivel de las señales enviadas a línea.)

 

REALIZACIÓN PRÁCTICA Y CONEXIÓN DENTRO DEL TELÉFONO

El prototipo de este circuito fue realizado en un trozo de placa de ciecuito impreso para prototipos tipo Perfboard. A partir del prototipo realizado, se dedujo la siguiente placa de circuito impreso para este circuito:

 

Prototipo del autor en placa perfboard
Prototipo del autor en placa perfboard.

 

Placa impresa práctica, obtenida del prototipo anterior
Placa impresa práctica, obtenida del prototipo anterior. Tamaño: 51 mm × 35 mm (2" × 1,38").

Disponible aquí para su impresión en tamaño físico real en formato TIFF y en formato PDF

 

Disposición de los componentes
Disposición de los componentes.

 

A tener en cuenta al colocar los componentes la correcta polaridad de los diodos y el condensador electrolítico (C1), la correcta colocación del chip microprocesador (IC) y del transistor empleado (TR). Se recomienda dotar un zócalo DIP-8 para enchufar el chip microprocesador, lo que permitirá su fácil extracción y sustitución si debe ser cambiado por avería, o por si ha de ser reprogramado. También se recomienda que el cristal de cuarzo empleado, de 4,000 MHz, sea de perfil bajo, ya que el espacio disponible dentro de la caja del teléfono puede estar limitado para colocar en su interior este circuito (lo que también puede obligar a rediseñar la placa, o bien obligar a colocar este circuito en una cajita externa al teléfono).

El tipo de terminales o bornas de conexión para los puntos M, P, CC, L y L' de la placa se deja a elección del usuario. En el prototipo se usaron para M, P y CC hembrillas de conexión tipo faston dobles para terminales machos en Y, ya que estos terminales en Y se usaron en muchos modelos de teléfonos de Telefónica (incluyendo los modelos Heraldo de disco de los años 1960-80, su disco dispone de cables de conexión dotados de machos en Y). Para L y L' se prefirió conectar directamente sendos hilos dotados en el otro extremo de un terminal macho en Y para su conexión al circuito del teléfono. Como estos terminales de conexión son actualmente poco empleados y difíciles de encontrar en el mercado, se deja a elección del usuario el tipo de conexión a los puntos indicados del circuito impreso.

Para la conexión del circuito convertidor pulsos-DTMF al circuito del teléfono, el esquema de conexión sería del siguiente tipo:

 

Diagrama básico de la adaptación de la placa convertidora pulsos-DTMF en un teléfono clásico con disco de marcar
Diagrama básico de la adaptación de la placa convertidora pulsos-DTMF en un teléfono clásico con disco de marcar. Se toma como referencia el diagrama básico anteriormente mostrado. En azul, las conexiones a realizar. (Clic en la imagen para ampliarla).

 

Como se puede ver en el anterior diagrama general, se ha de desconectar completamente el disco de marcar del circuito del teléfono para conectarlo a los terminales M, CC y P de la placa convertidora, pero se ha de sustituir en el circuito del teléfono el contacto de marcar del disco por una conexión (entre D1 y D2) para que el circuito del teléfono no quede abierto. En cuanto a las conexiones a línea L y L' de la placa convertidora, se han de conectar a línea de manera que siempre esté conectada la placa después del conmutador de colgado-descolgado del teléfono, no antes, para evitar que quede expuesta a la alta tensión de línea y de las corrientes de llamada, y perturbe el correcto funcionamiento de la línea telefónica.

En el diagrama general anterior la placa aparece conectada directamente a los hilos de línea dentro del teléfono (pero tras el conmutador de descolgado), pero pueden buscarse otros puntos de conexión más aptos dentro del circuito del teléfono, que mejoren la transmisión de los tonos DTMF generados por la placa convertidora hacia la línea manteniendo la correcta alimentación de la placa por la tensión de línea (p.ej., en el circuito de fonía del teléfono) y siempre después del gancho o interruptor de descolgado. No obstante, conectar la placa conversora directamente a los hilos de línea dentro del teléfono suele ser lo más sencillo y efectivo.

Puede ocurrir que, debido a la baja resistencia del micrófono de carbón y del circuito de fonía del teléfono, en determinadas instalaciones la caída de tensión en la toma de línea del teléfono caiga a un valor bastante bajo con el teléfono descolgado, lo que puede comprometer el funcionamiento de la placa convertidora. Normalmente esto se suele solucionar conectando en serie con la corriente de alimentación del micrófono un par de diodos zéner de 4,3 a 5,1 V conectados en serie y con polaridades invertidas (de manera que sea cual sea la polaridad de la línea telefónica, uno de los diodos estará en conducción directa y el otro polarizado inversamente y por tanto estableciendo la caída de tensión zéner a su través. En el diagrama anterior, podríamos conectarlo entre los puntos D1 y D2 en lugar de una conexión directa, o en serie con el micrófono (en el punto M).

 

Zeners ecualizadores de la corriente de micrófono
Zeners ecualizadores de la corriente de micrófono.

 

Para cualquier duda, se recomienda consultar el esquema del aparato telefónico. Por lo general, estos teléfonos clásicos suelen incluir el esquema, normalmente en una pegatina adherida en el interior de la carcasa del aparato. En los modelos más antiguos, el circuito del aparato está cableado al aire, con algún tipo de regleta para realizar las conexiones entre componentes, por lo que no debería ser problemático identificar puntos del circuito del teléfono donde conectar la placa convertidora. En aparatos más modernos, el circuito suele estar montado en un circuito impreso, que soporta también el interruptor de colgado/descolgado (actuado por una palanca), por lo que se requerirá consultar su esquema para determinar dónde conectar a línea la placa convertidora (sus terminales L y L').

En cuanto a la ubicación física de la placa convertidora dentro del teléfono, se ha de tener cuidado de que no interfiera el movimiento de la palanca o del gancho de colgado/descolgado, ni al mecanismo del timbre del aparato (normalmente será un timbre de campana). Para evitar que se provoquen contactos eléctricos indebidos de la placa convertidora con el resto del circuito del aparato, se recomienda alojar la placa convertidora en alguna bolsita de plástico o de cartón antes de fijarla dentro del teléfono. El espacio físico libre dentro del aparato suele ser más bien escaso en algunos modelos de teléfonos clásicos y ello puede dar problemas para ubicar la placa convertidora en el interior del aparato, en cuyo caso se puede optar por alojarla en una pequeña cajita externa al aparato, pero conectada mediante una pequeña manguera de hilos al interior del aparato.

 

EL PROGRAMA O FIRMWARE DEL MICROCONTROLADOR

Hasta el momento hemos visto toda la parte “hardware” o física del convertidor pulsos-DTMF, pero este convertidor no haría nada si el microcontrolador ATtiny 45 no estuviera programado con el programa o firmware adecuado para realizar su función (Nota: Firmware suele ser el término empleado para referirse al programa o software que ha sido cargado o grabado en la memoria de un microprocesador o un sistema lógico).

Para este proyecto se utilizará el firmware desarrollado por el usuario norteamericano Boris Cherkasskiy, el cual publicó en su blog de 'Proyectos misceláneos' el artículo en que se basa este proyecto bajo el título “Rotary Dial for digital age ” (Disco marcador para la época digital) el 21-09-2013.

El firmware desarrollado por Boris, así como el esquema del circuito convertidor que desarrolló para su aparato telefónico (un antiguo teléfono norteamericano de la serie 500 de Western Electric, muy empleado en las décadas de 1950-60 en Estados Unidos) está disponible localmente aquí. Incluye tanto los códigos fuente del programa, como el código final compilado (en formato hexadecimal, archivo “PulseTone.hex ”) que es el que se ha de grabar en la memoria EEPROM del microcontrolador ATtiny 45 empleado en el circuito convertidor.

El firmware ha dido desarrollado y compilado con las aplicaciones AVR Studio y WinAVR. AVR Studio es el software oficial desarrollado por Atmel Corporation que proporciona un entorno de desarrollo para escribir, depurar y simular programas para su extensa familia de microcontroladores de 8 bits AVR de Atmel, de la cual forma parte los microcontroladores de la serie ATtiny x5. WinAVR es un compilador GCC desarrollado por una tercera parte que se integra con AVR Studio de Atmel, y es utilizado para compilar los programas escritos con AVR Studio. Los códigos fuentes contenidos en este firmware han sido desarrollados con AVR Studio (se proporcionan por si alguien quiere analizarlos y modificar el firmware). A nosotros lo que nos interesa es el código final del firmware ya compilado (el archivo .hex), que es el que debemos cargar en el microcontrolador.

Para desarrollar el firmware, Boris tuvo en cuenta la Nota de aplicación AVR314 de la propia Atmel que explica como generar los tonos DTMF con sus microcontroladores de 8 bits AVR. Básicamente lo que propone es generar los distintos tonos DTMF mediante la técnica PWM (Pulse Wide Modulation, Impulsos modulados en anchura), lo que permite que las ondas de los tonos generados sean senoidales, y por tanto, bastante puras y limpias de armónicos (que es lo deseable para los tonos DTMF).

Podríamos generar un tono en la salida del microcontrolador simplemente conmutando la salida entre estado alto y estado bajo a la frecuencia del tono deseado. Sí, esto generaría efectivamente el tono deseado, pero su onda sería cuadrada (tipo impulso) y ello significa que está cargada de muchas frecuencias armónicas, y ello no es nada deseable. En cambio, mediante la técnica PWM lo que se hace es generar en la salida del microcontrolador una señal impulsiva de una frecuencia muy superior a la del tono que se desea generar (y los impulsos de amplitud constante), pero en la cual la anchura de los impulsos (la relación alto/bajo de los impulsos, o “duty cicle”, ciclo de trabajo) varía cíclicamente a la frecuencia del tono que se desea generar. Esta señal de impulsos modulados cíclicamente en anchura no deja de ser una señal de polaridad continua, por lo que aplicándola a una célula RC adecuada de tipo filtro paso-bajo, esta célula promedia (integra) el valor de amplitud de la señal impulsiva, y el resultado es una señal continua cuya amplitud varía cíclica y senoidalmente a la frecuencia del tono: A la salida de la célula RC ya tenemos el tono deseado con forma de onda senoidal.

Esto es lo que se ve en el esquema del convertidor en la patilla 5 del microcontrolador, utilizada como salida de la señal PWM generada, siendo R2 y C3 la célula RC integradora de la señal PWM para obtener a en su salida los dos tonos DTMF (que son amplificados y entregados a la línea telefónica por el transistor TR).

 

Señal PWM con variación cíclica de su ciclo de trabajo y señal promediada por un filtro RC paso-bajo
Señal PWM con variación cíclica de su ciclo de trabajo y señal promediada por un filtro RC paso-bajo.

 

En este firmware no se generan directamente los tonos DTMF, sino que en la memoria interna del microcontrolador se han almacenado en una tabla 128 valores que representan la anchura relativa de 128 pulsos sucesivos para construir un periodo completo de una onda senoidal mediante PWM. La ya citada nota de aplicación AN 1982 de Atmel proporciona las fórmulas matemáticas para calcularlos. La anchura de cada muestra o impulso se codifica con 7 bits. El firmware construirá la forma de onda de cada tono usando esta tabla. Se usan 7 bits por muestra de un tono ya que al sumar las muestras de los dos tonos DTMF correspondientes a una cifra, se obtiene en cada suma de muestras los 8 bits (1 byte) que se van a enviar al puerto de salida PWM del microcontrolador. La célula RC integradora conectada a la salida PWM del microcontrolador se encarga de transformar los impulsos PWM de salida en la suma de las correspondientes señales senoidales de ambos tonos.

El firmware desarrollado por Boris usa esta forma de generar los tonos DTMF, y simplemente lo que hace es leer el número de impulsos generados por el disco cuando se marca una cifra, y a continuación transmite en la salida PWM del microcontrolador ATtiny 45 la suma de las muestras PWM de los dos tonos DTMF correspondientes a la cifra marcada, muestras construidas a partir de los valores almacenados en la mencionada tabla. Cada transmisión dura unas décimas de segundo, tiempo suficiente para que la central telefónica detecte y reconozca los tonos DTMF a que dan lugar.

Además de las cifras 0 a 9, generadas al ser marcadas desde el disco telefónico, también permite la marcación de los símbolos '*' y '#' (estrella y “almohadilla” ; star y Hash en inglés), que están presentes en cualquier teclado telefónico actual, y que son usados durante algunas comunicaciones telefónicas para acceder a ciertos servicios. Dichos símbolos están asignados a las cifras 1 y 2 del disco de marcar respectivamente, y para acceder a ellos, se requiere realizar una operación especial (denominada en inglés “dial-hold”, DH). Lo que se hace es accionar el disco para seleccionar la cifra 1 o 2 (lo que provoca el cierre de los contactos de cortocircuito), mantener la cifra seleccionada (cuando el dedo es detenido por el tope para el dedo en el disco) durante un par de segundos, y entonces liberar el disco para que vuelva a su posición de reposo. Antes de liberar el disco se deberá escuchar un corto tono de aviso, que le indicará que ya puede liberar el disco.

Al liberar el disco, vuelve a su posición de reposo generando los impulsos de marcación, pero el firmware interpreta que se ha seleccionado el símbolo '*' o '#' en lugar de las cifras 1 y 2 respectivamente. Usando el mismo truco con la cifra 0 también se genera una corta secuencia musical, cuyo uso desconozco. Este modo de funcionamiento es definido por Boris como "Funciones especiales" (SF, Special Functions) en su firmware.

El programa se podría modificar y ampliar para añadir más “funciones especiales”, como son la repetición del último número llamado (Rellamada o “Redial”), y/o la posibilidad de almacenar y marcar varios números preprogramados (de frecuente uso por el usuario). Estas opciones suponen que el firmware del microcontrolador ha de permitir el acceso a la memoria RAM o EEPROM para guardar números marcados, cosa que no hace el firmware de Boris.

Sin embargo, estas funciones especiales sí están disponibles en los anteriormente mencionados dispositivos comerciales RotaTone y Dialgizmo. A título informativo (útil por si algún programador quiere intentar implementar estas funciones especiales en su circuito convertidor pulsos-DTMF), básicamente lo que se hace en estos conversores comerciales es asignar los símbolos '*' y '#', la opción de rellamada, y 6 o 7 números programables a las distintas cifras del disco de marcar. Para diferenciar si se marca una cifra (función normal) o la otra opción asignada en el disco de marcar (función especial), se usa el truco DH (“dial-hold”) indicado anteriormente, esto es, la temporización de aproximadamente dos segundos desde que se acciona el disco para seleccionar una cifra hasta que es liberado para que vuelva a su posición de reposo (tras escuchar un corto tono de aviso, indicador de 'acceso a función especial'). En el Rotatone los símbolos '*' o '#' están asignados respectivamente a las cifras 1 y 2, mientras que en el Dialgizmo es alrevés (a las cifras 2 y 1 respectivamente). La rellamada (redial) está asignada a la cifra 3 en el Rotatone y a la cifra 9 en el Dialgizmo.

Para programar números en las cifras restantes del disco de marcar, el Diagizmo usa la cifra 0 para entrar en programación (mediante el truco DH), tras lo cual se ha de marcar la cifra del disco a la que se va a asignar el número a almacenar (disponibles las cifras 3 a 8), escuchar unos pitidos de confirmación, a continuación marcar el número que se desea almacenar (con cada cifra marcada se emite un pitido de aceptación), y a continuación colgar el teléfono para completar la operación. En el caso del RotaTone, el procedimiento es distinto: Se selecciona en el disco la cifra en la que se va a almacenar un número telefónico (disponibles las cifras 4 a 0) y se mantiene en modo DH hasta escuchar el tono de aviso a los dos segundos, se espera un par de segundos más hasta escuchar un segundo tono de aviso, y se libera entonces el disco. A continuación se marca el número a almacenar, y se cuelga el aparato para completar la operación. Y en ambos dispositivos, para borrar un número programado, se realiza el mismo procedimiento de grabación de un número, pero sin marcar ningún número antes de colgar el teléfono.

 

Otro firmware alternativo

Una alternativa al proyecto de Boris, pero totalmente basado en éste, fue desarrollado posteriormente (en 2015) por el usuario Arnie Weber, para corregir algunos defectos que presentaba el proyecto original de Boris, como es añadir un filtro antirrebotes (“debouncing”) a las señales proporcionadas por los contactos del disco (no contemplado en el proyecto original de Boris, aunque sí en el proyecto aquí presentado). La falta de este filtrado antirrebotes puede dar lugar a errores de marcación. También Arnie cambia el modo de muestrear el contacto de marcación (Boris comprueba si está actuado a intervalos de tiempo regulares, mientras que Arnie comprueba la interrupción INT0 que detecta el flanco descendente de los impulsos de disco).

El paquete software de Arnie está disponible como archivo descargable rotary_dial-master.zip' en Github (un conocido repositorio de proyectos softwares en Internet), y disponible localmente aquí.

Este paquete software incluye tanto los códigos fuente del programa, como el código final compilado en formato hexadecimal (que es el que se ha de grabar en la memoria EEPROM del microcontrolador ATtiny 85 empleado), así como el esquema y la plantilla de la placa impresa desarrollada por Arnie en formato Eagle. De este paquete software nos interesa el archivo ya compilado en formato hexadecimal para su carga en el microcontrolador, que es el archivo main.hex (en la carpeta bin. No usar el de la carpeta bin/debug).

El hardware para este proyecto es similar al de Boris, pero no completamente compatible, ya que emplea el microcontrolador ATtiny 85 en lugar del ATtiny 45, e intercambia las entradas del microcontrolador para los contactos de marcación y los contactos de contocircuito del disco. Además se han de polarizar las entradas del microcontrolador para los contactos de disco mediante resistencias de “pull-up“ conectadas a la tensión de alimentación del microcontrolador, cosa que en el hardware de Boris se hace al programar el microcontrolador (ya que internamente el microcontrolador dispone de estas resistencias), y que extrañamente no tiene en cuenta Arnie, por lo que las resistencias de pull-up se han de añadir externamente al microcontrolador.

En la placa propuesta en este artículo, funciona el firmware de Arnie, pero se ha de sustituir el microcontrolador ATtiny 45 por el ATtiny 85, se han de intercambiar las tomas P y CC de la placa (P a la patilla 7 del ATtiny 85 y CC a la patilla 6), y se ha de añadir dos resistencias de pull-up a las tomas P y CC conectadas a la línea de alimentación del microcontrolador (patilla 8). Las dos resistencias de pull-up añadidas pueden tener un valor comprendido entre 22 K y 47 K (el valor no es crítico).

El esquema del convertidor ya modificado sería el siguiente:

 

Circuito convertidor pulsos-DTMF
Circuito convertidor pulsos-DTMF modificado para el firmware de Arnie. (Clic en la imagen para ampliarla).

 

La placa impresa para esta versión (para el ATtiny85) del circuito es una leve modificación de la presentada anteriormente (versión para el ATtiny45), está disponible aquí para su impresión en tamaño físico real en formato TIFF y en formato PDF

 

Tanto si utiliza uno u otro circuito, y aún así sigue teniendo problemas de fallos de marcación debidos aparentemente a rebotes de los contactos del disco cuando cierran, puede ser debido a que los contactos del disco estén sucios y hagan mal contacto, e incluso que el contacto de marcación pueda estar deteriorado por quemadura eléctrica, en cuyos casos se procederá a limpiar cuidadosamente los contactos (y lijar el de marcación si fuera necesario), procurando no desajustarlos. También podría ser debido a una velocidad de giro inadecuada del disco (la velocidad de marcación estándard es de 10 impulsos/segundo) o un desajuste mecánico importante del contacto de marcación (la relación abierto/cerrado de cada impulso marcado está estandarizado en 66%/33%).

 

PROGRAMANDO EL MICROCONTROLADOR

Disponiendo ya del firmware para el microcontrolador ATtiny 45, ahora hay que cargarlo en la memoria EEPROM del microcontrolador, y para ello hace falta un programador adecuado al cual conectar el chip microprocesador, además del software adecuado para manejar el programador desde el ordenador personal.

Para programar chips microcontroladores AVR de Atmel se suelen usar programadores de tipo ISP, habiendo en el mercado varios que realizan esta función. ISP es el acrónimo de “In-System Programming”, y los programadores de tipo ISP requieren de un bus especial para conectar el chip microcontrolador AVR al programador, el bus o conexión ISP. Este bus es un conjunto de 6 hilos utilizado para conectar directamente entre ciertos pines (patillas) del microcontrolador al conector ISP del programador (que puede ser de 6 ó 10 terminales típicamente).

Las señales que se conectan a través de una conexión ISP entre el programador y el microcontrolador a programar son las siguientes:

En nuestro caso, el programador es el dispositivo “maestro” y el microprocesador a programar es el dispositivo “esclavo”. Se deben conectar estas señales del programador con los pines del microprocesador AVR que tengan el mismo nombre o función (ver aquí la asignación de señales ISP en un microcontrolador ATTiny x5).

Existen varios programadores disponibles en el mercado o adquiribles a través de Internet que pueden ser usados para programar el microcontrolador (usbasp, USBtinyISP, AVR ISP, MKII, AVR Dragon...), pero si usted es usuario de la plataforma Arduino (o conoce algún amigo que la utilice), ya ha solucionado el problema de disponer del programador. Si usted conoce la plataforma Arduino, comprenderá fácilmente todo lo que se explica a continuación.

Arduino es una sencilla y barata plataforma de programación que le permite programar sus propias aplicaciones y cargarlas en una tarjeta electrónica Arduino, tarjeta basada en un microcontrolador AVR de Atmel y que dispone de varias entradas y salidas con la que interaccionar con el mundo exterior. Con ello puede utilizar la tarjeta Arduino como unidad de control para sus propios proyectos de electrónica y de control de dispositivos. Las tarjetas Arduino son bastante baratas, hay varios modelos, siendo la más utilizada la placa Arduino Uno (la mayoría de las demás son compatibles con Arduino Uno). El software de la plataforma Arduino que se deberá instalar en su ordenador personal, denominado IDE (Entorno de Desarrollo Integrado), se comunica con la placa Arduino Uno a través de una conexión USB.

El IDE Arduino dispone de una serie de ejemplos (menú Archivos > Ejemplos) de sketches (nombre que se da en la jerga Arduino a los programas desarrollados para las placas Arduino) ya preparados que el usuario puede utilizar inmediatamente, y uno de ellos es el que configura la placa Arduino como Programador ISP (Archivos > Ejemplos > ArduinoISP). Seleccionando este sketch y enviándolo (cargándolo) a la placa Arduino, ésta queda configurada como programador ISP, y la podemos emplear para programar nuestro chip microcontrolador ATtiny 45.

Para ello procedemos a realizar la conexión ISP entre la placa Arduino y el chip ATtiny 45, preferiblemente utilizando hilos de conexión y una placa de pruebas o protoboard para el chip microcontrolador. Utilizando la placa Arduino Uno o similar, esta conexión ISP sería la siguiente:

 

Conexión ISP
Pin Arduino Señal Pin ATtiny85
5 V Vcc 8
GND GND 4
Digital 10 -Reset 1
Digital 11 MOSI 5
Digital 12 MISO 6
Digital 13 SCK 7

 

Configuración de la placa Arduino Uno (u otra placa Arduino que no sea la Arduino Mega) como programador ISP de chips Attiny 85/45/25. Hay que conectar las señales Slave RESET, MOSI, MISO, SCK, además de la tensión de alimentación (5 V, GND) de la placa Arduino a las correspondientes del chip Attiny, tal como se comentó al hablar de la conexión ISP entre programador y microcontrolador.

 

Los IDE actuales de Arduino no contemplan la programación de chips microcontroladores ATtiny x5 desde la propia IDE (usando la placa Arduino como programador ISP), no obstante en Internet se encuentran algunos softwares de otros usuarios, denominados “Cores”, que se integran en la IDE Arduino, y hay algunos que habilitan la IDE Arduino para programar chips microcontroladores ATtiny x5 (y otros microcontroladores de Atmel). Sin embargo, no nos van a ser útiles en nuestro caso.

En efecto. La IDE Arduino sólo permite cargar y editar en su ventana de trabajo sketches escritos en el lenguaje de programación utilizado para esta plataforma, que básicamente es el lenguaje de programación C/C++, mientras que el sofware que tenemos que cargar en el microcontrolador es un archivo de formato hexadecimal de Intel. Un archivo de este formato es básicamente un archivo de texto cuyo contenido es una sucesión de códigos hexadecimales, que representan los distintos valores de los bytes que se deben grabar en la memoria flash del chip microcontrolador (1 byte = 8 bits = 2 códigos hex , valores 00 a FF). Normalmente tienen la extensión .hex (mientras que los archivos de los sketches de Arduino tienen extensión .ino).

Si intentamos cargar en la ventana de trabajo de la IDE Arduino un archivo hexadecimal (hex), no será reconocido, por lo que deberemos utilizar otras herramientas para poder cargarlo, eso sí, usando para ello la placa Arduino ya preparada como programador ISP de chips ATtiny.

Sin embargo, cuando en la IDE se escribe o carga un sketch y se verifica que está correcto (bien con el icono de verificación, bien al cargar el sketch en la placa Arduino), la IDE compila a formato hex el sketch y lo guarda temporalmente en una ubicación temporal de usuario. Es decir, la IDE Arduino sí maneja el formato hex internamente, por lo que dispone de las herramientas para manejarlos y cargarlos en la placa Arduino.

Dicha herramienta es AVRdude (AVR Downloader/UploaDEr). AVRdude es un projecto creado por Brian S. Dean para programar los microcontroladores de Atmel con la interfaz ISP. AVRDude es OpenSource y permite grabar un archivo o programa HEX o BIN en la EEPROM de un microcontrolador AVR, así como programar los denominados “fuse bits” o fusibles de configuración de los microcontroladores AVR. AVRdude ha sido incluida en la IDE Arduino, así como en otras plataformas de progamación de microcontroladores AVR Atmel. Bajo Windows, AVRDude funciona en línea de comados o cónsola del sistema.

En la IDE Arduino, AVRdude se encuentra en la siguiente ubicación:

c:\arduino-xxx\hardware\tools\avr\bin\

siendo arduino-xxx la carpeta de instalación de la IDE Arduino (xxx indica la versión de la IDE instalada).

Bien, tenemos la placa Arduino configurada como programador ISP, conectada al ordenador mediante conexión USB, y conectada al chip ATtiny 45 mediante conexión ISP (ver figura anterior). Si trabaja con Windows, abrimos la consola del sistema (modo línea de comandos). Normalmente se abrirá en el directorio raíz ( C:\ ), y con el comando CD (de cambio de directorio) vaya donde está instalada AVRDude. Ya podemos ya ejecutar AVRdude. Si ejecuta AVRdude sin parámetros, AVRdude mostrará la ayuda, con las opciones disponibles y su formato:

 

 

(Nota: Observe que los parámetros para las opciones son sensibles a mayúsculas y minúsculas)

Nosotros sólo haremos uso de las opciones necesarias para escribir un programa ejecutable en formato .hex en el microcontrolador. Básicamente AVRdude necesitará que se le especifiquen el tipo de programador ISP utilizado, el puerto COM de comunicación ordenador-programador (cuando instaló la IDE Arduino en su ordenador, se asignó un puerto COM para comunicar con la placa Arduino, que es virtual al funcionar a través de la conexión USB), la velocidad de comunicación (baud rate, si el puerto es serie), el tipo de microcontrolador que va a programar o manejar, qué tipo de operación se va a realizar, y el archivo .hex si se va a volcar en la memoria del microcontrolador.

Las opciones de AVRdude que más se utilizan son:

-c Especifica el programador a utilizar. Ej, usbasp, avrisp, stk500, etc...
Use el comando   avrdude -c ?   para consultar todos los programadores soportados y sus códigos para AVRdude.
Usando Arduino Uno como programador ISP, deberá especificar el código avrisp como programador
-p Especifica el numero de parte, o sea, o sea, el microcontrolador a programar. Ej, m16, m32, m88, etc.
Deberá consultar en la documentación de AVRdude qué código de microcontrolador se requiere para especificar el microcontrolador que desee manejar.
Para los ATtiny 25/45/85 deberá especificar respectivamente t25, t45, t85
-P Especifica el puerto del ordenador al que está conectado el programador. Ej, COM1, etc.
Con Arduino como programador ISP, especifique el puerto COM que emplea Arduino.
-b Velocidad de comunicación en bauds (baud rate), sólo se emplea si el puerto empleado es un puerto de comunicación serie (COM)
Con Arduino como programador ISP, la velocidad del puerto COM, que aparece configurada como 9600 baudios en su sistema, se debe especificar el valor de 19200 baudios, que es la velocidad que emplea AVRDUDE para comunicarse con el chip ATtiny con este tipo de programador.
-U mem:oper:[:file][:format] Especifica el tipo memoria (mem) sobre la que se va a realizar la operación (oper) de lectura, escritura o verificación, así como la operación, el archivo o valor de los datos (file) y el formato (format) de los datos.
  El tipo de memoria (mem) puede ser: flash, eeprom, hfuse, lfuse, efuse.
  La operación puede ser: w (Escritura), r (Lectura), v (Verificación).
– Escritura: Para grabar en el microcontrolador el contenido de un archivo.
– Verificación : Comprueba que lo que se ha grabado en el microcontrolador corresponde a los datos originales que se han escrito.
– Lectura: Lee la memoria del microcontrolador (y vuelca el contenido en un archivo)
  File, según la operación a realizar, es:
– En escritura, nombre del archivo cuyo contenido se va a volcar a la memoria del microcontrolador, o el valor de un byte si se va a modificar fuses del microcontrolador.
– En lectura, el nombre del archivo donde se vuelca el contenido leído del microcontrolador.
  En cuanto al formato (format), dependerá del archivo empleado. Podemos escribir un sólo byte (en el caso de actuar sobre los fusibles), o un archivo completo (en el caso de actuar sobre la memoria flash o eeprom).
Para un archivo con formato Intel hex (.hex) se usa la opción i, para un valor inmediato (un byte) se utiliza la opción m, para datos en binario se utiliza la opción r.
  Puede especificar en la misma línea de comando varias operaciones -U, serán ejecutadas en el orden en que sean especificadas.

 

El archivo que tenemos que subir al microcontrolador ATtiny 45 es el archivo PulseTone.hex . Cópielo en la misma ubicación (carpeta) donde está AVRdude, y desde la cónsola del sistema, escriba la siguiente línea de comando y ejecútela:

avrdude -c avrisp -p t45 -P COM4 -b 19200 -U flash:w:PulseTone.hex:i -U lfuse:w:0xfd:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m

Esto graba el contenido del archivo hex en la memoria EEPROM del ATtiny 45 (borrando previamente el contenido que estuviera ya grabado en la memoria), y modifica los fuses apropiados. Recuerde especificar el puerto COM correcto (en la línea de comandos se ha supuesto es el COM4). Al ejecutar esta línea de comando, verá en pantalla algo parecido a lo siguiente:

 


C:\arduino-1.8.7\hardware\tools\avr\bin>avrdude -c avrisp -p t45 -P COM4 -b 19200
 -U flash:w:PulseTone.hex:i -U lfuse:w:0xfd:m -U hfuse:w:0xdf:m -U efuse:w:0xff
:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0x1e9206 (probably t45)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "PulseTone.hex"
avrdude: writing flash (2060 bytes):

Writing | ################################################## | 100% 3.37s

avrdude: 2060 bytes of flash written
avrdude: verifying flash memory against PulseTone.hex:
avrdude: load data flash data from input file PulseTone.hex:
avrdude: input file PulseTone.hex contains 2060 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.89s

avrdude: verifying ...
avrdude: 2060 bytes of flash verified
avrdude: reading input file "0xfd"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.03s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xfd:
avrdude: load data lfuse data from input file 0xfd:
avrdude: input file 0xfd contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xdf"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xdf:
avrdude: load data hfuse data from input file 0xdf:
avrdude: input file 0xdf contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xff"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% -0.00s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xff:
avrdude: load data efuse data from input file 0xff:
avrdude: input file 0xff contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified

avrdude: safemode: Fuses OK (E:FF, H:DF, L:FD)

avrdude done.  Thank you.


C:\arduino-1.8.7\hardware\tools\avr\bin>

 

Si utiliza el firmware de Arnie, copie el archivo main.hex en la misma ubicación (carpeta) donde está AVRdude, y desde la cónsola del sistema, la línea de comando que deberá ejecutar es la siguiente (recuerde comprobar previamente el puerto COM correcto):

avrdude -c avrisp -p t85 -P COM4 -b 19200 -U flash:w:main.hex:i -U lfuse:w:0xcd:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m

Si la ejecución de avrdude falla y obtiene un mensaje de error, lo más probable es que no esté correctamente realizada la conexión ISP entre el programador y el microcontrolador, por lo que deberá revisar las conexiones indicadas anteriormente. También puede ser debido a que no se hayan puesto los códigos correctos del programador y del microcontrolador que se programa.

Los mencionados fuse bits o “bits fusible” son, por decirlo de alguna manera, una especie de fusibles electrónicos programables (y reversibles) que cuando son actuados, modifican el circuito interno del microcontrolador, y por tanto, afectan a determinados aspectos de funcionamiento de éste, como por ejemplo el reloj que emplea el microcontrolador. Se comentó anteriormente que los microcontroladores ATTiny x5 funcionan con un reloj interno de 1 MHz (mediante un oscilador RC interno), pero pueden funcionar con un reloj externo controlado por cristal de cuarzo de hasta 20 MHz si se configura el chip adecuadamente para ello, y ello se consigue actuando sobre el fuse bit adecuado. Dado que en este circuito convertidor pulsos-DTMF el microcontrolador ATtiny 45 funciona con un cristal de cuarzo de 4 MHz (y no con su oscilador interno de 1 MHz), además de cargar el programa hex en la memoria EEPROM del ATtiny 45, se ha de actuar sobre los fuse bits adecuados para decirle al ATTiny 45 que utilice el cristal externo en lugar del oscilador RC interno, y esto ya está contemplado en la anterior línea de comando de AVRdude.

 

Si la anterior línea de comando de AVRdude se ejecuta sin error, ya tiene el chip ATtiny 45 (o el AAtiny 85) programado. Ya puede llevarlo a la placa del circuito convertidor, e instalar ésta en su teléfono de disco. Si quiere comprobar la placa convertidora antes de instalarla, conéctela (por sus terminales L y L') mediante dos hilos a una toma de alimentación de 12-15 V, intercalando una resistencia de 220 a 330 ohm en uno de los hilos de alimentación (esto simulará una línea telefónica), conecte el disco del teléfono a la placa (a los terminales M, P y CC ; si para ello desmonta el disco del aparato telefónico, tome nota antes de cómo estaba conectado en el teléfono), y conecte un auricular (preferiblemente de alta impedancia) entre L y L' en serie con un condensador electrolítico de varios microfaradios (para bloquear la corriente continua ; es un condensador polarizado, tenga en cuenta la polaridad de la tensión aplicada). Al actuar el disco de marcar, deberá escuchar en el auricular la emisión de un tono DTMF cada vez que acabe de marcar una cifra en el disco de marcar.

 

Línea telefónica simulada para probar la placa convertidora
Línea telefónica simulada para probar la placa convertidora.

 

DOS EJEMPLOS DE APLICACIÓN, EN TELÉFONOS ESPAÑOLES

A continuación, dos ejemplos de instalación en clásicos teléfonos de disco que se han empleado ampliamente en el siglo pasado en la red telefónica de CTNE (Compañía Telefónica Nacional de España, actual Telefónica de España).

Para entender mejor los esqueñas mostrados, CTNE solía etiquetar los terminales y bornas de conexión del aparato con las siguientes letras (entre otras):

 

APLICACIÓN EN TELÉFONOS DE BAQUELITA NEGROS

Estos teléfonos clásicos fueron muy empleados en la red de CTNE a partir de los años 1940. Tanto en versión de sobremesa como en versión mural (de pared), equipaban una carcasa de baquelita negra con base metálica, y su microteléfono también es de baquelita negra.

Su circuito eléctrico estaba cableado al aire, disponiendo de unas regletas de conexión con tornillos para fijación de los hilos de conexión de los distintos elementos del aparato. Normalmente el esquema del circuito del teléfono viene en una pegatina adherida en el interior de la carcasa del aparato.

 

Teléfono de baquelita negro de sobremesa fabricado por SESA
Teléfono de baquelita negro de sobremesa fabricado por SESA. Utilizados en la red telefónica española desde los años 1940s. (Clic en la imagen para ampliarla).

 

Hay varios modelos de estos teléfonos de baquelita, fabricados por Estandar Eléctrica S.A. (SESA), todos muy similares de aspecto y circuitería. A continuación se muestra el esquema para los modelos 5523 y 5530 (otros modelos tienen un esquema eléctrico muy similar):

 

Pegatina con el esquema de los modelos 5523 y 5530
Pegatina con el esquema de los modelos 5523 y 5530. (Clic en la imagen para ampliarla).

 

Esquema de los modelos 5523 y 5530
Esquema de los modelos 5523 y 5530, algo más claro que el anterior. (Clic en la imagen para ampliarla).

 

En este circuito, el contacto de marcación del disco está cableado a los terminales L2 y M de la regleta de conexiones del aparato, y los contactos de cortocircuito están conectados a los terminales R, MR y M de la regleta. La conexión al terminal M es común para ambos grupos de contactos, y de hecho, el disco de marcar del aparato está cableado con 4 hilos de conexión (y no 5 hilos).

Para incorporar la placa convertidora pulsos-DTMF, desconectaremos los hilos procedentes del disco y los llevaremos a los terminales P, M y CC de la placa (el hilo común a ambos grupos de contactos se llevará a M de la placa convertidora). Se deberá realizar una conexión entre L2 y M de la regleta del teléfono para no dejar el circuito del teléfono abierto al desconectar el contacto de marcación del disco.

En cuanto a la conexión a línea de la placa, sus teminales L y L' se pueden conectar, una a M en la regleta del aparato, y la otra al terminal 1 de la bobina de inducción del aparato o el terminal del conmutador de colgado/descolgado a la que está conectado (esta conexión es mediante soldadura). Los dos puntos indicados están conectados a los dos hilos de línea L1 y L2, pero con los contactos del conmutador de colgado/descolgado por medio.

 

Interior del aparato modelo 5523 o 5530
Interior del aparato modelo 5523 o 5530. En la carcasa se ven el mecanismo del disco de marcar, los resortes del conjunto de contactos de colgado(descolgado, y la pegatina con el esquema del aparato. La base metálica soporta el timbre de campanas, la bobina de inducción, el condensador del timbre y la regleta de conexiones atornilladas. También se muestra el microteléfono y el cordón con la roseta de conexión a línea. (Clic en la imagen para ampliarla).

 

 

APLICACIÓN EN TELÉFONOS MODELOS HERALDO

Estos teléfonos, tanto en sus modelos de sobremesa como murales, se introdujeron el la red telefónica de CTNE en los años 60, en sustitución de los modelos de baquelita negros de SESA. Fabricados por CITESA para CTNE, son teléfonos de aspecto más moderno, con carcasa de termoplástico que estuvo disponible en varios colores (el más empleado fue el gris claro).

 

Modelo Heraldo de sobremesa
Modelo Heraldo de sobremesa. (Clic en la imagen para ampliarla).

 

Su circuito eléctrico está realizado en una placa de circuito impreso, con los terminales de conexión a los distintos elementos del aparato de tipo hembrillas de conexión faston para terminales machos en Y. La placa de circuito impreso también soporta el conjunto conmutador de colgado/descolgado del aparato, actuado mediante una larga palanca de plástico negro.

El disco de marcar es mecánicamente más moderno que el de los aparatos de baquelita, y utiliza una corta manguera de 5 hilos de conexión al circuito impreso, cada uno de un color y terminado en un terminal macho en Y: dos para el contacto de marcación (hilos blanco y gris) y 3 para los de cortocircuito (hilos rojo, verde y marrón).

A lo largo del tiempo hubieron varias versiones de este circuito impreso. A continuación de muestra el esquema del aparato, correspondiente dos versiones del circuito impreso:

 

Circuito de un teléfono Heraldo con la más moderna placa UNA 8021-A
Circuito de un teléfono Heraldo con la placa UNA 8018-C, la más moderna (preparada para conexión de un teclado marcador en lugar del disco marcador). Su esquema es bastante claro para analizar el funcionamiento del aparato. La línea telefónica se conecta a L1 y L2 en la roseta (1) o en la clavija (2) de conexión a línea. Los 4 arrollamientos mostrados en el esquema son todos de la bobina de inducción. Los tres componentes que parecen dos triángulos invertidos en paralelo son protectores contra sobretensiones y para ecualización del aparato (son varistancias o resistencias variables con la tensión para AZ y GR, y dos diodos en antiparalelo para S1). El conmutador de colgado/descolgado (G) está representado en posición de colgado (conectando el circuito de timbre a línea). El disco de marcación es el círculo con un grupo de contactos en el lado inferior de este esquema. (Clic en la imagen para ampliarla).

 

Circuito de un teléfono Heraldo con la placa UNA 8021-A
Circuito de un teléfono Heraldo, dotado de la placa impresa UNA 8021-A, algo más antigua que la anterior (aún no preparada para conexión de un teclado marcador). Cambian algunas cosas respecto a la anterior (UNA 8018) y el esquema es algo más complicado para examinarlo. El circuito de timbre ha de tener la conexión realizada entre L1 y TS (bien dentro del aparato, bien en la roseta de conexión). El gancho o conmutador de colgado/descolgado está representado en este esquema en posición de descolgado (conectando a línea el circuito de fonía del aparato). (Clic en la imagen para ampliarla).

 

De acuerdo con el esquema anterior, para incorporar la placa convertidora en el aparato, se realizarán los siguientes pasos:

 

Unidad de disco de marcar para teléfonos modelo Heraldo
Unidad de disco de marcar para teléfonos modelo Heraldo, con su manguera de 5 hilos de conexión a la placa del teléfono, terminados en terminales machos en Y. Los hilos blanco y gris corresponden a los resortes del contacto de marcación, mientras que los hilos rojo, verde y marrón son los de los resortes del contacto de cortocircuito. (Clic en la imagen para ampliarla).

 

Interior de un teléfono Heraldo, sin la carcasa superior de plástico
Interior de un teléfono Heraldo, sin la carcasa superior de termoplástico. Con una placa UNA 8018-C (la placa UNA 8021-A es parecida), la pieza negra por encima de la placa es la palanca de plástico que actúa el conmutador de colgado/descolgado del aparato (el cual está integrado en la placa), y es accionada por el microteléfono cuando éste es depositado o levantado de su posición de reposo en el aparato telefónico. El circuito de timbre ha de tener la conexión realizada entre L1 y TS, se puede realizar en la placa del aparato o en la roseta redonda de conexión a línea. (Clic en la imagen para ampliarla).

 

 


 

Escrito por : Fernando Fernández de Villegas
Primera edición: 02-10-2019
Última modificación: 11-10-2020