Hallo,
ich habe viel gelesen, aber keine Antwort auf meine Fragen gefunden.
Datenblatt habe ich durchgelesen, leider zu wenig Wissen vorhanden, kann
die richtige Stellen nicht finden. Das Datenblatt habe ich angehängt.
Ich hatte bis jetzt nichts mit Servomotoren zu tun gehabt.
Es liegt hier ein Servoverstärker mit Servomotor von Sanyo Denki.
Soll für ein Projekt benutzt werden, weil es eh schon da ist.
Bis jetzt ist der Stand so: Servoregler ist an der Steckdose. Motor und
im Motor eingebauter Inkrementalgeber sind dran.
An den Eingängen CN1 26 und 28 habe ich PWM Signale.
Der Motor soll also in position mode (Systemparam. page08, 02) betrieben
werden.
Ich kann mit den PWM Signalen den Motor in beide Richtungen drehen.
Ab hier wird es kompliziert. Das Datenblatt ist sehr umfangreich, ohne
Vorkenntnisse schwer für mich.
Die Drehzahl wird per PWM Frequenz gesteuert. Ok. Funktioniert.
Ich finde nicht, die Anzahl der Impulse um die Welle um 360° zu drehen.
Ich habe gesehen, da gibt es noch Übersetzungen. Das alles durchgelesen,
komme trotzdem nicht weiter. Habe erst man f1=f2 gelassen.
Ich dachte, der position mode würde so funktionieren:
angenommen man braucht 10.000 Pulse für eine Drehung.
Schickt man die 10.000 Pulse mit 1kH dreht sich der Motor langsamer, als
die 10.000 Pulse mit 100kHz.
Das scheint aber falsch zu sein. Der Motor fährt zwar langsamer, aber
ganz sicher nicht die gleiche Strecke.
Ich habe noch einige Fragen, aber möchte die Nachricht nicht zu lang
halten.
Das sind Basickenntnisse, die mir fehlen. Ich weiß.
Ich bin auch nicht faul zum lesen, habe viel gelesen.
Nur nicht das gefunden, was ich suche.
Die Anzahl der benötigten Pulse scheint mit dem Inkrementalgeber
zusammen zu hängen, das habe ich schon herausgefunden. Aber es fehlt
noch was.
Wie gesagt, 10.000 Pulse mit 1kHz fahren 10 Mal langsamer und 10 Mal
kürzer als mit 10kHz.
Inkrementalgeber ist der richtige in den Parametern eingestellt.
Wer kann helfen, bitte helfen.
Liebe Grüße.
>Wie gesagt, 10.000 Pulse mit 1kHz fahren 10 Mal langsamer und 10 Mal>kürzer als mit 10kHz.
Sorry, diese Aussage ist falsch. Fährt die gleiche Strecke.
Könnte schwören, dass nicht
Bitte nicht steinigen, andere Frage.
Der Servomotor bewegt einen Wagen auf dem Linearschlitten.
Keine Spindel. Riemen.
Da die Fahrstrecke vom Wagen immer flexibel ist, kann es passieren
(passiert eigentlich immer) dann die ausgerechneten Pulse zum Fahren für
einen gewünschten mm Weg mit Komma sind.
Pulse mit Komma schicken habe ich versucht, komma geht nicht durch :D
Mit der Zeit vom hin und her Fahren baut sich der Rundungsfehler
selbstverständlich auf.
Was machen die Profis, wenn die so eine unschöne Situation bekommen?
Einen externen Positionsgeber wollte ich mir aus einigen Gründen sparen.
Versuchen die gefahrene Pulse und mit den Sollpulsen(die mit Komma) zu
verrechnen und ab und zu ausgleichen?
Oder ab und zu home Position antasten?
PWM heisst, du veränderst das Verhältnis der Rechteckspannung, so wie
beim Modellbauservo. da ist die Frequenz auch fest eingestellt, aber die
impulslänge ist variabel. Einfacher geht das ganze analog, da wird mit
der Spannung die Geschwindigkeit reguliert. Prinzipiell dasselbe
verhalten, wie mit PWM.
Aber da reicht schon ne ganz simple Batterie um den Motor zum laufen zu
bringen.
Mit nme Poti lässt sich die Geschwindigkeit einstellen.
Aber keine Ahnung, ob man den Motor auch rein analog über +/- 5 oder 10V
ansteuern kann. Die Beschreibung ist alles andere als anwenderfreundlich
aufgebaut.
Beim PWM lasse ich Tastverhältnis immer bei 50%. Ändere nur die Periode
für Geschwindigkeitssteuerung.
Analoge Eingänge können für velocity und torgue control mode benutzt
werden.
Habe mich für position control mode entschieden, weil es mit Pulsen
einfacher ist eine definierte Strecke zu fahren.
Das Datenblatt ist wahrscheinlich für erfahrene Anwender erstellt. Da
wird nicht einem erzählt, wie es funktioniert. Tausende Parameter zum
Einstellen, wo 90% für mich keine Begriffe sind.
Das Teil funktioniert in PWM Ansteuerung schon mal.
Habe aber wie bereits geschrieben ein anderes Problem. Eigentlich ist
das gleiche Problem wie bei allen, die Schrittmotoren nutzen.
Ich habe den Motor an einem Linearschlitten dran. Das heißt die
Drehbewegung wird in einen linearen Vorschub umgewandelt.
Eine Motorumdrehung ergibt 70mm linearen Weg.
Eine Motorumdrehung braucht 131072 (oder so aus dem Kopf) Pulse.
Möchte ich jetzt 31,5mm links verfahren, brauche ich 58.982,4 Pulse.
Dann fahre ich noch 112mm links, dann wieder 80,7mm, dann 64,7mm zurück,
dann ganz nach links bis Anschlag und wieder komplett nach Rechts auf
die Startposition. das ist nur ausgedacht jetzt. Es sind mehr Positionen
und mehr Richtungswechsel dabei.
Nach 20 Vorgängen, ist die Startposition natürlich nicht mehr die wie am
Anfang. Pulse mit Komma werden gerundet und der Fehler baut sich immer
weiter auf.
Die "Arbeitspositionen" wo der Schlitten anhält so auf zu bauen, dass
Pulse ohne Komma sind wäre zwar möglich, aber jede Änderung ist sehr
aufwendig und unflexibel das Ganze.
Als möglichen Lösungsansatz habe ich jetzt 2 Sachen im Sinn. Entweder
alle 10 Vorgänge zum Home Sensor fahren und dort die Schritte nullen
oder soll und ist Schritte zählen und immer wieder verrechnen.
>oder soll und ist Schritte zählen und immer wieder verrechnen
Habe es so gemacht, funktioniert.
Mit 2 Variablen. Eine als float, andere int.
In der Float werden die Soll-Schritte mit Komma zusammengezählt und in
der Int Variable - tatsächlich gefahrenen.
Alle 10 Bewegungen wird der Fehler ausgeglichen, indem man einfach
nachfährt.
Vielen Dank
Wegen deinem Schrittproblem gibts ja das elektronische Getriebe. überleg
dir eine sinnvolle Übersetzung, bei der du bei deinen 70mm dann halt z.B
140.000 Pulse brauchst, das Verhältnis musst du dann bei deinen 2
Getriebewerten eingeben.
Falls keine Kommawerte erlaubt sind, dann halt entsprechend grosse
Zahlen.
Alex schrieb:> Möchte ich jetzt 31,5mm links verfahren, brauche ich 58.982,4 Pulse.
Überlege Dir erstmal, was 0,4 Impulse in Millimeter bedeutet.
> Dann fahre ich noch 112mm links, dann wieder 80,7mm, dann 64,7mm zurück,> dann ganz nach links bis Anschlag und wieder komplett nach Rechts auf> die Startposition.
Du musst (solltest/könntest) nach folgenden zwei Positionierart
unterscheiden:
a.) Absolute Positionierung
b.) Relative Positionierung
Im Fall a positionierst Du immer von Deinem Nullpunk (meistens auch
Referenzpunkt) aus. D.h. du sagst nicht 123,5 Millimeter nach rechts
oder links, sondern z.B. fahre auf Position 505,0 Mullimeter, danach auf
Position 628,5 Millimeter.
Meistens sind doch die Positionen bei solchen Maschinen absolute
Positionen, bei Dir bestimmt auch, oder?
> Was machen die Profis, wenn die so eine unschöne Situation bekommen?
Entspannt bleiben und mehrere Koordinatensystem und unterschiedliche
Maßeinheiten benutzen die ineinander umgerechnet werden.
Grundlegend hast Du schon mal das Maschinen-Koordinatensystem. Du fährst
auf die Referenz und definierst diesen Punkt als Nullpunkt.
Dazu gibt es zwei Positionen, die Ist-Position und die Soll-Position.
Die Einheit dieser Positionen sind Impulse, nicht Millimeter!
Dann hast Du z.B. Dein metrisches Maschinen-Koordinatensystem, z.B. in
Millimeter (Du könntest ja auch Zoll haben).
Dazu hast Du eine Skalierung. Die besteht aus Zähler und Nenner. Wenn Du
Millimeter in Impulse umrechnen willst, multiplizierst du mit 70 und
teilst mit 131072.
So kannst Du die Maschinenkoordinate von Millimeter in Impulse umrechnen
und umgekehrt.
Usw.
Eigentlich ist es mir zuviel, das alles zu erklären. Du wirst schon klar
kommen, irgendwie...