![]() |
![]() |
|
![]() |
![]() |
|
Home Cockpit - Das Forum für die "Bastler" Cockpitbauer tauschen Pläne, Erfahrungen, Meinungen über den Bau von Homecockpits aus... |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Newbie
![]() Registriert seit: 04.07.2002
Beiträge: 18
|
![]() Hallo Leute,
ich habe mal eine kleine Frage? Prinzipiell kann man doch den PC mit einem Treiber dazu bewegen eine Joystickanfrage am paralellen Port abzufragen. Hat jemand genügend Ahnung, um einen entsprechenden Treiber zu Programmieren. Hintergrund ist dabei folgender: Ich würde mich im Laufe meiner Sommerferien mal an einem Eingabegerät vesuchen, was Mikrocontrollergesteuert ist und folgende Featers bieten soll: 16 analoge Eingäng (jeweils 12 Bit Auflösung) 128-256 digitale Eingänge, die softwareseitig entprellt sind Die Frage ist jetzt nur, wie ich die Daten aus dem Microprocessor in den Rechner bekomme. Ich dachte an die paralelle Schnittstelle. Vielleicht bietet sich auch USB an, aber da fehlt mir im Moment noch der Draht zum Protokoll. Vielleicht kann mir ja jemand von Euch helfen... Bis auf weiteres... Fireball |
![]() |
![]() |
![]() |
#2 |
Master
![]() Registriert seit: 14.02.2002
Alter: 66
Beiträge: 644
|
![]() Hallo,
ich baue gerade auch so etwas und habe die PC Seite schon nahezu fertig. Ich kommuniziere über serielle COM Schnittstelle. Einen Windows Treiber zu programmieren ist eine extrem komplizierte Sache und überflüssig, da es im Win32API dafür bereits fertige Schnittstellen gibt. Darüber kannst du auch eine parallele Schnittstelle bedienen. Mein PC-Programm werde ich frei zur Verfügung stellen, wenn du noch etwas Geduld hast. MfG Dirk |
![]() |
![]() |
![]() |
#3 |
Master
![]() Registriert seit: 14.02.2002
Alter: 66
Beiträge: 644
|
![]() Noch was vergessen:
Warum 12 Bit ? Für welchen Control glaubst du, diese Auflösung zu brauchen. Ich habe mich für eine 7 Bit Auflösung entschieden. Haben die Potis selbst eine höhere Positionsgenauigkeit ? Meiner Meinung nach nicht. Oder hast du da andere Erfahrungen ? Gruss Dirk |
![]() |
![]() |
![]() |
#4 |
Newbie
![]() Registriert seit: 04.07.2002
Beiträge: 18
|
![]() Hallo Dirk,
Die 12-Bit Auflöung resultieren aus dem Analog-Digital-Wandler, den ich verwenden will. Die Positioniergenauigkeit der Potis habe ich noch nicht untersucht. Wie willst Du die Digitalen Werte ermitteln? Benutzt Du auch einen ADC oder per Microcontroller? Bis dann, Fireball |
![]() |
![]() |
![]() |
#5 |
Newbie
![]() Registriert seit: 04.07.2002
Beiträge: 18
|
![]() Natürlich muss ich auch noch etwas nachschicken:
Wie sieht Dein Protokoll über Com aus? Welche Funktionen wird Dein Eingabesystem denn aufweisen? Hast Du die Windowsseite selbst programmiert und in welcher Sprache? Danke und bis bald, Fireball |
![]() |
![]() |
![]() |
#6 |
Master
![]() Registriert seit: 14.02.2002
Alter: 66
Beiträge: 644
|
![]() Hallo,
Die Windowsseite ist selbst entwickelt (C++Builder). Das Protokoll ist selbst definiert, in Ermangelung irgend eines Standards. Ich verwende PIC Microcontroller, die sind einfach, preiswert, schnell und vor allem robust im Nachbau (bisher kein Schrott). Im Endausbau rechne ich mit ca. 20 Stück an einer RS232. Die Stückkosten für den reinen Controller sind inklusive Platine mit etwa 10€ unschlagbar. Nachteil: Die sind so simpel, das man selbst die Hi's und Lo's der RS232 in AssemblerCode timen muss. ADC: mein Prototyp ist eine Kontruktion aus einem 8Kanal CMOS Analog Multiplexer "4051", einer Konstantstromquelle und einem Lade-C. Der PIC pollt alle 8 Kanäle durch, entlädt den C und zählt die Zeit, bis der wieder aufgeladen ist. Der Ladestrom wird durch die Potispannung gesteuert und damit ist der Zählwert analog der Potistellung. Soweit die Theorie. In der Praxis kommt es zu nichtlinearer Kennlinie in den Grenzbereichen und Temperaturdrift. Mein Prototyp 2 wird wohl einen ADC Chip enthalten. Ich hoffe, ich finde einen mit MUX und vor allem einer 5V Versorgung. Hast du einen Tip ? MfG Dirk |
![]() |
![]() |
![]() |
#7 |
Newbie
![]() Registriert seit: 04.07.2002
Beiträge: 18
|
![]() Hi ,
ich wollte einen ADC vom Typ MCP3208 benutzen. Er weißt 8 Kanäle auf, denen ein Multiplexer vorgeschalten ist. Das Gute ist das verwendetete Protokoll. Auf den Chip kann per SPI zugegriffen werden. Die Auflösung beträgt, wie schon erwähnt, 12 Bit. Die maximale Samplerate etwa 100 kHz, das sollte ja auf jeden Fall reichen... Als Microcontroller wollte ich einen 8052 von Atmel verwendet, den ich in Assembler programmiere. Es besteht dann auch durchaus die Möglichkeit mehrere Controller an die Schnittstelle anzuschließen. Übrigens: Unter meinem W2k liefern die Joysticks Werte zwischen 0 und 1024, was ja 10 Bit Auflösung entspricht. Prinzipiell hast Du wohl Recht, wenn Du meinst, dass 12 Bit zu viel sind, aber was kann Auflöung schaden? Beim verwendeten ADC liegt der maximale Fehler so oder so in den letzten 3 Bits. Mit der hohen Auflösung kann ich den Wert, aber bequem noch durch 8 teilen (3 Bit rechts verschieben) und den maximalen Fehler entfernen. Auflösung: 9 Bit! Wie weit ist Dein Projekt fortgeschritten? Vielleicht können wir uns ja gemeinsam der Sache annehmen, wenn Du willst, aber ich kann leider im Moment nur nebenbei am Projekt arbeiten. Ziel ist die Realisierung eines Prototypen im September/Oktober... Falls wir nicht zusammenarbeiten, dürfe ich dann einen Blick auf dein Protokoll über die serielle Schnittstelle werfen? Windows erkennt dann einen Joystick, mit entsprechenden Tastern und Achsen? Ich dachte mir übrigens im Treiber eine Möglichkeit festzulegen, ob die Tasten dauerhaft Hi liefern oder nur einen Impuls? So ließe sich beispielsweise das Fahrwerk einfahren mit einem Schalter, der ja am IC ständig Hi liefert, aber im Rechner in einen kurzen Impuls umgesetzt wird. Hast Du eigentlich die Benutzung von Schaltern vorgesehen? Bis bald, Frank |
![]() |
![]() |
![]() |
#8 |
Newbie
![]() Registriert seit: 04.07.2002
Beiträge: 18
|
![]() Der ACD kostet übrigens bei Farnell 5,38 Euro. Ich denke guter Preis... Spannungsversorgung 2,7-5,5 Volt, wenn ich es recht in Erinnerung habe (Datenbaltt liegt mir im Moment nicht vor, aber habe ich vor zwei Tagen zuletzt in der Hand gehabt)...
Der Microcontroller kostet 14,03 Euro bei Farnell und besitzt 32 IO-Ports. Maximale Taktfrequenz 24 MHz, wobei pro Zyklus 12 Takte benötigt werden, also effektiv kommt man auf 2 MHz. Die Mehrzahl der Befehle benötigt 2 Zyklen, also 1 MIPS. Sollte reichen, eine genügend hohe Zeitauflösung erreicht werden... Also bis bald, Frank |
![]() |
![]() |
![]() |
#9 |
Master
![]() Registriert seit: 14.02.2002
Alter: 66
Beiträge: 644
|
![]() Hallo Frank,
ich will das nicht über die Joystick Schnittstelle des PC's verbinden, sondern direkt über fsuipc dei entsprechenden Variablen des FS steuern. Schalter, Drehschalter usw. sind auch vorgesehen. Mein erster Flug mit einem Prototypen zeigte aber 2 Schwachstellen, an denen ich noch arbeiten muss: 1. Die Reaktion auf eine Potiänderung habe ich auf 250ms eingestellt. Da fliegt eine Chessna träge wie ein Zeppelin. Ich muss die X und Y Werte des Yokes direkt übertragen. 2. Die Nullpunkttoleranz und eine Nichtlinearität zu den Endanschlägen hin ist erforderlich. Das erfordert Feintuning. Ich werde das ganze auf einer Internetseite beschreiben, das dauert aber noch etwas. Es wäre schön, wenn wir zu einem gleichen Protokoll kämen. Dann kann der eine vom anderen partizipieren. Gruss Dirk |
![]() |
![]() |
![]() |
#10 |
Newbie
![]() Registriert seit: 04.07.2002
Beiträge: 18
|
![]() Hallo Dirk,
ich dachte nicht, dass Du den Gameport als Anschluss verwenden wolltest. Da ich jedoch keinen Anhalt hatte, wie groß der Bereich der Messwerte der Achsen ist. Also habe ich mir den Spass gemacht und unter Windows mal gesehen wie groß die Werte sind. Daher dachte ich mir dass man doch in der selben Größenordnung bleiben könnte. Leider habe ich mich mit der Windowsprogrammierung noch nicht beschäftigt. Wie hast Du das genau gemacht? Handelt es sich bei dem angesprochenen fsuipc um ein Programm des FS oder ist das Windows? Die Zeitauflöung habe ich bis jetzt noch nicht festgelegt, aber folgende Vorstellungen: - Endlosschleife fragt alle Schalter und Achsen ab - Interruptgesteuerte Abfrage der Werte vom PC aus Ziel ist es, mindestens 50 Hz Abfragegeschwindigkeit zu erreichen, also jede(r) Schalter, Taster oder Achse 50 mal in jeder Sekunde. Damit würde sich eine Auflöung von 20ms ergeben, wenn der PC dann die Daten schnell genug abfragen kann... Deshalb auch meine Frage, ob die serielle Schnittstelle da überhaubt mitkommen kann? Ich denke auch, dass ein gemeinsames Protokoll sinnvoll ist. Da deine Entwicklung weiter fortgeschritten ist, würde ich sagen, dass wir davon ausgehen und vielleicht noch minimale Veränderungen daran vornehmen, um das ganze etwas offener zu gestalten? Hast Du die Homepage schon gestaltet, oder soll das erst noch werden? Im Zweifel würde ich mir das Protokoll gern einmal ansehen... Bis bald, Frank |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|