Impulswahl (IWV) nach Mehrfrequenzwahl (MFV) konvertieren

Zum Betrieb von alten oder Retro-Telefonen (oftmals Wandtelefon) mit Wählscheibe, also IWV = Impulswahlverfahren auf MFV = Mehrfrequenzverfahren (auch denglisch DTMF genannt), zum Betrieb an einer zu einfachen Telekommunikationsanlage (TK-Anlage, Haustelefon, Internet-Router).

Hinweis: Fritzboxen, aber auch mein Thomson-Kabelmodem, können mit Impulswahl umgehen. Wer einen solchen Internet-Router hat, braucht das nicht unbedingt, aber der zusätzliche Kurzwahl-Komfort ist ziemlich praktisch. Die Wählbarkeit von „*“ und „#“ erlaubt bei Fritzboxen einen Internruf: „**1“ wählt Fon1, „**2“ wählt Fon2 usw., „**9“ lässt alle internen Telefone klingeln.

Im folgenden geht es um den Einbau einer Schaltung zur Tonwahl in das Telefon. Im Gegensatz zu anderen Vorsatzkonvertern gibt es Komfortfunktionen wie Wahlwiederholung und Kurzwahl. Ohne Stützbatterie und mit minimalem Bastelaufwand. Die Implementierung wertet das Festhalten der Wählscheibe am Fingeranschlag aus und benötigt keine Erdtaste.
(Veraltete) Lösung mit Erdtaste.
(Unfertige) Lösung als Vorsatzgerät.
Verzichtet man als Anwender auf die Extras, wird das Telefon unverändert bedient.

Es werden folgende Zusatzfunktionen realisiert:

Der grundsätzliche Schaltplan von Telefonen mit Wählscheibe ist stets gleich; hier ist es hervorragend erklärt: Fernsprecher W611. Das Mikrofon ist normalerweise ein Kohlegrieß-Mikrofon.

Vorüberlegung

Die einzig denkbare „Bediengestik“ zum Erreichen von Komfortfunktionen ist das „Innehalten“ mit dem Finger in der Wählscheibe am Fingeranschlag. Denn im Normalfall wählt der Bediener zügig.

Softwaretechnisch wird der zweite Kontakt des Nummernschalters „nsa“ ausgewertet und eine Zeitüberschreitung detektiert. Da zwei Ebenen Komfortfunktionen erforderlich sind, habe ich zwei Timeouts implementiert, deren Ablauf durch unterschiedliche akustische Signale im Hörer bekannt gegeben werden.

Mikrocontroller-Schaltung

Ausgangspunkt war Atmels Application Note AVR314. Es wurde auf einen ATtiny25 umgesetzt und der High-Speed-PWM-Generator im Zeitgeber 1 (mit 64 MHz Taktfrequenz und ≈250 kHz resultierender Trägerfrequenz) benutzt. Nur 1 Eingang für den Nummernschaltkontakt wird benötigt. Dadurch reicht der 8-beinige ATtiny25, und der RESET-Eingang kann zur In-System-Programmierung frei bleiben (= kein Hochvolt-Programmiergerät erforderlich).

Schaltplan, zur Reihenschaltung

Für die Tonerzeugung ist zwingend ein externer Resonator oder Quarz erforderlich; der interne Oszillator erwies sich als zu instabil. Der Firmware-Quelltext läuft mit allem zwischen 3 und 12 MHz. Den Kurvenverlauf generiert Timer0, an dessen Interruptservice die DDS-Kurvenerzeugung „hängt“ sowie die gesamte Eingangsdatenverarbeitung. Das Hauptprogramm (main()) schließlich schickt den Prozessor in den Schlafmodus oder schubst die nächste Tonausgabe an.

Die Mikrocontrollerschaltung liegt in Reihe zum Telefon. Siehe FAQ. Das vereinfacht die Stromversorgung erheblich, denn eine 3,9-V-Zener-Diode D1 parallel zu den Betriebsspannunganschlüssen des ATtiny25 begrenzt die auftretende Spannung und sorgt für Verpolschutz sowie Sicherheit vor der Rufwechselspannung.

Die Anschlüsse für den Nummernschalter wurden freigemacht und zum Mikrocontroller verdrahtet. So gibt es keine Probleme mit irgendwelchen Potenzialverhältnissen.

Über den Widerstand R1 und den Kondensator C3 wird schließlich das Tonwahlsignal als PWM auf die Telefonleitung gegeben. Solange keine Tonausgabe läuft ist der Mikrocontroller-Anschluss hochohmig und stört das Gespräch nicht.

Der Eingriff in das Telefon und der direkte Anschluss der Nummernscheibe an den Mikrocontroller erspart die Notwendigkeit, die Wählimpulse zum Amt hin „wegbügeln“ zu müssen. Denn die Telefonanlage kann diese Wählimpulse als Flash-Impulse missverstehen, wie sie von der Flash-Taste stammen. Das ergibt zumeist Besetzt. Oder das Amt kann doch Impulswahl, und bekommt jede Ziffer 2×, einmal als Pulsfolge, einmal als Ton: Ergebnis = Verwählt.

Ganz nebenbei stört das Herumspielen an der Nummernscheibe nicht das laufende Gespräch.

Ein vorsetzbarer Konverter ist komplizierter, erspart nur den Eingriff. Siehe da.

Firmware

Die Abkopplung des Nummernschaltkontaktes von der Amtsleitung ermöglicht eine komplette Neuzuweisung von Funktionen. Man könnte allen möglichen Blödsinn damit realisieren, etwa das Abspielen einer Tonfolge („Melodieklingel“) oder gar Sprache („Sie Vollidiot haben sich verwählt!“ wenn Flash-Speicher des Controllers groß genug) beim Wählen einer bestimmten Nummer oder so. Auch das Sperren von teuren Auslands- und Sonder­rufnummern fällt darunter. Auch ein Least-Cost-Router, den man allerdings von Hand aktualisieren müsste. Heutige (2015) Telefonverträge machen sowas allerdings kaum noch attraktiv.

Die Stromaufnahme der Testschaltung (bei 5 V aus dem Labornetzteil) lag bei lastabhängigen 18 mA bei Tonerzeugung sowie bei unter 1 mA in Ruhe. Bei aufgelegtem Hörer sinkt die (mittlere!) Stromaufnahme auf weit unter 100 µA. Die Firmware kann nur bei abgenommenen Hörer starten! Daher zur Erstinbetriebnahme Hörer kurz abnehmen. Erst danach kann die Firmware entgangene Anrufe zählen.

Die Firmware ist wie immer quelloffen und Freeware. Zudem deutsch kommentiert. Assembler-Routinen wurde nur für den geschwindigkeits-relevanten DDS-Generator verwendet, der Rest ist in C programmiert.

Aufbau

Die wenigen Bauelemente passen auf ein Stück Lochrasterplatine. Nur beim Verdrahten muss man aufpassen, dass man nichts falsch anschließt oder mit dem Lötkolben das Telefongehäuse anschmurgelt. Leider hatte ich keine passenden Steckschuhe …

Ansicht der Platine mfv2 (uralt, C2 habe ich weggelassen.)
Ich hatte gerade keine passende Steckfassung, sondern Goldstaub aus DDR-Zeiten (passend zum Telefon eben).

Vor der Inbetriebnahme ist zu prüfen:

Beim Einbau ist der Nummernschaltkontakt nsi (parallel nsr) für S1 zu verwenden! Also die beiden Leitungen von der Wählscheibe vom Telefon trennen und mit der Schaltung verbinden. Dieser normalerweise geschlossene Schalter muss daraufhin im Telefon gebrückt werden. Sonst funktioniert gar nichts auf Grund der dauerhaften Unterbrechung der Stromschleife.

Der Stummschaltkontakt nsa wird in Reihe zu nsi gelegt. Bei dreidrähtigen Nummernscheiben (DDR-Telefone ab den 70ern) ist dies bereits schaltungstechnich der Fall. Er ist normalerweise offen und schließt nur während Aufzug und Ablauf der Wählscheibe und erzeugt so das typische „Geräusch“ im Telefonhörer, dass das Rauschen vom Amt verstummt.

Die Erdtaste — falls vorhanden — ist mit Wahlwiederholung belegt. Wird sie gemeinsam mit dem Ablauf der Wählscheibe betätigt, wird Ebene 2 angesteuert: Mit 2 Fingern kommt man so ohne Warten zu den Sonderfunktionen. Für einige Telefonanlagen wäre die Umrüstung zur Flash-Funktion sinnvoll. Den gleichen Effekt erreicht man aber auch durch kurzes Antippen der Hörergabel.

Bedienungsanleitung

Folgende Symbolik verdeutlicht die Tastendrücke:

Kurzbedienungsanleitung (ATtiny25)
alt
Standard
Wählen Rufnummer 0..9 (wie gehabt)
Erste Ebene
Kurzwahl Kurzwahlziffer 0..9 : Ausgabe gespeicherte Rufnummer
Zweite Ebene
Wahlwiederholung 1 : Ausgabe letzte Rufnummer
Zuletzt gewählte Nummer
als Kurzwahl speichern
2 Kurzwahlziffer 0..9
Neue Kurzwahl speichern 3 Rufnummer 0..9 Kurwahlziffer 0..9
A..D wählen 4..7 (kaum eine Telefonanlage kennt das)
* wählen 8
# wählen 9
Letzte Rufnummer löschen 0
neu (ähnlich ATtiny45 mit CLIP)
Standard
Wählen Rufnummer 0..9 (wie gehabt)
Erste Ebene
Kurzwahl Kurzwahlziffer 0..9 : Ausgabe gespeicherte Rufnummer
Zweite Ebene
A..D wählen 1..4 (kaum eine Telefonanlage kennt das)
Wahlwiederholung 5 : Ausgabe letzte Rufnummer
Anrufzähler löschen oder
Letzte Rufnummer löschen
6
Zuletzt gewählte Nummer
als Kurzwahl speichern
7 Kurzwahlziffer 0..9
Neue Kurzwahl speichern 8 Rufnummer 0..9 Kurwahlziffer 0..9
Autowahl festlegen 8 Rufnummer 0..9 5
* wählen 9
# wählen 0

Im Gegensatz zu „normalen“ analogen Tastentelefonen vergisst diese Schaltung die eingespeicherten Nummern nicht bei Stromausfall oder Abziehen der Telefonleitung! Eine Batteriestütze o. ä. ist daher nicht erforderlich. Neu hinzugekommen ist die Autowahl. Die Autowahl ist die Nummer, die beim Abheben automatisch gewählt wird (Oma-Modus). (Natürlich nur, wenn's nicht gerade geklingelt hat.)

Beim Einspeichern ist die Wahl von *, # sowie A..D möglich: Es ist 9², 0² bzw. 1²..4² zu wählen (² = 2 Pieptöne). Bei 5² wird Autowahl festgelegt, bei 6², 7² und 8² passiert nichts.

Kapazität des Kurzwahl-Speichers

Diese ist an die EEPROM-Größe von 128 Byte eines ATtiny25 angepasst: Wahlwiederholungs- und Kurzwahlspeicher sind für 20 Ziffern ausgelegt. Macht 12 Nummern à 10 Byte = 120 Byte. Sind noch 8 Byte frei, für den Anrufzähler und zum Debuggen.

Fragen am Rande

Der Quarz ist beliebig?
Ja, in Grenzen, 3..20 MHz. Für CLIP / Rückruf ein Resonator (kein Quarz) mit exakt 4 oder 8 MHz.
Kann ich einen programmierten Controller bekommen?
Ja, per Briefpost. Sie müssen mir allerdings mitteilen: Kosten = (Reichelt oder Pollin) + Versand, Vorkasse. Programmierung gratis, auch bei SO8. Und es kann etwas dauern.
Weitere Fragen verschoben nach dort.

Einsatzerfahrung

Ich benutze eigentlich nur den Kurzwahlspeicher. Damit macht das Telefonieren, genauer das Wählen so richtig Spaß. Während ich bei jedem anderen Telefon schon x-mal die Nummern neu eingeben musste (nach Stromausfall), halten die Nummern bei diesem Telefon länger als die Nummern der Angerufenen.

Berichtet wurde von einem Problem bei der Direktwahl mit einigen Kabelmodems: Durch die lange Pause zwischen den Wähltönen kommt das Modem durcheinander und meldet „besetzt“. Besonders bei langen Nummern. Lösung: Die Nummer zu Ende wählen, dann die Funktion „Wahlwiederholung“ + 1 verwenden.

Implementierung auf Kundenwunsch

Firmware für Quarzfrequenz 17,28 MHz sowie 14,xxx MHz wie oben und ohne Rufnummernsperre. (Der Quarz lag gerade herum.)

W48 von innen

In diesem Fall ist die Einbauanleitung folgende:

positive Spannung an b gegenüber a (regulär) negative Spannung an b gegenüber a (invers)
  • b (braun) abtrennen (wegen Gabelumschalter an a) und Schaltung in Reihe einbauen:
    • X2 an b des Telefons
    • X1 an die braune Ader zum Amt bzw. Modem (weil das „positiver“ ist als X2)
  • b (braun) abtrennen (wegen Gabelumschalter an a) und Schaltung in Reihe einbauen:
    • X1 an b des Telefons
    • X2 an die braune Ader zum Amt bzw. Modem (weil das „negativer“ ist als X1)
  • X3 an M' (leise MFV-Töne) oder M (laute MFV-Töne) dazu klemmen.
X3 an M' (leise MFV-Töne) oder M (laute MFV-Töne) dazu klemmen.

Aufbauerfahrung

Achtung! Der Mikrocontroller funktioniert nicht, wenn das Mikrofon kaputt ist! Dann ist die Stromaufnahme des Telefons zu gering.

Sollte das Amt oder das Kabelmodem während des Einspeicherns von Kurzwahlen auf Besetztton umschalten: Ignorieren und Weitermachen! Alles was der Mikrocontroller vom Amt erwartet ist Strom. Klar, von dem nächsten Rauswählen muss man den Hörer kurz auflegen.

Zur Funktionsanzeige im Bastellabor bietet es sich an, D1 durch 2 parallel geschaltete, weiße LED zu ersetzen. Da einfache LED maximal 20 mA vertragen, wird der max. 40 mA Schleifenstrom auf beide LEDs verteilt. Da LEDs gern mal kaputt gehen, ist trotzdem eine Z-Diode zur Absicherung gegen Überspannung notwendig, dann mit 5,6 V. Außerdem als Verpolschutz. Da diese LEDs sehr hell leuchten, kann man damit bspw. die Nummernscheibe beleuchten.

Nach Meldung eines Nachnutzers funktionierte der Konverter nicht mit Telekom Speedport und auch nicht mit einer Auerswald-Telefonanlage. Nach seiner Untersuchung ist das MFV-Signal für diese „Analoganschlüsse“ zu leise: USS = 100 mV. Laut ETSI-Standard sollen es Ueff ≈ 500 mV sein, für jeden einzelnen Sinuston. Die Verringerung des Widerstandes R1 von 10 kΩ auf 1 kΩ brachte die erwünschte Funktion. Dazu muss C5 von 100 nF auf 330 nF erhöht werden. Im Schaltplan ist's entsprechend aktualisiert worden.

Da dann die Hörerlautstärke unerträglich laut sein kann, sollte dann am Mikrofon eingespeist werden, nicht auf der a-Ader. Außerdem bringt die Spannungsbelastung an C5 und die höheren Ströme in das Mikrocontroller-Pin beim Klingeln Probleme, wenn man an der a-Ader einspeist. Daher verändert man die Schaltung am besten zur Version wie in der FAQ, Frage 2 angegeben: „Hinter“ dem Gabelumschalter, so wie ich es selbst zunächst gemacht hatte.

Umstricken des Telefons

Für die Einkopplung des Tonsignals ist es am besten, wenn der Gabelumschalter GU an der abgewandten Seite vom Mikrofonanschluss sitzt. Beim W28, W38 und W48 ist das gerade nicht der Fall! Weiterhin ist es günstig, wenn die Erdtaste am Mikrofon-Potenzial sitzt. Das ist der Fall bei W38 und W48. Daher ist es für den Einbau der Schaltung am besten, den Gabelumschalter (der kein Um- sondern nur ein Einschalter ist) wie in der folgenden Schaltung zu sehen umzubauen. Die Erdtaste, die so auch bei aufgelegtem Hörer funktioniert(!), ist vom in Reihe geschalteten Gabelumschalter zu trennen oder dieser zu überbrücken. Für bessere Kontaktsicherheit schaltet man beide Gabelumschaltkontakte parallel. Inzwischen ausgelaufene 1-µF-Kondensatoren für die Klingel (Wecker) kann man getrost durch einen klitzekleinen Elko 1 µF / 63 V ersetzen, da heutzutage (am DSL-Router) die Polarität bekannt und nicht tauschbar ist.

Mit CLIP-Dekodierung und Rückruf

Wie kann das funktionieren — ohne Display?? Ein Display im Telefon würde — aus Sicht der meisten Anwender — die Ästhetik des Telefons verschandeln. Außerdem ist's umständlich zu basteln und zum Nachbauen eher schwierig. Von dessen Stromversorgung ganz zu schweigen. Daher wurde ein Vergleich mit dem Kurzwahlspeicher eingebaut und eine Tonausgabe für verpasste Anrufe folgendermaßen realisiert:

Die Möglichkeit, den Anrufer während des Klingelns zu identifizieren und den Anruf ggf. abzulehnen besteht nicht. Nimmt man den Hörer während des Klingelns ab (= Gesprächsannahme), gibt es einen (für beide Partner hörbaren) Piepton, wenn der Gesprächspartner bereits vorher versucht hatte, anzurufen. So kann man sich auf die „Dringlichkeit“ seines Anrufs einstellen. Außerdem wird diese Nummer aus der Liste der verpassten Anrufe gelöscht.
Letzter Schrei des Schaltplans, Firmware im Betastadium

Schaltplan und Firmware. Dazu wurden alle Register gezogen, um CLIP-Dekodierung ohne Stromversorgung hinzubekommen! Hier gilt die neue Zuordnung von Sonderfunktionen. Auch hier ist die Erdtaste optional; bei Nichtverwendung ist das RESET-Pin frei für ISP-Programmierung.

Die Bauelemente C4 und R3 werden nur benötigt, wenn die CLIP-Signalisierungsspannung ungewöhnlich klein ist. Normalerweise kann der A/D-Wandler den 20:1-Spannungsverlust durch den ohmschen Spannungsteiler mit seinen 10 Bit ausgleichen. Mit dem Hochpass aus diesen beiden Bauelementen ist der Wechselspannungsverlust nur 2:1. Die Firmware funktioniert in meiner Testumgebung in beiden Fällen.

Fotos vom Prototyp im Telefon „Variant“

Sowohl mfv2b als auch mfv2c (diese Firmware) enthalten eine Erkennung des Störfalls „Keine Amtsspeisung“ sowie „Paralleles Telefon abgehoben“. Dies macht sich softwaremäßig als „Telefon abgehoben“ bemerkbar, aber dann sinkt die Speisespannung rapide, und der Mikrocontroller würde verrecken und könnte bis zum nächsten Abheben keine verpassten Anrufe mehr detektieren. In so einem Fall wird der Watchdog auf seine längste Wartezeit (8 s) gesetzt und zyklisch die Betriebsspannung so lange überwacht, bis diese wieder 4,4 V (nominell) erreicht. Die Stromaufnahme sollte dann laut Datenblatt 6 µA betragen und ein 470-µF-Elko für C1 3 Minuten durchhalten.

Die Platine ist so gestaltet, dass alle notwendigen Anschlüsse auf einer einreihigen, 8-poligen Stiftleiste herausgeführt sind. (Bei Reichelt gibt's keine 6- und 7-poligen Verbinder.) Man kann so die nicht ganz billigen, aber praktischen vorkonfektionierten Stecker+Buchsen+Kabel daran anschließen und hat die Platine steckbar im Telefon. Das Pin 7, wichtig für die Fehlersuche, wurde ebenfalls herausgeführt.

Alternativen

Optionen für mehr Komfort
WunschErfordernisse
DauerstromversorgungEingriff ins TelefonLC-AnzeigeTastenFlash
Wählen bei aufgelegtem Hörer (= Einhandbedienung)100 µA (Vorwiderstand)ja, außer bei W28, W38 und W48nein-0
Blitzen einer LED bei verpassten Anrufen100 µA (Vorwiderstand)neinnein-0
Anzeige der gewählten Rufnummer*neinnumerisch-0
Empfang der eingehenden Rufnummer (CLIP)100 µA + dicker Elkoneinnein-0
Anzeige der eingehenden Rufnummer (CLIP)2 mA vom Inverterneinnumerisch-0
Anzeige von Namen zur Rufnummer (Telefonbuch)*neinalphanumerisch3+ 2..20 KByte
Anzeige von Ländern und Orten je nach Vorwahl (D+A)*neinalphanumerisch-+ 150 KByte
Durchblättern von Listen*nein(alpha)numerisch30
Eingehende DTMF-Signale dekodieren
(falls die Gegenstelle Tasten drückt)
-neinnumerisch-0
Ein Handy anklingeln nach entgangenem Anruf100 µA (Vorwiderstand)neinnein10
Freisprechen bei aufgelegtem HörerNetzteil (500 mA)janein10
Anrufbeantworter100 µA (Vorwiderstand)neinsinnvoll3+ 1/2 MByte pro Minute Sprechdauer
Konfigurationsschnittstelle (seriell + Optokoppler)2 mA vom Inverterneinsinnvoll-+ 2 KByte
Konfigurationsschnittstelle (USB**)-neinnein-+ 2 KByte
* = 2 mA vom Inverter bei aufgelegtem Hörer, sonst kein Strom (bedeutet keine Anzeige bei aufgelegtem Hörer — blöd).
LED-Anzeigen erfordern Netzteil.
** Gemeint ist USB-Schnittstelle des Mikrocontrollers: V-USB oder ATmega32U4.
Wegen der Potenzialverhältnisse ist nur Konfiguration oder Betrieb möglich.
Das muss durch die Hardwarekonstruktion narrensicher realisiert werden, etwa durch sich gegenseitig versperrende Buchsen.

Für ein Retro-Telefon geht das bestimmt zu weit … Wenn nicht, dann siehe CLIP-Anzeige. Aber erst mal ohne Freisprechen, Anrufbeantworter und Apothekerschaltung.