Impulswahl (IWV) nach Mehrfrequenzwahl (MFV) mit Erdtaste

Siehe Hauptartikel.

Telefon mit Erdtaste

Hierbei geht es um die (unsichtbare) Umrüstung eines DDR-Telefons „Variant“ mit Wählscheibe. Dafür gibt es zwar Konverter, die man in die Telefonzuleitungen hängt, aber es sollten folgende Zusatzfunktionen realisiert werden:

Schaltplan des Telefons „Variant“

Die im Innern befindliche Platine ist zwar mit gerade mal 8 Bauelementen bestückt, aber dennoch derart unüber­sichtlich, dass ich hier erst mal einen Schaltplan mit lagerichtiger Kontaktanordnung erstellen musste.

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.

Schaltplan mit lagerichtigen Kontaktmessern

Wie man erahnen kann, ist es wesentlich leichter, die Wählscheibe vom Telefon zu trennen und dem Mikrocontroller zuzuordnen als einen Vorsatzkonverter zu bauen.

Von der „Amtsleitung“ (ein Kabelmodem) kommen ≈ 50 V Leerlaufspannung. Bei abgehobenem Telefonhörer fällt diese auf unter 5 V zusammen, und es fließen ≈ 40 mA. Das ist schon ziemlich gefräßig. Somit kann man den Mikrocontroller gut in Reihe platzieren; Parallelschaltung ist eher unzweckmäßig.

Mikrocontroller-Schaltung

Schaltplan, zur Reihenschaltung.

Für die Tonerzeugung ist zwingend ein externer Resonator oder Quarz erforderlich; der interne Oszillator erwies sich als zu instabil. (Daher funktioniert jene Schaltung nicht.) Der Firmware-Quelltext läuft mit allem zwischen 8 und 20 MHz. Weniger Megahertz wäre für eine präzise Tonausgabe ungünstig. Das erledigt 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.

Außer für die CPU-belastende PWM-Tongenerierung genügt dem Controller eine wesentlich geringere Speisespannung von 1,8 V. Dieser reduzierte Spannungs­abfall sorgt für mehr Rest­spannung am Telefon und damit für eine leicht bessere Sprach­qualität sowie mehr Klingel-Lautstärke als ohne so eine Maßnahme. Dazu könnte software­mäßig parallel zur Zener-Diode eine alte Leucht­diode geschaltet werden, wie im alten Schaltplan angegeben. Diese dient zugleich auch zur Betriebs­kontrolle (Anzeige des Schleifen­stroms).
Leider erwies sich dieser Trick als Mikrocontroller-Töter! Offenbar verträgt der ATtiny keine wechselnden Betriebs­spannungen. (Steht gar nicht im Datenblatt!) Das Symptom war, dass der Mikrocontroller abstürzte aber nach Reset wieder funktionierte, allerdings war er (via SPI) unprogrammierbar. So hatte ich eine Reihe Mikro­controller verschlissen.

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

Über den Widerstand R1 und den Kondensator C5 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 überhaupt nicht.

Firmware

Die Firmware ist wie immer quelloffen und Freeware. Zudem deutsch kommentiert. Sie passt auch mühelos in den ATtiny25 (Füllgrad rund 60 %), da ist noch Platz für eigene Erweiterungen.

Umständliche, frühere Schaltungsrealisierungen verwenden einen speziellem DTMF-Chip. Auch die Verwendung eines Mikrocontrollers mit zwei Rechteckgenerator-Ausgängen und anschließender Tiefpassfilterung und Summation erschien mir zu „unsportlich“, wie anderswo mit PIC gesehen (Link fehlt).
Schließlich gibt es heutzutage bereits Lösungen für Mikrocontroller, DTMF-Signale zu dekodieren, was für die Firmware deutlich anspruchsvoller ist. (Andere Lösung)

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 (C5 ist andersherum und 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 nicht benötigt. Ob man ihn im Telefon wirksam lässt oder abklemmt ist egal. 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.

Auch die Erdtaste ist vom Rest des Telefons zu trennen und an die Schaltung anzuschließen. Auch dieser Schalter ist im Normalfall offen, und sein Fehlen stört dem Telefon nicht.

Bedienungsanleitung

Wie sonst auch muss vor dem Bedienen der Hörer abgenommen werden. (Sonst fehlt der Schleifenstrom für den Mikrocontroller.)

Folgende Symbolik verdeutlicht die Tastendrücke:
Kurzbedienungsanleitung
Ein-Finger-Bedingung
Wählen Rufnummer 0..9 (wie gehabt)
Kurzwahl — Kurzwahlziffer 0..9
Kurzwahl speichern — Rufnummer 0..9 — Kurzwahlziffer
Zwei-Finger-Bedingung (Erde und Wählscheibe gleichzeitig, zumindest am Sequenzbeginn)
Wahlwiederholung 1
Zuletzt gewählte Nummer speichern 2 — Kurzwahlziffer 0..9
Kurzwahl speichern (wie oben) 3 — Rufnummer 0..9 — Kurzwahlziffer 0..9
A..D wählen 4..7
* wählen 8
# wählen 9
Letzte Rufnummer löschen 0

Alle Programmierungen und Funktionen lassen sich „mittendrin“ durch Betätigen der Hörergabel oder Auflegen des Hörers abbrechen.

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.

Kapazität des Kurzwahl-Speichers

Diese ist an die EEPROM-Größe von 128 Byte eines ATtiny25 optimal angepasst: Wahlwiederholungs- und Kurzwahlspeicher sind für 22 Ziffern ausgelegt. Beim ATtiny25 (statt ATtiny45) stehen für die Kurzwahl auf Ziffer "0" nur 14 Ziffern zur Verfügung; bei mehr gibt es eine (unabgefangene) Kollision mit dem Speicher für Wahlwiederholung.

Rufnummern-Sperre

Die vorliegende, für VoIP in Deutschland gemachte Firmware sperrt folgende Rufnummern:
Gefilterte und gesperrte Rufnummern
Führende ZiffernBedeutung
00Ausland
01Dienste (0180), Handys, Call-By-Call
0700Persönliche (nomadische) Rufnummern (nie gesehen)
090Premium-Dienste (0900)
118Telefonauskunft
Werden diese Ziffern am Anfang gewählt, ertönt ein Dauerton („Todespiep“), der nur durch Auflegen des Hörers beendet werden kann, folgende Wählversuche werden abgewiesen.

Der Filter lässt sich durch mindestens folgende Tricks überlisten:

Kurzwahl-Vorprogrammierung

Die Kurzwahl-Nummern können auch durch eine EEPROM-Datei befüllt werden. (Man muss sie nicht mit der Wählscheibe eingeben, wenn man schon ein Programmiergerät besitzt.)

Der Aufbau ist simpel:

 EEMEM struct{
  BYTE len;		// Länge der Nummer: 0..22
  BYTE data[11];	// 22 (BCD-)Ziffern, A-D, "*"=14, "#"=15
 }pre[]={
  {0},					// Wahlwiederholung (hier: leer)
  {11,{0x03,0x71,0x33,0x96,0x01,0x80}},	// Kurzwahl "1" = 0371 3396018, absichtlich in "lesbarer" Folge
  {12,{0x01,0x76,0x21,0x69,0x56,0x71}},	// Kurzwahl "2" = 0176 21695671
 };					// usw. bis zur Kurzwahl "0"

Fragen am Rande

Was passiert wenn man die a und b-Ader vertauscht?
Der Mikrocontroller wird durch die Z-Diode D1 vor Falschpolung geschützt, allerdings kann man mit dem Telefon nur noch Rufe entgegennehmen, da die Wählfunktion nicht funktioniert. Also richtig herum anschließen.
Standardmäßig ist a negativ, b positiv, und der Gabelumschalter des Telefons ist am a-Anschluss. Ist das nicht der Fall, sollte vorzugsweise der Installationsfehler beseitigt werden.
Bei Kabelmodems werden die -60 V üblicherweise mit einem Inverter aus der Speisespannung (bspw. 12 V) generiert, daher liegt b auf Erdpotenzial, also Antennenschirm. Beim o.a. Anschluss (Schaltplan) sind daher keine berührgefährlichen Spannungen zu erwarten.
Was passiert wenn man b-amt mit b-tel verwechselt?
Die Tonausgabe hat falschen Massebezug! Gefahr für Mikrocontroller-Ausgang PB1! Kontrolle: An X2 muss das andere Ende vom Mikrofon liegen.
Die beiden möglichen Anschluss-Szenarien. Der Gabelschalter muss von der Mikrocontrollerschaltung abgewandt sein
Liegt das Mikrofon an X1, muss C5 umgepolt werden. Liegt das Mikrofon weder an X1 noch an X2, muss man die a-Ader anzapfen. Hängt vom Telefon ab.
Beim Anschluss ans Mikrofon ist das Tonsignal leise im Hörer zu hören; beim Anschluss ans Spulenende dagegen ziemlich laut. Ausprobieren, wie's gefällt! Gegebenenfalls einen Serienwiderstand verwenden. Der Anschluss am Mikrofon ist zu bevorzugen an echten Telefonanschlüssen (= lange Analogleitungen zum Amt), weil diese Anschlussart besser vor Überspannungsspitzen bei Blitzschlag schützt.
Der Quarz oder Keramikresonator ist beliebig?
Ja, in Grenzen: mfv2a: 10..20 MHz; mfv2b, mfv2c: 3..8 MHz, möglichst als Resonator, allerdings muss man dann das Makefile anpassen und die Quelle neu übersetzen; die beigefügte Hex-Datei geht dann natürlich nicht.
Die Hex-Datei für mfv2a ist für die NTSC-Quarzfrequenz 14318,18 kHz erstellt, bei anderen Quarzen kommen schlichtweg falsche Töne und Zeiten heraus. Laut Datenblatt (Bild 21-2) muss für diese Frequenz die Speisespannung 3,5 V betragen. Die AVR-Mikrocontroller sind jedoch extrem robust bezüglich Übertaktung.
Achtung (mfv2b, mfv2c): Die Fusebits sollten auch bei Verwendung eines Quarzes auf Resonatorbetrieb (= kurze Hochlaufzeit) stehen, sonst kann zumindest die CLIP-Erkennung nicht funktionieren. Die Z-Diode muss ein 5,6-V-Typ sein. Da geht nicht mehr (weil Gefährdung des Mikrocontrollers) und nicht weniger (weil zuviel Querstrom).
Was passiert, wenn die Stromaufnahme des Telefons kleiner ist als die des Mikrocontrollers?
Das sollte nie passieren! Der Mindest-Schleifenstrom ist 20 mA; ein 20 mA fressender Mikrocontroller … gibt's die überhaupt noch? Wenn doch, dann ist das Mikrofon kaputt.
Wenn dasteht, R2 (680k) ist für „Wahl bei aufgelegtem Telefonhörer“ erforderlich, kann man diesen weglassen, wenn man das Feature nicht benötigt?
Das betrifft derzeit mfv2b und mfv2c: Kann man mit der derzeitigen Firmware nicht, weil dieser auch zur Detektion von „Paralleles Telefon abgehoben“ herangezogen wird. Bei Fehlen dieses Widerstandes würde das Programm nach dem Abheben einige Sekunden brauchen, um festzustellen, dass abgehoben wurde und genügend Versorgungsspannung bereitsteht.
Kann die o.a. Firmware auf einen größeren Mikrocontroller, etwa einem ATmega328 auf einem Arduino Uno umgesetzt werden?
Um's kurz zu fassen: Ich mag Arduinos nicht. In der Langfassung:
Die Firmware ist extra dazu gemacht, in einen ATtiny25 (mfv2c: ATtiny45) gequetscht zu werden. Diese verwendet den High-Speed-Timer mit 64 MHz Taktfrequenz, der im ATmega328 gar nicht enthalten ist. Will man ohne High-Speed-Timer arbeiten, reduziert sich die Trägerfrequenz von 250 kHz auf bspw. 31 kHz, und man muss über's Filtern nachdenken. Außerdem verwendet die Firmware viele Register, was bei einem großen Mikrocontroller wenig sinnvoll ist, weil man mit diesem auch noch andere Aufgaben erledigen will. Die Verwendung von Registern beißt sich zudem mit einigen Routinen der C-Standardbibliothek von avr-gcc, welche ein globales Register-Push eincompiliert haben, etwa rand(). Bei einem größeren Controller steigt auch der Aufwand, Interruptbehandlungsroutinen mit hoher Aufruffrequenz (hier: die DDS-Routine) sicher ausführen zu lassen, da andere Teilprogramme Interrupts sperren können; man muss die volle Kontrolle über den gesamten Quelltext behalten. Das ist nichts für Skript-Kiddies, die nicht wissen, was sie da gerade zusammenklicken. Der Einsatz des Arduino-Frameworks verbietet sich dadurch von selbst.
2017: Es gibt eine Umsetzung dieses Projektes auf Arduino: Hier auf der Softwaremüllhalde. Der Typ hat alles eingeenglischt (Toll! Dankeschön!), auf Arduino-Stil getabt (anders ausgedrückt: aufgeblasen) und die Anzahl der Kurzwahlen auf 5 halbiert. Und noch einiges anderes verschlimmbessert. Den "*" auf die 7 gelegt, ist womöglich besser. Wer's haben will, soll's nehmen! Ich brauche keine Kondensatoren an den Nummernschaltkontakten: Denn ich bin nicht auf die bescheuerte Idee gekommen, Schalter per Pegelwechsel-Interrupt abzufragen.
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.
Passt die Firmware noch in einen ATtiny25? Mein Brennprogramm meckert wegen ungültiger Adressen.
Sie verwenden avrdude oder ein ähnlich alter­tümliches Brenn­programm, welches nicht mit von-neumannisierten Speicher­bereichen zurecht kommt. Das doofe avrdude stolpert über die in der HEX-Datei enthaltenen Fuses und verweigert die Arbeit. Blöd. Ein Kündigungs­grund. Seine Kommando­zeile ist megakryptisch. Ein weiterer Kündigungs­grund. Wenn Sie partout bei avrdude bleiben wollen, löschen Sie die über­flüssigen Zeilen aus der HEX-Datei. Die Fuses müssen Sie dann unbedingt zu Fuß setzen, sonst schwingt der Quarz nicht, und der interne RC-Oszillator produziert falsche Töne.
Wieviel Zeit habe ich zum Wählen? Von Ziffer zu Ziffer?
Das legt das Amt bzw. das Kabelmodem fest. Der Mikrocontroller hat hier keine Timeouts eingebaut. Ist die Zeit dem Amt zu lang, und es „beschwert“ sich mit Besetztzeichen: Weiterwählen, 5 Sekunden warten (= Timeout zum Abspeichern der letzten Nummer), Auflegen, Abheben, Wahlwiederholung benutzen.
Wieviel Zeit habe ich zum Einspeichern von Kurzwahlen? Von Ziffer zu Ziffer und insgesamt?
Es gibt keine Timeouts. Das einzige was passieren könnte ist dass das Amt nach einiger Zeit der Inaktivität die Leitung kappt, um Energie zu sparen. Das ist dann wie Hörer auflegen. Üblich hingegen ist, dass das Amt auf Besetztzeichen umschaltet. Ignorieren und weitermachen.
Kann ich während des Gesprächs eine Telefonnummer speichern?
Ja. Der Gesprächspartner bekommt dabei (nur) die Quittungstöne zu hören. Da im Gegensatz zu Vorsatzkonvertern die Wählscheibe aus dem Schleifenstrompfad herausgenommen wurde, ist Weitersprechen uneingeschränkt möglich.
Kann ich während des Gesprächs DTMF-Zeichen geben? Etwa um einen Kode zu übermitteln.
Ja. Diese sind nicht von einem echten Tastentelefon zu unterscheiden; nur die Abstände dazwischen sind prinzipbedingt länger.
Kann ich die Telefonnummer des Anrufers für einen Rückruf speichern?
Nur in der Schaltungs- und Firmware-Version mfv2c. Denn darin enthalten ist ein einfacher CLIP-Dekoder. Für mehr Komfort braucht es auch ein Display (typisch LC-Display mit HD44780-Controller und 2×16 oder besser 2×20 Zeichen, preiswerter: Pollin-Vollgrafikdisplay mit Zeichenbildern im AVR) und ein Telefonbuch. Deshalb dieses größere Projekt einer einbaubaren oder vorsetzbaren Rufnummern-Anzeige, die diesen IWV-MFV-Konverter mit einschließt. Genügen kleinere Brötchen, wird die Anzahl entgangener Anrufe beim Abheben akustisch mitgeteilt, und man kann dann Anruf für Anruf zurückrufen (ohne die Nummer zu kennen oder zu sehen) sowie abspeichern.

Telefon W38 mit MFV

Natürlich funktioniert die o.a. Schaltung auch für ein W38.

Denkbare Erweiterungen:

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.