ich habe lange im Internet und auch hier im Forum nach einer Lösung für mein Vorhaben gesucht doch leider ohne Erfolg.
Ich möchte mehrere Schrittmotoren mit einem Arduino (Mega, Due, Nano, Uno...) per Dir / Setp Ansteuern.
Man kann sich das so vorstellen z.B. 4 Schrittmotoren:
Einen Arduino mit 4 Schrittmitorentstufen verdrahten.
Die Befehle wie z.B. Position, Geschwindigkeit, Beschleunigung und Verzögerung über SPI oder I²C
von einer anderen Plattform (Raspberry Pi oder ein anderen Arduino) an den Arduino senden,
um die Schrittmotoren zu verfahren.
Ist sowas überhaupt möglich?
Also zusammen gefasst: Ich möchte Schrittmotoren an einem Arduino über SPI oder I²C ansteuern.
Hat denn jemand Erfahrung mit sowas?
Kann man überhaupt diese Befehle über SPI oder I²C zum ansteuern von Schrittmotorn senden?
Hintergrund ist: Ich nutze den Raspberry Pi als SPS. Diese kann SPI und I²C. Somit möchte ich den Arduino als Schnittstelle zwischen SPS und Schrittmotorentstufen einsetzten.
Möchte nur wissen ob jemand sowas schon gemacht hat und ob das in dieser Form überhaupt möglich ist.
Stehe noch am Anfang meines Vorhabens und versuche Infos zusammen zu tragen bevor ich dann loslege.
Und da ich im Netzt nicht viel gefunden habe, dachte ich mir ich frag mal die experten hier im Forum.
Digit-22:
Also zusammen gefasst: Ich möchte Schrittmotoren an einem Arduino über SPI oder I²C ansteuern.
Hat denn jemand Erfahrung mit sowas?
Kann man überhaupt diese Befehle über SPI oder I²C zum ansteuern von Schrittmotorn senden?
Was spricht gegen eine serielle Schnittstelle ? Für eine Punkt zu Punkt Verbindung ist die ziemlich problemlos. Das habe ich zumindest für meine MobaTools schon gemacht ( zum Testen ). Im Prinzip kannst Du sämtliche Methoden über die Schnittstelle steuern. Ein für deine Zwecke geeignetes Protokoll musst Du dir sowieso noch ausdenken.
4 Stepper sollten normalerweise auch noch kein allzu großes Problem sein. Welche Stepraten willst Du denn erreichen?
P.S. auf dem Due laufen die MobaTools noch nicht. Auf den AVR-basierten ( Mega, Uno Leonardo ... ) schon.
vielen Dank für die Antworten. Ich habe auch schon an einer Seriellen Verbindung gedacht. Z.B. USB. Da könnte man gegebenenfalls Marlin oder GRBL einsetzten. Leider beides was die Achsen Anzahl angeht sehr begrenzt. Deswegen hatte ich an einer Schnittstelle gedacht, wo ich das Protokoll selbst festlegen kann...
Die 4 Schrittmotoren die ich oben genannt habe ist ja nur ein Beispiel. Wenn ich z.B. eine kleine Automatisierungsaufgabe habe, habe ich in der Regel mehr als 4 Achsen. Und da wäre es cool wenn es keine starke Einschränkungen was die Anzahl der Achsen angeht hätte.
@MicroBahner MobaTools sieht sehr interessant aus. Ich schau mich da mal um und teste mal die Beispiele.
vielen Dank für die Antworten. Ich habe auch schon an einer Seriellen Verbindung gedacht. Z.B. USB. Da könnte man gegebenenfalls Marlin oder GRBL einsetzten. Leider beides was die Achsen Anzahl angeht sehr begrenzt. Deswegen hatte ich an einer Schnittstelle gedacht, wo ich das Protokoll selbst festlegen kann...
Hmmmm...
Das hört sich ja so an, als würde über die Serielle/USB nur Marlin oder/oder GRBL gehen....
Wie kommst du auf die lustige Idee, dass man der Seriellen kein eigenes Protokoll aufdrücken kann?
Ich sehe da kein Problem!
Den Arduino an den Raspberry dran, über einen USB Hub, und fertig ist die serielle Verbindung.
Selbst ein brauchbares Protokoll ist einfach, bzw. gibts halb vorgekaut.
z.B. der CmdMessenger
Der Raspberry hat auch einen stinknormalen UART ( /dev/tty ). Den kann man direkt mit dem Arduino verbinden. Am besten einen mit einer freien HW-seriellen ( Mega/Leonardo/Micro/Due ).
Oder über USB und dann auch gleich den Programmupload über den Raspi
@combie: Das hab ich doch nie behauptet. Marlin und GRBL waren ja nur ein Beispiel. Mann muss ja nicht das Rad neu erfinden wenn es doch schon vorhanden ist...
@MicroBahner: Ja UART wäe auch eine Möglichkeit. Daran hab ich garnicht gedacht.
@uwefed: Hängt von der Aufgabe ab. Aber nehmen wir mal an ich hätte die Aufgabe eine kleine Automatisierungsstraße aufzubauen, dann könnten es schon mal 10 Achsen werden. Die müssten zwar nicht alle Synchron arbeiten aber ein paar davon sicher. Z.B. wenn es noch eine Pic&Place Aufgabe gibt...
Ja nicht unbedingt Industrie. Eine "kleine" Automatisierungsstraße kann überall eingesetzt werden. Z.B. um eigene Projekte zu realisieren, wenn man ein Produkt entwickelt und ein Prototypen bauen möchte, für Lehrzwecke an Technischen Schulen... Also sehr viele Anwendungen.
Das ganze soll möglichst günstig sein und so wenig wie möglich Industriekomponenten beinhalten. CAN Bus, Modbus und weitere Feldbusse wäre schon cool aber so einfach nun auch nicht zu realisieren. Dafür benötigt man wiederum Industriekomponenten wie Servoregler, Servomotoren... Ziel ist defiitiv Schrittmotoren einzusetzten.
Vielleicht habe ich einfach zu wenig Informationen in meine Fragenstellung reingepackt.
Hier mal eine kleine Erweiterung:
Also einen Rapberry Pi kann man als SPS nutzen in dem man eine CODESYS SoftSPS (Runtime Lizenz) auf den Pi installiert. Damit ist man dann in der Lage, den Pi als vollwertige SPS mit diversen I/Os zu nutzen.
Der Pi bekommt die kompette Steuerungsaufgabe. Alle Abläufe, Funktionen, Überwachungen finden im Pi statt.
Da man aber an den I/Os vom Pi nicht direkt eine Schrittmotorsteuerung z.B. TB6600 oder pololu a4988 anschließen kann, kommt nun der Arduino ins Spiel. Dieser soll dann einfach als Schnittstelle zwischen SPS und Schrittmotorsteuerung dienen.
Der Abstand zwischen SPS und Arduino wird weniger als 20mm. Daher auch der Gedanke SPI oder I²C.
Versuche erst mal 10 Schrittmotore an einem Arduino zu betreiben.
Wenn das klappt, kannst du die Kommunikation immer noch aufbauen und testen ob sie dir nicht zu doll ins Timing spuckt.
10 Schrittmotore mit einem Arduino zu steuern ist schon eine Hausnummer.
Um welche Stepraten geht es denn? Davon hängt ab, ob Du da überhaupt eine Chance hast.
Wenn das klappt, kannst du die Kommunikation immer noch aufbauen und testen ob sie dir nicht zu doll ins Timing spuckt.
Das ist ein sehr guter Einwand. Das müsste ich mal genauer betrachten.
10 Schrittmotore mit einem Arduino zu steuern ist schon eine Hausnummer.
Das ist absplut korrekt. Es muss aber nicht zwangsläufig alles nur von einem Arduino übernommen werden. Man könnte z.b. mehrere Arduinos einsetzen die sich die Aufgaben teilen...
Es Gibt Projekte wo 6 Schrittmotoren (6 Achs Robot-Arm) an einem Mega betrieben werden. Zusätzlich noch ein paar RC Servos, Relais und diverse Endschalter...
Um welche Stepraten geht es denn? Davon hängt ab, ob Du da überhaupt eine Chance hast.
Müsste ich mir nochmal durch den Kopf gehen lassen. Aber ein sehr wichtiger Punkt.