====== Flightsim-EncoderControl ====== Für den Arduino-Uno wurde ein Encoder-Shield auf einer Muster-Leiterplatte aufgebaut. Die zwei Impulsausgänge der Drehimpulsgeber werden an Ports des Arduino geführt. Die Drucktaster werden an einen I²C-Portexpander gefüht. Der Interruptausgang initiiert die Portabfrage beim Zustandswechsel. Es werden diese Informationen an die Kommunikationssoftware des Flugsimulators (X-Plane, FSX, Prepar3D) gesendet. Dort werden diese Informationen in Kommandos umgesetzt. ===== Hardware ===== ==== Arduino Uno ==== {{:weiteres:arduino:ardu_uno_r3_01.jpg?nolink&200 |}}Für den Encoder Controller ist Arduino Uno mit der SMD-Version des ATmega328 notwendig, bei dem auch die beiden Pins (A6, A7) der SMD-Version zugänglich sind, was nicht immer der Fall ist. [[https://www.dx.com/p/micro-usb-socket-atmega328p-development-board-for-arduino-uno-r3-blue-black-2049752#|Uno-R3 von OpenSmart]] ---- ==== Protoshield ==== {{:weiteres:arduino:ardu_proto_06.jpg?nolink&200 |}} Ich habe ein vorhandenes Protoshield verwendet. [[https://www.adafruit.com/product/51]] ---- ==== Ethernet-Modul ==== {{:weiteres:arduino:ardu_eth_03.jpg?nolink&100 |}}Es wird ein Ethernet-Modul mit einem WIZnet W5500 angeschlossen, z.B. [[https://www.banggood.com/W5500-Ethernet-Network-Module-TCPIP-Interface-51STM32-Program-p-982668.html|W5500 Ethernet Network Module]]. Die Kommunikation mit dem Prozessor erfolgt über SPI. Das Board hat einen integrierten IP-Stack. Begonnen hatte ich mit folgender Bibliothek:\\ [[https://github.com/Wiznet/WIZ_Ethernet_Library]]\\ In der Version 1.8.8 der Arduino-IDE funktioniert die integrierte Bibliothek. ---- ==== Drehimpulsgeber ==== {{:weiteres:arduino:ardu-fs_03.png?nolink&70 |}}Für den Drehimpulsgeber wird ein Typ verwendet, der eine komplette Impulsfolge pro Rastung erzeugt. Je nach Anwendungsfall können unterschiedlich große Drehimpulsgeber verwendet werden. Bei ersten Tests habe ich einen [[https://www.noble-j.co.jp/en/products/download/catalog/encoder01/REB16/encoder_REB.pdf|REB162PVBS]] verwendet. Für ein flaches Panel werden dann Drehimpulsgeber in kleiner und flacherer Bauweise verwendet, wie z.B. * [[http://www.taiwanalpha.com/downloads?target=products&id=20|RE111F-41B3N-20F-20P]] von alpha bei [[http://www.mouser.de/search/ProductDetail.aspx?R=0virtualkey0virtualkeyRE111F-41B3N-20F-20P|Mouser]] * [[https://www.ttelectronics.com/TTElectronics/media/ProductFiles/Encoders/Datasheets/EN11.pdf|EN11-HSB1AF20]] von BI Technologies bei [[https://www.mouser.de/ProductDetail/BI-Technologies-TT-Electronics/EN11-HSB1AF20?qs=%2fha2pyFaduhkHCidV0f%252bwzyoKr5Lk5ahZ5KGRdUhs1rTdfFZX1Z3pw%3d%3d|Mouser]] * [[http://www.piher-international.de/pdf/04-CI-11v04.pdf|CI-11CT-V1Y22-IFAAF]] von Piher (veraltet) * EC11B2024 von Alps (veraltert) **Wichtig bei der Auswahl ist, dass die gleiche Anzahl von Rastungen und Impulsen angegeben ist, z.B 20 / 20.** Folgende Signalfolge wird verwendet: {{:weiteres:arduino:ardu-fs_07.png?nolink&150|}} ---- ===== Versuchsaufbau ===== {{:weiteres:arduino:ardu_enc-shield_01b.jpg?direct&400|}} {{:weiteres:arduino:ardu_enc-shield_02.jpg?direct&214|}} * Anschluss-Möglichkeit von 6 Encodern * Netzwerk-Anschluss ===== Software ===== Grundsätzliches zur Software ist [[weiteres:arduino:flightsim_panel#Software|hier]] beschrieben und die fertige Version des Encoder Conntrollers [[hardware:anleitungen:ardu-enc|hier]]