PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servo ansteuern mit einem Java-Programm: suche Hardware



Unregistriert
26.01.2014, 18:23
Hallo zusammen,

ich suche jetzt schon eine ganze Weile nach einer Hardware, die es mir ermöglicht, durch ein Java-Programm in Echtzeit zwei Servos und einen Taster anzusteuern. Weil ich über Google nichts hiflreiches finde, kommt mir der Verdacht auf, dass das aus irgendeinem Grund eine blöde Idee ist.
Kann mich jemand eines besseren belehren? Ich wäre sehr dankbar.

Geistesblitz
26.01.2014, 18:33
Wie wäre es mit einem Micro-Maestro-Board von Pololu (http://www.pololu.com/product/1350) oder Vergleichbares? Hab die 18-Kanal-Version da, das Ding emuliert einen COM-Port über die USB-Schnittstelle und ist daher eigentlich recht unkompliziert anzusteuern. Ich kenn Java zwar nicht besonders gut, aber denke schon, dass man damit serielle Ports ansprechen kann. Die Pins lassen sich auch als digitale I/O-Schnittstellen oder ADC verwenden, mehr dazu findest du in der Anleitung (http://www.pololu.com/docs/pdf/0J40/maestro.pdf).

Unregistriert
26.01.2014, 19:19
Das ist ja schonmal was. Ich glaube das hier ist die gleiche, nur mit 12 Ports? http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=87&products_id=223
Könnte ich generell jedes Controllerboard mit RS232 Schnittstelle verwenden und mittels eines USB-Adapters an den PC anschließen? Ich frage, weil ich gerne eine Alternative mit deutscher Dokumentation kaufen würde.

MagIO2
27.01.2014, 08:04
Um mit Java was über die serielle Schnittstelle zu machen brauchst Du noch RXTX. Von Hause aus kann Java das nicht.

USB 2 seriell Adapter stellen einfach einen virtuellen seriellen Port zur Verfügung. Musst halt darauf achten, ob deine Hardware wirklich RS232 ist, was bedeuted, dass die Level bei +-12V liegen. Die andere Möglichkeit ist, dass dein Controllerboard TTL Level nutzt (also 5V). Der USB 2 seriell Adapter muss halt dazu passen. Wenn ich mich recht erinnere gibt es auch welche die können beides.

White_Fox
27.01.2014, 14:19
ich suche jetzt schon eine ganze Weile nach einer Hardware, die es mir ermöglicht, durch ein Java-Programm in Echtzeit zwei Servos und einen Taster anzusteuern. Weil ich über Google nichts hiflreiches finde, kommt mir der Verdacht auf, dass das aus irgendeinem Grund eine blöde Idee ist.

Es könnte daran liegen, das Java nicht echtzeitfähig ist...zumindest nicht ohne gewisse Erweiterungen.
Die Frage ist dann, was für ein Betriebssystem du nutzt. Unter Windoof oder Linux sind Echtzeitanwendungen sowieso schwer zu realisieren. Wobei es für Linux aber eine entsprechende Distri gibt, die dafür ausgelegt ist...

Oder reicht dir mit Echtzeit, dass der Computer irgendwann mal auf ein Signal reagiert...? Dann ist das aber keine Echtzeit mehr.

MemoFear
27.01.2014, 17:39
Hier ist der Threadersteller, habe jetzt einen Account.
Ich will eine Eingabe machen und der Computer soll (fast) sofort mit einer Ausgabe reagieren. Ist das Echtzeit? Ich weiß es nicht, das möchte ich jedenfalls haben.
Ein Bekannter hat mich auf die Idee gebracht, ein Raspberry Pi zu kaufen. Einwände? Vom Preis mal abgesehen. Ansonsten nehme ich den Maestro Controller.

Die Servos müssen eine Last von 5kg drehen, die zum Teil 20cm neben der Drehachse angebracht ist. Das gibt jetzt natürlich nur eine ganz grobe Vorstellung. Gibt es Servos, die soetwas schnell drehen können?

BastelWastel
27.01.2014, 17:47
Das kommt wieder darauf an wie du "fast sofort" in Zeit definierst.
Aber auf Grund deiner Frage und der zu bewegenden Masse vermute ich dass du nicht wirklich nach einer "Echtzeitanwendung" im eigentlichem Sinn suchst?

MemoFear
27.01.2014, 17:56
Wenn man eine Eingabe macht, soll sich das Ding drehen. Ob das nach 14µs oder 100ms passiert, ist mir egal :D

Geistesblitz
27.01.2014, 20:24
Das hat nicht wirklich was mit Echtzeit zu tun, guck lieber nochmal nach, was mit Echtzeit gemeint ist. Jedenfalls sollte für deine Anwendung Java verwendbar sein.

5kg an 20cm Hebelarm macht ca. 10Nm, nur die wenigsten Servos schaffen das. Man könnte sie zwar mit einem zusätzlichen Getriebe betreiben, allerdings wärs dann nicht mehr schnell.

Ich erachte es als sinnvoll, mal deine Anwendung ein bisschen genauer zu beschreiben, vielleicht sind Servos ja auch gar nicht die beste Lösung dafür.

MemoFear
28.01.2014, 20:46
Deine Einschätzung reicht als grobe Linie. In einer ruhigen Minute werde ich das benötigte Drehmoment genauer bestimmen.
Das Gerät soll Bewegung im Raum mithilfe einer Webcam erkennen und sich auf deren Ursprung ausrichten. Es soll dabei schnell reagieren können. Das ist aber schon ein hochgestecktes Ziel, zunächst will ich die Steuerung manuell über ein Gamepad ermöglichen. Gesteuert werden zwei Achsen, eine zum schwenken und eine zum nicken.

Geistesblitz
28.01.2014, 21:21
Also quasi ein Pan-Tilt-Head. Sowas scheint ein gängiges Thema zu sein, auch hier im Forum gibts regelmäßig Threads dazu.
In dem Falle ist es am praktischsten, wenn der Servo keine Lasten heben muss, sondern nur das Objekt (zB. die Kamera) im Schwerpukt dreht, denn dann ist ein wesentlich geringeres Drehmoment notwendig, und das dann auch nur beim Drehvorgang selbst, nicht im Stillstand. Der Gier-Servo müsste eh keine Lasten heben, da seine Achse vertikal verläuft, lediglich beim Nick-Servo müsste man also darauf achten, dass die Achse möglichst durch den Schwerpunkt des Objektes verläuft.

BastelWastel
29.01.2014, 12:21
Sentry gun?

MemoFear
29.01.2014, 20:43
Sentry gun.

indeas
30.01.2014, 16:26
Der Zugriff auf Periphierie über serielle Schnittstellen ist in der Regel zäh, insbesondere dann wenn diese noch emuliert sind (USB oder andere virtuellen COM-Ports).
Schneller ist der direkte Zugriff auf LPT1. Für Java: http://www.oracle.com/technetwork/java/index-jsp-141752.html
Ich selber verwende Visual C# und nutze inpout32.dll für den Zugriff auf den Parallelport. Zykluszeiten im Bereich von <50ms sind damit recht gut realisierbar.
Wenn es noch schneller gehen soll, dann lagere ich den zeitkritischen Task auf eine externe "Stand-alone" HW mit µC aus. Diese HW tauscht mit dem PC nur Parameter aus. Da ist man dann fast beliebig schnell....