Arduino und Schaltermatrix

Antworten
yogi149

#1 Arduino und Schaltermatrix

Beitrag von yogi149 »

Hi,

für die Homecockpits suchen wir noch eine elegante Lösung für große Schalterpanels.

Bei meiner EC-120 habe ich Glück, da kann ich das mit einer Taster-Matrix machen.
Matrix-5x5.PNG
Matrix-5x5.PNG (31.24 KiB) 2810 mal betrachtet
das funktioniert wohl eindeutig, aber ich brauche auch nur die Tastfunktion zum togglen der Funktion.
Somit brauche ich zur Erfassung von 25 Tastern nur 1 analog Eingang am Arduino.
(Das Programm dazu arbeitet Thomas gerade aus)

Bei den großen Overheadpanels der anderen Helis sind aber Schalter verbaut, da funktioniert die Art des Anschlusses wohl nicht. :(
Hat da jemand Ideen, wie man mit möglichst wenig Verkabelung so etwas realisieren kann?
Mein aktueller Lösungsansatz wäre eine Expander Karte mit 48 Eingängen über den I2C Bus zu machen.
Benutzeravatar
acanthurus
Beiträge: 3348
Registriert: 21.10.2008 08:39:59
Wohnort: Kreis Ludwigsburg

#2 Re: Arduino und Schaltermatrix

Beitrag von acanthurus »

48 ist halt schon ne Nummer...
bis vielleicht 8 Schalter könntest du mit nem einzelnen (10 bit) ADC Eingang hinbekommen (WIderstandsreihe, sehr schick ist diese Variante: http://www.skillbank.co.uk/SignalConver ... R2RDAC.gif)
Wenn du diese Schalterzeilen dann auf der Plus-Schiene über einen einzelnen Schaltkanal reihenweise per Dezimalzähler (z.b. 4017) durchklickst, könntest du mit einem ADC, einem Schaltkanal (bzw. 2, sicherheitshalber für den Schaltkanal-Reset) bis zu 80 Schalter abfragen. Alternativ könnte man den Reset sparen und das üner eine RC-Kippstufe nach einem gewissen Intervall automatisch resetten - so wie bei den Kanaldekodern unserer alten 35MHz-Empfänger.
Der Verdrahtungsaufwand zum Panel wäre dann noch Plus, Masse, ADC und 1 bzw. max 2 Schaltkanäle für den 4017. Überschaubar, finde ich.

Ne Alternative eventuell, ZWEI Dezimalzähler (jeweils einen als Zeilen- und als Spaltentreiber) zu verwenden. Dann könnte man den ADC-Kanal durch einen Schalteingang ersetzen und sich vielleicht ne ganze Reihe an Widerständen sparen... das müsste ich aber erst mal durchdenken.

gruß
andi
I told my mom when I grow up I want to be an Engineer, she told me I can't do both!
yogi149

#3 Re: Arduino und Schaltermatrix

Beitrag von yogi149 »

acanthurus hat geschrieben:48 ist halt schon ne Nummer...
aber leider nicht so abwegig:
125.jpg
125.jpg (1.21 MiB) 2764 mal betrachtet
Benutzeravatar
acanthurus
Beiträge: 3348
Registriert: 21.10.2008 08:39:59
Wohnort: Kreis Ludwigsburg

#4 Re: Arduino und Schaltermatrix

Beitrag von acanthurus »

Is mir klar, Jürgen.
Zu diesen beiden hier hab ich ne besondere Hassliebe entwickelt - allerdings in einer gänzlich anderen Konfiguration wie in dem Bild.

gruß
andi
Dateianhänge
125.jpg
125.jpg (62.85 KiB) 2761 mal betrachtet
I told my mom when I grow up I want to be an Engineer, she told me I can't do both!
Benutzeravatar
the-fallen
Beiträge: 1976
Registriert: 07.03.2011 14:20:47
Wohnort: zwischen Augsburg und Landsberg a.L.

#5 Re: Arduino und Schaltermatrix

Beitrag von the-fallen »

Eine Reihen-Zeilen - Matrix die das Endergebnis digitalisiert gibt es z.B. hier:
http://www.spikenzielabs.com/SpikenzieL ... hield.html

64Schalter, die dahinter liegende Elektronik ist nicht so kompliziert als dass man sie nicht auch auf eine Lochrasterplatine nachbauen könnte.

Ich würde das aber so abändern, dass die Reihen und Zeilen oder die Widerstandskaskade wie bei euch geplant einen Analogen Wert erzeugen und man braucht dann eben 2 Analogeingänge um 64 Schalter ab zu tasten.

Alternativ und eventuell auch flexibler ist man dann, wenn man das wie auf der Seite mit einem seperaten Prozessor digitalisiert und eben z.B. per i²c auslesen lässt. Dann kann man leichter mal eine komplette Baugruppe auswechseln ohne alles mit dem "Hauptprozessor" neu verdrahten zu müssen.
  • Prôtos FBL -stretched- a un motor 5+4D 1.13mm 14P de torro [V-Stabi]|[V-Gov] | [YGE90LV] | [UweG-Taumelscheibe] | [ZyclicMod]
  • SuziJanis 700 UltraLight 3570g Abfluggewicht
  • Besessen: T-Rex 250SE, T-Rex 450L, T-Rex600EFL, TDR, Blade mSRX
  • nur Gebaut und eingeflogen: Blade700, Goblin500, TRex150 RKH, Blade 130X RKH, Vibe90
  • Heizkoffersteuerung "HeatBox"

[" 99 little bugs in the code | 99 little bugs in the code | Take one down, patch it around | 117 little bugs in the code "] - Alex Shchepetilnikov
Benutzeravatar
acanthurus
Beiträge: 3348
Registriert: 21.10.2008 08:39:59
Wohnort: Kreis Ludwigsburg

#6 Re: Arduino und Schaltermatrix

Beitrag von acanthurus »

So könnte würde das ggf. nach meiner Variante A aussehen. Ob das Zusammenschalten der OpAmp-Ausgänge so funktioniert wäre mal noch zu prüfen.
Auf der Softwareseite müsste man dann zunächst die Zeile anwählen ( n-1 Impulse auf den "Line select" Pin geben) und dann den A/D auslesen, um daraus die Schalterstellungen der gesamten zeile abzulesen. Anschließend reset-Impuls senden um das Ding wieder in den Anfangszustand zu versetzen.


gruß
andi
Dateianhänge
switchmultiplexer.gif
switchmultiplexer.gif (21.68 KiB) 2728 mal betrachtet
I told my mom when I grow up I want to be an Engineer, she told me I can't do both!
Benutzeravatar
adrock
Beiträge: 1527
Registriert: 02.04.2008 11:00:26
Wohnort: Berlin

#7 Re: Arduino und Schaltermatrix

Beitrag von adrock »

...ich würd's ja digital mit einem 16-Bit parallel-in serial-out shift-register machen z.B. 74HC674.

EDIT: Gut den gibt's nicht mehr :-) Dann eben 2x 8-Bit a'la HC165 oder so, 29ct bei Reichelt.
Zuletzt geändert von adrock am 24.03.2015 18:42:31, insgesamt 1-mal geändert.

Stryker F-27Q Titan X50E Pterodactyl
Diverse FPV Copter
RC: MC-20 HoTT
Benutzeravatar
the-fallen
Beiträge: 1976
Registriert: 07.03.2011 14:20:47
Wohnort: zwischen Augsburg und Landsberg a.L.

#8 Re: Arduino und Schaltermatrix

Beitrag von the-fallen »

Wozu der Op-Amp? Der Wald-und-Wiesen-Arduino (323p oder 32u4) löst die Analogeingänge mit 10Bit auf (also 1024 Zustände).
Der Arduino Zero oder der Teensy3.1 sogar 12Bit. Müsste für 8 Schalter ja locker reichen für eine Kombination aus verschiedenen Pegeln die sich eindeutig zuordnen lassen.

Ansonsten eben wirklich das "absetzen" mit einem gesonderten Chip den man dann per i²C abfragt - und dann in Reihen und Zeilen-Schaltweise.
  • Prôtos FBL -stretched- a un motor 5+4D 1.13mm 14P de torro [V-Stabi]|[V-Gov] | [YGE90LV] | [UweG-Taumelscheibe] | [ZyclicMod]
  • SuziJanis 700 UltraLight 3570g Abfluggewicht
  • Besessen: T-Rex 250SE, T-Rex 450L, T-Rex600EFL, TDR, Blade mSRX
  • nur Gebaut und eingeflogen: Blade700, Goblin500, TRex150 RKH, Blade 130X RKH, Vibe90
  • Heizkoffersteuerung "HeatBox"

[" 99 little bugs in the code | 99 little bugs in the code | Take one down, patch it around | 117 little bugs in the code "] - Alex Shchepetilnikov
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63774
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Kontaktdaten:

#9 Re: Arduino und Schaltermatrix

Beitrag von tracer »

yogi149 hat geschrieben:aber leider nicht so abwegig:
Halb OT: Der Flugsim kann das alles auch auswerten? :shock:
Benutzeravatar
Mataschke
Beiträge: 10112
Registriert: 29.11.2004 12:37:50
Wohnort: irgendwo im Nirgendwo

#10 Re: Arduino und Schaltermatrix

Beitrag von Mataschke »

Also ich würde für Xplane nen Teensyduino nehmen , da der schon bestimmte Libraries die benötigten I/O und ein Xplane Plugin für die Datarefs hat .

https://www.pjrc.com/teensy/td_flightsim.html
grüße Michael
----------------------------------------------------------



Flying is the best fun you can have - with your pants on :mrgreen:

T8FG mit SpeckDrumm MOD/ T9CP,MCPx @T8FG SpeckDrumm,TT Mini Titan FBL ,GAUI EP200 FBL,
TREX 500 FBL, suche Sponsor für MicroBeast Test ....
Status: Rundflug mit Kunstflugeinlagen manchmal Tic und weniger Toc

Besucht uns auf HeliChat.de - Von Helipiloten für Helipiloten
Benutzeravatar
acanthurus
Beiträge: 3348
Registriert: 21.10.2008 08:39:59
Wohnort: Kreis Ludwigsburg

#11 Re: Arduino und Schaltermatrix

Beitrag von acanthurus »

Wozu der Op-Amp?
Primär mal zum entkoppeln der verschiedenen Zeilen, weniger zur Verstärkung.
I told my mom when I grow up I want to be an Engineer, she told me I can't do both!
Benutzeravatar
AM0K
Beiträge: 230
Registriert: 21.02.2008 12:07:02
Wohnort: Aachen
Kontaktdaten:

#12 Re: Arduino und Schaltermatrix

Beitrag von AM0K »

tracer hat geschrieben:
yogi149 hat geschrieben:aber leider nicht so abwegig:
Halb OT: Der Flugsim kann das alles auch auswerten? :shock:
Natürelmoooo (wie der Franzose sagt :D)
Mataschke hat geschrieben:Also ich würde für Xplane nen Teensyduino nehmen , da der schon bestimmte Libraries die benötigten I/O und ein Xplane Plugin für die Datarefs hat .

https://www.pjrc.com/teensy/td_flightsim.html
Hab ich mir gerade mal angesehen und hab nach Lesen der Hauptseite schon fast (für mich) entschieden, dass das keine Option ist, weil:
- läuft nur über USB
- man soll "permanentes Schreiben" vermeiden um USB nicht zu überlasten (benötigen wir aber, warum dazu später mehr)
- es wird ein Plugin benötigt um auf die Datarefs zuzugreifen

Ich persönlich mache das lieber über ein Arduino (oder baugeleiches Board) mit Ethernet Shield, wo ich über UDP direkt mit X-Plane quatschen kann.
Dann kann ich nämlich meinen Hardwareschalterstellungen entsprechend sofort los "brüllen" und X-Plane in die korrekte Simulation der Schalter zwingen, während man bei der USB-Lösung (oder Plugins) nur auf die "Flanken" zurückgreifen kann (also Änderungszustände von Schaltern übermittelt).

Wenn ich jetzt aber den Simulator z.B. mit laufendem Motor starte, aber mein Battery Master Switch physikalisch auf OFF steht, bekomme ich dem X-Plane nur mitgeteilt in dem ich den Schalter auf On stelle und wieder auf OFF. Diesen "Sync" müsste ich für jeden Schalter separat machen ... nein Danke.

Bei meiner Variante übermittle ich in festgelegten Zyklen alle Schalterstellungen und im selben Beispiel würden beim Start des Simulators mit laufendem Motor sofort alle virtuellen Schalter auf die meinen physikalischen Schalterstellungen entsprechenden Positionen "hüpfen".

Außerdem verstehe ich nicht, warum man sich eine weitere Schicht (Plugin) zwischen die Kommunikation bauen (somal die Plugins unter verschiedenen Systemen wie Linux, Mac und Windows meistens Probleme machen) oder sich auf die Abhängigkeiten der fremden Libraries beschränken soll.

Nebenbei lernt man dabei auch noch etwas ;) und das macht mir am meisten Spass...
Projekt: Home-Cockpit | Projekt: Christoph Europa 1 | Projekt: Stabi-DB | Info: KDS Innova Seite | Info: Flugbuch
Benutzeravatar
AM0K
Beiträge: 230
Registriert: 21.02.2008 12:07:02
Wohnort: Aachen
Kontaktdaten:

#13 Re: Arduino und Schaltermatrix

Beitrag von AM0K »

So, ... zur Abwechslung mal was konstruktives :)

Jürgen hatte ja sein Taster-Panel bereits feritg, also hab ich Ihm ein Sketch gebaut, mit dem er die Werte der einzelnen Tasten ausgeben konnte:

Code: Alles auswählen

const int AnalogPin = A7;
int Wert = 0;

void setup()
{
  Serial.begin(9600); 
}

void loop()
{
  Wert = analogRead(AnalogPin);
  Serial.println(Wert);
  delay(100);
}
Damit konnte er mir eine eindeutige Zuordnung der Tasten zu den Werten geben.
Dann habe ich mich auf die Suche nach der passenden Möglichkeit gemacht, die Funktionen in X-Plane zu schalten.
Ich finde es am einfachsten die entsprechenden Kommandos (Übersicht siehe: XplaneOrdner/Resources/plugins/Commands.txt) direkt über UDP an X-Plane zu senden.
Also gab es ein paar IF-Blöcke mit den passenden Werten welche dann das entprechende Command senden.

Leider kann man nicht alles über Commands regeln und leider sind auch die Commands nicht kosequent umgesetzt.
Beispiel:
Ich kann die Positionsbeleuchtung einschalten mit:

Code: Alles auswählen

sim/lights/nav_lights_on
Und ebenso wieder ausschalten mit:

Code: Alles auswählen

sim/lights/nav_lights_off
Was für Schalter schon mal nicht verkerht ist.

Jedoch hat Jürgen ja Taster welche bei dem Beispiel optimaler Weise einfach mit:

Code: Alles auswählen

sim/lights/nav_lights_toggle
um- (also aus- oder an-) geschaltet werden können.

Leider ist das wie schon erwähnt nicht konsequent für alle Funktionen umgesetzt worden.
Soll heißen: Speziell "toggle" ist nicht immer verfügbar, weshalb man auf "on" und "off" zurückgreifen muss.

Daher habe ich mir überlegt, ob es nicht schlauer ist (in Anbetracht der Tatsache, dass ja später auch noch Schalterpanels folgen) ausschließlich mit "on" und "off" zu arbeiten und das "toggle" in meinem Code bereitzustellen.

Dies bringt mir einen weiteren Vorteil:
Da Jürgens Taster ja beleuchtet sind und die LED den Zustand der jeweiligen Tasterfunktion (An/Aus) darstellen soll , könnte ich entweder einfach auf die X-Plane Datarefs (Übersicht siehe: XplaneOrdner/Resources/plugins/DataRefs.txt) zurückgreifen und dementsprechend die LED an oder aus schalten:

Code: Alles auswählen

sim/cockpit/electrical/nav_lights_on	int	y	bool	Navigation Light
Was aber bedingt, dass ich diese Dataref von X-Plane auch auslesen und auswerten muss, oder aber ich verlasse mich auf meinen selbst getoggelten Zustand.
Ein "Nachteil" (?) dabei wäre jedoch auch wieder, dass ich dann die Möglichkeit verliere, die Taster auch als solche zu benutzen und im Virtuellen Cockpit ebenfalls auf die Knöpfe drücken zu können ...


Um mal wieder die Kurve zu bekommen ... ein weiteres Problem was sich mir gerade darstellt ist:
Was passiert denn überhaupt, wenn mehrere Taster gleichzeitig gedrückt werden?

Momentan ist es (wie beim BU-USB-Board in der Schaltermatrix ohne Dioden) so, dass die Werte sich aufsummieren und durch den "falschen" Stromfluss ungewollte Werte übermittelt werden könnten (bzw. umgekehrt - der Strom nimmt natürlich immer den Weg des geringsten Widerstandes).
Zwar ist die Wahrscheinlichkeit bei dem Tasterfeld geringer, jedoch bringt uns das wieder zum Schalter-Feld...

Wenn wir also Dioden einsetzen um den Stromfluss (bzw. die Flussrichtung) zu kontrollieren, wären wir das Problem schon mal los.
Aber ich verstehe noch nicht ganz, wie ich eine Schalter-Matrix aufbauen müsste ?!?

Jede Reihe und jede Spalte auf einen Digial-Pin oder wie habt ihr euch das vorgestellt?
Projekt: Home-Cockpit | Projekt: Christoph Europa 1 | Projekt: Stabi-DB | Info: KDS Innova Seite | Info: Flugbuch
Benutzeravatar
Husi
Beiträge: 2808
Registriert: 19.03.2007 20:06:17
Wohnort: Darmstadt
Kontaktdaten:

#14 Re: Arduino und Schaltermatrix

Beitrag von Husi »

Moin moin,

vorab, ich habe weder von dem X-Plane Sim eine Ahnung,noch von den geplanten Schalterfeldern.
Aber:
AM0K hat geschrieben:Jede Reihe und jede Spalte auf einen Digial-Pin oder wie habt ihr euch das vorgestellt?
Ich habe mit das als sogenannten bitCode vorgestellt. Im AutoCAD funktioniert das so:
Man hat eine menge Werte, die man in nur einer Zahl speichern will. Hier Schalterstellungen, die als eine Spannung erzeugt wird.

Beispiel:
0 alle Schalter aus.
1 erster Schalter an
2 zweiter Schalter an
4 dritter Schalter an
8 vierter Schalter an
16 fünfter Schalter an
32 sechster Schalter an
64 siebter Schalter an
128 achter Schalter an

jetzt schalten wir die Schalter 1, 4 und 5 an :arrow: 1 + 8 + 16 = 25 entspricht 9,8 % Spannung
schalter wir die Schalter 2, 5, 6 und 8 an :arrow: 2 + 16 + 32 + 126 = 176 entspricht 69 % Spannung
alle Schalter an :arrow: 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 entspricht der 100 % Spannung

Somit kann man rückwärts aus der Spannung auch wieder die Stellung aller Schalter bestimmen. Je mehr Anteile man in diese Logig packt, umso besser und exakter müssen die einzelnen Teilspannungen "geeicht" sein.

Viele Grüße
Mirko
Bild Bild Bild Bild
Antworten

Zurück zu „Arduino Tipps & Hilfe“