Haustelefon

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

von Axel (XL) Schwenke

Das Haustelefon ist eine minimalistische Telefonanlage, die zwei Analogtelefone miteinander verbindet. So kann man mit einfachen Mitteln eine Sprechverbindung zwischen z.B. zwei Kinderzimmern oder zwischen Wohnung und Dachboden/Keller herstellen.

Eigenschaften

  • Verwendung herkömmlicher Analogtelefone (POTS), sowohl historische mit elektromechanischem Wecker als auch moderne mit elektronischem Rufsignal funktionieren
  • die Wählfunktion der Telefone wird nicht benötigt; sobald ein Telefon abgehoben wird, klingelt das andere
  • die beiden Telefone und die Steuerung bilden elektrisch einen Ring; wahlweise kann eine Doppelader zu jedem Telefon gelegt werden oder man verwendet eine vorhandene Erde als Rückleiter

Hardware

Prinzipschaltbild

Blockschaltbild

Für den Sprechbetrieb liegen die beiden Telefone in Reihe an einer Gleichspannung von 18V. In Verbindung mit dem Innenwiderstand der Telefone (ca. 600R) fließt dabei ein Schleifenstrom von ca. 30mA.

Ist ein Telefon aufgelegt, bildet ein Widerstand von 33K einen hochohmigen Nebenschluß. Durch das Einspeisen eines Teststroms kann erkannt werden, ob beide Telefone aufgelegt sind, ob eins aufgelegt und das andere abgenommen ist oder ob beide abgenommen sind.

Der Ruftongenerator legt eine Wechselspannung von 90Vss an die Reihenschaltung eines aufgelegten und eines abgenommenen Telefons. Im aufgelegten Telefon läutet der Wecker, im abgenommenen Telefon sind die 25Hz Impulse als Klacken hörbar.


Schaltplan

Schaltplan

Der Schaltplan läßt sich grob in 4 Teile gliedern:

Rohspannungserzeugung
Brückengleichrichter BR1 und Siebkondensator C4 erzeugen eine Rohspannung von ca. 30V, die für die Sprechspannung und die Versorgung des µC verwendet wird. LD1 dient als Einschaltkontrolle. Die Dioden D1-D3 und Kondensatoren C1-C3 bilden eine unvollständige Villard-Kaskade und erzeugen eine Spannung von ca. 90V. Diese Spannung wird einerseits für das Rufsignal verwendet, andererseits wird über R6-R8 ein Teststrom von ca. 0.6mA in die Schleife injiziert, um den Zustand der Telefone detektieren zu können. ZD2 und C5 dienen der Stabilisierung bzw. Filterung des Teststroms.
Stabilisierung Sprechspannung
R1, ZD1 und LD1 erzeugen eine stabile Spannung von ca. 20V an der Basis von T1. T1 arbeitet als Emitterfolger und erzeugt so die Sprechspannung von ca. 18V nach der Entkopplungsdiode D6. Diese Spannung sollte möglichst stabil sein, insbesondere würde ein überlagertes Brummen in den Telefonen zu hören sein.
Rufsignalgenerator
Die Bauteile R5, T5, D5 sowie R4, T4, D4 und D7 bilden den Rufsignalgenerator. T2 und T3 realisieren die Umschaltung zwischen Sprechzustand (T2 sperrt, T3 leitet) und Rufzustand (T2 leitet, T3 sperrt). Im Rufzustand kann durch Ansteuern von T4 mit einem 25Hz Rechtecksignal die Spannung an den Telefonen zwischen 90V und 0V umgeschaltet werden, was den Wecker des aufgelegten Telefons läuten läßt. T4 zieht dazu einerseits über D4 die Spannung über den Telefonen auf GND, andererseits über D7 die Spannung an der Basis von T5. T4 und T5 leiten so abwechselnd.
Steuerung
Der ATTiny13 bildet in Verbindung mit den Transistoren T2 und T4 die Steuerung. Dazu wertet er die Spannung am Punkt "line" aus. Wenn beide Telefone aufgelegt sind, führt der Teststrom von 0.6mA in Verbindung mit den Widerständen R11 und R12 zu einer Spannung von ca. 40V. Wird eines der Telefone abgenommen, überbrückt es "seinen" Widerstand und die Spannung fällt auf ca. 31V. Wird auch das zweite Telefon abgenommen, fällt die Spannung auf 18V. Mit R9 und R10 wird die Spannung so weit verringert, daß sie der ADC des µC erfassen kann. Zwei Ausgänge des µC steuern über T2 die Umschaltung zwischen Sprech- und Rufzustand (Signal "talk") und mittels T4 den Rufsignalgenerator (Signal "ring"). Im Sprechzustand steuert T3 durch und zieht die Spannung an der Basis von T5 auf GND. Dadurch bleiben beide Transistoren des Rufsignalgenerators gesperrt.

Sonstiges: Spannungsregler U1 stellt die Versorgung von 5V für den µC bereit. LD2 hat reine Diagnosefunktion und kann bei Nichtbedarf auch weggelassen (durch eine Drahtbrücke ersetzt) werden. Im Ruhezustand glimmt LD2 schwach grün. Beim Rufen blinkt LD2 schnell rot/grün. Beim Sprechen leuchtet LD2 kräftig grün.

Software

Prinzip

Die Software ist als endlicher Automat (state machine) konzipiert. Der Einfachheit halber wurde der Rufzustand in zwei Teilzustände aufgeteilt: RING für aktives Rufen und WAIT für das Warten darauf, daß entweder der gerufene Teilnehmer abnimmt oder der rufende Teilnehmer auflegt. So haben wir insgesamt 4 Zustände:

Haustelefon sm.svg

IDLE
Beide Telefone sind aufgelegt. Von hier geht es weiter zu WAIT, sobald die Spannung am Punkt "line" unter 33V fällt. Das geschieht, wenn ein Telefon abgenommen wird (oder beide).
WAIT
Das ist der passive Teil des Rufzustands. Hier wird geprüft ob auch das zweite Telefon abgenommen wurde (Spannung an "line" < 20V) oder ob das erste Telefon wieder aufgelegt wurde (Spannung an "line" > 37V). Es ist wichtig, daß zwischen den Übergängen IDLE->WAIT und WAIT->IDLE eine Hysterese liegt. Sonst könnte die Steuerung unkontrolliert zwischen beiden Zuständen springen. Zeitgesteuert geht es von hier zum aktiven Rufzustand.
RING
In diesem Zustand klingelt das aufgelegte Telefon. Eine Messung des Schleifenzustands ist hier nicht möglich. Der einzige Weg aus diesem Zustand ist über die Zeitsteuerung zurück zu WAIT. Die Wartezeiten bestimmen dabei den Rhythmus (Ruf- und Pausenzeit) des Rufsignals. Die angegebenen 0.4s zu 1.6s funktionieren gut für elektromechanische Wecker. Für Telefone mit elektronisch erzeugtem Rufsignal sollte man die Rufzeit auf 1s erhöhen (und dann evtl. auch die Pause länger machen).
TALK
Der Sprechzustand wird erreicht, sobald beide Telefone abgenommen sind. Von hier geht es erst weiter, wenn beide Telefone aufgelegt sind. Das ist wichtig, weil sonst das Telefon, das als erstes aufgelegt wird, sofort wieder klingeln würde.

Alle Zustandsübergänge finden auf einem festen 20ms Zeitraster statt - und immer maximal ein Übergang alle 20ms. Auch wenn beide Telefone gleichzeitig abgenommen werden, dauert es also bis zu 40ms, bis der Zustand TALK erreicht ist.

Details

Timer0 des µC arbeitet im CTC Modus und liefert einen Interrupt mit 50Hz (entsprechend dem 20ms Basis-Zeitraster). Aus diesem wird einerseits die Zeitsteuerung abgeleitet. Andererseits wird die Output-Compare Einheit dazu verwendet, an Pin PB0 = OC0A das 25Hz Rufsignal zu erzeugen.

Pin PB3 = ADC3 wird als Analogeingang verwendet. Der ADC läuft mit 150kHz Basistakt und unter Verwendung der internen 1.1V Referenz. Es werden immer 4 ADC-Messungen hintereinander gemacht und gemittelt. Die Schaltschwellen sind per #define am Programmanfang festgelegt und werden zur Compilezeit ausgerechnet.

Ursprünglich hatte ich vor, ADC2 zur Kalibrierung zu verwenden, indem ich eine Spannung von ca. 1V (abgeleitet von den stabilisierten 5V) messe und daraus den exakten Wert der Referenzspannung bestimme. Das hat sich als unnötig erwiesen. Alle getesteten Exemplare des ATTiny13A lagen sehr nahe an den nominalen 1.1V. Außerdem ist bei den Schaltschwellen genügend "Luft".

Um den Stromverbrauch zu senken, arbeitet der µC mit lediglich 600kHz Taktfrequenz (da geht sicher noch weniger) und verbringt die meiste Zeit im IDLE Schlafzustand. Der Watchdog ist aktiviert mit 1s Timeout - nur für den Fall der Fälle.

Aufbau und Verkabelung

Die gesamte Schaltung paßt mühelos auf eine Platine 70x50mm2. Das Platinenlayout im unten verlinkten Archiv ist für das Gehäuse KG28M von Donau electronic gemacht (z.B. bei Pollin). Das Layout ist einseitig und ohne Drahtbrücken. Alle Widerstände bis auf R2 und R4 sind 0805 SMD Widerstände.

Haustelefon brd.png Haustelefon brd.jpg


Die extra Löcher auf der Platine dienen der Zugentlastung der fest angeschlossenen Kabel mit Kabelbindern. Das Netzteil ist ein AC-Steckernetzteil mit ca. 16V (meins ist spezifiziert mit 15.7V/185mA). Mittlerweile scheinen solche Netzteile nicht mehr kaufbar zu sein. Dann kann man entweder selber einen Netztrafo in ein Steckergehäuse bauen. Oder den Trafo gleich mit auf der Platine unterbringen. Der kleinste handelsübliche Trafo (1.1VA) reicht.

Für den Anschluß der Telefone habe ich eine LSA+ Klemmleiste (X2) vorgesehen. Die Telefone können wahlweise mit zwei Doppeladern angeschlossen werden:

Doppelader

oder man verwendet eine vorhandene Erdverbindung (z.B. Wasserleitung):

Einzelader

im letzteren Fall muß die Wechselspannung zur Speisung des Haustelefons natürlich potentialfrei sein.

Die beiden 33K Widerstände (R11 und R12) sind zweckmäßigerweise bei den Telefonen unterzubringen - z.B. in der TAE-Dose. Dann kann man den Zustand der Verkabelung an der LED LD2 sehen. Wenn sie im Ruhezustand nicht schwach leuchtet, dann hat man eine Kabelunterbrechung.

Downloads

Siehe auch