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
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.