Arduino steuert paralleles FT Computing Interface 80er Jahre

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
lemkajen
Beiträge: 123
Registriert: 05 Sep 2011, 12:58
Wohnort: Rhede (NRW)

Arduino steuert paralleles FT Computing Interface 80er Jahre

Beitrag von lemkajen » 26 Jan 2014, 20:05

Moin, heute hatte ich mal wieder etwas Muße und habe mein Paralle-Interface-Projekt fortgesetzt.
Der Arduino (egal welcher Type!) kann jetzt - ohne weitere aktive Bauteile, ein altes Parallel-Interface ansteuern.
d.h. Hardwarevoraussetzung sind: 1x Arduino (bei mir ists eine UNO), 1x Parallel-Interface (PC/Apple/C64 - egal!)

Alle 4 Motorausgänge lassen sich jetzt in jeweils beide Richtungen steuern.
Alle 8 TasterEingänge lassen sich abfragen.
die Analog-Eingänge des Interfaces habe ich nicht berücksichtigt, da der verwendetet Arduino UNO 6 freie Analog-Eingänge mit wesentlich besserer Auflösung hat - da lassen sich natürlich auch Potentiometer / Fotowiderstände und ähnliches direkt anschliessen.

Die 80er-Jahre Elektronik (insbesondere Leistungsstufe LST) lässt sich an jeden freien Ausgang des Arduino anschliessen und direkt ansteuern (d.h. Magnetventile, Lampen, Motoren mit einer Drehrichtung und sogar LAUTSPRECHER!) sind darüber schaltbar.

Das Ankoppeln von Elektronik-Ausgängen (z.B. des Schwellwertschalters 80er Elektronik dürfte dank TTL / 5V Technik kein Problem geben, falls man noch z.B. Lichtschranken mit einstellbarer Empfindlichkeit andocken möchte.
In Planung ist noch das Kaskadieren mehrerer Interfaces (d.h. aneinanderhängen), um noch weitere Ausgäng und Eingänge zur Verfügung zu haben.

Ist irgendwie alles halb-Retro, aber schön - die Software ist mächtig, Arduinos gibts in verschiedenen Bauformen / Technologien, Zusatzhardware gibt's reichlich, Programmiersprachen von Grafisch - bis (fast) "C", es ist GÜNSTIG. (ich hatte noch 4 olle ungenutzte FT-Interfaces der alten Zeit - das macht dann schonmal 16 Motorausgänge + 32 Eingänge + das, was der Arduino noch so hergibt - mann kann ja schliesslich auch noch per I2C Ein und Ausgänge andocken.. Fotos: http://www.ftcommunity.de/categories.php?cat_id=2738 - OK, das sieht nach Chaos aus, aber funktioniert ;-)

8-)

Jens
----
Jens Lemkamp

bummtschick
Beiträge: 60
Registriert: 12 Jan 2014, 13:14

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von bummtschick » 27 Jan 2014, 09:52

Hallo Jens,

zwar lese ich seit Monaten mit, aber das ist mein erstes Posting jetzt. Dein Beitrag hat meine Neugier erweckt!

Ich schraube gerade an einem Roboterarm, der die FT-Robotik komplett umgeht und alles direkt mit Arduino steuert (Motoren, Pneumatik, fast 30 Taster). Das heißt, ein Arduino Mega 2560 mit zwei Adafruit Motor Shields, damit kann ich acht Motoren ansteuern und habe 50+ digitale Eingänge (und die üblichen analogen Eingänge wie beim UNO, aber die nutze ich derzeit nicht). Dazu in Kürze mehr, wenn ich mit dem Fotografieren und Zusammenschreiben weiter bin.

Bei Deinem Projekt frag ich mich, ob das parallele FT-Interface irgendwelche Vorteile bringt? Oder geht es vorrangig um das technische Interesse, das einfach zum Laufen zu kriegen? Mit einem Arduino Mega ist man nämlich pin-mäßig deutlich besser bedient. Und die Adafruit Motor Shields brauchen keine Arduino-Pins, sondern werden intern über I2C angesteuert und lassen sich fast beliebig stapeln. Bei vier Motoren pro Shield kann man theoretisch hunderte von Motoren mit einem Arduino ansteuern -- von der dann nötigen Stapelhöhe mal abgesehen. Und Preis/Leistung ist schwer zu schlagen.

Und übrigens, Arduino kann nicht nur "fast" C, sondern benutzt GCC intern. Das ist echtes C++. Man kann alles damit machen (Klassen, Vererbung, Templates), bis der Arduino voll ist. Arduino schaltet nur eine dünne Schicht vor die main()-Routine, so dass man als Einsteiger direkt setup() und loop() anfüllen kann.

Beste Grüße, bummtschick!

Friedrich
Beiträge: 39
Registriert: 17 Dez 2013, 17:23

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von Friedrich » 27 Jan 2014, 15:01

Hallo,

Du schreibst

"Die 80er-Jahre Elektronik (insbesondere Leistungsstufe LST) lässt sich an jeden freien Ausgang des Arduino anschliessen und direkt ansteuern (d.h. Magnetventile, Lampen, Motoren mit einer Drehrichtung und sogar LAUTSPRECHER!) sind darüber schaltbar."

Heißt dass jetzt, dass ein Motor direkt über die LST am Arduino hängt, oder braucht man um einen Motor ansteuern zu können das Interface?

Gruß
Friedrich

vleeuwen
Beiträge: 1564
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)
Kontaktdaten:

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von vleeuwen » 27 Jan 2014, 16:39

Nice to see that more people has discover that the old interface is a very good front end for a modern microcontroller.
The motor driver on the old parallel interface are very usable.

Benutzeravatar
schnaggels
Beiträge: 389
Registriert: 31 Okt 2010, 23:14
Wohnort: Kelkheim
Kontaktdaten:

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von schnaggels » 28 Jan 2014, 17:15

@Friedrich
Die alten LST Stufen gehen ohne Interface, spart dir also Motorshields :)

@Jens
Super Sache, gut wenn man da noch welche hat :)
Hast du den Sketch für den Arduino schon irgendwo hochgeladen?
Du hast ja sicher das ft Parallel Interface Protokoll umgesetzt um die Daten im richtigen Timing an das IF zu schicken?

Gruß,
Thomas

lemkajen
Beiträge: 123
Registriert: 05 Sep 2011, 12:58
Wohnort: Rhede (NRW)

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von lemkajen » 29 Jan 2014, 19:37

@all:
Ich hatte eben nun mal ein altes Interface (bzw. noch weitere 3) und wollte ohne viel Gelöt "schnell" mal Motoren Ansteuern - der Vorteil ist für mich, ich muss nichts großartig anschaffen (keine Motorshields für den Arduino)
Mit den Shields hat man den Vorteil, man könnte PWM fahren (also Geschwindikeiten steuern) - aber wie gesagt, Ziel war ganz klar, alte Hardware zu reanimieren.

Ausserdem hat das Interface ja die eingebaute "Tot-Mann-Schaltung" - d.h. wenn nach ca. 0,5 sec keine ausgabekommandos kommen oder kein Eingang gepollt wird, gehen alle Motoren erstmal aus.

Weiterhin wollte ich wissen, ob es geht - ich hatte vor Jahren sowas auch schonmal auf einem 80C32 Mikroprozessorboard von ELV programmiert.

Zur Software, ja, es gibt nen Sketch, der ist aber wüst zusammengeschrieben - nicht wirklich zu veröffentlichen. Ich arbeite aber an einer lesbaren Basis-Version, welche ich irgendwann mal hochschiebe - bitte Geduld. Es ist aber auch kein Hexenwerk, wenn man sich etwas mit dem Arduino und dem Semi-"C" beschäftigt, bekommt man das hin.
Es stekt ja kein wirklich schweres Timing dahinter, sondern reines Bit-Geschiebe (TTL-Schieberegister) - sind so wohl auch typische Grundlagen der Digitaltechnik - ist alles TTL/5V.. Wie gesagt, das Adaptieren an den Arduino benötigt wirklich keinerlei Pegelanpassung, Widerstände oder ähnliches..

Und ja, die Fischertechnik-LST läst sich auch direkt ansteuern (vom Arduino) - hier gilt genause 5V-TTL Ausgang des Arduino kann locker den LST ein/ausschalten, PWM ist auch machbar. Ebenso müsste sich natürlch der Ausgang der SWS anschliessen lassen an einen Eingang des Arduino - Pegel sollte kein Problem geben . .

Ansonsten werde ich über den Fortgang der Experimente weiter berichten, es gibt ein großes "Ziel" (seit Montag) - mehr wird jetzt nicht verraten .. . ;-)
----
Jens Lemkamp

lemkajen
Beiträge: 123
Registriert: 05 Sep 2011, 12:58
Wohnort: Rhede (NRW)

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von lemkajen » 29 Jan 2014, 19:45

bummtschick hat geschrieben:
Bei Deinem Projekt frag ich mich, ob das parallele FT-Interface irgendwelche Vorteile bringt? Oder geht es vorrangig um das technische Interesse, das einfach zum Laufen zu kriegen? Mit einem Arduino Mega ist man nämlich pin-mäßig deutlich besser bedient. Und die Adafruit Motor Shields brauchen keine Arduino-Pins, sondern werden intern über I2C angesteuert und lassen sich fast beliebig stapeln. Bei vier Motoren pro Shield kann man theoretisch hunderte von Motoren mit einem Arduino ansteuern -- von der dann nötigen Stapelhöhe mal abgesehen. Und Preis/Leistung ist schwer zu schlagen.

Und übrigens, Arduino kann nicht nur "fast" C, sondern benutzt GCC intern. Das ist echtes C++. Man kann alles damit machen (Klassen, Vererbung, Templates), bis der Arduino voll ist. Arduino schaltet nur eine dünne Schicht vor die main()-Routine, so dass man als Einsteiger direkt setup() und loop() anfüllen kann.
Günstiger bin ich (für mich) allemale, ich hatte den Arduino schon, und die Interfaces sind auch schon ewig vorhanden . d.h. einziger Invest waren die Freifeldplatine und ein paar Pfostenstecker!! - und Motorshields muss man halt kaufen ;-)
technische Vorteile des Interfaces sind die, das es fertig und ausgereift ist, incl. aller Anschlüsse (Stromversorgung, Motorausgang/Tastereingang) - und es kommt aus dem Waldachtal!!!! :-)))) und etwas "Retro" - Fieber, der Geruch der Elektronik ... und und und ...

an Sonsten hast Du natürlich technisch gesehen völlig recht! :idea: Aber es soll ja auch Leute geben, die lieber mit grauen Steinen bauen, als mit den Schwarzen. :mrgreen:
----
Jens Lemkamp

lemkajen
Beiträge: 123
Registriert: 05 Sep 2011, 12:58
Wohnort: Rhede (NRW)

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von lemkajen » 29 Jan 2014, 19:51

schnaggels hat geschrieben:@Friedrich
Die alten LST Stufen gehen ohne Interface, spart dir also Motorshields :)
Ja, fast. man ist halt auf eine Drehrichtung festgelegt, aber ich dachte da auch eher an Musik machen und natürlich E-Magnete, Relais, Lämpskes (Plattdeutsch für Lampen), kleine Laser und ähnliches Geraffel :-)
schnaggels hat geschrieben: @Jens
Super Sache, gut wenn man da noch welche hat :)
Hast du den Sketch für den Arduino schon irgendwo hochgeladen?
Du hast ja sicher das ft Parallel Interface Protokoll umgesetzt um die Daten im richtigen Timing an das IF zu schicken?

Gruß,
Thomas
Yupp, das läuft, ist aber nicht lesbar . ist ein "gewachsenes" Programm - inzwischen hängt das Bit-Geschiebe in einer Timer-Interrupt-Rotine. ich starte nur noch kleine Funktionen, um die Taster abzufragen bzw. Motoren anzuwerfen - und ich hab jetzt die Möglichkeit, per seriellem Terminal auch Komandos zum Starten der Motoren einzugeben.
In Kürze schieb ichs hoch, Problem ist wie immer : KEINE Zeit ;-)
----
Jens Lemkamp

vleeuwen
Beiträge: 1564
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)
Kontaktdaten:

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von vleeuwen » 29 Jan 2014, 22:32

In general spoken: the old parallelle fischertechnik interface can be use in combination with a lot of microcontroller boards.
For example:
-) Microchip and MikroElektronika are also offering some nice and cheap microcontroller board.
-) See also Elektor for some nice microcontroller and FPGA (Field Programmable Gate Array).
Zuletzt geändert von vleeuwen am 14 Mai 2015, 20:13, insgesamt 1-mal geändert.

bummtschick
Beiträge: 60
Registriert: 12 Jan 2014, 13:14

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von bummtschick » 30 Jan 2014, 21:57

datjens hat geschrieben: Günstiger bin ich (für mich) allemale, ich hatte den Arduino schon, und die Interfaces sind auch schon ewig vorhanden . d.h. einziger Invest waren die Freifeldplatine und ein paar Pfostenstecker!! - und Motorshields muss man halt kaufen ;-)
technische Vorteile des Interfaces sind die, das es fertig und ausgereift ist, incl. aller Anschlüsse (Stromversorgung, Motorausgang/Tastereingang) - und es kommt aus dem Waldachtal!!!! :-)))) und etwas "Retro" - Fieber, der Geruch der Elektronik ... und und und ...

an Sonsten hast Du natürlich technisch gesehen völlig recht! :idea: Aber es soll ja auch Leute geben, die lieber mit grauen Steinen bauen, als mit den Schwarzen. :mrgreen:
Hallo Jens, vielen Dank für die Erläuterung -- das ist natürlich ein sehr guter Grund. Ich wollte ihn nur verstehen! Ich habe in meinem Roboter auch ein 70er-Jahre-Relais verbaut, wegen Retro und so. Und graue Steine. :-)

lemkajen
Beiträge: 123
Registriert: 05 Sep 2011, 12:58
Wohnort: Rhede (NRW)

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von lemkajen » 31 Jan 2014, 16:23

schnaggels hat geschrieben: @Jens
Super Sache, gut wenn man da noch welche hat :)
Hast du den Sketch für den Arduino schon irgendwo hochgeladen?
Du hast ja sicher das ft Parallel Interface Protokoll umgesetzt um die Daten im richtigen Timing an das IF zu schicken?

Gruß,
Thomas
Tata!!
hier ein Link in meine Dropbox . die Zip-Datei enthält 3 Grundlegende Sketches ohne Schnick-Schnack:
-eingabe
-ausgabe
-ein und ausgabe
Ich habe alle Timer-Routinen und seriellen Funtionen rausgenommen, damit das Prinzip verständlich ist! :idea:

https://dl.dropboxusercontent.com/u/685 ... usgabe.zip

(PS irgendwie kann ich nichts in die FTC Datenbank uploaden, weder mit IE, Mozilla, Safari, weder vom PC noch vom Mac . - daher per Drop-Box!) :shock:

viel Erfolg!

Jens
----
Jens Lemkamp

Benutzeravatar
schnaggels
Beiträge: 389
Registriert: 31 Okt 2010, 23:14
Wohnort: Kelkheim
Kontaktdaten:

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von schnaggels » 09 Apr 2014, 14:48

Hi,

ich seh grad du hast jetzt 2 Interfaces am Start :)
https://ftcommunity.de/details.php?image_id=38532#col3

Gleich mal ne Frage dazu, geht da jedes alte Parallel Interface als Extension? Das wird ja intern auf die frei Pfostenleiste gesteckt, zumindest wenn es einen Flachstecker hat geht das mechanisch aber reicht das? Habe mal was gelesen das die zweiten Interfaces die Apple Variante sein müsste, mangels geignetem Interface habe ich das bisher leider nie testen (bzw. im Vergleich zum PC Interface durchmessen können)

Danke & Gruß,
Thomas

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von uffi » 10 Apr 2014, 08:21

Hallo Thomas,

ich habe das neuere Universal-Interface für den PC. Es steht nur darauf: "Fischertechnik-Interface". Ich meine es ist die FT-Nr. 30520. Dies geht auf jeden Fall am Erweiterungsport als zweites Interface.

Und im Netz findest Du Umbauten z.B. von der C64/VC20-Version zur PC-Version. Und damit müsste es ja dann für alle diese Interfaces gehen.

http://www.truesound.de/ftinterface/

http://www.ftcommunity.de/ftComputingFinis/topmann.htm

http://www.delphipraxis.net/98753-fisch ... ace-2.html

http://www.forum64.de/wbb3/board2-c64-a ... ce-am-c64/

Gruß, Dirk.

lemkajen
Beiträge: 123
Registriert: 05 Sep 2011, 12:58
Wohnort: Rhede (NRW)

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von lemkajen » 12 Apr 2014, 12:03

schnaggels hat geschrieben:Hi,

ich seh grad du hast jetzt 2 Interfaces am Start :)
https://ftcommunity.de/details.php?image_id=38532#col3

Gleich mal ne Frage dazu, geht da jedes alte Parallel Interface als Extension? Das wird ja intern auf die frei Pfostenleiste gesteckt, zumindest wenn es einen Flachstecker hat geht das mechanisch aber reicht das? Habe mal was gelesen das die zweiten Interfaces die Apple Variante sein müsste, mangels geignetem Interface habe ich das bisher leider nie testen (bzw. im Vergleich zum PC Interface durchmessen können)

Danke & Gruß,
Thomas
so wie ich das sehr, klappt das zumindest mit jedem Parallel / C64 Interface; durchgeschliffen werden ja eigentlich nur der clock und der Ausgang des jew shift-registers und load in und loadout zum nächsten interface . was die Apple IF betrifft, bin ich überfragt. meiner Meinung nach ist es NICHT erforderlich, als zweites ein Apple IF zu nehmen, bei mir funktioniert es jedenfalls mit zwei IBM-Versionen
Gruß
Jens
----
Jens Lemkamp

Benutzeravatar
schnaggels
Beiträge: 389
Registriert: 31 Okt 2010, 23:14
Wohnort: Kelkheim
Kontaktdaten:

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von schnaggels » 14 Apr 2014, 10:44

Danke, ich probier das mal dann einfach auch mal aus :)

Gruß,
Thomas

Benutzeravatar
Andre
Beiträge: 58
Registriert: 07 Mai 2015, 16:20
Wohnort: Schotten

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von Andre » 14 Mai 2015, 02:16

Ein wirklich interessanter Beitrag.

Knobloch bietet das ja auch in etwas anderer Form mit der Robo Connect Box an, so dass man die alten Interfaces damit weiter verwenden kann. Allerdings ohne Downloadmöglichkeit (also nicht autark) und ohne Slaveunterstützung.

Mein Gedankengang ist folgender:
- RoboPro ist zur Prozesssteuerung unschlagbar einfach. Ich würde es gerne verwenden.
- Ich habe ein 7,9 Zoll-Windowstablet mit 10h Akkulaufzeit, das ich kaum verwende. Ich könnte es auf den Modellen unterbringen
- Das Intelligent-Interface funktioniert per USB-Seriell mit Robo Pro am Tablet
- Ein Arduino nano kostet ca. 4€ inkl. Versand aus China...

Kann man mit Deinem Ansatz ggf. gegenüber dem PC ein Intelligent-Interface vortäuschen und mit USB am Tablet ebenfalls mit RoboPro steuern?

Ziel wäre es, dass der Arduino die serielle Kommunikation zum PC vornimmt, also die Schaltbefehle annimmt und die Inputs zurückliefert, genau wie es ein Intelligent-Interface im passiven Modus täte.
Das Universal-Interface würde aufgeschraubt und das Flachbandkabel entfernt (geht schadlos, man will die Antiquität ja nicht zerstören). Statt dessen verbindet man den Arduino mit den entsprechenden Pins an den Flachkabelanschluss. Der Arduino simmuliert nun das Intelligent-Interface an der USB-Schnittstelle (die am PC dann als Com-Schnittstelle erkannt wird) und steuert das Universal-Interface.

Der Vorteil gegenüber der Knobloch-Lösung wäre neben dem Preis, dass die Lösung extrem kompakt wäre und im Universal-Interface verschwände. Außerdem ist man viel flexibler, man könnte z.B. die Analogeingänge des Arduinos statt der des Universal-Interfaces verwenden (man müsste sie nur hinausführen, z.B. mit einem Zwischensteckadapter auf dem originalen Anschluss)

Der nächste Schritt wäre dann, alle I/Os alternativ auch über i2c-Befehle ansprechbar zu machen (statt USB). Ein TX - und hoffentlich bald auch der TXT - wären dann auch ohne PC-Verbindung in der Lage, in den RoboPro-Programmen die I/Os anzusprechen. Damit hätte man eine preiswerte "Extension" für den TX oder TXT.

Da die alten Interfaces im Gegensatz zu den Robo-Controllern (-/TX/TXT) keine einstellbare Spannung an den Motorausgängen haben, böte sich geradezu an, die Universals vorzugsweise für Lampen und Magneten zu verwenden (Magnetventile werden kniffelig, weil die 6V Ausgangsspannung der alten Interfaces zu knapp sind) - und natürlich für Schrittmotoren. Bei einer i2C-Steuerung böte sich also an, auch gleich eine Schrittmotoransteuerung als eigenes Kommando aufzunehmen, um die Ansteuerung durch RoboPro zu vereinfachen.

Sind halt nur einige Gedanken, weil ich nach fast 30 Jahren Pause wieder mit Fischertechnik angefangen habe (auf einem Flohmarkt einen Karton mit Fischertechnik für 20€ erstanden und danach auf eBay einige Glücksgriffe mit Konvoluten gehabt, vor allem den Inhalt von 4 alten Pneumatik-Kästen). Erst vorletztes Wochenende habe ich meine alte Fischertechnik auf dem Dachboden meines Zweitwohnsitzes wieder gefunden. Daher habe ich auch keinen TX - der TXT ist hardwaremäßig deutlich besser - und auch keinen TXT - der ist ja von der Firmware noch nicht reif. Durch die Konvolute habe ich aber zwei Universal-Interfaces, ein Intelligent-Interface und ein Robo (ohne TX) Interface. Natürlich habe ich auch schon Ideen für Modelle, so habe ich mir Magnetventile (Restposten bei Pollin für 2€/Stk) besorgt und habe eine Vakuumpumpe. Da soll mein erstes "Großmodell" ein CD/DVD/BluRay-Wechsler mit Vakuumsaugern, Rohlingwendestation (für Lightscribe), Plotter (für Beschriftungen mit CD-Markern) und Druckstation (Einlegen und Steuern des CD-Schlittens eines Canon-Druckers) werden. Ein oder zwei Interfaces werden wohl nicht reichen; bei Unterdruck muss ich jeden Sauger einzeln steuern (3 Sauger am Greifarm + 3 Sauger unterm Plottisch, damit die CD nicht verrutscht = 6 Sauger * 2 Magnetventile/Sauger = 12 Magnetventile!), dazu mehrere Motoren (u.a. Schrittmotoren aus alten 5 1/4-Zoll Diskettenlaufwerken - man schmeist sowas ja nicht weg...). Mindestens 3 Interfaces werde ich wohl brauchen.

Natürlich könnte man das auch mit einem Arduino oder RasPi steuern; "Motorshields" braucht man nicht unbedingt, statt eines echten, aufsteckbaren Shields tuts auch eine gesondert anzuschließende H-Bridge für 2,50€. Aber irgendwie finde ich RoboPro für die graphische Ablaufdokumentation so klasse...

lemkajen
Beiträge: 123
Registriert: 05 Sep 2011, 12:58
Wohnort: Rhede (NRW)

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von lemkajen » 14 Mai 2015, 09:05

Moin,
natürlich geht soetwas - theoretisch und wenn man genug Zeit hat!
Wobei der Teil, den ich aufgestellt habe, nämlich das Interface anzusteuern, sicherlich der einfachere Part der ganzen Geschichte ist.
Ich wünsch Dir viel Erfolg bei Deinem Neueinstieg in die FT-Welt!
beste Grüße
Jens
----
Jens Lemkamp

Benutzeravatar
Andre
Beiträge: 58
Registriert: 07 Mai 2015, 16:20
Wohnort: Schotten

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von Andre » 14 Mai 2015, 14:00

Wiedereinstieg, nicht Neueinstieg. Ganz habe ich noch nicht alles vergessen :-)

Ich meine, der i2c-Teil dürfte der einfachste Part sein, der Arduino hat hierzu eine Library, die man nur einbinden und eine Slaveadresse setzen muss. Der kniffeligere Part ist daher von Dir schon erledigt, nämlich die Kommmunikation mit dem FT-Universal-Interface. Im Prinzip geht es ja nur noch darum, bei eingehend Read-Kommandos die Eingänge auszulesen und zurückzuliefern und bei Write-Kommandos die Ausgänge zu setzen.
Das dürfte an einem Tag zu schaffen sein. Bei mir scheiterts am fehlenden RoboTX, wie gesagt, werde ich mir jetzt keinen mehr kaufen, sondern warten, dass der TXT i2c bekommt und dann den nehmen.

Im Prinzip bleibt es bei dem bestehenden Programm, zwei Kommandos zum Initialisieren der i2c-Verbindung kommen an den Anfang und in der Hauptprogrammschleife wird gefragt, ob ein Kommando anliegt. Im einfachsten Fall wird schlicht bei Write das empfangene Byte 1:1 mit den vorhandenen Routinen an das Interface gegeben bzw. bei Read das Byte an den Eingängen zurückgeliefert. Also ca. 10 Zeilen Code, den man ergänzen müsste. Das Ansprechen in RoboPro über wäre dann aber komplex, weil man die Bit-Operationen dort definieren müsste. Besser wären gleich Kommandos im Datenbyte nach dem Muster:
0001 0001 Ausgang 1 setzen
0001 0000 Ausgang 1 löschen
0010 0001 Ausgang 2 setzen
0010 0000 Ausgang 2 löschen
0011 0001 Ausgang 3 setzen
0011 0000 Ausgang 3 löschen
... (Bis Ausgang 8)
1001 0000 Motor 1 stop
1001 0001 Motor 1 links
1001 0010 Motor 1 rechts
...
1101 0000 Schrittmotor 1 initialisieren
1101 0001 Schrittmotor 1 links (einen Schritt)
1101 0010 Schrittmotor 1 rechts (einen Schritt)
(alles unter der SUB-Adresse #0, alternativ kann man natürlich für jeden Ausgang und Eingang eine eigene Subadresse nehmen - aber irgendwie scheint mir es einfacher, nur das Datenbyte auswerten zu müssen)

Man bräuchte dan nur if-then-mäßig das Datenbyte auszuwerten und die Variable, die das an den Controller zu sendende Byte enthält, entsprechend zu manipulieren (für Ausgang 1 an also OR mit 00000001, für aus AND mit 11111110, für Analogmotor 1 entsprechend erst AND 11111100 und dann OR 00000010 für links oder OR 00000001 für rechts. Beim Stepper initialisieren das entsprechende Quadruppel setzen und bei links bzw. rechts eine Bitrotation durchführen).
Im Prinzip geradezu trivial und auch auf einen eigenen Arduino mit H-Bridges übertragbar (dort setzt man dann die Ausgänge des Arduinos direkt).
Unter Subadresse #01 könnte man dann die noch freien Ein- und Ausgänge des Arduino ansprechen (z.B. für Analogwerte lesen oder PWM-Ausgang (den man dann mit der alten FT-Leistungsstufe verstärkt) setzen).
Über i2c kann man eine Robo TX-Extension bei vorhandenem Altinterface also für 4-5€ realisieren. Arduino Mini oder Micro klebt man sinniger Weise mit etwas Heißkleber auf einen 20-pol Blachbandkabelstecker (ohne Kabel drin), den man auf den Expansion-Anschluss im Universal-Interface klebt. Das vorhandene Anschlusskabel des Universals nimmt man raus (ist in einem Quetschverbinder gepresst, der im Board eingelötet wurde) und quetscht ein buntes Flachbandkabel ein, dessen Adern man aufdröselt und direkt an den Arduino lötet. Hat den Vorteil, reversibel zu sein (man kann das Originalkabel bei Wunsch wieder anquetschen) und die bunten Adern sorgen beim Bau dafür, dass man nicht versehentlich Adern verwechselt.
Ein 8-pol Flachbandkabel versieht man mit einer Quetschwanne (oder zweien auf einem Kabel, um weitere i2c-Geräte anschließen zu können) und lötet die andere Seite am Arduino passend zu i2c-Belegung. Man kann auch noch eine 10- oder mehr-polige Wanne mit Flachbandkabel rausführen, an denen man unbenutzte Ein-/Ausgänge des Arduinos für Erweiterungen bereit stellt.

Kniffelig - da muss ich Dir recht geben - ist die Idee, das Intelligent-Interface nachzubilden. Die wird wahrscheinlich an der Zeit (und zumindest bei mir am Wissen und Können) scheitern. Ob das aber überhaupt noch sinnvoll ist, wenn man einen TX (oder, wenns endlich mit i2c klappt, den TXT) hat, ist eine andere Frage. Denn durch die Erweiterbarkeit mit i2c und komplette Steuerbarkeit des Programmablaufs mit RoboPro über i2c-Befehle - auch autark mit geladenem Programm - braucht man bei TX (und später auch TXT) ja gar keine direkte Ansprechbarkeit der Extension durch RoboPro mehr. RoboPro steuert nur den TX(T) und weist ihn an, die i2c-Geräte zu steuern. Einzig eine eigene Library (mit passenden Symbolen) wäre dann noch wünschenswert. Der Wunsch nach Inteligent-Interface-Emulationwar mir eigentlich eher wegen noch nicht vorhandemen TX/TXT gekommen...

Die Idde, gleich komplexere Schrittmotorunterroutinen einzubauen, dürfte technisch kniffelig sein, weil ein Arduino kein Multithreading kann. Selbst wenn die Steuerung eines Motors an sich kein Problem wäre - die parallele Kommunikation gleichzeitig aufrecht zu erhalten, dürfte nicht ohne vertiefende Kenntnisse gehen. Natürlich nur, wenn man mehr als einen Schritt in ein Kommando packen möchte, ein Schritt zur Zeit (Kommandos "Schritt nach links, Schritt nach rechts und natürlich Initialice Schrittmoror, um die Bitanfangskonfiguration an dem Motorportpaar zu schaffen) dürfte relativ einfach sein.

Andererseits ist beim Preis eines Arduino Micros/Nanos die Frage natürlich, ob man für Schrittmotoren nicht einfach Leistungstreiber (3,50€ mit Versand aus China für eine leitungsfähige H-Bridge) und Arduino in ein gesondertes Bateriegehäuse packt und als eigenständige i2c-Erweiterung betreibt. Quasi als eigene i2c-Schrittmotorsteuerung mit umfangreicherem Befehlssatz (man könnte Beschleunigung/Verzögerung etc. einbauen) für einen Schrittmotor. Das wäre dann aber ein gesondetes "Spezialteil".

Hoffentlich kommt bald i2c für den TXT, damit ich rumexperimentieren kann...


Edit:
Ich habe gerade festgestellt, dass auf Github schon vor 10 Monaten jemand "fishduino" veröffentlicht hat. Dies simuliert ein Intelligent Interface und spricht das Universal-Interface an. Das Hauptprogramm sieht ungefähr so aus, wie ich dachte (einfach Byte auslesen bzw. Zurücksenden, wenn der Befehlscode kommt), mit der Besonderheit der Unterstützung für Analogeingänge und Extension-Interface.
Nimmt man statt der seriellen Schnittstelle den i2c-Port, hätte man bereits eine Extension für den TX; allerdings würde ich da doch eher den Weg übers Ansprechen einzelner Ein- und Ausgänge statt blockweiser Übertragung gehen. Zwar bedeutet das mehr Traffic auf dem i2c.Bus, jedoch eine viel bequemere Einbindung in eigene Programme.

Benutzeravatar
schnaggels
Beiträge: 389
Registriert: 31 Okt 2010, 23:14
Wohnort: Kelkheim
Kontaktdaten:

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von schnaggels » 15 Mai 2015, 10:35

Hab mal den Link gesucht:
https://github.com/jacgoudsmit/Fishduino

@lemkajen
Dachte erst das wäre dein Arduino Code Jens, scheint aber von Jac Goudsmit zu sein.
Konntest du den inzwischen schon irgendwo hochladen?

Gruß,
Thomas

Benutzeravatar
Andre
Beiträge: 58
Registriert: 07 Mai 2015, 16:20
Wohnort: Schotten

Re: Arduino steuert paralleles FT Computing Interface 80er J

Beitrag von Andre » 16 Mai 2015, 01:58

fishduino habe ich jetzt ausprobiert, leider läuft es bei mir nicht richtig :-(

Robo Pro erkennt den Arduino als Intelligent Interface, man kann auch die Motorausgänge erfolgreich im Interface-Test ansprechen und setzen. Die Anzeige für die Eingänge spinnt aber und scheint sich in einem undefinierbaren Zustand zu befinden. Verkabelung habe ich schon mehrfach geprüft, die ist definitiv in Ordnung. Auch das Interface ist nicht die Ursache, ich habe noch ein zweites mit gleichem Verhalten getestet. Arduinos habe ich auch drei verschiedene probiert (von nano bis mega)

Der Dropbox-Link weiter oben geht leider nicht mehr (ist auch über ein Jahr alt), besteht die Möglichkeit, dass die Version noch mal geuploaded wird? Ein Vergleich könnte mir die Suche nach der Ursache etwas erleichtern.

Antworten