Steuerung "Quickshot Robot Arm" mit XL

1, 2, 3

Re: Steuerung "Quickshot Robot Arm" mit XL

von GoodByteXL » Fr 3. Apr 2009, 09:28
des-or-mad hat geschrieben:Naja, ich kenne den QuickShot Robot Arm und muss sagen, dass es mehr oder weniger ein Spielzeug ist. Es enthält keinerlei Sensoren, Endschalter oder Schrittmotoren. Es werden lediglich einfache Motoren ein-/ ausgeschaltet. Die Plasikmechanik ist außerdem auch sehr ungenau.


Wenn es nur Motoren (Gleichstrom?) sind, kann man die simple Schaltung aus dem Bauplan 12 in der Bauplanbibliothek dafür hernehmen.

Download für Mitglieder frei.

Hatten wir mal vor ca. 20 Jahren benutzt, um ein ähnliches Teil und andere mit einem 8-Kanal-Relaisinterface zu steuern. Geht ganz einfach in BASIC.

Re: Steuerung "Quickshot Robot Arm" mit XL

von skriegel » Mi 22. Apr 2009, 15:50
GoodByteXL hat geschrieben:Wenn es nur Motoren (Gleichstrom?) sind, kann man die simple Schaltung aus dem Bauplan 12 in der Bauplanbibliothek dafür hernehmen.


Hossa, jetzt sehe ich das erst. Bauplan 12 enthält tatsächlich exakt, was ich brauche. HardwareDoc hat mir das auf der NOMAM auch schon erklärt, damit sollte ich es ans Laufen bekommen.

Allerdings verstehe ich die Programmierung nicht komplett:
Was genau macht POKE 54018,48 und was 54018,52?

Re: Steuerung "Quickshot Robot Arm" mit XL

von Rockford » Mi 22. Apr 2009, 19:27
skriegel hat geschrieben:
GoodByteXL hat geschrieben:Wenn es nur Motoren (Gleichstrom?) sind, kann man die simple Schaltung aus dem Bauplan 12 in der Bauplanbibliothek dafür hernehmen.


Hossa, jetzt sehe ich das erst. Bauplan 12 enthält tatsächlich exakt, was ich brauche. HardwareDoc hat mir das auf der NOMAM auch schon erklärt, damit sollte ich es ans Laufen bekommen.

Allerdings verstehe ich die Programmierung nicht komplett:
Was genau macht POKE 54018,48 und was 54018,52?


Hab mal nachgesehen:
Poke 54018,52: Schaltet an Port A zwischen Daten- und Richtungsregister hin und her (Setzt Bit 2). Wenn gesetzt, ist Port A als Datenregister geschaltet.
Poke 54018,48: Nimmt das oben gesetzte wieder zurück. Der Wert 48 ergibt sich, weil Bit 4 und 5 immer den Wert 1 haben.

Gruss, Holger

Re: Steuerung "Quickshot Robot Arm" mit XL

von skriegel » Mi 22. Apr 2009, 19:37
Rockford hat geschrieben:
skriegel hat geschrieben:Poke 54018,52: Schaltet an Port A zwischen Daten- und Richtungsregister hin und her (Setzt Bit 2). Wenn gesetzt, ist Port A als Datenregister geschaltet.
Poke 54018,48: Nimmt das oben gesetzte wieder zurück. Der Wert 48 ergibt sich, weil Bit 4 und 5 immer den Wert 1 haben.

Gruss, Holger


Was ist nun ein "Datenregister" und was ein "Richtungsregister"?
Oder einfach: Was muss ich denn nun tun, um Signale raus zu geben?

Irgendwie kommen mir alle bisher gefundenen Beschreibungen unnötig kompliziert vor. Ich will doch einfach nur ein Signal rausschicken. :?

von Rockford » Mi 22. Apr 2009, 20:05
War von mir jetzt aber auch saublöd beschrieben.
Register 54018 ist das Kontrollregister vom Port A.

Wenn ich es nun richtig lese, kannst Du, wenn Du mit 54018,54 das Bit gesetzt hast, Werte über die Pins von Port A rausschicken (Register 54016).

Müsste so aussehen:

Poke 54018,54 ##Setzen Bit 2 = Daten rausschicken

und z.B.

Poke 54016,1 um Bit 1 zu setzen. Damit wird ein Signal an dem Pin rausgeschickt, an dem sonst abgefragt wird, ob Joystick 1 nach vorne gedrückt wurde.


Wenn Du das altehrwürdige Happy Computer Sonderheft 20 hast, kannst Du das dort etwas genauer in den dort veröffentlichten Hardwareprogrammierunterlagen nachlesen.

Zumindest kannst Du es nun mal probieren.

Gruss, Holger

von skriegel » Mi 22. Apr 2009, 23:17
Das klappt vorn und hinten nicht, bin wohl einfach zu blöd dafür.

Wenn ich nur die Drähte nehme, schaffe ich es durchaus, da mal 5V drauf zu legen. Zwar recht zufällig, aber es klappt. Sobald ich aber die entsprechende Leitung an den Optokoppler klemme, kommen nur noch 1V an.

Brauche ich überhaupt Optokoppler und Relais? Das klappt alles nicht und ich weiß ja nicht, wo ich da nun den Fehler suchen soll.

Kann mir mal jemand haarklein erklären, wie ich die Schaltung aufbaue? Also welches Kabel wohin am Optokoppler und am Relais, woher Masse, woher Strom?

Wie gesagt: Statt Roboter will ich momentan zu Testzwecken erst einmal eine LED zum leuchten bringen. Dafür habe noch einmal extra 5V.

Bin auch für andere Lösungen offen, Hauptsache der Kram funktioniert irgendwie.

von skriegel » Do 23. Apr 2009, 09:06
Jetzt habe ich noch einmal in Ruhe die Leitungen des Joyport nachgemessen und festgestellt, dass sich da rein gar nichts tut. Wenn ich den Atari einschalte liegen 5V auf den Datenleitungen. Und das bleibt auch so, egal was ich eingebe.
Reicht aber dennoch nicht für meine Schaltung, denn sobald ich eine Datenleitung an die Anode des Optokopplers löte, kommt da nur noch 1V an.
Verstehe ich alles nicht.

von tuxie » Do 23. Apr 2009, 09:44
MAch doch mal eine Skizze wie du es beschalten hast und welchen Opto du genommen hast.

Re: Steuerung "Quickshot Robot Arm" mit XL

von tfhh » Do 23. Apr 2009, 09:45
Moin Moin,
skriegel hat geschrieben:Allerdings verstehe ich die Programmierung nicht komplett:
Was genau macht POKE 54018,48 und was 54018,52?

Mit diesem Register wird, wie schon hier erwähnt, die "Richtung" des Ports A der PIA bestimmt.

Normalerweise sind die 8 Bits des Port A auf "Eingang" geschaltet und auf der Platine Pull-Up Widerstände gegen +5 Volt. Deswegen wird auch "15" (vier gesetzte Bits) bei der Joystickabfrage STICK(x) geliefert, wenn kein Joystick eingesteckt ist oder dieser in neutraler Stellung steht. Beim Bewegen wird ein Schluß gegen Masse hergestellt und das entsprechende Bit auf 0 gesetzt.

Mit dem genannten POKE (ich habe jetzt keine Literatur zum Gegenprüfen, aber es wird stimmen) programmierst Du den Port A von PIA auf Ausgang. Durch Einschreiben eines gewünschten Bytes in das Datenregister zu Port A (müßte 54016 sein - bitte mal nachschauen), kannst Du gewünschte Bits auf 1 setzen (+5 Volt) oder auf 0 (0 Volt). Die Bits 0-3 sind für Joystickport 1, Bits 4-7 für Joystickport 2.

Am besten Du schaust mal in das Profibuch etc., dort werden hinten im Adress-Teil das Register usw. erklärt.

Gruß, Jürgen

von eda70 » Do 23. Apr 2009, 09:52
Umschalten im 54018
Daten über 54016
im XL

hast du dir das mal im Bauplanshop angesehen?
B170 Ein- und Ausgabe über Joy-, Parallelport

von skriegel » Do 23. Apr 2009, 11:17
eda70 hat geschrieben:Umschalten im 54018
Daten über 54016


Wie gesagt: Es hat keinen Effekt. Ich habe mir auf Walters Tipp hin BP12 angesehen, da sind auch kleine Listings dabei welche eine Ausgabe erzeugen sollen. Aber es klappt eben nicht. Und ich habe das nun an 3 verschiedenen Rechnern getestet.

hast du dir das mal im Bauplanshop angesehen?
B170 Ein- und Ausgabe über Joy-, Parallelport


Ja, habe ich mir gerade angesehen, und es hilft mir leider überhaupt nicht.

von eda70 » Do 23. Apr 2009, 12:08
skriegel hat geschrieben:Ja, habe ich mir gerade angesehen, und es hilft mir leider überhaupt nicht.

Schade, dann musst du wohl genau (be)schreiben was du machst...

von tfhh » Do 23. Apr 2009, 12:49
Moin nochmal,
skriegel hat geschrieben:
eda70 hat geschrieben:Umschalten im 54018
Daten über 54016


Wie gesagt: Es hat keinen Effekt. Ich habe mir auf Walters Tipp hin BP12 angesehen, da sind auch kleine Listings dabei welche eine Ausgabe erzeugen sollen. Aber es klappt eben nicht. Und ich habe das nun an 3 verschiedenen Rechnern getestet.

Was natürlich noch fehlte, war der POKE für die Programmierung, welches Bit von Port A Eingang oder Ausgang sein soll.

Also:

POKE 54018,48 ; Bit 2 des Control-Registers löschen --> "Befehl" zum Programmieren des Datenrichtungsregisters
POKE 54016,X ; siehe unten
POKE 54018,52 ; Programmierung PIA beenden

für X mußt Du die binären Werte der gewünschten Bits einsetzen. Soll das gewünschte Bit als Ausgang sein, ist hier logisch 1 einzusetzen, soll es als Eingang funktionieren, logisch 0.

Beispiele:
X=240 ; Joystickport 1 ist Eingang, Joystickport 2 Ausgang
X=255 ; Joystickport 1 ist Ausgang, Joystickport 2 Ausgang
X=15 ; Joystickport 1 ist Ausgang, Joystickport 2 Eingang
X=0 ; Joystickport 1 ist Eingang, Joystickport 2 Eingang

Gruß, Jürgen

von skriegel » Do 23. Apr 2009, 12:53
eda70 hat geschrieben:
skriegel hat geschrieben:Ja, habe ich mir gerade angesehen, und es hilft mir leider überhaupt nicht.

Schade, dann musst du wohl genau (be)schreiben was du machst...


Habe ich doch. Wobei ich doch schon extra auf die allerunterste Stufe runter gegangen bin und erst einmal überhaupt die Datenleitungen nachvollziehbar ansteuern will:

skriegel hat geschrieben:Jetzt habe ich noch einmal in Ruhe die Leitungen des Joyport nachgemessen und festgestellt, dass sich da rein gar nichts tut. Wenn ich den Atari einschalte liegen 5V auf den Datenleitungen. Und das bleibt auch so, egal was ich eingebe.
Reicht aber dennoch nicht für meine Schaltung, denn sobald ich eine Datenleitung an die Anode des Optokopplers löte, kommt da nur noch 1V an.
Verstehe ich alles nicht.


Benutzt habe ich u.a. die Listings vom BP12. Also immer wieder 54018 und 54016.

Die Schaltung dahinter ist zunächst uninteressant, die kann ich ohne Computer nur mit Strom ansteuern.

von eda70 » Do 23. Apr 2009, 13:41
Hm, das verstehe ich nicht.
Wenn ich das Bit in 54016 auf Dateninputsetzte, habe ich HI,
da über den Joystick die Leitung bei geschlossenem Schalter auf LOW geht.
Wenn ich das Bit in 54016 auf Datenoutput setzte, haben ich doch wieder HI - nur mehr strom.
Oder sehe ich das falsch.
Dann stellt sich die Frage, wie man über den Port schreiben kann?
Nur über die Veränderung der Stromstärke?

von dl7ukk » Do 23. Apr 2009, 16:38
Hi,
eda70 hat geschrieben:Dann stellt sich die Frage, wie man über den Port schreiben kann?
Nur über die Veränderung der Stromstärke?



Jein,

Ist der Port oder besser Pin oder Kanal auf Eingabe, dann muss (!!!) er hochohmig (+5V) sein. Er wird ja (zB) durch den Joystick gegen Masse auf +0V gezogen.

Ist der Port oder besser Pin oder Kanal auf Ausgabe,

* dann kann er +5V haben (HI oder log 1) und muss natürlich auch ein bischen Strom liefern können, damit bei "Belastung der Pegel auch bleibt. (ein TTL Ausgang kann bis ca 10 TTL Eingänge steuern)

oder

* er kann +0V habe (Lo oder Log 0), dann muss er natürlich auch ein wenig Strom "verkraften" um den anderen Eingang auf 0V zu "ziehen", (wenige mA)

es geht natürlich auch genau anders herrum, aber das hängt von den verwendeten Logic-IC/ Technoligen ab (PNP NPN NMOS CMOS usw. usf. Das Prinzip geht aber so.

von eda70 » Do 23. Apr 2009, 16:48
dl7ukk hat geschrieben:...oder
* er kann +0V habe (Lo oder Log 0)

Wenn er 1 oder 0 sein kann, dann braucht man ja noch ein Register, wo man 1 oder 0 setzt.
Welches wäre das?
54018 dient dazu, In oder Out von 54016 abhängig zu machen.
54016 dient dazu, In oder Out festzulegen.
wenn ich jetzt OUT festgelegt haben,
bräuchte ich noch ein register, dass den Output aufnimmt und auf die Leitungen bringt. Also von High nach Low oder von Low nach High schaltet....

Meine Theorie erklärt zumindest die Messergebnisse von Sascha
Immer 5V....
Meine Theroie wird m.E. auch von den Bauplänen gestützt.
Vorwiederstand und dann ein Transistor.
Am Vorwiederstand bleibt soviel Strom hängen, dass der Transitor zu bleibt, wenn der Pin auf In geschaltet ist. Wird der Pin auf Out geschaltet, erreicht der Strom die TRanse und er öffnen...
Alle Angaben ohne Gewähr, ich habe von Elektronik nur rudimentäre Kenntnisse....

von tfhh » Do 23. Apr 2009, 20:54
Moin,
eda70 hat geschrieben:
dl7ukk hat geschrieben:...oder
* er kann +0V habe (Lo oder Log 0)

Wenn er 1 oder 0 sein kann, dann braucht man ja noch ein Register, wo man 1 oder 0 setzt.
Welches wäre das?
54018 dient dazu, In oder Out von 54016 abhängig zu machen.
54016 dient dazu, In oder Out festzulegen.
wenn ich jetzt OUT festgelegt haben,
bräuchte ich noch ein register, dass den Output aufnimmt und auf die Leitungen bringt. Also von High nach Low oder von Low nach High schaltet....

Meine Theorie erklärt zumindest die Messergebnisse von Sascha
Immer 5V....
Meine Theroie wird m.E. auch von den Bauplänen gestützt.
Vorwiederstand und dann ein Transistor.
Am Vorwiederstand bleibt soviel Strom hängen, dass der Transitor zu bleibt, wenn der Pin auf In geschaltet ist. Wird der Pin auf Out geschaltet, erreicht der Strom die TRanse und er öffnen...
Alle Angaben ohne Gewähr, ich habe von Elektronik nur rudimentäre Kenntnisse....

Transistor & Co. sind nur erforderlich bzw. sinnvoll, wenn höhere Lasten angeschlossen werden oder auch als quasi "Sicherung". Für Experiemente empfiehlt es sich natürlich, entsprechende Vorkehrungen zu treffen.

Die PIA kann aber problem weitere TTL-Gatter oder -ICs ansteuern.

Zu den Pokes oben... 54016 ist dann natürlich auch das "OUT" Register! Was 54016 ist bzw. wie es reagiert, wird eben durch die Bits in 54018 geregelt.

Wird Bit 2 gelöscht, kann die Konfiguration durch Einschreibes eines Wertes in 54016 des Ports verändert werden. Solange Bit 2 gelöscht ist, ändert jeder Schreibzugriff auf 54016 die Konfig.

Durch anschließendes Setzen von Bit 2 wird 54016 wieder zum bidirektionalen Datenregister. Alle ab jetzt nach 54016 geschriebene Werte setzen entsprechende Bits, sofern sie als Ausgang definiert wurden, auf 1 oder 0.

Mein Beispiel von oben:

POKE 54018,48 ; Bit 2 des Control-Registers löschen --> "Befehl" zum Programmieren des Datenrichtungsregisters
POKE 54016,255 ; Alle 8 Datenleitungen auf Ausgang
POKE 54018,52 ; Programmierung PIA beenden

FOR I=0 TO 7:POKE 54016,2^I:FOR J=1 TO 1000:NEXT J:NEXT I

Hättest Du nun an jedem Ausgang eine LED, würden diese von rechts nach links :-) aufblinken.

Gruß, Jürgen

von eda70 » Fr 24. Apr 2009, 13:08
So wie du es schreibst klingt es plausibel.
Jetzt muss es bei Sascha nur noch klappen...

POKE 54018,48:POKE 54016,255:POKE 54018,52:POKE 54016,0
Sollte dann alle Leitungen aus (LOW) schalten...?

Re: Steuerung "Quickshot Robot Arm" mit XL

von eda70 » Fr 24. Apr 2009, 13:29
tfhh hat geschrieben:Normalerweise sind die 8 Bits des Port A auf "Eingang" geschaltet und auf der Platine Pull-Up Widerstände gegen +5 Volt.

Kann man die im Schaltplan sehen (ich seh sie nicht) oder geschieht das schon in der PIA?
1, 2, 3