Matlab auf einem Raspberry Pi? Halte ich für ausgeschlossen. Lasse mich aber gerne eines Besseren belehren.
Druckbare Version
Matlab auf einem Raspberry Pi? Halte ich für ausgeschlossen. Lasse mich aber gerne eines Besseren belehren.
Auch möglich, so gut kenne ich mich mit matlab nicht aus. Hab mal ein bischen google bemüht und scheint wohl nur ein I/O device zu sein. Aber auch etwas interesantes gefunden, das es evtl möglich wäre, c-code auf matlab zu erzeugen und diesen dann auf dem Pi auszuführen. Aber wie gesagt, kenne mich damit nicht gut genug aus.
Vielen Dank erstmal für die zahlreichen Antworten und Vorschläge. Die von mir vorgeschlagene Steuerung unterstützt natürlich nur 50kHz - das hatte ich bei meiner Antwort nicht beachtet. Da es sich jedoch nicht um eine zentnerschwere CNC Fräse handelt halte ich es nicht für ganz ausgeschlossen, dass die Schrittmotoren auch mit sehr hohen Frequenzen bewegt werden können. Der Vergleich mit dem zweiarmigen Delta-Roboter trifft es schon ziemlich gut. Der Aktionsradius wird sich allerdings auf wenige mm^2 beschränken und zwecks ruhigerem Lauf hatte ich an Mikrostepping (1/16 Schritte) gedacht. Bei einer Auflösung der Aktuaren von beispielsweise 0.005mm im Vollschritt komme ich also auf 3200 Schritte/mm im 1/16-Schritt. Bei 50kHz könnte ich somit eine Geschwindigkeit von ca. 16mm/sek fahren. Das halte ich bei sehr kleinen bewegten Massen und den dadurch geringen Beschleunigungs- und Trägheitskräften für machbar. Allerdings habe ich da keinerlei Erfahrungswerte auf die ich zurückgreifen kann - berichtigt mich also gern, falls das aus irgendwelchen Gründen eher nicht im Bereich des Möglichen liegen sollte.
Viel wichtiger war mir jedoch die Eigentliche Frage, wie ich die Signale für die Motoren erzeugen kann. Hier scheint mir tatsächlich die beste Lösung der Vorschlag mit dem Mikrocontroller zur Berechnung der inversen Kinematik zu sein. Ich habe mir den Arduino jetzt mal ein bisschen genauer angeschaut. Da gibt es ja durchaus Varianten, welche entsprechend hohe Taktraten haben. Ausserdem scheint es recht einfach zu sein Displays, externe Schalter, evtl. sogar zusätzlichen Speicher sowie eine PC-unabhängige Stromversorgung zwecks stand-alone Betrieb anzuschliessen. Im Internet finden sich dazu reihenweise Tutorials und Beispielcode - es sollte also eigentlich kein Problem sein, sich da einzuarbeiten.
Ich danke euch für die schnelle Hilfe!
Piattu
Das ist absolut machbar, abgesehen davon kannst du immernoch auf 1/8 umschalten und hast dann die doppelte Verfahrensgeschwindigkeit oder sparst Speicher.
Ich würde es übrigens so umsetzen:
Pro gewünschter Bewegung würde ich ein Array mit n Zellen erstellen, wobei n die Anzahl der maximal möglichen Step signale darstellt, also zb bei 3s wäre das Array 3s*50000Hz=150000.
in jede Zelle kommt ein byte, du hast also 8 bit frei für die 6 Dir/step Signale. Von matlab lässt du dir berechnen wann welche Achse sich in welche Richtung bewegen soll und dass im 1/50kHz=0,02ms Takt
Jetzt programmierst du auf deinem Atmega/arduino einen Timer der alle 0,02ms aufgerufen wird, dir dein Byte an einen Port ausgibt und die lauf variable vom Array um 1 erhöht. Dass wars dann eigentlich schon ;)
Längere Bewegungsabläufe musst du dann natürlich auf eine SD-karte auslagern oder du besorgst dir einen µC mit genügend großem Flash-speicher
MfG Urs