6-Achsen Roboter (Schrittmotoren)

Guten Tag Zusammen

Ich habe mich nun ein bisschen in die Materie von Arduino eingelesen und habe nun die ein oder anderer Frage.

Ich stelle hier kurz meinen Roboter vor und das Problem das ich momentan habe.

Den Roboter habe ich als Lehr-Abschlussprojekt entwickelt und einen Prototyp mit Steuerung erstellt. Das ganze wurde im CAD(Autodesk Inventor) gezeichnet und anschliessend mit dem 3D-Drucker ausgedruckt, ein wenig nach bearbeitet und zusammen Montiert. Die Steuerung basiert auf den Interface von Velleman(K8055) und Schrittmotorentreiber von Pololu. Das Interface wurde nur aus dem Grund genommen da wir mit diesem unsere ersten Programierkenntnisse von Visual-Basic in die Realität umgesetzt haben. Das Problem ist aber das dieses Interface über USB(USB ist nicht Industrietauglich) angesteuert wird und für meine Bedürfnisse viel zu langsam ist. Ich brauche daher eine Lösung die mir eine Frequenz mit der Periodendauer von 2.5 Mikrosekunden erzeugen kann.

Hier mal einige Fotos und einen Link zu einem Video in welchem man sieht das der Roboter sich extrem langsam bewegt was ich ändern möchte.

Video: Dropbox - Error

Ich habe nun einige Board's angeschaut und fand das Arduino ADK sehr interessant. Das Problem das ich bei einem Mikrocontroller für mein Projekt habe ist, das ich keine Oberfläche am PC habe mit der ich den Roboter steuern kann. Damit meine ich vor allem das ich keine XYZ-Koordinaten eingeben kann und ich keine Möglichkeit sehe verschiedene Programmabläufe abzuspielen ohne den Mikrocontroller jedesmal neu zu Programmieren. Darum fände ich es sehr interessant den Roboter mit dem Smartphone zu steuern und soviel ich übersetzten konnte sollte dies mit diesem Board möglich sein oder sehe ich das Falsch? Wenn ja hat jemand Erfahrung mit diesem Board?

Ich bin auch offen für andere Lösungen damit ihr vielleicht eher begreift was ich mit der Oberfläche am PC meine auf dem Bild unten ist die Aktuelle Oberfläche in Visual Basic die bei der Lösung mit Arduino eben noch ersetzt werden müsste.

Falls es Fragen gibt her damit!!

Freundliche Grüsse Nils Anderer

USB ist nicht Industrietauglich

Was soll denn das heissen? Dein Roboter wäre in einer dreckigen Schwer-Industrie-Umgebung auch schlecht aufgehoben, also dürfte die Tauglichkeit in schwierigen Bedingungen eher nebensächlich sein.

Ich brauche daher eine Lösung die mir eine Frequenz mit der Periodendauer von 2.5 Mikrosekunden erzeugen kann.

Dafür brauchst Du aber keinen Microcontroller, ein simpler Frequenzgenerator erzeugt das auch. Ich gehe aber davon aus, dass Du auch weit mehr brauchst, als nur dieses Signal. Es wäre von Vorteil, wenn Du diese weiteren Voraussetzungen hier auch nennen würdest.

Ich habe nun einige Board's angeschaut und fand das Arduino ADK sehr interessant

Weshalb? Brauchst Du das USB-Host-Interface? Falls nicht, dürfte der Mega2560 (falls Du soviele Leitungen brauchst) oder ein UNO günstiger sein.

Damit meine ich vor allem das ich keine XYZ-Koordinaten eingeben kann und ich keine Möglichkeit sehe verschiedene Programmabläufe abzuspielen ohne den Mikrocontroller jedesmal neu zu Programmieren.

Auch ein Microcontroller kann so programmiert werden, dass er flexible Programme abarbeitet, Du kannst mit einem Display sogar ein User-Interface darstellen. Es ist aber auch möglich, dass Du weiterhin den PC zur Kontrolle benutzt und nur die entsprechenden Kommandos an den Microcontroller ausgibst.

Auch ich kann dich in der Hinsicht beruhigen, dass du auch mit einem Arduino den Roboter vom PC aus steuern kannst. Die Arduino IDE basiert auf processing und es lassen sich leicht grafische Benutzeroberflächen erstellen, über die du mit dem Arduino kommunizieren kannst. Das wäre wahrscheinlich deutlich einfacher und billiger (und leichter zu debuggen) als ein Interface mit einem Smartphone zu verwenden, gerade wenn du ein Anfänger bist. Dazu würde dann ein einfacheres Arduino (z. B. des Uno oder sogar ein Nano) auch reichen.

Also USB ist nicht Industrietauglich weil das Signal nicht immer sauber übertragen wird, das heisst wenn eine Frequenz generiert wird, übermittelt die USB Verbindung bei ca. jedem 50 Schritt kein Sauberen Impuls was heisst man verliert einen Schritt. (Mit dem Oszilloskop sieht man das schön...)

Mit einem Frequenzgenerator wäre das nicht möglich weil man dann nicht nur einen Schritt machen könnte da das Interface nur alle 2 Millisekunden schalten kann.

Ich brauche min. 12 Digitaleausgänge und würde über mehr auch nicht klagen denn ein Greifer und sonstige Funktionen im Zusammenhang mit dem Roboter zu steuern würde sicher Sinn machen.

Das mit der Benutzeroberfläche tönt spannend, jedoch finde ich über Google und der Suche oben links keine einfache Lösungen(Lösungsansätze) wie man einfach eine grafische Benutzeroberfläche erstellen kann. Wäre interessant wie du das gemeint hast und ob es irgendwo einen guten Thread oder Tutorial zu diesem Thema gibt.

Schau mal
Du kannst auch mit anderen Programmiersprachen (Visual Basic, etc...) die serielle Schnittstelle eines PCs anteuern!

Wenn du über die Schnittstelle nur Positionen anfahren musst (X,Y,Z), dann reicht auch eine langsamere, sicherere USB Verbindung.
Ein Arduino Uno hat 12 digitale Ausgänge und 6 Analogeingänge, die du aber auch als Digitalausgang einfach umkonfigurieren kannst - macht 18 Digitalpins!

Also USB ist nicht Industrietauglich weil das Signal nicht immer sauber übertragen wird, das heisst wenn eine Frequenz generiert wird, übermittelt die USB Verbindung bei ca. jedem 50 Schritt kein Sauberen Impuls was heisst man verliert einen Schritt. (Mit dem Oszilloskop sieht man das schön...)

Sorry, aber das ist Bullsh**t. Es mag ja sein, dass Dein spezifischer Setup dieses Problem hat, aber deswegen ist daran sicher nicht USB schuld. Über USB überträgt man auch keine Frequenzen, sondern Daten in Paketen mit einem seriellen Protokoll. Wenn Du mit Deinem Setup natürlich den USB komplett auslastest, kann es schon sein, dass die eine oder andere Message nicht oder nicht rechtzeitig ankommt. USB ist natürlich auch nicht echtzeit-tauglich (wenn man das so nennen darf), da es die dafür relevante Priorisierung nicht kennt. Es deswegen als industrie-untauglich zu klassifizieren ist in etwa so, wie wenn Du einen LKW als fahruntauglich markierst, weil er einen Wendekreis von mehr als 6 Metern hat.

Mit einem Frequenzgenerator wäre das nicht möglich weil man dann nicht nur einen Schritt machen könnte da das Interface nur alle 2 Millisekunden schalten kann.

Dieser Satz macht überhaupt keinen Sinn. Du hast bisher nur davon gesprochen, dass Du eine Frequenz haben musst. Meine Aussage bzgl. Frequenzgenerator war als Hinweis gedacht, dass Du nicht genügend Informationen geliefert hast, die uns eine Einschätzung der Situation ermöglichen würden.

Ich brauche min. 12 Digitaleausgänge und würde über mehr auch nicht klagen denn ein Greifer und sonstige Funktionen im Zusammenhang mit dem Roboter zu steuern würde sicher Sinn machen.

Nach meiner Einschätzung brauchst Du wahrscheinlich sogar 12 PWM-Ausgänge, da Du mit normalen Ausgängen Mühe haben wirst, Deine 400kHz zu erreichen.
Der UNO hat bereits 20 Digitalausgänge, allerdings sind nur 6 davon PWM-tauglich.

Wäre interessant wie du das gemeint hast und ob es irgendwo einen guten Thread oder Tutorial zu diesem Thema gibt.

Zum Beispiel mit dieser Bibliothek und den damit unterstützten Displays:
http://henningkarlsen.com/electronics/library.php?id=52
Natürlich darfst Du keine Windows-Oberfläche erwarten (so mit mehreren Fenstern und dergleichen), aber "grafische Benutzeroberfläche" ist ein sehr dehnbarer Begriff.

Ja wenn es nicht über das Arduino ide geht dann kann ich ja auch einfach über das bestehende Interface die Behfehle an den Arduino weitergeben und allenfals zurücklesen^^

Laut aussagen von einem Elektroingenieur der Firma Siemens ist USB nicht industrietauglich und darüber könnte man noch lange diskutieren aber ich suche eine Lösung für mein Problem.

Was die Steuerung können muss:

-Es muss eine Frequenz mit verschiedenen Periodendauer(>2 Mikrosekunden) generiert werden können bei der klar ist wieviele Perioden gemacht werden.
-Man braucht mindestens 12 Digitaleausgänge von denen 6 diese Frequenzen ausgeben müssen.
-Man braucht eine Anzeige mit der Ist-Position der 6 Achsen.
-Man muss in einem Editor oder dergleichen ein Programm schreiben können das dann im ''Hauptprogramm'' abgespielt werden kann.

Ja wenn es nicht über das Arduino ide geht dann kann ich ja auch einfach über das bestehende Interface die Behfehle an den Arduino weitergeben und allenfals zurücklesen^^

Ich habe keine Ahnung, worauf sich dieser Satz bezieht ("es"), somit kann ich auch keine sinnvolle Aussage daraus ziehen.

Laut aussagen von einem Elektroingenieur der Firma Siemens ist USB nicht industrietauglich und darüber könnte man noch lange diskutieren aber ich suche eine Lösung für mein Problem.

Sollte die Nennung von Siemens Eindruck machen? Eine solche Aussage zeugt nicht gerade von grossem Verständnis der Sache, sondern eher von einer gewissen Borniertheit. Ohne eine Definition was denn "industrietauglich" heissen soll, ist sie auch nichts wert. In der Computer-Industrie ist USB ein Standard und wird industrie-weit eingesetzt. Dass USB in gewissen rauhen Umgebungen nicht sinnvoll ist, streitet niemand ab, aber es deswegen aus jeder Anwendung ausserhalb des Büros zu verbannen ist engstirnig.

-Es muss eine Frequenz mit verschiedenen Periodendauer(>2 Mikrosekunden) generiert werden können bei der klar ist wieviele Perioden gemacht werden.
-Man braucht mindestens 12 Digitaleausgänge von denen 6 diese Frequenzen ausgeben müssen.
-Man braucht eine Anzeige mit der Ist-Position der 6 Achsen.
-Man muss in einem Editor oder dergleichen ein Programm schreiben können das dann im ''Hauptprogramm'' abgespielt werden kann.

Das sollte bereits mit einem UNO und einem 16x2-Display mit I2C-Ansteuerung machbar sein. Das "Programm" muss evtl. nach dem Editor noch "compiliert" werden, damit es nicht zuviel Speicher verbraucht und effizient abgearbeitet werden kann. Auf einem Arduino hast Du neben dem Programm-Flash (dort wird der compilierte Sketch gespeichert) und dem RAM (Arbeitsspeicher) auch noch ein EEPROM zur Verfügung, welches Dein "Programm" nicht-flüchtig speichern könnte. Die Updates könntest Du dann per USB (Seriell) einspielen.

Willst Du denn Deine Pololu-Treiber weiterhin verwenden? Falls ja, solltest Du einen Link zu diesem Produkt posten, damit wir überprüfen können, dass es mit dem Arduino auch zusammenarbeitet.