Go Down

Topic: Arduino über SPI / I²C Schrittmotoren ansteuern (Read 278 times) previous topic - next topic

Digit-22

Dec 05, 2019, 03:04 pm Last Edit: Dec 05, 2019, 03:12 pm by Digit-22
Hallo zusammen,

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.

Vielen Dank im Voraus

LG
Digit-22

combie

#1
Dec 05, 2019, 03:10 pm Last Edit: Dec 05, 2019, 03:10 pm by combie
Wo ist dein Problem?

PS:
Ein Arduino ist nur bedingt als SPI Slave geeignet.

Also eher I2C oder RS485 oder CAN oder LIN
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

Digit-22


combie

Der Rasberry kann noch mehr!
z.B. USB, und damit auch viele andere Kommunikations Verfahren.


Quote
Wo ist dein Problem?
Wo?
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

Digit-22

Habe kein Problem ;) .

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.

LG
Digit-22

combie

Nahezu alle 3D-Drucker tun das so, oder so ähnlich.

Nahezu jeder Arduino Bastler überträgt Daten vom PC zum Arduino.
Hat das also schon gemacht.

Reicht dir die Antwort?
Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

agmue

- Ist sowas überhaupt möglich?
Arduino als Steuerung für 3D-Drucker geht, also ja. Die vierte Achse könnte kribbelig werden.

Hat denn jemand Erfahrung mit sowas?
Ich nicht, da kein RasPi vorhanden. I2C und CAN zwischen Arduinos ja, aber ohne Motorsteuerung.

Als Bibliothek AccelStepper oder MobaTools.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

MicroBahner

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.
Gruß, Franz-Peter

Digit-22

Hallo zusammen,

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.


LG
Digit-22

combie

Quote
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


Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

MicroBahner

#10
Dec 06, 2019, 03:56 pm Last Edit: Dec 06, 2019, 04:02 pm by MicroBahner
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 ;)
Gruß, Franz-Peter

uwefed

Wieviele Achsen willst Du gleichzeitig bzw synchron steuern?

Digit-22

Hallo zusammen,

vielen Dank für die zahlreichen Antworten.

@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...

LG
Digit-22

combie

#13
Dec 09, 2019, 12:00 pm Last Edit: Dec 09, 2019, 12:00 pm by combie
Quote
Aber nehmen wir mal an ich hätte die Aufgabe eine kleine Automatisierungsstraße aufzubauen,
Ach Industrie?

Das hört sich nach "viele Meter" an.
Und nach elektrisch dreckiger Umgebung.

Damit ist dann SPI, I2C, nacktes UART, aus dem Rennen.
RS485, CAN und LIN, bleiben im Spiel.

Also könnte wohl der Industriestandard Modbus das Mittel der Wahl sein.
Viele Aktoren haben die Modbus Schnittstelle eingebaut.

Selber einen Modbus fähigen Aktor zu bauen ist keine Raketentechnik

Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

Digit-22

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.


Hoffe die Infos reichen aus.


LG
Digit-22



Go Up