Türsprechen – analog

Die Einleitung dieses Artikels spricht aus meiner Seele!

Das gleiche Problem haben doch alle! Und jeder bastelt „seine“ Lösung.

Türsprech-Anlage für analoge Haustelefonzentrale

Die Qualität einer Türsprecheinrichtung steht und fällt mit der Echokompensation! Denn einerseits ist's per Zweidraht-Anschluss verbunden, und andererseits handelt es sich um eine Freisprech-Einrichtung mit all ihren Tücken, üblicherweise in seiner Neigung zu Pfeifgeräuschen sowie lausigem Gegensprechen.

Mit ATtiny861

Die Echokompensation per Laufzeitglied zu erschlagen, warum eigentlich nicht? Der ATtiny861 ermöglicht gleich zwei Kanäle mit 10-bit-A/D-Wandler, Signalverzögerung (muss ja nicht viel sein) und 10-bit-D/A-Wandler per High-Speed-PWM. Die PWM läuft mit stattlichen 64 MHz Eingangsfrequenz, was eine resultierende Trägerfrequenz von knapp 64 kHz ergibt, was sich noch gut filtern lässt. 10 Bit sind für Sprache schon recht luxuriös, fürs Türsprechen allemal. Zumal die Firmware auch eine Dynamikkompression (in Binärstufen mangels Multiplizierer) vollziehen kann. Die Echokompensation erfolgt eisenlos und adaptiv. Ganz nebenbei übernimmt der Mikrocontroller auch so „nebensächliches“ wie die Türklingel (DTMF-Generator) und den Türöffner (25-Hz-Detektor).
Funktionsprinzip; Eagle-Dateiliste

Signalisierung per DDS

[HTML5 <canvas> erforderlich!]
DDS-Funktionsprinzip für 2 Frequenzen
Die vorberechnete Sinustabelle () enthält 256 Stützstellen für eine ganze Periode. Für das Phasen-Register genügen 16 Bit: Der Low-Teil dient zur genauen Frequenzsynthese, der High-Teil dient als Index für die Sinustabelle. Überläufe stören so überhaupt nicht. Das Diagramm wird mit mindestens 8 kHz (125 µs) durchlaufen, kein Problem für jeden Mikrocontroller. Umgesetzt ist es bereits dort und jahrelang im Einsatz.

Tür öffnen per Goertzel

Das Mittel der Wahl ist üblicherweise der Goertzel-Algorithmus. Ich habe den Goertzel-Algorithmus nicht verstanden (hm), insbesondere nicht, wo dieser gegenüber der DFT effizienter ist.

[HTML5 <canvas> erforderlich!]
Goertzel-Algorithmus für 1 Frequenz

Die Koeffizienten k1 und k2 sind für jede Frequenz fix. Deren Berechnung ist nichtlinear (mit Kosinus) und muss je nach Abtastrate extern vorberechnet werden; ein #define geht da nicht. Die Multiplikation muss, um Grenzzyklen zu minimieren, 16 Bit breit sein.

Tür öffnen per DFT

Das hier beschreibt die Diskrete Fouriertransformation (DFT). Gegenüber dem Goertzel-Algorithmus ergeben sich folgende Vorteile:

Und folgende Nachteile:

Pro zu suchender Spektralkomponente (Frequenz) und Abtastwert sind 2 Multiplikationen und Additionen (MULADD) erforderlich. Zusätzlich sind zur Fensterung und Summenleistungsbildung 2 Multiplikationen und 1 Addition pro Abtastwert nötig. Zum Abschluss der Summation, hier nach 20 ms = 178 Abtastwerten, sind pro Kanal das Betragsquadrat = Spektralleistung zu bilden und mit der Summenleistung auszuwerten.

Um überhaupt mit der knappen Rechenleistung zu Rande zu kommen, wurden folgende Bitbreiten festgelegt:

[HTML5 <canvas> erforderlich!]
Frequenz-Detektion für 2 Frequenzen

Vom zu untersuchenden Frequenzgemisch wird sowohl die Summenleistung ermittelt (unterer Signalpfad) als auch mit Sinus und Kosinus der beiden Suchfrequenzen korrelliert (übrige vier Signalpfade), die aus einem DDS-Generator wie oben stammen. Die Bandbreite entspricht der Länge des Suchfensters und damit der Anzahl der Abtastwerte im linken, schnellen Teil.

Während die Summenleistung bereits als Quadrat vorliegt, werden die Sinus- und Kosinus-Komponenten (wegen unbekannter Phasenlage des Eingangssignals) quadriert und addiert, es ergibt sich eine Spektralleistung. Die Division relativiert die Spektralleistung zur Summenleistung. Sie ist stets ≤1.

Beispiel: Besteht das Eingangssignal exakt aus dem direkten Ausgangssignal des zweiten DDS-Generators (dritter Pfad), enthält Akku 3 (Mitte) und Akku 5 (unten) den gleichen Wert, die anderen Akkus den Wert 0.

Die Fensterung, üblicherweise cos², wird von einer gesonderten Tabelle gespeist, deren Länge abhängig von der Quarzfrequenz ist, genau wie auch die Werte von f1 und f2 von der Quarzfrequenz und dem Teiler des A/D-Wandlers abhängen. Die Fensterung beseitigt Abschneidefehler nahezu vollkommen. Bei 16 MHz Quarzfrequenz „purzeln“ alle 89 Abtastwerte = 10 ms neue Ergebnisse heraus, und das Fenster ist genauso lang.

Da der Algorithmus beim Übergang von Block zu Block „blind“ ist (durch die cos²-Fensterung), bietet es sich an, den gesamten Algorithmus mit zwei Datensätzen doppelt auszuführen, wobei deren Fensterung mit 180° phasenverschoben ist. Nur bei ATmegas mit MUL-Befehl ist für diese zweite Berechnung genügend Reserve vorhanden. Das Fenster wäre dann bei 16 MHz Quarzfrequenz 2×89 = 178 Abtastwerte = 20 ms lang, und trotzdem „purzeln“ alle 10 ms neue Ergebnisse heraus.

Mit einem Windows-Programm habe ich die Prinzipfunktion verifiziert. Dabei kommt das Programm auch probeweise mit 4-Bit und sogar 3-Bit-Input zurecht, es ist also sehr robust gegenüber kleiner Signalamplitude. Mit 256 Abtastwerten pro Block und telefon-typischen 8 kHz Abtastrate ergibt sich eine günstige Blocklänge von 31 ms. Dass sich dabei zwischen jedem Block wegen der Hann-Fensterung ein blinder Fleck ergibt ist für die DTMF-Detektion praktisch unerheblich. Alle Multiplikation sind 8×8 = 16 bit, sehr günstig für ATmega und ATtiny.

Screenshot des Quick-And-Dirty-Programms

Angezeigt wird unten in magenta die Summenleistung (logarithmisch), in grün und türkis die doppelte Spektralleistung (logarithmisch), für jeden Block von links nach rechts, von oben nach unten. Darüber der gefundene Kode. Das Erkennen von Lücken ist dann eine andere Aufgabe.

Die übliche schlampige Implementierung beachtet die Summenleistung nicht und führt zu Fehldetektionen.

Betragsbildung

Das geht ohne Wurzelziehen hinreichend genau, wie die folgende Grafik zeigt.

[HTML5 <canvas> erforderlich!]
Kreis in Näherung und Fehlerbetrachtung
Das Bild zeigt Berechnungsmöglichkeiten für den Betrag einer komplexen Zahl:

Stromversorgung

Die Lautsprecher-Endstufe wird sich nicht mit dem Beinahe-Kurzschlussstrom der Telefonanlage begnügen. Daher sorgt ein Schaltregler für die Entnahme des Leistungsmaximums bei höherer Spannung als 5 V. Integrierte Schaltkreise sind für 60 V nicht zu haben, also ist hier alles schön diskret. Auch nicht viel komplizierter, wenn man eine Drosselspule mit Koppelwicklung benutzt.

Mit MSP430

Typen mit integriertem 12-bit-D/A-Wandler erledigen das Ganze komfortabler, vor allem gleich mit integriertem Multiplizierer. Allerdings bedarf es einer analogen Endstufe zum Lautsprecher und zur Leitung.

Anzapfung Türsprech-Anlage für analoges Schnurlos-Telefon

Türsprech-Anlagen gibt es (tatsächlich!) in zwei Ausführungen:

Vorgefundene Schaltung

Zumindest die Sprechkapsel einer STR-Türsprechanlage ist mir mal in die Hände gefallen. So sieht der Schaltplan rund um das Elektretmikrofon aus:
Schaltung in der Sprechkapsel
Das Ganze ist natürlich eine tonadergespeiste Verstärkerschaltung. Ausführlich dort dokumentiert. Zusätzlich ist noch ein Ausgangs-Tiefpass (Kondensator 100 nF × unbekannter Quellwiderstand) sowie ein Verpolschutz (1N4004) eingebaut. Mit dem Oszilloskop ließ sich (an 5 V und 1 kΩ) eine gut funktionierende Signalverstärkung sehen.

Ader v.l.n.r.KennungBedeutung
rot1(ÖT): (Tür)Öffner-Taste gegen 0
blauMMikrofon, ca. 11 kΩ gegen 0
weißTHörkapsel, 45 Ω gegen 0
weißSSummer, „schnarrende Klingel“, ca. 15-50 Ω gegen 0
grün0Masse, Bezugspotenzial
braunZ(ZT): Zusatztaster (z.B. für Treppenlicht, derzeit funktionslos) gehen 0
T,M,0Sprechleitungen
GSGabelschalter (geschlossen, wenn Hörer abgenommen)
ETEtagenruftaster (= Klingelknopf vor der Wohnungstür)
RTLRuftonlautsprecher (= Lautsprecher für den ET)
Gesehene Anschlüsse am Mietergerät
Der überwiegende Rest der SchaltungVerdrahtung ist hier zu sehen. Oder hier mit Spannungsangaben. Über Strichzeichnungen in JPG kann ich eh' nur kotzen.

Funktionsweise

Echter Telefonanschluss vom Amt

Der Mikrocontroller muss eine Mini-Telefonanlage realisieren, die zwischen Amt und Tür umschalten kann. Bei höheren Komfortansprüchen mit kreuzweiser Anklopf-Funktion und Rufnummern-Übermittlung mit CLIP.
Schaltplan fehlt!
Im Ruhezustand hängt das Telefon über das Relais K1 am Amt. Der Mikrocontroller IC1 überwacht mit den beiden Optokopplern OK1 und OK2 den Schleifenstrom in beiden Richtungen: Weiterhin befindet sich ein NF-Übertrager T1 in der Amts-Telefonleitung, um: Wenn jemand an der Tür klingelt und der Telefonhörer aufgelegt ist, schaltet K1 und K2 um und gibt die Wechselspannung vom STR-Klingelsignal direkt aufs Telefon: Es klingelt. Verschwindet die Wechselspannung wieder, fällt K2 ab und legt die Gleichspannung von der Hilfsspannungsquelle auf das Telefon. Einige Millisekunden danach wird mittels CLIP die Rufnummer der Tür zum Telefon gesendet, womit das Telefon „erkennt“, dass der Anruf von der Tür kommt. Dieser Zustand hält einige 10 Sekunden an (konfigurierbar). Wünscht man einen vorzeitigen Abbruch, dann am einfachsten durch kurzes Abheben des Telefonhörers. Da das Telefon durch das Ausbleiben weiterer Klingelsignale „feststellt“, dass ein „Anruf entgangen“ ist, sollten entweder: Nach Ablauf des Timeouts kann jederzeit per Tür-Rückruf (702) das Gespräch mit der Tür aufgenommen werden, daher ist das Timeout wenig kritisch. Das Timeout sollte, falls vorhanden, mit dem der Tür übereinstimmen. Solange das Tür-Gespräch besteht, übernimmt der Mikrocontroller die Echokompensation in Software, und dekodiert DTMF. Dabei werden 2 Rufnummern ausgewertet, etwa die 1 für den Türöffner und die 2 für das Treppenlicht. Die Klingelwechselspannung vom Amt wird ebenfalls überwacht und ein Anklopfton (425 Hz 200 ms - Pause 200 ms - 425 Hz 200 ms) gesendet. Die CLIP des Anrufers wird durch kurzzeitiges Abfallen von K1 zum Telefon durchgereicht. Das Auflegen (die Unterbrechung des Schleifenstroms) führt zum Abfall von K1 und effektiv zum Reset des Mikrocontrollers. Dabei darf auch die Hilfsspannungserzeugung zusammenbrechen.

Es wurde Wert auf saubere Potenzialverhältnisse gelegt. Der Einfachheit halber „springt“ das Telefon zwischen Amt- und Türpotenzial mittels Relais K1 hin und her. Dadurch ersparen sich breitbandige Analogsignal-Übertrager. Nur der Hilfsübertrager T1 ist unverzichtbar, um die Anklopf- und Türwählfunktion zu ermöglichen. Interessant ist, dass der Teilnehmer während des Türsprechens für das Amt nicht als „besetzt“ gilt sondern angeklopft werden kann. Das (und nur das) erfordert eine Hilfsspannungsquelle.

Fritzbox

Eine bessere Fritzbox hat selbst schon Türsprechstellen-Funktion an der a-b-Doppelader. Dafür scheint es keinen richtigen Standard (über dessen Betriebsweise) zu geben. Zumindest konnte ich nichts auffinden. Denn Türfreisprechstellen sind zwar so etwas ähnliches wie Telefone, aber nicht dasselbe. Insbesondere fehlt ihnen das Merkmal Abheben und Auflegen. So wie ich's aus dem Netz zusammenwursteln konnte funktioniert es so: Dann benötigt man extern nur einen DTMF-Generator (zur Not IWF) und einen „Dekoder“ für die Ansteuerung des Türöffners. Im Falle der alten STR-Anlage auch eine Gabelschaltung, wenn's geht mit adaptiver Echokompensation. Also genau wie oben! Im Fall der STR-Anlage in einer Hausgemeinschaft mit zusätzlichem Koppeltrafo auf der a-b-Doppelader und, falls erforderlich, einer Schleifenauftrennung per Optokoppler.