Steuercode aus Audio-Signal dekodieren (Klingelanlage)

Begonnen von habeIchVergessen, 12 September 2016, 09:45:21

Vorheriges Thema - Nächstes Thema

habeIchVergessen

ich suche Unterstützung für die elektro-technische Umsetzung bei der Einbindung einer Gegensprechanlage.

Mittels Oszi habe ich auf dem Audiokanal ein Signal gesehen, das sehr nach Manchester-Codierung aussieht.

techn. Details:

Audio:
- Ruhepegel 4,7 V
- Manchester-Pulse mit Spannung 0V (Low) - 4,7/6,3V (High); 2 ms Pulslänge; 32 bit
- Audio-Kanal offen 5,3V +/- Pegel Audio-Signal

Video:
- 1VPP, 75 Ohm

Audio und Video habe ich schon über einen alten Video-Rekorder an ein TV weitergereicht.

Was will ich:

Stufe 1 (die drei Fragezeichen)
mittels digitalen Eingang das Manchester-Signal dekodieren (Pegel auf 3,3V beschränken, etc).
Audio und Video streamen

Stufe 2
selber Signale auf den Audio-Kanal modelieren

Anhänge:
schematische Darstellung der Schaltung
Pegel Audio-Kanal (wie oben beschrieben)
Manchester-Signal für die drei möglichen Außenstationen


habeIchVergessen

#2
ich möchte keine Sound-Karte als Oszi nutzen. Vielmehr brauche ich Vorschläge, wie das beschriebene in Hardware gegossen werden kann.
- Manchester an digitalen gpio lesen
- Audio & Video capturen
- ggf. eigene Manchester-Signale senden

Meine Kenntnisse in E-Technik sind nicht besonders umfangreich.

habeIchVergessen

barsch? nein.

wie schon erwähnt, habe ich von E-Technik so gut wie keine Ahnung. Respektive bin ich mir über die Auswirkungen nicht im Klaren.

z.B. ein einfacher Spannungsteiler mit 2 Widerständen.
Oder eine Z-Diode + LevelShifter.

Am Ende bleiben bei mir ungeklärte Fragen bzgl.
- Dimensionierung (Widerstände)

und allgemeinere Fragen wie:
- Gesamtbelastung der Schaltung
- Pro und Kontra der Einzelnlösungen

Das würde ich mir gern (Motto Wissenstransfer) von Wissenden (im Vergleich zu mir) aufzeigen lassen.

Omega-5

Zitat von: habeIchVergessen am 14 September 2016, 11:48:41

z.B. ein einfacher Spannungsteiler mit 2 Widerständen.
Oder eine Z-Diode + LevelShifter.

Mein Vorschlag:

Widerstand Wert (unkritisch) zwischen 1k und 10k zwischen Audio-Kanal und GPIO. Zenerdiode 3.3V von GPIO (Kathode) nach GND (Anode). Eine Z-Diode mit 200mW reicht aus.
Z.B. Z-Diode MM3Z3V3B Gehäuseart (Halbleiter) SOD-323F Fairchild Semiconductor Zener-Spannung 3.3 V Leistung max. (Ptot) 200
Einen Level Shifter brauchst du hierfür nicht.

Gruß Friedrich
RaspberryPi2, nanoCUL, 3x DS18B20, FS20: 4x Funk-Schalter ST-4, LaCrosseGW,
HomeMatic: HMLAN, HM-WDS10-TH-O, HM_MYS_RelaisBoard,
I2C: HYT221 über modifiziertes Modul I2_I2C_SHT21.pm (Q&D),

habeIchVergessen

würde dann so aussehen?
Wie verhält sich die Leistungsaufnahme?

Omega-5

Zitat von: habeIchVergessen am 15 September 2016, 21:27:38
würde dann so aussehen?
Wie verhält sich die Leistungsaufnahme?

Ja.
Leistungsaufname: P=U²/R  --> (6,3-3,3)² / 1000 = 9mW https://de.wikipedia.org/wiki/Elektrische_Leistung

Gruß Friedrich

RaspberryPi2, nanoCUL, 3x DS18B20, FS20: 4x Funk-Schalter ST-4, LaCrosseGW,
HomeMatic: HMLAN, HM-WDS10-TH-O, HM_MYS_RelaisBoard,
I2C: HYT221 über modifiziertes Modul I2_I2C_SHT21.pm (Q&D),

habeIchVergessen

Werde mal die Teile besorgen und messen.
Hast du noch einen Vorschlag, wie ich ein Signal auf den Audio-Kanal bekomme? Dazu müsste Audio auf 0V gehen. 2-ter gpio schaltet ein Relais wäre meine laienhafte Vorstellung.

habeIchVergessen

#8
an einem 5V USB-Netzteil (DC) verhält sich die Schaltung wie erwartet.
Leider ist das an der Klingelanlage nicht so. Hier fällt die gemessene Spannung (DC) auf ca. 3,9V. Die Funktionalität dieser ist nicht mehr gegeben.
Die einzige Erklärung, die mir einfällt, ist die, dass es Wechselstrom sein muss.

habeIchVergessen

mit 10k ist die Funktionalität der Klingelanlage weiter geben.
nur die Pegel entsprechen nicht der Erwartung.

2,4V sind für den gpio eher am unteren Limit für ein High.
die 4,7V vom Ruhepegel werden auch ordentlich eingedampft (Spannungsabfall an der Z-Diode?).

wäre ein iCoppler eine Alternative? dann müsste nur der Eingang unter 5,5V gehalten werden. Ausgang könnte gleich die 3,3V vom gpio nutzen.

habeIchVergessen

#10
neue Idee mit Transistor. Die Pegel sehen richtig gut aus. Steigende Flanken auch. Nur die fallenden sind etwas verschliffen.

habeIchVergessen

#11
Ein Widerstand parallel zur Z-Diode löst das Problem mit den fallenden Flanken (akt. auch 1,8k).
Vorwiderstand Basis habe ich auf 47k reduziert.

Omega-5

Zitat von: habeIchVergessen am 30 September 2016, 15:28:06
Ein Widerstand parallel zur Z-Diode löst das Problem mit den fallenden Flanken (akt. auch 1,8k).
Vorwiderstand Basis habe ich auf 47k reduziert.

Gratuliere,
das sieht doch richtig gut aus.  :)

Zitatwie schon erwähnt, habe ich von E-Technik so gut wie keine Ahnung.
Na na, nicht flunkern.  ;)

Mit einem Transistor könnte ja dann auch das Senden klappen, hängt vom Innenwiderstand der Quelle ab ob du die einfach kurzschließen kannst, ohne sie zu zerstören oder der Strom für den Transistor zu hoch wird.

Gruß Friedrich
RaspberryPi2, nanoCUL, 3x DS18B20, FS20: 4x Funk-Schalter ST-4, LaCrosseGW,
HomeMatic: HMLAN, HM-WDS10-TH-O, HM_MYS_RelaisBoard,
I2C: HYT221 über modifiziertes Modul I2_I2C_SHT21.pm (Q&D),

habeIchVergessen

Zitat von: Omega-5 am 30 September 2016, 15:46:55
Na na, nicht flunkern.

so sehr ich es für mich proklamieren möchte, die Anerkennung gebürt einem anderen.

habeIchVergessen

es ist kein Manchester  :'( da kein long low zu sehen ist.

dafür kann ein arduino nano (SIGNALduino-Sketch) folgendes empfangen:

ein

MU;P0=-32001;P1=2996;P2=-1012;P3=2010;P4=1009;D=012324242424242424242323232323232323242423232324232423232424242324;CP=4;
MU;P0=-32001;P1=2980;P2=-1013;P3=2010;P4=1007;D=012324242424242424242323232323232323242423232324232423232424242324;CP=4;
MU;P0=-32001;P1=3000;P2=-1013;P3=2009;P4=1008;D=012324242424242424242323232323232324242424232324232323232324242324;CP=4;


aus

MU;P0=-32001;P1=2996;P2=-1014;P3=2009;P4=1007;D=012324242424242424242323232323232324242424232323242323232324242423;CP=4;

habeIchVergessen

#15
Zitat von: Omega-5 am 30 September 2016, 15:46:55
Mit einem Transistor könnte ja dann auch das Senden klappen, hängt vom Innenwiderstand der Quelle ab ob du die einfach kurzschließen kannst, ohne sie zu zerstören oder der Strom für den Transistor zu hoch wird.

Wenn ich einen 100k Widerstand zwischen Audio und Ground setze und die Spannung daran messe, dann müsste ich doch den Strom ausrechnen können ohne die Klingelanlage zu gefährden?
Ich habe keine brauchbare Idee, wie ich das Senden angehen kann, ohne die Klingelanlage einem unnötigen Risiko auszusetzen. Kann jemand helfen?

habeIchVergessen

#16
eine Open Collector Schaltung verträgt der Audio-Kanal. Leider sind die steigenden Flanken ganz grausig.

1,8k als Vorwiderstand an der Basis (gpio vom Arduino nano).
Audio am Collector und Ground am Emitter.
Ein Pull-Up auf 5V vom Arduino hat zwar die Pegel verbessert, jedoch nicht das verschliffene Signal signifikant verbessert.

Bin mal wieder ratlos.

habeIchVergessen

#17
habe noch eine Innenstation zum Basteln besorgt.
habe mir mal den Part am Audio-Kanal angeschaut und tatsächlich einen Transistor (Q16) gefunden, der Audio auf Masse zieht.

Kann jemand erklären, welchen Zweck Q15 hat?
Was passiert im LM393? Da scheint Audio als Input durch beide Comparer zu gehen.
habe mal versucht, ein Schaltbild rund um den LM393 anzufertigen. D24 scheint mit der Sperrrichtung den LM393 abzusichern (also nicht Audio als Input). Vielmehr können mehrere Pins vom STC den LM393 steuern.

Ergänzung: V- liegt auch auf GND.

Omega-5

Zitat von: habeIchVergessen am 16 Oktober 2016, 13:57:49
Was passiert im LM393? Da scheint Audio als Input durch beide Comparer zu gehen.
habe mal versucht, ein Schaltbild rund um den LM393 anzufertigen. D24 scheint mit der Sperrrichtung den LM393 abzusichern (also nicht Audio als Input). Vielmehr können mehrere Pins vom STC den LM393 steuern.

Der LM393 ist ein Komparator (Vergleicher) Datenblatt http://www.ti.com/lit/ds/symlink/lm2903-n.pdf.
Welche Spannung hast du denn zwischen V+ und V- ? R6/R7 ist ein Spannungsteiler für I1- und legt die Vergleichsschwelle für I1+ fest. O1 ist ein Open-Collector-Ausgang mit R143 als Pull-Up.
Auf Datenblatt Seite 12 / Figure 13 ist das Prinzip zu sehen. Die von mir vermutete Schaltung hängt an.

Viel Erfolg beim weiteren Knobeln,
Friedrich
RaspberryPi2, nanoCUL, 3x DS18B20, FS20: 4x Funk-Schalter ST-4, LaCrosseGW,
HomeMatic: HMLAN, HM-WDS10-TH-O, HM_MYS_RelaisBoard,
I2C: HYT221 über modifiziertes Modul I2_I2C_SHT21.pm (Q&D),

habeIchVergessen

Zwischen V+ und V- liegen 5V an. Dank dem Hinweis auf I1- habe ich weitere Verbindungen gesucht (s. Anhang).
Leider sehe immer noch nicht, wie O1 den Audio-Kanal steuert.

Omega-5

Zitat von: habeIchVergessen am 21 Oktober 2016, 11:20:47
Zwischen V+ und V- liegen 5V an. Dank dem Hinweis auf I1- habe ich weitere Verbindungen gesucht (s. Anhang).
Leider sehe immer noch nicht, wie O1 den Audio-Kanal steuert.

Falsche Richtung.  ;)  O1 ist ein Ausgang und sollte im Prozessor STC 10F04 als Empfänger verarbeitet werden. Die Diode sorgt dafür dass die Spannung an I1+ nicht größer als V_AUDIO + Durchlassspannung der Diode wird. Wenn die Spannung an I1  +3,3V beträgt, ist der Ausgang O1 = +5V, wenn die Spannung an I1+ kleiner als +3,3V ist. Der Ausgang des STC steuert als Sender über den Transistor Q16 den Audiobus.

Gruß Friedrich
RaspberryPi2, nanoCUL, 3x DS18B20, FS20: 4x Funk-Schalter ST-4, LaCrosseGW,
HomeMatic: HMLAN, HM-WDS10-TH-O, HM_MYS_RelaisBoard,
I2C: HYT221 über modifiziertes Modul I2_I2C_SHT21.pm (Q&D),

habeIchVergessen

dann ist das mit einer TTL-Schaltung vergleichbar und letztlich nichts anderes als der Empfangsteil von weiter oben.

Omega-5

Zitat von: habeIchVergessen am 22 Oktober 2016, 13:50:07
dann ist das mit einer TTL-Schaltung vergleichbar und letztlich nichts anderes als der Empfangsteil von weiter oben.

Nee, TTL ist eine Digital-Logik-Familie für 5V Versorgungsspannung. Schau mal ins oben schon mal verlinkte Datenblatt.

ZitatDer LM393 ist ein Komparator (Vergleicher) Datenblatt http://www.ti.com/lit/ds/symlink/lm2903-n.pdf.
... Auf Datenblatt Seite 12 / Figure 13 ist das Prinzip zu sehen.

Gruß Friedrich
RaspberryPi2, nanoCUL, 3x DS18B20, FS20: 4x Funk-Schalter ST-4, LaCrosseGW,
HomeMatic: HMLAN, HM-WDS10-TH-O, HM_MYS_RelaisBoard,
I2C: HYT221 über modifiziertes Modul I2_I2C_SHT21.pm (Q&D),

habeIchVergessen

hab noch einen Schaltungsteil gefunden, der den Audio-Kanal betrifft.

habeIchVergessen

#24
habe den Sender gefunden (rotes Dreieck #2 s. Anhang #2.bmp).
An C102 kommt dann folgendes Signal raus (C102.bmp).

Der Transistor Q16 (Open Collector) hat an der Basis nur ein Signal, wenn gesendet wird.

Nachtrag: #2 + C102/Basis Q16/Audio zusammen gemessen

habeIchVergessen

#25
zwei Pins vom STC 10F04XE sehen von der Logik her auch nicht schlecht aus.

#3 steuert Q16 Y1 npn-Transistor  (Open Collector Transistor)
#4 steuert Q15 t2a pnp-Transistor (kann das jemand erklären?)

habeIchVergessen

am Emitter von Q15 liegen 5V an (pnp als Schalter).
R16 (Emitter und Basis Q15), R141 (Emitter Q15 zu #4) und R10 (Basis Q15 zu #4) verstehe ich noch nicht.

habeIchVergessen

senden von "Klingeln Ausseneinheit" wird von einer Inneneinheit akzeptiert (Arduino nano).
Fallende Flanken sehen noch ein wenig lau aus.

habeIchVergessen

habe die gesamte Schaltung mal an der prod. Anlage angeschlossen (langer Bus).
Monitor/Kamera konnte ich ein- und ausschalten.

Leider fällt beim Senden die Spannung, die von der ZPD4V7 erzeugt wird, so weit, dass manchmal eine Fehlfunktion detektiert wird (Pegel zu lange unterhalb einer bestimmten Spannung; vermutlich 3,3V).

Für Vorschläge bin ich offen!

habeIchVergessen

habe den Spannungsteiler jetzt mit einem Transistor gebaut (schematische Darstellung - gesamt (Spannungsregel ZPD4V7 + Transistor)).

Oszi-Mitschnitt:
zu Beginn
  D11 LOW
  D12 HIGH

wenn CH1 fällt, dann geht D11 auf HIGH

CH2 ist der Pegel von D12. Wenn dieser fällt/steigt, dann werden D12 und D11 jeweils gleichlaufend geschaltet.

Die fallenden Flanken von CH1 sehen immer noch recht lau aus. Steigend ist akzeptable. Leider werden die erwarteten 4,7V nicht erreicht.

Hat jemand eine Erklärung/Verbesserungsvorschlag?

habeIchVergessen

Aktualisierung Schaltung und Sketch.

Wie kann ich den Empfangsteil (rechts D2) LOW halten, wenn kein Audio-Signal anliegt und der Arduino gestartet wird?

habeIchVergessen

Aktualisierung Schaltung und Sketch.
D11 + D12 werdne zum Senden verwendet (Output).
D10 schaltet den Empfangsteil ein (Output).
D2 Empfang der Signale (Input; Pegel wird in Abhängigkeit von D10 gesteuert).

Aktuell läuft es mit einem Arduino Nano.

habeIchVergessen


habeIchVergessen

#33
ich habe die Schaltung mal bei Eagle und KiCad als Schema erstellt.
in KiCad ist es eine Gerber- und Eagle ein Board-Datei geworden.

da dies mein erstes Layout ist, möchte ich gerne von eurem KnowHow profitieren!

Ratschläge für Beginner, Tipps und Kritik werden wohlwollend aufgenommen.

noch 2 Bilder angehängt (KiCad v2)
gerber v2 + pcb v2 aktualisiert

habeIchVergessen

#34
noch eine 3. Version

habeIchVergessen


habeIchVergessen

#36
ich habe mir eine Schaltung mit einem CVBS to CSI-2 Konverter ADV7282-M zusammengebaut (KiCad v5 Schematic im Anhang). (Evaluation Board)

ich könnte etwas Unterstützung bzgl. der Interpretation des Datasheets gebrauchen.
Aktuell habe ich nach meinem Dafürhalten das absolute Minimum an Eingängen beschaltet. Bin mir aber nicht sicher, ob das ausreichend ist.

Bei Interesse auch gern per PM melden bzgl. Aufwand.

Nachtrag: Schaltplan als PDF ergänzt