Forum: Mikrocontroller und Digitale Elektronik Funktion mit Schrittmotor abbilden


von Michael S. (stepper)


Lesenswert?

Hallo Zusammen,

vielleicht hat jemand eine Idee.
Ich möchte mit einem 2-Phasen-Schrittmotor (NEMA 34) in echtzeit eine 
Funktion abbilden. f=arcsin(sin(...))

Var A) Ich kaufe eine Motorendstufe mit Puls/Richtungseingang. Die 
Signale erzeuge ich mit einem Gerät dessen Name ich nicht kenne :D

Es hat einen internen Speicher in welchen ich eine Tabelle laden kann.
In dieser Tabelle möchte ich meine Funktion  mit unterschiedlichen 
Delays zwischen den Schritten abbilden. Meine Pulse werden also mit 
unterschiedlichen Abständen (die ich in der Tabelle einspeichere) 
ausgegeben. Die Richtung spielt keine Rolle.
Das müsste es doch geben oder? Wie könnte sowas heißen?

VarB) Ich kaufe eine Motorendstufe mit analogem Geschwindigkeitseingang 
(0-10V) und hänge dort einen Arbiträrfunktionsgenerator dran.
Die Motorendstufen die ich bisher gefunden habe, haben jedoch nur eine 
Auflösung von 36 Geschwindigkeitsschritten also 0,36V. Hier brauche ich 
eine deutlich höhere Auflösung. Außerdem benötige ich eine 
Mikroschrittauflösung von 12800 Steps/rev.

Der Motor benötigt 8A/ph für M_max. Hier reicht auch -20%.

Kennt jemand einen Namen oder Hersteller für die Pulserzeugung von VarA 
oder eine passende Endstufe für VarB)?

Vielen Danke für eure Hilfe!
Gruß

von Theor (Gast)


Lesenswert?

Ich weiß noch nicht, ob und was ich zur Antwort beitragen kann, aber sie 
hat jedenfalls meine Neugierde geweckt.

Was ist eigentlich der Parameter der Funktion, also die 
Definitionsmenge? Und wie wird sie physisch repräsentiert?

Die Zielmenge ist, offensichtlich, erstmal ein Winkel, nämlich die 
Achsenposition des Motors. Richtig?

Kann es sein, dass der Parameter eine von der Zeit linear abhängige 
Grösse in einem bestimmten Intervall ist? Also eine Art Plot in 1s oder 
10s? Oder anders?

Rein mechanisch geht das nicht zufällig? Was treten da für Kräfte am 
Eingang auf? 8A pro Phase ist schon eine Nummer für sich.

Vielleicht magst Du ja auch mal ausführlicher erklären, für welches 
Problem Dein Ansatz eine Lösung ist.

Nur eben, aus Neugierde. Ob ich was dazu sagen kann, weiß ich noch 
nicht.

von rmu (Gast)


Lesenswert?

Michael S. schrieb:
> Var A) Ich kaufe eine Motorendstufe mit Puls/Richtungseingang. Die
> Signale erzeuge ich mit einem Gerät dessen Name ich nicht kenne :D
>
> Es hat einen internen Speicher in welchen ich eine Tabelle laden kann.
> In dieser Tabelle möchte ich meine Funktion  mit unterschiedlichen
> Delays zwischen den Schritten abbilden. Meine Pulse werden also mit
> unterschiedlichen Abständen (die ich in der Tabelle einspeichere)
> ausgegeben. Die Richtung spielt keine Rolle.
> Das müsste es doch geben oder? Wie könnte sowas heißen?

Das sollte sich mit einer passenden Schrittmotorendstufe und einem 
Arduino oder auch RaspberryPI oder ähnlichem Ding recht schnell 
realisieren lassen.

Falls ein Bastel-Aufbau reicht und bissl mehr "richtige" Programmierung 
sein darf ginge auch ein STM Nucleo mit dem Powerstep Eval Board, das 
sollte den Strom packen.

Die 12800 Positionen pro Umdrehung die 64fach Mikroschritte bei 200 
Schritten/Umdrehung suggerieren kann der Motor mechanisch sicher nicht 
open-loop anfahren.

von Georg (Gast)


Lesenswert?

Michael S. schrieb:
> Ich möchte mit einem 2-Phasen-Schrittmotor (NEMA 34) in echtzeit eine
> Funktion abbilden. f=arcsin(sin(...))

Im Klartext:

1. Ein µComputer rechnet den Wert der Funktion aus, wobei sich die Frage 
stellt, woher die Variablen für die Funktion kommen sollen, da von 
Echtzeit die Rede ist - Messwerte??

2. Eine CNC-Steuerung fährt auf einer motorgetriebenen Achse die 
Position an, die dem ausgerechneten Wert entspricht. Ob mit Schrittmotor 
oder einem anderen Antrieb ist sekundär.

Oder ist das völlig falsch verstanden? Und warum so ein 
Monster-Schrittmotor? Ist das eine Aufgabe im Studium, ohne realen 
Bezug?

Georg

von Michael S. (stepper)


Lesenswert?

Hallo,

in der Funktion ist f ein Winkel phi.
Der Motor hängt an einer Welle, die über eine Kurvenscheibe einen Pleuel 
antreibt. Bei konstanter Drehzahl beschreibt der Pleuel (durch die Form 
der Kurvenscheibe) einen Sinus. Durch die oben beschriebene Funktion 
wird eine Hubvariation ermöglicht. Hierbei wird nur ein Teil der 
Kurvenscheibe genutzt (+/- 30° <- Parameter 1, Frequenz = Parameter 2) 
aber immernoch ein Sinus ausgegeben. Der Motor pendelt also.
Hierbei ist die Wiederholbarkeit ein wichtiger Punkt, damit die 
Periodendauer sich nicht unterscheidet. Deshalb möchte ich die 
Fahrbefehle nicht über eine Windowsmaschine erzeugen (Virenprog. o.ä 
könnte den Ablauf stören), sondern extern. Eine mechanische Umsetztung 
ist nicht möglich. Die maximale Last sind 10Nm (Motor kann 12 ;) )

grüße

von Noch einer (Gast)


Lesenswert?

> Mikroschrittauflösung von 12800 Steps/rev

Da hast du dir ja was vorgenommen. Mikroschrittstufen und Drehwinkel 
sind nicht proportional. Steht der Motor, tut sich bei den ersten 
Mikroschritten gar nichts. Sobald der Strom das Haltemoment 
überschreitet, springt der Rotor.

Aus diesem Grund benutzen Werkzeugmaschinen BLDC-Motoren mit teurer 
Regelung.

von Michael S. (stepper)


Lesenswert?

rmu schrieb:
> Das sollte sich mit einer passenden Schrittmotorendstufe und einem
> Arduino oder auch RaspberryPI oder ähnlichem Ding recht schnell
> realisieren lassen.

Wahrscheinlich schon, aber das ist mir zu kompliziert. Mit Linux kenne 
ich mich nicht aus.
Einen Pulsgenerator mit programmierbaren Delays zwischen den Schritten 
müsste es doch geben.

Georg schrieb:
> 1. Ein µComputer rechnet den Wert der Funktion aus, wobei sich die Frage
> stellt, woher die Variablen für die Funktion kommen sollen, da von
> Echtzeit die Rede ist - Messwerte??

Die Werte der Funktion möchte ich voher ausrechnen und sie dem Gerät 
übergeben.
Die Umsetzung mit einer CNC Steuerung beeinhaltet relativ viel 
Programmieraufwand. Das würde ich gerne vermeiden.

von Amateur (Gast)


Lesenswert?

Watt mir so durch den Kopp geht:
1.  Um eine Kurve zu plotten braucht’s üblicherweise 2 Motore (X und Y).
2a. Auf die höheren Mikroschrittoptionen würde ich keinen Cent setzen.
    Folglich winkt Dir ein Getriebe.
3a. Letzteres sollte möglichst Spielfrei sein (12800/1 ist ganz schön
    ziemlich).
2b. Analog aufgebaut sollte das Ganze noch mehr wie genau sein.
3b. Einen Analogwert mit garantierten 17 Bit auszugeben ist auch nicht
    ohne.

Vielleicht legst Du Deinen Wunschzettel mal beiseite und kommst in die 
Realität zurück.
Alternativ: Lass Dir mal unbegrenzt Prokura einräumen.

von Noch einer (Gast)


Lesenswert?

> aber das ist mir zu kompliziert

http://www.witze-fun.de/witze/witz/9390

von Michael S. (stepper)


Lesenswert?

Amateur schrieb:
> Watt mir so durch den Kopp geht:
> 1.  Um eine Kurve zu plotten braucht’s üblicherweise 2 Motore (X und Y).

nein, phi(t) ist doch eine kurve.

> 2a. Auf die höheren Mikroschrittoptionen würde ich keinen Cent setzen.
>     Folglich winkt Dir ein Getriebe.
> 3a. Letzteres sollte möglichst Spielfrei sein (12800/1 ist ganz schön
>     ziemlich).

Getriebe geht garnicht wegen Versatz. Der soll so weit möglich vermieden 
werden. Außerdem kann mein Motor ja genau die Drehzahlen & Drehmoment 
die ich haben möchte. Die Auflösung ist auch möglich.

> 2b. Analog aufgebaut sollte das Ganze noch mehr wie genau sein.
> 3b. Einen Analogwert mit garantierten 17 Bit auszugeben ist auch nicht
>     ohne.

Muss ja nicht analog sein. Ich würde VarA auch bevorzugen.
Wenn jemand den Namen des Geräts kennt, was mir (wie oben gesagt) am 
laufenden Band Pulse mit vorher definierten, variablen Delays ausgibt 
bin ich glücklich! :)

>
> Vielleicht legst Du Deinen Wunschzettel mal beiseite und kommst in die
> Realität zurück.
> Alternativ: Lass Dir mal unbegrenzt Prokura einräumen.

Wenns so einfach wäre würde ich hier nicht reinschreiben ;)


Grüße

von Theor (Gast)


Lesenswert?

Michael S. schrieb:
> Wahrscheinlich schon, aber das ist mir zu kompliziert.

Naja. Einfach wird das Ganze, meiner Meinung nach, ohnehin nicht. Du 
hast nur die Wahl auf was Du Dein Geisteskräfte richten willst.

> Einen Pulsgenerator mit programmierbaren Delays zwischen den Schritten
> müsste es doch geben.

Der muss ja auch noch parametrisierbar sein. Also je nach dem Wert an 
zwei Eingängen unterschiedliche Verläufe erzeugen.

Übrigens: Meiner Meinung nach ist so ein Gerät mit ZWEI arbiträren 
Dimensionen (Spannung und Zeit), bis auf einen Punkt äquivalent zur 
zeitlich äquidistanten Ausgabe von Signalformen. (Der abweichende Punkt 
wäre denn, dass das Zeitraster passend gewählt wird bzw. gewählt werden 
kann).
Sowas nennt sich dann "Arbitrary Waveform Generator". Allerdings fallen 
mir so auf Anhieb auch keine ein, die sich über zusätzliche Eingänge 
kontinuierlich parametrieren lassen. (Die Frequenz kann man natürlich 
ändern).
Wenn das ganze dann noch kontinuierlich - also nicht quantifiziert - 
funktionieren soll, wird es möglicherweise schwierig. Das hinge von den 
nötigen Auflösungen und Genauigkeiten ab.

Mechanik wäre da die bessere Lösung. Und Getriebe ohne bzw. mit geringem 
Spiel gibt es durchaus.

Leider hast Du nicht geschrieben, was das Ganze soll. Vielleicht könnte 
man dann Alternativen vorschlagen.

von Theor (Gast)


Lesenswert?

Übrigens würde das Spiel ja nur eine Rolle "spielen" :-) wenn die 
Drehrichtung sich ändert. Das aber ist nach Deiner Idee eine Konsequenz 
des Entwurfs und nicht zwingend so. Leider hast Du auch den Input nicht 
beschrieben; also ob das eine mechanische oder elektrische Grösse ist.
Soweit ich das bisher verstehe wird lediglich die Amplitude des Hubs 
verändert und die Frequenz ginge ja über die Drehzahl des Antriebs. (Die 
man wieder einfacher regeln könnte).

Naja. Leider wenig Details. Aber gut. Das ist hier oft so und die 
Threads verlaufen im Sande.

von Theor (Gast)


Lesenswert?

Der gute Thang https://www.youtube.com/user/thang010146/videos hat da 
übrigens relativ systematisch einige Möglichkeiten entworfen, sowas 
mechanisch zu machen. Dort sind auch Links zu PDFs mit geordneten 
Listen.

von Michael S. (stepper)


Lesenswert?

Theor schrieb:
>
> Naja. Einfach wird das Ganze, meiner Meinung nach, ohnehin nicht. Du
> hast nur die Wahl auf was Du Dein Geisteskräfte richten willst.
Richtig. Programmieren lernen steht gerade nicht auf meinem Plan. ;)


> Der muss ja auch noch parametrisierbar sein. Also je nach dem Wert an
> zwei Eingängen unterschiedliche Verläufe erzeugen.
Muss nicht sein, ich kann auch die unterschiedliche Konfigurationen der 
Funktion nach Benutzung neu reineinladen.
Eine live-Änderung der Parameter wäre geil, ist aber kein Muss.

> Sowas nennt sich dann "Arbitrary Waveform Generator".
Der ist aber analog. Das wäre dann VarB) wie oben schon erwähnt.

> Wenn das ganze dann noch kontinuierlich - also nicht quantifiziert -
> funktionieren soll, wird es möglicherweise schwierig. Das hinge von den
> nötigen Auflösungen und Genauigkeiten ab.
Das kann auch quantifiziert geschehen solange die Tabelle ordentlich 
Werte speichern kann. Es gibt auch häufig Loop-Funktionen, mit denen ich 
dann nur eine Periode hinterlegen müsste und diese immerwieder 
durchfahren wird.

> Mechanik wäre da die bessere Lösung. Und Getriebe ohne bzw. mit geringem
> Spiel gibt es durchaus.
Finde ich auch immer schöner, ist aber keine Alternative. Habe ich schon 
Totüberlegt.

> Leider hast Du nicht geschrieben, was das Ganze soll. Vielleicht könnte
> man dann Alternativen vorschlagen.

Ich möchte die o.g Funktion äquidistant, Schritt für Schritt mit einem 
Schrittmotor abbilden. Dazu gibt es leider keine anderen Lösungen, 
sorry.

von rmu (Gast)


Lesenswert?

Um was für Geschwindigkeiten gehts denn. Wenn der Schrittmotor 12Nm 
"kann" sind 10Nm Last schon sehr sportlich, vor allem wenn er die nicht 
nur bei Stillstand auf einer Vollschrittposition festhalten muss.

Sonst ist die Idee, eine fertige CNC-Steuerung zu nehmen (z.B. Mach3 auf 
Windows, linuxcnc unter Linux, MachineKit für BeagleBone / Linux, GRBL 
für Arduino, etc...), eine fertige Endstufe anzuhängen, und die Bahn als 
G-Code zu erzeugen, nicht so schlecht.

Ich würd aber die mechanische Variante nochmal überlegen.

von Info (Gast)


Lesenswert?

Michael S. schrieb:
> Pleuel

Warum die Kurvenscheibe und nicht ein Direktantrieb linear (oder 
Hubmagnet und Positionsregelung)? Wg. Kraft? Gekoppelte Pleuel?

von Michael S. (stepper)


Lesenswert?

Danke für das rege Interesse!

Ich spezifiziere meine Frage:
Kenn jemand ein Gerät mit internem Speicher, mit dem ich digitale 
Pulsfolgen (mit unterschiedlichen Zeitabständen zwischen den Pulsen) 
generieren kann?

Der interne Speicher soll >>1000 Einträge ermöglichen.

f_max_puls <= 64 kHz

Es wird nur 1 Kanal benötigt.

Das Beladen des Speichers soll über eine simple Software (am Bestensten 
für umme) auf einem Windowsrechner möglich sein. D.h es wird eine 
geeignete Schnittstelle benötigt. Alternativ kann dies auch über einen 
USB-Stick oder eine SD-Karte geschehen)

Alles anderen Eigenschaften meiner Anwendung spielen keine Rolle.

Viele Dank für eure Hilfe!
Gruß

: Bearbeitet durch User
von Clemens S. (zoggl)


Lesenswert?

gib mal bitte die Frequenz, hub und die Masse an, die du sinusförmig 
bewegen willst.
das Problem dabei ist wahrscheinlich die Beschleunigung des Motors.

ich würde auch eher auf einen Linearmotor bei hoher Geschwindigkeit, 
oder einen Motor + Spindel gehen, um deinen Sinus zu erzeugen. ich 
glaube, das du auf dem falschen weg bist

nur so als Werbung:
http://www.jennyscience.de/videos/

aber ansonsten kann das jeder klein µC mit genügend speicher. aber auch 
ein frequenzgenerator von der Stange könnte passen. der billigste rigol 
kann 4k punkte ausgeben. ob die 2 kanäle für clock / Richtung 
synchronisiert werden weiß ich aber nicht. das ist sicher die 
luxuslösung, aber vll steht so etwas ja gerade zufällig rum.

sg

: Bearbeitet durch User
von Michael S. (stepper)


Lesenswert?

Massen usw ist eine andere Baustelle. Diese habe ich schon ausgelegt. Es 
geht nur um die Ansteuerungsmethode.
Habe etwas gefunden und werde bescheid sagen wenn die Umsetzung so 
funktioniert. Danke für die Hilfe!

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


Lesenswert?

Es ist immer schwierig, gute Lösungen vorzuschlagen, wenn man nur einen 
Bruchteil der Problemstellung kennt. Ob ein Schrittmotor mit der hier 
angefragten Steuerung wirklich die richtige Lösung ist, kann man nicht 
sicher sagen. Auch ob die mechanische Auslegung passt und ob nicht evtl. 
ganz andere Ansätze zielführender wären, kann so nicht beantwortet 
werden. Diese Art der Problemlösung ist i.A. keine gute 
Herangehensweise.

Wenn das aber der richtige Weg sein sollte, gibt es 
Schrittmotor-Steuerungen, die analoge Eingangssignale wahlweise als 
Sollposition oder -geschwindigkeit verwenden können, abhängig vom 
Anwenderprogramm [1]. Statt mit Stützpunkttabellen würde man die 
Steuerung dann tatsächlich über ein analoges Sinussignal machen.

Mit freundlichen Grüßen
Thorsten Ostermann

[1] http://www.mechapro.de/LAM-DS.html

von Theor (Gast)


Lesenswert?

Als Antworter möchte man ja auch seinen "Spaß" haben aber wenn man das 
Problem nicht kennt dann ist so eine Frage einfach die nach einer 
Auskunft.

Darüber hinaus ist ein falscher Lösungsansatz, obwohl er nicht 
grundsätzlich vorliegt, so häufig, dass er sogar in der Netiquette 
Erwähnung gefunden hat.

Das sich Fragesteller aus irgendwelchen Gründen in irgendeiner Hinsicht 
nicht "entblößen" möchten ist schon verständlich, aber das sollte man 
dann auch deutlich machen denke ich. Es gibt sicherlich Leute die dafür 
Verständnis haben. Ein blosses "das geht Euch nichts an" (so ist das 
nicht geschrieben worden, aber sinngemäß), empfinde ich, mal abgesehen 
von dem damit verlorenen Reiz, aber eher als negativ; jedenfalls nicht 
als motivierend.

Naja. Wie auch immer. Der TO hat ja wohl was gefunden und das Fraunhofer 
Institut wird sich freuen.

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.