Forum: Mikrocontroller und Digitale Elektronik Computer für Stepper Motoren ansteuern (ohne SPS)


von Jonathan P. (jonathan_p)


Lesenswert?

Hallo zusammen!

Ich bin auf der Suche nach einem industrietauglichen Computer, mit dem 
ich Folgendes umsetzen kann:

Ich möchte eine mechanische Baugruppe, die ein Bauteil positioniert, 
durch einen Schrittmotor ersetzen. Für diesen Schrittmotor benötige ich 
einen kleinen PC, auf dem ich (bevorzugt via Python) die Logik und das 
Frontend programmieren kann. Es sollte also möglich sein, ein Touchpanel 
anzuschließen – oder idealerweise ist schon eins integriert.

Im besten Fall würde ich den Treiber der Schrittmotoren direkt vom PC 
aus ansteuern, ohne eine zusätzliche SPS zwischenschalten zu müssen (aus 
Platz- und Kostengründen).

Ich habe dazu mal einen Prototypen mit einem Raspberry Pi gebaut, aber 
der stößt aus mehreren Gründen an seine Grenzen. Zum einen benötigt der 
Treiber der Schrittmotoren idealerweise 20 V (mindestens aber 5 V), 
während die GPIOs des Raspberry Pi nur 3,3 V liefern. Zum anderen bin 
ich mir nicht sicher, ob die Ausgänge „schnell genug“ schalten, damit 
der Treiber ein korrektes Signal bekommt.

Trotz längerer Recherche bin ich nicht fündig geworden, ob es in diese 
Richtung etwas gibt – d. h.:

1.) ein kleiner, industrietauglicher PC mit integriertem Touchpanel 
(oder alternativ extern anschließbar),

2.) der PC muss nicht viel leisten, es geht hauptsächlich um ein GUI, in 
dem man ein paar Werte eingibt und die Steuerung starten bzw. stoppen 
kann,

3.) idealerweise ca. 10–20 digitale 20V-Ausgänge, mit denen ich die 
Signale an die Schrittmotor-Treiber ausgeben kann (Rest für Schalter 
etc.), ohne dass ich eine SPS benötige,

4.) preislich im Rahmen – muss kein Raspberry Pi sein, aber < 500–600 € 
wäre so das Budget.

Da ich mir vorstellen kann, dass ich nicht der Einzige bin, der eher 
eine „einfache“, kleine Anwendung hat und nicht gleich mit Kanonen auf 
Spatzen schießen will, dachte ich, ich frage mal hier, ob jemand Tipps 
hat – oder ob ich mir da vielleicht etwas vorstelle, das in der Praxis 
einfach nicht funktionieren kann.

Vielen Dank im Voraus!

von Rahul D. (rahul)


Lesenswert?

Ohne SPS funktioniert kein Schrittmotor in einem 3D-Drucker.
Auch gibt es keine professionellen Schrittmotortreiber, die man per 
Schnittstelle anstzeuern könnte.
CNC-Maschinen wurden auch noch nicht erfunden.

von Michael B. (laberkopp)


Lesenswert?

Jonathan P. schrieb:
> Im besten Fall würde ich den Treiber der Schrittmotoren direkt vom PC
> aus ansteuern,

Ein PC ist nicht (nur unter Klimmzügen) timingstabil genug dafür.

Daher gibt man Befehle zur Steuerung des einen Schrittmotor an eine 
externe Steuerung, die man sowieso braucht weil die Schrittmotoren ein 
kraftiges Interface brauchen.

So was ist vollig ublich, wenn man CNC Maschinen und 3d-Drucker steuern 
will  z.B. mit Mach3 oder Candle, und es gibt Platinen mit Treibern 
dafür, meist 3 oder 4 Achsen.

Die Steuersprache ist meist G-Code, ein Steuerspracheninterpreter GRBL.

Ja, Mach3 kann auch auf bestimmten PC das timing selber machen, aber 
z.B. nicht auf mobile Prozessoren mit variabler Taktrate.

von Walter T. (nicolas)


Lesenswert?

Jonathan P. schrieb:
> eher
> eine „einfache“, kleine Anwendung

Kommt halt auf die Dynamik an. Wenn die Positionierung nacheinander 
erfolgen darf, ist ein Arduino mit GRBL und eine Fernsteuerung per 
G-Code per Python-Skript eine einfach und schnell implementierbare 
Lösung.

Wenn die Ansprüche steigen, steigt der Aufwand.

von Rainer W. (rawi)


Lesenswert?

Jonathan P. schrieb:
> Zum einen benötigt der Treiber der Schrittmotoren idealerweise 20 V
> (mindestens aber 5 V), während die GPIOs des Raspberry Pi nur 3,3 V liefern.

Du vermischt Betriebsspannung mit Signalpegeln zur Steuerung. Vielleicht 
hast du auch einen ungeeigneten Treiber gesehen.
Die Schnittstelle der meisten Schrittmotortreiber ist auf 3.3V oder 
5V-Pegel ausgelegt.

Mit welcher Spannung und welchem Strom arbeiten deine Motoren oder bist 
du da noch frei in der Auswahl?

: Bearbeitet durch User
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Jonathan P. schrieb:

> 1.) ein kleiner, industrietauglicher PC mit integriertem Touchpanel
> (oder alternativ extern anschließbar),

Die gibt's wie Sand am Meer und jeder davon ist für das Frontend 
geeignet.

> 3.) idealerweise ca. 10–20 digitale 20V-Ausgänge, mit denen ich die
> Signale an die Schrittmotor-Treiber ausgeben kann (Rest für Schalter
> etc.), ohne dass ich eine SPS benötige

Das allerdings kannste vergessen. Für die Ansteuerung der Hardware 
brauchst du eine SPS oder eine Hardware, die vergleichbares wie eine SPS 
leisten kann. Also nimmst du am einfachsten eine fertige SPS.
Alles andere lohnt allenfalls, wenn du mindestens mittelgroße 
Stückzahlen deiner Lösung produzieren willst (Richtwert: so einige 
Hundert). Bei geringeren Stückzahlen ist der Entwicklungs- und 
Zertifizierungsaufwand viel zu groß.

> oder ob ich mir da vielleicht etwas vorstelle, das in der Praxis
> einfach nicht funktionieren kann.

Funktionieren tut das alles. Das Problem sind halt die Kosten. Fertige 
SPS sind einfach relativ teuer und eine Eigentwicklung ist für geringe 
Stückzahlen noch teuerer.

von Jonathan P. (jonathan_p)


Lesenswert?

Vielen Dank erstmal für das ganze Feedback!

Ein paar Infos noch die ich vergessen habe:
Das ist der Treiber des Stepper Motors
https://www.amazon.com/HBS860H-HBS86H-Closed-Two-Phase-Stepper/dp/B0DRCY4VNN
(Zumindest der, den ich mir jetzt zum Ausprobieren geholt habe)

Michael B. schrieb:
> Ein PC ist nicht (nur unter Klimmzügen) timingstabil genug dafür.

Ich hatte eben in diversen Foren gesehen, dass Leute diesen Treiber 
direkt mit z.B. einem Raspi ansteuern.
Intuitiv (aber das ist unter Umständen auch nicht viel wert) wundert es 
mich, dass ich nochmal einen "Computer" (SPS) zwischenschalten muss. 
Klar, andere Tasks des OS können dann in der Priorisierung mit den 
Befehlen an den Treiber in Konflikt kommen, aber ich hab gesehen, dass 
es eben spezielle Libraries gibt, die das Problem zumindest teilweise 
lösen.

Walter T. schrieb:
> Kommt halt auf die Dynamik an. Wenn die Positionierung nacheinander
> erfolgen darf, ist ein Arduino mit GRBL und eine Fernsteuerung per
> G-Code per Python-Skript eine einfach und schnell implementierbare
> Lösung.

Die Aufgabe des Steppers ist, eine bisher mechanische Vorschubeinheit zu 
ersetzen. Das wäre einfach: nachdem das Signal eines Sensors eingeht, 
ein Bauteil X mm zu verschieben.

Ob S. schrieb:
> Das allerdings kannste vergessen. Für die Ansteuerung der Hardware
> brauchst du eine SPS oder eine Hardware, die vergleichbares wie eine SPS
> leisten kann. Also nimmst du am einfachsten eine fertige SPS.
> Alles andere lohnt allenfalls, wenn du mindestens mittelgroße
> Stückzahlen deiner Lösung produzieren willst (Richtwert: so einige
> Hundert). Bei geringeren Stückzahlen ist der Entwicklungs- und
> Zertifizierungsaufwand viel zu groß.

Ja, es sind eher so 20 Einheiten im Jahr. Das Ganze ist natürlich 
hauptsächlich limitiert davon, dass jetzt das Ersetzen der mechanischen 
Einheit sich nicht allzu stark in den Kosten niederschlagen soll. Daher 
bin ich auch auf der Suche gewesen, das irgendwie möglichst 
kostengünstig umzusetzen.

Vielen Dank nochmal!

von Michael B. (laberkopp)


Lesenswert?

Jonathan P. schrieb:
> möglichst kostengünstig umzusetzen.

Jonathan P. schrieb:
> Das ist der Treiber des Stepper Motors

Ähmm.

Closed loop erfordert Encoder. Dann könnte man gleich einen Servomotor 
nehmen, wenn man sowieso einen Encoder braucht.

Jonathan P. schrieb:
> dass es eben spezielle Libraries gibt, die das Problem zumindest
> teilweise lösen.

Wenn dir ein teilweise funktionierendes Gerät reicht...

Im Prinzip sind deine Anforderungen nicht so hoch wie beispielsweise bei 
einer CNC. Die darf NIE Schritte verlieren, weil es sonst eine Scharte 
im Werkstück gibt, und die muss 3 Motoren streng zeitsynchron betreiben 
weil sonst die Form nicht stimmt.

Daher müssen Schrittmotore dort so kräftig ausgelegt sein, dass sie auch 
im ungünstigsten Moment alles schaffen, und das timing muss real time 
sein in Mikrosekunden.

Bei dir darf der Motor schwach ausgelegt werden, weil du Schrittverluste 
über den Encoder bemerken würdest, und du hast Zeit es erneut zu 
versuchen, z.B. langsamer oder ausserhalb einer Resonanz.

Auch ist ein rPi etwas zahmer als ein PC, aber auch rPi werden für 
Steuerungsaufgaben mit einem speziellen Kernel installiert, ohne 
Prozesse die das timing stören.

Aber alleine dein Treiber ist teurer als andere Leute für Motor, 
Treiber, Steuerung und Touchscreen zusammen ausgeben,

Na ja, je nach Anforderungen.

von Nemopuk (nemopuk)


Lesenswert?

Jonathan P. schrieb:
> Ich möchte eine mechanische Baugruppe, die ein Bauteil positioniert,
> durch einen Schrittmotor ersetzen.

Mit einem PC kannst du keine Motoren ansteuern, da er solche 
zeitkritischen Signale nicht erzeugen kann. Also kannst du dir dir Suche 
nach einem PC mit entsprechend vielen Ausgängen direkt sparen.

Schrittmotoren kann man fertig mit direkt dazu passender Steuerung 
kaufen, teilweise auch in den Motor integriert. Diese erhalten vom PC 
Kommandos, wie "drehe x Schritte nach rechts, beschleunige auf y, bremse 
z Schritte vor dem Ziel ab, melde wenn du dort angekommen bist". Die 
Kommunikation findet über einen seriellen Bus statt, den man über 
passende Adapter an jeden PC anhängen kann.

Dein Budget solltest du erheblich aufstocken, oder den Auftrag absagen.

Siehe https://www.dunkermotoren.de/ (um nur einen möglichen Lieferanten 
zu nennen)

: Bearbeitet durch User
von Roland P. (pram)


Lesenswert?

> Ein PC ist nicht (nur unter Klimmzügen) timingstabil genug dafür
> ...
> Mit einem PC kannst du keine Motoren ansteuern, da er solche zeitkritischen 
Signale nicht erzeugen kann.

Früher war das alles kein Problem. Meine ersten Schrittmotor-Basteleien 
hatte ich unter MS-DOS + TurboPascal + LPT Ports problemlos angesteuert.

Leider bringen moderne PCs weder das passende Betriebssystem, noch die 
passende Hardware noch mit.
Wahrscheinlich wirst du um einen kleinen Controller, der über USB 
angeschlossen ist, nicht herum kommen

von Nemopuk (nemopuk)


Lesenswert?

Roland P. schrieb:
> Früher war das alles kein Problem. Meine ersten Schrittmotor-Basteleien
> hatte ich unter MS-DOS + TurboPascal + LPT Ports problemlos angesteuert.

Früher lief auch nur dieses eine Programm auf dem PC. Heute sind es 
mehrere tausend.

von Christian M. (christian_m280)


Lesenswert?

Jonathan P. schrieb:
> Ich hatte eben in diversen Foren gesehen, dass Leute diesen Treiber
> direkt mit z.B. einem Raspi ansteuern.

Den willst Du ja nicht!

Jonathan P. schrieb:
> aber der stößt aus mehreren Gründen an seine Grenzen.

Gruss Chregu

von Jörg (lixtop)


Angehängte Dateien:

Lesenswert?

Entspricht das Bild hbs860h den Vorstellungen (Quelle : 
https://de.aliexpress.com/item/1005002093995741.html), dann sollte doch 
ein RP2040 / BluePill vollkommen reichen. Ein Raspberry PI hast Du ja, 
Klipper rauf, MCU flashen und ein Modul mit Python erstellen, fertig.

[Edit]
Optional mit CAN-BUS, falls USB nicht gewünscht.
https://www.amazon.de/AZDelivery-Hochgeschwindigkeits-Physische-Schicht-kompatibel-Standard/dp/B0CBKM37HD/ref=sr_1_2
[/Edit]

: Bearbeitet durch User
von Klaus S. (kseege)


Lesenswert?

Jonathan P. schrieb:
> Da ich mir vorstellen kann, dass ich nicht der Einzige bin, der eher
> eine „einfache“, kleine Anwendung hat und nicht gleich mit Kanonen auf
> Spatzen schießen will, dachte ich, ich frage mal hier, ob jemand Tipps
> hat – oder ob ich mir da vielleicht etwas vorstelle, das in der Praxis
> einfach nicht funktionieren kann.

Ein Schrittmotor von ACT mit Encoder und der zugehörige Treiber HBS86 
kosten bei Reichelt so um die 100 Euro, das Netzteil und der 
Referenztaster  dazu nochmal irgendwas um 100 Euro. Die Eingänge vom 
HBS86 sind optoentkoppelt und dementsprechend keine Spannungs-, sondern 
Stromeingänge mit den typischen 10mA. Die kann man mit dem billigsten 
Arduino Nano treiben, man muß den aber selber prorammieren oder sowas 
wie grbl benutzen. Ansonsten gibts die Motorcontroller von Emis für 100 
Euro, die bis 30kHz die Schrittmotoren mit ihren typischen maximal 1000 
U/Min ausreizen können. Die Beschleunigungsrampen sind allerdings 
unterirdisch schlecht, eine neuere Version mit besseren Rampen ist aber 
noch nicht fehlerfrei.

Zur Steuerung über USB oder USB/UART-Bridge nimmt man dann einen 
beliebigen PC für 300 Euro und Dein Preisrahmen ist eingehalten. 
Programmiersprache Python inclusive.

Just my 2 cents
Gruß Klaus (der soundsovielte)
P.S. Habe mehrere dieser Kombinationen im Einsatz, bei denen die SPS 
wegrationalisiert wurde, weil der PC wegen Bildverarbeitung ohnehin 
notwendig war.

von Thomas F. (igel)


Lesenswert?

Jonathan P. schrieb:
> Im besten Fall würde ich den Treiber der Schrittmotoren direkt vom PC
> aus ansteuern

Es gibt bei Ali Schrittmotoren mit RS485 oder CAN-Schnittstelle. Die 
kann man dann direkt an einen PC anschließen - Schnittstellenkarte 
vorausgesetzt.

Oder wenn es richtig professionell werden soll dann nimmt man gleich 
EtherCAT:

https://de.lichuanservomotor.com/2-phase-ethercat-nema23-nema34-stepper-driver-1.html

PCIe-Karte:
https://de.aliexpress.com/item/1005008586520449.html

von Rahul D. (rahul)


Lesenswert?

Thomas F. schrieb:
> Es gibt bei Ali Schrittmotoren mit RS485 oder CAN-Schnittstelle. Die
> kann man dann direkt an einen PC anschließen - Schnittstellenkarte
> vorausgesetzt.

Dafür braucht man aber nicht die zig-drölfzig geforderten Portpins...

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Wenn du beim Raspi bleiben willst, nimm doch einen RevPi. Den kannst du 
in Phyton programmieren und er braucht weniger Energie und Platz als ein 
normaler PC. Daran kannst du auch ein Display oder ein Touchpanel 
ansteuern. Dazu einen Schrittmotor-Controller mit Modbus- oder 
CAN-Schnittstelle [1], dann brauchst du kein Bitbang-I/O machen. Die 
Komponenten gibts sogar alle mit CE, falls das ein professioneller 
Aufbau werden soll.

Alternativ nimmst du eine Schrittmotor-Steuerung mit industrietauglichen 
Optokoppler-Eingängen. Die kann man mit Spannungen von 3-24V ansteuern 
[2].

Mit freundlichen Grüßen
Thorsten Ostermann

[1] 
https://www.mechapro.de/lam-schrittmotorsteuerungen-mit-feldbus-kopplung
[2] https://www.mechapro.de/schrittsteuerungen-von-lam-technologies 
(z.B. DS10-Serie)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.