MobiFlight Community Support

Welcome to the forum for MobiFlight! Feel free to reach out to the community in case you have questions, issues or just want to share great ideas or details about your latest home cockpit project.

You like MobiFlight? Donate via PayPal and support the MobiFlight development. Thanks! 

05/03/2024 - This forum is read-only

The community support for MobiFlight has moved exclusively over to our Discord server. Register for free and enjoy more interactive functions like image and video upload, voice chat. More than 7,000 registered users around the world make it a great experience!

See you on our MobiFlight Community Discord server.

A HUGE Thank You to everyone who participated in the forum, especially obviously to Pizman and Stephan who did an outstanding job over so many years providing an incredible service to the MobiFlight community.

The forum is still providing a lot of good content, hence we keep this information accessible.

Go to page 1Go to page 012Go to page 2Go to page 2
Avatar
haraldh
Posts: 39
Hallo !
ich habe mir vor einiger zeit von poldrgronate eine CDU gekauft. NACH EINIGER ZEIT HABE ICH DAS SYSTEM KAPIERT WIES FUNKTIONIERT:
also mit 9 masse und 8 steuerleitungen funtionierts,aber nicht mit dem mobiflight-
es ist ein wenig schwierig zu erklären.
also ich betätige 8 knöpfe mit 8x steuerleitung und einer masse.
die nächsten 8,mit der selben steuerleitung und einer anderen masse,
ja so gehts dann weiter.
wenn ich nun 8 schalter zuweise mit der ersten masse ,dann passt es
bei der zweiten zuweisung werden meistens wieder die ersten 8 angezeigt,
es muss irgendwie ein impuls an das arduino ausgegeben werden obwohl die erste masse keinen schluss hat.
hat jemand eine idee dazu,,,,,,,,,,,,,,,
es gibt auch eine zeichnung dazu,,,,,,,,,,,
2017-06-30 19:45
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Das ist eine Matrixsteuerung.

Normal brauchst du für 72 Schalter 72 Pins..... Mit deinen System würden 8+9+(1)=17 Pins reichen.

Akuell ist das so in Mobiflight nicht eingebunden.... schlicht weil ein Mega fast nix kostet und 50 Schalter erlaubt.... Das ist noch ein Überbleibsel aus ner Zeit in der man mit den Boards sparsam sein musste weil diese ein vermögen gekostet haben.

Ich kenne jetzt deine CDU nicht und müsste den Schaltplan sehen..... Die Frage ist... Sind das wirklich 9 Massen oder ist es eine Masse und 16 Datenleitungen ?

Theoretisch kannst du mit Mobiflght das umsetzen sofern es Datenleitungen sind..... Bedenke das ist ziemlich umständlich !

In dem Fall benutzt du 16 Pins für die Dateneingänge.... Configuriert als Buttons
Eine Leitung ( Die Neunte) wäre dann die Masse für ALLE.

Jetzt erstellst du für die 8 SPALTEN jeweils EINE Config mit einen Customoffset als ziel.... also 8 Custom Offsets. ( Oder besser noch einen Byte mit 8 Bits)
Das Drücken der Taste setzt jeweils einen Customoffset bzw Bit auf 1 das loslassen setzt ihn wieder auf 0
(Damit definieren wir welche Spalte in der Matrix gerade Arbeitet)
Weiterhin erstellst du bei Outputs 8 Configs die jeweils diese Customoffsets bzw die Bits auslesen.


Nun erstellst du für die Tasten aus "REIHE" 1 jeweils eine Config für die Funktionen die die Tasten haben soll. Also 8 Configs pro Reihe.
Alle Configs aus Reihe 1 bekommen nun eine Precondition.... Arbeite nur wenn "Ausleseconfig für SPALTE 1" = 1

Selbes Spiel nochmal.... Wieder 8 Configs für die nächste Reihe..... Diesesmal Precondition für die nächste Spalte... Also "Arbeite nur wenn Ausleseconfig für SPALTE 2" = 1
usw.

Fazit:
Du erstellst nun ein System das Auf die 8 Schalter der Reihen verschiedene Funktionen liegen..... Entscheidend welche ausgeführt wird ist, welche Spalte zusätzlich gerade aktiv ist.

*****
Falls das andere Tatsächlich 9 Massen sind dann müsste man die Sache nochmal anders angehen. Da muss ich aber selber erst überlegen wie es dann gehen soll.
Good Luck !
2017-06-30 21:30
Avatar
haraldh
Posts: 39
danke erstmal für deine rasche Antwort !!!
ganz verstehe ich noch nicht wie ich das umzusetzen habe,laut deiner Beschreibung.
ich habe einen plan,zur Darstellung, wie die Schaltung funktioniert .ich weis nicht wie ich in hier hinein bringe zur Veranschaulichung.
ich finde diese schaltung sehr gut ,da hier auf kleinstem raum ,und mit wenigen leitungen ,die anschlüsse zum arduino kommen.
aber jetzt wirds verzwickt.:confused:
[Last edited by haraldh, 2017-07-01 09:00]
2017-07-01 08:38
Avatar
haraldh
Posts: 39
ich versuche es zu beschreiben ;
A B C D Steuerleitung

Leitung 1(masse)--------------------2(Taster)3--------11--------19--------- usw.bis zum 8.Taster

Leitung 2------------------------------1----------4--------12-------29-----------usw.bis zum 8.Taster

Leitung 3------------------------------69--------6--------13-------21-----------usw.bis zum 8.Taster

(die Taster sind eine willkürliche Nummerierung )

so gehts dann bis zur achten masse.

also die erste reiche funktioniert perfekt; masse 1 und A B C D

und dann Leitung 2, masse 2 und A B C D , dann kommt meistens die Funktion von Leitung 1,das Heist ,Taster 2 wird aktiv, obwohl kein Schluss durch die masse von Leitung 2 vorhanden ist ist und ich Taster 1 gedrückt habe. ich habe auch schon eine sperr Diode bei der masse eingebaut das kein Schluss mehr von der masse Seite kommen kann. es hat sich aber nichts geändert.

komisch ist daran wenn ich das Multimeter nehme gibt es immer eindeutige Impulse zu jedem Taster.

Aber am arduino wirds dann anders;

A +2=1, wird die Funktion von Taster 2, aktiv obwohl hier kein masse Schluss vorhanden ist.

B+2=4, genau das gleiche

:confused: :confused: :confused: :confused:
2017-07-01 09:45
Avatar
haraldh
Posts: 39
ich bezweifle ob ich das so verwirklichen kann;

also immer wenn ich Leitung A (2,1,69)drücke,das Heist immer wenn eine schalter aus der A reihe gedrückt wird,dann wird über die acht massen ein Schluss gemacht.ich bringe für die Logik keinen eindeutigen befehl zusammen.
wenn ich die Steuerleitung bei Arduino an je einen Pin (53,51) anschließe und zwei verschieden massen ,1,2 anschließe,
bekommt Arduino immer zwei befehle auszuführen,nämlich Pin 53.51 zu schalten,obwohl ich nur einen Taster gedrückt habe.ich denke mal das ich hier eine mechanische "und oder" Schaltung fabrizieren muss.......

Hat jemand eine Idee.???????????????????
2017-07-01 10:34
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Meinst du solch eine Matrix?:

Grüße,
Stephan (Time: UTC+2)
2017-07-01 17:17
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Hallo Harald,

ein logisches "und oder" gibt es nicht. Entweder UND oder ODER. Im Zweifel machst du eine sog. Wahrheitstabelle:

UND
A B Ergebnis
0 0 0
1 0 0
0 1 0
1 1 1

ODER
A B Ergebnis
0 0 0
1 0 1
0 1 1
1 1 1

Ein NAND, also ein NOT AND (negiertes AND) kehrt das Ergebnis des UND um (Negation)
Ein NOR, also ein NOT OR (negiertes OR) kehrt das Ergebnis des OR um (auch eine Negation)

Die siehst also, daß eine Kombination von UND und ODER nichts bringt, denn außer bei 0 0 wäre das Ergebnis immer 1. Damit kannst du die dahinterliegende Schaltlogik eines UND/ODER vergessen, weil ein einfacher Schalter mit 0/1 reichen würde. Logisch, gell?
Grüße,
Stephan (Time: UTC+2)
2017-07-01 19:15
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Muss gestehen deine "Erklärung" habe ich nicht kappiert oder zumindest nicht Richtig.

Grundsätzlich sehe ich 2 Systeme wie in meinen ersten Posting hier beschrieben.....

1. wäre eine Lösung tatsächlich mit 8xPlus und 9 mal Masse.
Also du definierst den Schalter dadurch Welcher Pin Aktiv ist..... und auf Welche Masse er geht. So funktioniert z.b. ein Max7219 7Segmnet Modul.
Dort hast du 8 Datenpins und 8 Massen.... Die ( Datenpins sagen welche Segmente Leuchten soll..... Und die 8 Massen bestimmen welches der 8 einzelnen Diggits angesteuert wird. Somit kannst du aus einer Kombination aus einer Bestimmten Masse und einer Bestimmten Datenleitung jedes der 64 Segmente direkt ansteuern.

Damit das nun mit dem Arduino geht müsste man die Logik ändern......
Wenn ich es Richtig verstehe dann ist bei einen INPUT in Mobiflight die Logic so das der Pin HIGH ist... Also Spannung anliegt. Diese geht zu einen Schalter. Die Andere Seite geht vom Schalter zu GRD. Schließt der Schalter dann ist der Kreis geschlossen und der Pin wird auf Low gezogen..... Das Erkennt dann der Arduino bzw Mobiflight als Schaltvorgang.
In deinen Fall müssten also die 8 "Datenleitungen" so arbeiten. Die 9 "Masse" Leitungen müssten aber umgekehrt denken.... Also hier müsste der Pin selbst als Masse gelten und er müsste eine Schaltung erkennen sobald 5v bei ihm anliegen.... Denn wenn der Schalter geschlossen wird laufen ja die 5v des 1. Pin auf diesen 2. Pin !

Denke das geht aktuell NICHT mit Mobiflight..... Vielleicht kann Sebastian hierzu etwas sagen.


2. wäre eine Umsetzung mit tatsächlich 16 Datenleitungen ( 8+8) und EINER Masse.
Hierbei wäre es so wie eingangs von mir beschrieben.....
Also auf einen Schalter liegen auf einer Seite 2 Pins an.... Einmal Die Reihe und Einmal die Spalte.... Auf der anderen Seite liegt EIN GRD an... Der Gleiche GRD für alle 64 Schalter.
Drückst du nun einen Schalter dann werden Jeweils EIN Pin der Reihe und EIN Pin der Spalte gleichzeitig auf GRD gesetzt.... Und das könnte man in Mobiflight auslesen.


Am besten du schickst uns mal das Datenblatt und/oder den Schaltplan..... Meine Emal : pizman@freenet.de

EDIT: Nur mal am Rande.... Auch wenn es gehen sollte bzw falls Sebastian uns da einen Weg anbietet das in Mobiflight zu integrieren..... Du brauchst dafür ne masse an Configs etc... Hast schon mal drüber nachgedacht das Teil so zu betreiben wie es gedacht ist.... Also mit dem Controller der gleichen Firma und deren Software ??
[Last edited by pizman82, 2017-07-02 17:06]
Good Luck !
2017-07-02 16:58
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Hmm, also vielleicht sollte man sich einmal auf einen gemeinsamen Sprachgebrauch einigen.

Grundsätzlich gibt es in jeder Schaltung nur eine Masse (auch als GND bezeichnet).

Wikipedia sagt dazu:
iconQuote:

Als Masse (engl. chassis ground, abgekürzt GND) bezeichnet man einen leitenden Körper, dem im Regelfall das Potential null zugeordnet wird, welches das Bezugspotential für alle Signal- und Betriebsspannungen darstellt.



Ich würde mal meinen du sprichst von 8 Masseleitungen oder Masseanschlüssen, dann würde ein Schuh daraus werden.
Ohne ein Schaltbild ist es schwierig, das Verhalten der Schaltung nachzuvollziehen. Eine Multi-Schalter-Matrix wird normalerweise nicht gegen Masse betrieben, sondern dergestalt, wie ich es in dem Schaltbild gezeigt habe. Denn wenn die Gegenleitung immer GND wäre, könnte überhaupt nicht ausgewertet werden, welcher Schalter der entsprechenden Leitung gerade betätigt wurde. Man könnte lediglich nachvollziehen, daß ein Schalter der Reihe betätigt wurde, aber welcher? Ich vermute mal, es gibt 8 Reihen mit Schaltern, die jeweils an einer Seite Masse haben und bei Betätigung damit einen Pin des Arduino auf Masse ziehen. Das Ganze dann 8 mal. Das wäre dann aber keine Matrix, sondern ganz normale Schalter, die jeweils zwischen Masse und einen Pin geschaltet werden. Bei 8 Schaltern in 8 Reihen brauchst du dann auch 64 Input-Pins. Bei einer 8x8-Matrix brauchst du aber nur 8 Pins für die Reihe und 8 Pins für die Spalten, also so, wie pizman das schon beschrieben hat. Meines Wissens unterstützt MobiFlight eine solche Matrix allerdings nicht.

Wenn es dir möglich ist, lade doch bitte mal die Schaltung hoch - das wäre echt hilfreich.
Grüße,
Stephan (Time: UTC+2)
2017-07-02 18:08
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
Möchte auch noch kurz was anfügen.....

Wie im letzten Posting geschrieben..... Selbst wenn es gehen sollte ist die Steuerung über Mobiflight eher "unpraktisch".... Denn Mobiflight hat keine Möglichkeit den Zustand eines "Input Schalters" als Precondition zu nehmen..... Wir können nicht Sagen " Wenn Pin A an ist UND PinB auch an ist dann mache bla bla"..... Das ginge wie oben beschrieben nur über einen umständlichen Umweg durch Custom Offsets !

Allerdings wollte ich jetzt nur zur Vollständigkeit anmerken das du neben der Originalen Software/Steuerung auch alternativ deine Hardware ändern kannst. ....

Deine Schaltung MUSS ja zwingend irgendeine Logik haben die mit deinen 17 Pins auskommt..... wenn wir diese kennen könnten wir das Manipulieren !
Wir würden dann bestimmte Pins ( Die jeweils immer ALLE auf EINER Schalterseite liegen) alle zusammen auf GRD verkabeln..... Dann müsstest du nur für JEDEN Schalter auf der anderen Seite an den Lötpunkt der Platine ein Kabel löten das zu einen freien Pin auf dem Arduino geht.... Somit machst du aus der Matrix schlicht eine Schaltung mit Einzelbuttons.
Klar brauchst dann 2 Arduinos anstatt nur 17 Pins auf einen.... Aber es würde so mit Mobiflight und "ein wenig" Bastelaufwand sofort klappen !
Wir ignorieren dann das Matrixsystem auf deiner CDU Platine ganz und nutzen davon nur noch einige Pins als Masse !


Ich würde sagen... Warten wir ab bis der Plan ausgewertet ist !
Good Luck !
2017-07-03 00:58
Avatar
haraldh
Posts: 39
hi pizamann ,du bist der bestedanke für deine antworten und ausführungen !!

also, wie ich geschrieben habe kommen die impulse logisch aus dem fmc/cdu. also aus der ersten gruppe ,steuerleitung und ground sind eindeutige implse.
genau wie in deiner zeichnung. acht steuerleitungen ein ground. bei der ertsen gruppe paßtes noch.
aber wenn die zweite gruppe ins spiel kommt dann bekommt mb flight einen impuls auf dem ersten taster obwohl dieser nicht mit ground von der zweiten gruppe verbunden ist.
arduino mit der tasterfunktion, kann hier nicht eindeutig einen zweiten ground isolieren oder schalten.der groundschluß ist immer vorhanden.
ich kann auch an der platine nichts ändern da es aus einer folie besteht und die leiterbahnen eingeschweißt sind.
ich versuche die schaltung zu beschreiben.

du hast mehrere gruppen zu acht ziffern
in jeder gruppe verbindest du die eins ,die zei,die drei usw miteinander.
jede gruppe hat eine masse leitung.
wenn du jetzt in der ersten gruppe die eins drückst ,dann wird über masse aus der ersten gruppe der kreis geschlossen.
aber es liegt an jeder eins in den anderen gruppen strom an,wird jedoch nicht geschaltet da die masse nicht verbunden wird wenn kein taster der anderen gruppe gedrückt wird.

die logik an der cdu ist 100% ok


die lösung aus meiner vorstellung: ich stelle mir das so vor wie bei einer transistor schaltung, wenn ich eis und zwei(taster) verbind dann wird der fluss zu ground erst aktiv geschaltet.

:confused: :confused: :confused: :confused:

.
[Last edited by haraldh, 2017-07-07 09:21]
2017-07-07 09:11
Avatar
haraldh
Posts: 39
iconStephanHo:

Meinst du solch eine Matrix?:

2017-07-07 09:15
Avatar
haraldh
Posts: 39
ja genau so ::) :)

aber: alle taster die mit der linie 3 verbunden sind bekommen nun einen strom impuls und schalten über die Pa2 an grd durch. vermutlich wird von Pa0 dann der impuls umsetzen.
so ist es im moment im mbflight umgesetzt, bei der verwendung" tastern".
[Last edited by haraldh, 2017-07-07 10:29]
2017-07-07 09:16
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Nee, da hast du wohl was falsch verstanden.

Bei der hier abgebildeten Matrix ist kein Schalter und keine Leitung an GND angeschaltet. Masse hat in dieser Matrix auch gar nichts zu suchen.
Pa0....Pa7 sind ganz normale Inputleitungen und Pb0...Pb7 sind als Outputleitungen auf logisch 0 oder 0V gezogen.
Das hat aber in diesem Sinne mit GND oder Masse nichts zu tun, weil ich per Software Pb0...7 auch auf 5V legen kann, nur schalten die Dioden dann nicht mehr durch.

Liegt also PB3 auf 0V und wird der Taster Pb3/Pa2 gedrückt, so wird der "Stromkreis" wie eingezeichnet geschlossen, was dann wiederum von der dahinterliegenden Matrixauswertung bemerkt wird, die dann festgelegte Schritte ablaufen läßt.
Diesen Schalter kannst du im Grunde festhalten und dann noch Pb5/Pa2 drücken, so wird auch dies die Matrixauswertung mitbekommen und sich entsprechend verhalten.
Diese Matrix hat aber überhaupt keine Masseleitungen. Du schaltest auch keine Masse, sondern das 0-Volt-Potential über Diode und Schalter. Über der Diode wiederum fällt eine Spannung von 0,7V ab, so daß der Spannungspegel zwischen Pb3 und Pa2 0,7V beträgt. Da aber bei einer Betriebsspannung von 5V alles unter ca. 2,5V als logisch 0 betrachtet wird und alles über ca. 2,5V als logisch 1, wird an Pa2 hier eine 0 ausgewertet. Die Pa...-Leitungen liegen aber über die internen Pullup-Widerstände wiederum an +5V, so daß, wenn der Schalter Pb3/Pa2 gedrückt wird, die 0V über die Diode an Pa2 durchgeschaltet werden und der vom Pullup-Widerstand gehaltene Pegel zusammenbricht und als 0V ausgewertet wird.

Pa0 und alle auf dieser Leitung liegenden Schalter/Potentiale machen im Grunde nix, es gibt dort auch keine Potentialänderung.
Du hast zwar Recht, die Schalter Pa0...7 bekommen auf der einen Schalterseite die 0V angeboten, da sie aber nicht gedrückt sind (elektrisch also kein Stromkreis geschlossen ist), passiert hier auch nix.
Meines Wissens kann MF eine derartige Matrix nicht auswerten, weil du insgesamt 8 Inputs und 8 Outputs benötigst, die du entsprechend setzen mußt. Das geht aber an MF vorbei nicht, weil du neben MF keinen eigenen Sketch im MEGA laufen lassen kannst.

Noch einmal: bei dieser Matrix wird nichts nach Masse, GND oder GRD geschaltet. Das Schaltsymbol ist in dem Schaltbild nicht vorhanden! Über die Taster werden Potentiale geschaltet, keine Masse! Zur Realisierung bedarf es 16 Inputs/Outputs des Mega. Zur Auswertung bedarf es einer hierfüg geeigneten Software. Das Feature Matrix wird seitens MF nicht angeboten und kann somit auch nicht innerhalb von MF ausgewertet werden.
Grüße,
Stephan (Time: UTC+2)
2017-07-07 11:07
Avatar
haraldh
Posts: 39
Hallo !

danke für deine ausführliche beschreibung wie es sein kann. das eine matrix schaltung im arduini funktionier kannst du auf youtube sehen.es gibt sogar ein video von einem cinesen der irgenwas erklärt zur cdu.
es gibt nichts was im arduino nicht umgestzt werden kann. soviel habe ich über arduino herausgefunden.
du bist sicher vom elektronischem fach und hast es sehr gut erklärt wie eine komfortable schaltung aussehen kann. aber eines ist doch grundlegend , wo ein plus ist muss auch ein minus sein sonst kann kein strom fliesen ,oder !!!!
denn wenn du vom spannungsabfall redest,dann muss ja die spannung nach irgenwohin abfallen,oder!!!
denn + und += +,also gleichheit,das selbe mit minus,also muss immer ein ungleichgewicht entstehen um kräfte fliesen zu lassen.
ich denke mal ,daß es schwierig zu erklären ist wie meine cdu geschaltet ist.



durch die matrixschaltung würde sich der kabelsalat im cocpit erhäblich reduzieren,,,,,,,,,,,,,,,,,,,,,
also freunde ,nicht aufgeben nachzudenken wie eine umsetzung möglich wird.
ich denke mal für sebastian ist das ein klax, die matrix umzusetzen.

lg haraldh
2017-07-15 09:29
Go to page 1Go to page 012Go to page 2Go to page 2