Forum: Mikrocontroller und Digitale Elektronik Kreuzknüppel Verständnisfrage


von Hans I. (obiwahn)


Lesenswert?

Hallo.
Mir ist von einem alten Tele-Spiel (Tele-Match) ein Kreuzknüppel mit 2
Tastern in einem schönen Gehäuse zugelaufen.

Was macht der Hobby-Bastler also als erstes damit ?
Klar. Aufschrauben und reingucken.

Gefunden hab ich die Mechanik des Kreuzknüppels mit 2 Potis dran. 
Jeweils 300 KOhm. An jedem Poti sind 2 Drähte angeschlossen. Also 
eigendlich nur ein veränderbarer Widerstand. Die Mechanik begrenzt 
allerdings den Einstellbereich der Potis auf 10 - 70 KOhm. Jetzt hab ich 
mir überlegt die Stellung des Knüppels durch 2 AD-Wandler zu bestimmen 
und stoße dabei auf auf ein Problem.
Wenn ich z.B. alle 256 Schritte ausnutzen will, woher weiß ich denn wo 
die Anschläge sind. Klar kann ich das irgendwie mit Trimmern so 
abgleichen das das hinkommt. Aber andererseits haben die das in dem 
Tele-Match Spiel ja auch geschafft ohne irgendwas mit Trimmern 
abzugleichen.
Die Potis kann man ja auch noch verdrehen und den Einstellbereich damit 
z.B. auf 40-100 KOhm verstellen.

Jetzt die Frage :
Nutzen die gar nicht die volle Auflösung des AD-Wandlers ?
Und woher wussten die wann der Kreuzknüppel am Anschlag ist ohne das er 
vor Spielbeginn einmal in alle 4 Ecken bewegt wurde ?

Irgendwie bin ich da noch etwas ratlos.
Wie kann ich den Widerstandswert so in eine Spannung umsetzen die es mir 
erlaubt alle 256 Schritte des AD-Wandlers auszunutzen ?
Ohne Abgleich ! Ganz automatisch ! Ging in dem Spiel ja auch. Irgendwie 


von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hans I. schrieb:
> Nutzen die gar nicht die volle Auflösung des AD-Wandlers ?
Vermutlich war in dem alten Telespiel nicht mal ein AD-Wandler drin, 
sondern ein Frequenzgenerator, der die Frequenz je nach Potistellung 
ändert. Oder die Potistellung wurde durch ein RC-Glied an einem 
Digitalpin ausgewertet.

Ein kleiner Offset war da nicht störend, weil der Spieler dann den 
Knüppel einfach ein wenig anders positioniert hat, um den Ball zu 
treffen.

> Wie kann ich den Widerstandswert so in eine Spannung umsetzen die es mir
> erlaubt alle 256 Schritte des AD-Wandlers auszunutzen ?
Ich würde einen 10-Bit Wandler nehmen und die Skkalierung auf die 
gewünschten 8 Bit in der Software machen.

BTW und OT: wozu das Geplenke? Ein Satzzeichen hat keine eigene Zeile 
verdient!

: Bearbeitet durch Moderator
von Axel S. (a-za-z0-9)


Lesenswert?

Hans I. schrieb:

> Mir ist von einem alten Tele-Spiel (Tele-Match) ein Kreuzknüppel mit 2
> Tastern in einem schönen Gehäuse zugelaufen.

Die gängige Bezeichnung dafür ist "Joystick"

> Gefunden hab ich die Mechanik des Kreuzknüppels mit 2 Potis dran.
> Jeweils 300 KOhm. An jedem Poti sind 2 Drähte angeschlossen. Also
> eigendlich nur ein veränderbarer Widerstand. Die Mechanik begrenzt
> allerdings den Einstellbereich der Potis auf 10 - 70 KOhm.

Also Standard.

> Jetzt hab ich
> mir überlegt die Stellung des Knüppels durch 2 AD-Wandler zu bestimmen
> und stoße dabei auf auf ein Problem.
> Wenn ich z.B. alle 256 Schritte ausnutzen will, woher weiß ich denn wo
> die Anschläge sind. Klar kann ich das irgendwie mit Trimmern so
> abgleichen das das hinkommt. Aber andererseits haben die das in dem
> Tele-Match Spiel ja auch geschafft ohne irgendwas mit Trimmern
> abzugleichen.

Die alten Telespiele benutzten keinen ADC. Die Joystick-Potis wurden als 
zeitbestimmende Teile in einem Monoflop oder Astabilen Multivibrator 
verwendet (gern mit 555). Die CPU hat dann die Pulslängen ausgezählt. 
Die Auflösung war typisch viel kleiner als 8 Bit. Und die Nullstellung 
wurde kalibriert. Entweder in Software "Joystick bitte in Nullstellung 
bringen" oder indem der Poti-Korpus gegenüber der Achse verdreht wurde.

von Rainer W. (rawi)


Lesenswert?

Hans I. schrieb:
> Wenn ich z.B. alle 256 Schritte ausnutzen will, woher weiß ich denn wo
> die Anschläge sind.

Vergiss die 256 Schritte.
Normalerweise wird der komplette Bereich ratiometrisch gemessen und der 
genutzte Bereich bei der Kalibrierung ausgemessen und rechnerisch auf 
den gewünschten Bereich abgebildet.

: Bearbeitet durch User
von Hans I. (obiwahn)


Lesenswert?

Ich hab mir schon gedacht dass eine Hardware Kalibrierung nur schwer 
machbar ist. Bei einem Videospiel ist das auch kein Problem wenn ich 
nach dem Einschalten erst alle 4 Ecken anfahren muss.
Wenn ich aber damit z.B. Stellmotoren eines Teleskops steuern will ist 
das nicht so toll wenn sich das Teil beim Kalibrieren mitbewegt. Aber da 
ich ja nur diesen einen Kreuzknüppel habe reicht ja eine Kalibrierung 
aus. Die Werte lassen sich ja speichern und beim nächsten einschalten 
direkt abrufen. Das sollte klappen.

Danke euch

: Bearbeitet durch User
von Hp M. (nachtmix)


Lesenswert?

Hans I. schrieb:
> Mir ist von einem alten Tele-Spiel (Tele-Match) ein Kreuzknüppel mit 2
> Tastern in einem schönen Gehäuse zugelaufen.

Trotzdem würde ich dieses Teil nicht mehr verwenden.
Die alten Potis könnten Kontaktschwierigkeiten haben, und falls eines 
kaputt geht, wird es schwer Ersatz zu bekommen.
Vor allem ist die Beschaltung als Widerstand ein echtes Problem, weil 
die Widerstandswerte nicht gleich sind und abhängig von Temperatur, 
Alter, Feuchtigkeit und sonst noch was sind. Ausserdem ergibt das keine 
lineare Kennlinie.

Sooo teuer sind neue ratiometrische Joysticks auch nicht 
https://www.ebay.de/itm/405397091330 selbst wenn man da noch die Knöpfe 
extra kaufen muss.
Gewöhnlich werden diese Potis zwischen +U (Betriebsspannung des µC) 
(100%)  und GND (0%) gelegt, und der Schleifer geht an den Eingang eines 
ADC, der im µC enthalten ist. Da der ADC ebenfalls +U als Referenz 
benutzt, ist sein Messwert nur noch von der Position des Paddels 
abhängig. Die absoluten Werte der Spannungen und Widerstande spielen 
keine Rolle mehr.

Wenn das Teleskop, wie ich vermute, portabel ist, wirst du aber trotzdem 
ein Kalibriermöglichkeit brauchen um die Besonderheiten des 
Aufstellungsortes zu berücksichtigen. (Nordrichtung, Geographische Länge 
und Breite, Uhrzeit und Datum, Neigung des Geländes).

Ich empfehle dir deshalb, das Rad nicht neu zu erfinden, sondern mit 
anderen Hobby-Astronomen Kontakt aufzunehmen, die solche 
Computerisierten Teleskopsteuerungen schon längst gebaut haben und dich 
auch bei der Bauteileauswahl beraten können.

von Rainer W. (rawi)


Lesenswert?

Hp M. schrieb:
> Wenn das Teleskop, wie ich vermute, portabel ist, wirst du aber trotzdem
> ein Kalibriermöglichkeit brauchen um die Besonderheiten des
> Aufstellungsortes zu berücksichtigen. (Nordrichtung, Geographische Länge
> und Breite, Uhrzeit und Datum, Neigung des Geländes).

Standort, Uhrzeit und Alter des Mannes im Mond gehen den Joystick 
überhaupt nichts an. Damit wird nur die Geschwindigkeit einer 
Relativbewegung gesteuert.

von Rolf M. (rmagnus)


Lesenswert?

Hp M. schrieb:
> Ausserdem ergibt das keine lineare Kennlinie.

Es ist auch gut möglich, dass die Potis logarithmisch sind. In analogen 
PC-Joysticks wurden die damals auch oft verwendet, weil sie billiger 
sind. Das Einlesen passierte beim Joystick-Port durch Aufladen eines C 
mit folgender Entladung über den Widerstand des Potis, wobei die 
Entladedauer gemessen wurde. Anschließend wurde dieser Wert auf sehr 
einfache Weise in Software auf den richtigen Bereich umgerechnet. Das 
ist natürlich alles andere als linear und präzise, reicht aber für 
Spiele in der Regel völlig aus.
Das wird bei diesem Telespiel vermutlich ähnlich sein.

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

Hans I. schrieb:
> Ich hab mir schon gedacht dass eine Hardware Kalibrierung nur schwer
> machbar ist. Bei einem Videospiel ist das auch kein Problem wenn ich
> nach dem Einschalten erst alle 4 Ecken anfahren muss.
> Wenn ich aber damit z.B. Stellmotoren eines Teleskops steuern will ist
> das nicht so toll wenn sich das Teil beim Kalibrieren mitbewegt. Aber da
> ich ja nur diesen einen Kreuzknüppel habe reicht ja eine Kalibrierung
> aus. Die Werte lassen sich ja speichern und beim nächsten einschalten
> direkt abrufen. Das sollte klappen.

Und die Anschaffung eines neuen Kreuzknüppels kommt nicht in Betracht? 
Gerade wenn man ihn für ein Teleskop nutzen will? Es muss ein 
Uralt-Tele-Spiel Controller sein?

von Peter D. (peda)


Lesenswert?

Auf den Gaming Karten war meines Wissens ein LM339 (4 Komparatoren) 
verbaut.
Mit 4 Kondensatoren hat er dann die 4 Potistellungen in eine Zeit 
umgesetzt, die dann im Programm gemessen wurde.

von Axel S. (a-za-z0-9)


Lesenswert?

Hp M. schrieb:
> Trotzdem würde ich dieses Teil nicht mehr verwenden.
> Die alten Potis könnten Kontaktschwierigkeiten haben, und falls eines
> kaputt geht, wird es schwer Ersatz zu bekommen.

Das ist bei neuen nicht anders. Eher schlechter, weil noch mehr auf 
geplante Obsoleszenz getrimmt.

> Vor allem ist die Beschaltung als Widerstand ein echtes Problem, weil
> die Widerstandswerte nicht gleich sind und abhängig von Temperatur,
> Alter, Feuchtigkeit und sonst noch was sind. Ausserdem ergibt das keine
> lineare Kennlinie.

Das war in den 80er Jahren kein Problem. Warum sollte es das jetzt sein? 
Außerdem wird man wohl kaum die Absolutposition des Steuerknüppels 
direkt auf die Ausrichtung des Teleskops mappen. Man wird nur die 
Verfahrgeschwindigkeit in 2 Achsen halbwegs feinfühlig steuern. Mit 
einen großen Totbereich um die Nullstellung.

: Bearbeitet durch User
von Hans I. (obiwahn)


Lesenswert?

Um nochmal auf die letzten Beiträge zu antworten.
Ich bin einfach nicht so der Konsum-Typ. Mein Hobby lebt vom 
Ausschlachten alter Geräte.
Warum also neu kaufen wenn die alten Sachen noch zu gebrauchen sind. Mir 
gefällt das Teil irgendwie. Kreuzknüppel mit 2 Tastern in einem schönen 
Gehäuse ist doch perfekt.
Ok, die Potis darin musste ich aufbiegen um die Kohlebahn und den 
Schleifer mit n Lederstäbchen zu reinigen. Funktioniert jetzt wieder 
super. Die haben auch 3 Anschlüsse von denen allerdings nur 2 benutzt 
wurden. In dem Anschlusskabel sind allerdings noch 2 Adern frei. Lässt 
sich also problemlos anders verkabeln. Und Linear sind sie auch.
Ich werd einfach mal sehen wie weit ich damit komme. Die Umrechnerei der 
Position schreckt mich grad noch etwas ab weil ich meist in Assembler 
programmiere. Das wird wohl auf Division mit Kommastellen und runden 
hinauslaufen. Hab ich noch nie gebraucht.
Aber ich bin ja noch jung (grad in Rente). Hab also noch viel Zeit :)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hans I. schrieb:
> Die haben auch 3 Anschlüsse von denen allerdings nur 2 benutzt wurden.
> Und Linear sind sie auch.
Wenn du nur 2 der Anschlüsse benutzt und dazu einen Pullup, wird die 
Übertragungskennlinie nichtlinear.

> Die Umrechnerei der Position schreckt mich grad noch etwas ab weil ich
> meist in Assembler programmiere. Das wird wohl auf Division mit
> Kommastellen und runden hinauslaufen.
Ein Tipp: eine Division durch eine Konstante lässt sich leicht in eine 
Multiplikation umformen.
Für die AVR und eine Multiplikation jenseits der generischen 8 Bit gibt 
es die Appnote AVR201.

> Hab also noch viel Zeit :)
Auf C umsteigen wäre da doch eine nette Aufgabe.

: Bearbeitet durch Moderator
von Udo S. (urschmitt)


Lesenswert?

Lothar M. schrieb:
>> Hab also noch viel Zeit :)
> Auf C umsteigen wäre da doch eine nette Aufgabe.

+1
Man muss sich das Leben nicht künstlich schwer machen.

Hans I. schrieb:
> Ich bin einfach nicht so der Konsum-Typ. Mein Hobby lebt vom
> Ausschlachten alter Geräte.
> Warum also neu kaufen wenn die alten Sachen noch zu gebrauchen sind. Mir
> gefällt das Teil irgendwie. Kreuzknüppel mit 2 Tastern in einem schönen
> Gehäuse ist doch perfekt.

Das ist völlig verständlich.
Die Vorschläge einen neuen Poti zu benutzen kommen aus der Überlegung:

Der ausgeschlachtete hat einen nicht definierten Verschleißgrad.
Wenn du ein neues Gerät damit baust, und der Kreuzpoti erweist sich als 
unrettbar defekt (Widerstandsbahn verschlissen) dann wirst du ggf. 
schwerlich einen identischen Ersatz finden und dein Gerät umbauen 
müssen.

Da dir das aber bewusst zu sein scheint viel Erfolg.

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

Lothar M. schrieb:
>> Die Umrechnerei der Position schreckt mich grad noch etwas ab weil ich
>> meist in Assembler programmiere. Das wird wohl auf Division mit
>> Kommastellen und runden hinauslaufen.
> Ein Tipp: eine Division durch eine Konstante lässt sich leicht in eine
> Multiplikation umformen.

Genau. Wenn man beispielsweise durch 5,7 teilen müsste, einfach mit 45 
multiplizieren und das Ergebnis um 8 Bit nach rechts schieben. Das ist 
hinreichend nah dran.

von Hans I. (obiwahn)


Lesenswert?

An Lothar
Ich hatte ja geschrieben das in dem Anschlusskabel noch 2 unbenutzte 
Drähte drin sind. Die werde ich benutzen um alle 3 Poti-Anschlüsse zu 
nutzen.

Was das Dividieren in Assembler angeht hab ich mal das Internet befragt 
und einige gute Seiten gefunden wo das beschrieben ist. Sogar auf 
Deutsch, was mir sehr entgegen kommt.

Und zum Thema „C“. Da hab ich mich vor 2-3 Jahren mal eingearbeitet und 
auch 2 Projekte in C verwirklicht. Dann hab ich aber ein halbes Jahr 
lang gar nichts gemacht. Als ich dann mal wieder was Programmieren 
wollte stand ich da wie ein Ochs vorm Berg. Ich hatte den ganzen (Und 
ich weiß, ihr werdet mich alle dafür hassen) kryptischen Humbug wieder 
total vergessen und habs wieder in Assembler gemacht. Meiner Meinung 
nach ist  C  eher was für Leute die oft und viel programmieren. Meine 
kleinen Programme sind meist weniger als 2KB lang. Das kann man noch gut 
in Assembler realisieren. Und das find ich deutlich einfacher als in C. 
Keine Datentypen, keine Typumwandlung, keine make-files.
In Assembler bin ich Herr und Meister über den Controller :).  Ich weiß 
genau wozu jedes einzelne Bit benutzt wird. An dem Code wird weder 
irgendwas weg optimiert noch dazu gedichtet. Und die Sprache ist so 
einfach das ich auch nach einem halben Jahr nichts tun sofort wieder 
loslegen kann.

Statt dessen würde ich mich lieber mit VHDL beschäftigen. Wenn ich FPGAs 
programmieren könnte würde das die Schaltungen wohl deutlich verkleinern 
und die Layouts vereinfachen.
Ich habs auch schon mal versucht. Leider hab ich die Xilinx Software mit 
meinem Test -Board nicht ans laufen gekriegt. Lag wohl daran das die 30 
verschiedene Versionen anbieten und ich keine Lust hatte die alle durch 
zu probieren.

An Udo
Ich denke das Teil wird noch lange seinen Dienst tun da es ja deutlich 
weniger beansprucht wird als beim Spiele zocken. Außerdem sind da 
handelsübliche Potis drin verbaut die sich relativ problemlos 
austauschen lassen. Müsste ich dann nur wieder 1 mal neu kalibrieren.

von Rainer W. (rawi)


Lesenswert?

Hans I. schrieb:
> Das wird wohl auf Division mit Kommastellen und runden
> hinauslaufen. Hab ich noch nie gebraucht.

Nein, du brauchst Festkommaarithmetik.

Eine Division wird einfach, wenn es sich um glatte 2er-Potenzen handelt, 
so dass daraus im Assembler eine Shift-Operation wird. Das Komma kennt 
nur derjenige, der die Daten interpretiert, aber in der Rechnung taucht 
es nicht auf.

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