Forum: Analoge Elektronik und Schaltungstechnik PWM-Input soll die Umschaltung von seriellen Signalen steuern - ohne uC


von Dominik J. (nique)


Lesenswert?

Hallo

Den letzten Thread "Logische Schaltung basierend auf PWM-Input" habe ich 
sehr ungünstig gestartet und die Hilfsbereitschaft wohl überstrapaziert. 
Entschuldigt.

Ich beschreibe gerne die gesamte Situation, denn vielleicht/vermutlich 
gehe ich das Problem auch falsch an.


Input:
Ich habe 3 RC-Empfänger vom Typ FrSky X8R. Die liefern mir auf einem 
bestimmten Kanal (8) ein PWM Signal. Zudem liefern sie mir je ein S-BUS 
Signal (nur TX, 100000BAUD 8E2), invertiert.

Output:
Nur noch ein S-BUS Signal

Umgebung:
Das ganze kommt in ein Modellflugzeug, das zu Integrationstests in die 
zivile Luftfahrt verwendet werden soll. Darum enthält es 2 
Flugkontroller mit je separater Anbindung und somit zwei Piloten. Aus 
Sicherheit wird noch ein dritter Pilot über eine Anbindung ohne 
Flugkontroller verfügen.
Fliegen kann am Ende nur einer, wer wann fliegt ist genau definiert 
(Wahrheitstabelle).
Es soll kein uC sein, weil von denen genügend an Board sind. Und ein 
Störfall ist, dass aufgrund von elektromagentischen Störungen die 
Flugkontroller ausfallen können. Eine Lösung ohne uC wird von der 
Aufsichtsbehörde als robuster eingestuft. Oder zumindest als andere 
Technologie die eine andere Ausfallcharakteristik hat.

Funktion:
Mit den drei PWM-Werten, die jeder der drei Piloten selbst bedient, soll 
gesteuert werden, wessen Steuerfunktion auf die Steuerflächen geleitet 
wird.
Wenn die Umschaltung der seriellen Schnittstellen zu "Datenverlust" und 
unvollständigen Datenpaketen führt, ist das egal. Das S-BUS Protokoll 
ist genügend stabil, dass ich während dem Betrieb Komponenten hinzufügen 
kann.
Meine Idee ist, dass ich den PWM Kanal dazu verwende zu entscheiden, wer 
fliegt. Die Werte für PWM lassen sich frei definieren zwischen 1000ms 
und 2000ms.
Meine Überlegung:
- PWM < 1200ms: Pilot nicht anwesend
- PWM < 1500ms: Pilot will nicht fliegen
- PWM < 1700ms: Pilot will fliegen
- PWM > 1700ms: Pilot erzwingt fliegen
Die Piloten sind:
- PIC - Pilot in Command
- SIC - Second in Command
- TIC - Trainer in Command
Logik:
- Wenn TIC nicht anwesend, fliegt PIC, wenn der auch nicht anwesend, 
fliegt SIC, wenn auch der nicht anwesend, ist S-BUS-Link zu stoppen 
(führt zur Auslösung des Notfallsystems, nicht Bestandteil hier)
- Wenn niemand fliegen will, fliegt TIC, wenn nicht anwesend fliegt 
PIC,wenn nicht anwesend fliegt SIC
- Wenn alle fliegen wollen siegt TIC vor PIC vor SIC
- Wenn alle fliegen erzwingen wollen sieht auch TIC vor PIC vor SIC

Normale Situation:
- PIC will fliegen, SIC nicht, TIC nicht anwesend. Wenn nun der SIC die 
Steuerung übernehmen will, so schaltet er auf "will fliegen". Die 
Übergabe ist jedoch erst abgeschlossen wenn der PIC bestätigt mit "will 
nicht fliegen".
- Wahrscheinlichstes Ausnahmeszenario: PIC ist am fliegen und der 
Flugkontroller hängt sich auf und friert die Steuerung ein. der PIC kann 
nicht mehr an den SIC übergeben. Hier kann der SIC mit "fliegen 
erzwingen" die Steuerung "an sich reissen".

Somit denke ich, dass ich eine Wahrheitstabelle habe, die definiert, 
welche Inputwerte zu welchem Ergebnis führen. Meine Überlegung war, dass 
diese Wahrheitstabelle mit entsprechenden konventionellen AND/OR etc. 
Bausteinen gelöst wird, was am Ende einen "Mehrfachschalter" bewegt. Ich 
traute mir das eigentlich zu selbst rauszuknobeln, damit ich hier nicht 
alles erfragen muss. Stelle das aber nun gerne als gesamtes zur 
Diskussion. Ich denke, ich habe drei Arbeitsgebiete:
1. Eingangsverarbeitung der PWM Werte (quasi mein Thread von gestern)
2. Umsetzung der Wahrheitstabelle
3. 3-Fachschalter für eine serielle Schnittstelle (da habe ich für den 
Versuch an eine Kombination von "digitalen Relais" gedacht

Besten Dank, wenn ihr mir grundsätzliche Tipps habt, wie ich das angehe, 
oder wenn es konkrete Tipps für einzelne Problemstellungen sind.

Und nochmals, ja, mit einem uC wäre das viel viel einfacher, aber ich 
will das "konventionell" versuchen und nur im Notfall doch einen uC 
nehmen.

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ein Dual-Monoflop kann dazu benutzt werden, um ab einer bestimmten 
Eingangspulslänge entweder eine 1 oder eine 0 am Ausgang zu liefern. 
Dazu wird das erste Monoflop auf die gewünschte Pulslänge eingestellt 
und 'retriggerbar' geschaltet. Es wird solange am Ausgang Pulse liefern, 
solange der Eingangspuls unter der eingestellten Länge bleibt.
Das zweite Monoflop bekommt diese Pulse und ist in der Länge so 
eingestellt, das es länger als die Pulswiederholfrequenz ist. Wenn der 
erste Monoflop keine Pulse mehr liefert, sondern ständig 'high' ausgibt, 
fällt der Ausgang des zweiten Monoflops nach der bei ihm eingestellten 
Zeit ab.

Dieses Modul macht du für jede vorkommende Impulsdauer (1200ms, 1500ms 
und 1700ms) und hast dann, weil die Monoflops sowohl invertierte als 
auch nichtinvertierte Signale ausgeben, 6 Ausgänge, die du logisch 
auswerten kannst.
Geeignet sind dazu viele Bausteine. In CMOS z.B. der CD4528 oder CD4538, 
in TTL z.B. der 74221.Es geht auch der gute alte 555.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Dominik Jenzer schrieb:
> 1. Eingangsverarbeitung der PWM Werte (quasi mein Thread von gestern)

Das geht am einfachsten mit Monoflops (74HC123).

Dominik Jenzer schrieb:
> 2. Umsetzung der Wahrheitstabelle

Das sollte kein Problem sein. Das Problem ist aber das Erstellen und 
Prüfen der Wahrheitstabelle.
Du mußt sämtliche Kombinationen an Eingangssignalen prüfen:
2 * 3 = 6 Bit = 64 Möglichkeiten.

Dominik Jenzer schrieb:
> Und nochmals, ja, mit einem uC wäre das viel viel einfacher

Für Zuverlässigkeit brauchen Logik-IC auch Eingangs- und 
Ausgangsschutzbeschaltung und damit ist eine MC-Lösung auch nicht 
unzuverlässiger.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Die zweite Möglichkeit ist der Einsatz von Komparatoren, die ein durch 
einen Tiefpass aus der PWM gewonnenes Analogsignal erhalten. Das 
kritische hier ist die Einstellung der Schaltschwellen, dazu sollten die 
Referenzspannungen stabilisiert werden. Mit 3 Komparatoren aus z.B. 
einem LM339 erhältst du dann 3 Logiksignale.
Komparatorausgang           1200ms    1500ms     1700ms
Eingang <1200ms               0          0         0
Eingang >1200ms & <1500ms     1          0         0
Eingang >1500ms & <1700ms     1          1         0
Eingang >1700ms               1          1         1

von Peter D. (peda)


Lesenswert?

Matthias Sch. schrieb:
> Es wird solange am Ausgang Pulse liefern,
> solange der Eingangspuls unter der eingestellten Länge bleibt.

Nö.
Ein retriggerbarer Monoflop erkennt die Periodendauer, die Pulslänge ist 
ihm wurscht.

Du mußt auf die high-Flanke den Monoflop triggern und dessen Ausgang mit 
der low-Flanke in einen D-FF übernehmen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.