Go Down

Topic: Motor mit selbstgebautem Encoder steuern (Read 570 times) previous topic - next topic

jorkan

Hallo zusammen,
für mein Projekt möchte ich die Drehzahl von einem Nema 23 (ACT 23HM6620) mit einem Arduino steuern. Zur Steuerung habe ich den DRV8825 oder den EasyDriver 4.4 zur Verfügung. Um hohe Drehzahlen generieren zu können möchte ich den Motor mit 48V betreiben.

Nun zu meiner Frage: Da sich das Drehmoment an dem Motor über die Zeit verändert, ich die Drehzahl jedoch konstant halten möchte, benötige ich einen Encoder. Gibt es dafür eine bessere alternative als eine Lochscheibe mit einer (nicht zwei, da Drehrichtung vorgegeben) Lichtschranke zu nutzen? Falls nicht, gibt es im Forum bereits eine Anleitung dazu? Habe leider nichts finden können  :smiley-confuse:

Vielen Dank im Voraus!

uwefed

#1
Apr 17, 2019, 07:13 pm Last Edit: Apr 17, 2019, 07:14 pm by uwefed
Ein Schrittmotor dreht oder dreht nicht. Da gibt es keine Schlupf. Wenn das Lastdrehmoment größer als das Motordrehmoment wird, dann bleibt er stehen und muß neu angefahren werden. Da braucht es keine Drehgeschwindigkeitskontrolle.

Weder der DRV8825 oder den EasyDriver 4.4 sind für den genannten Motor und Versorgungsspannung geeignet, wenn man das max Drehmoment herausholen will, sprich den Motor mit Nennstrom ansteuern will.

 DRV8825 (max 2,5A mir Kühlblech und 45V)
 EasyDriver 4.4 mit A3967 (max 750mA und 30V)

Da passt alles hinten und vorne nicht zusammen.

Grüße Uwe

postmaster-ino

#2
Apr 17, 2019, 07:20 pm Last Edit: Apr 17, 2019, 07:22 pm by postmaster-ino
Hi

Du hast einen Stepper - wenn Der Schritte verliert, wirst Du ganz schön ins Rudern kommen, Den wieder einzufangen - sollte aber möglich sein.
WENN Der aber Schritte verliert, weil der Motor nicht hinterher kommt, wirst Du mit dem anscheinend zu geringem Drehmoment diese Situation aber auch nicht ausbügeln können.

Warum einen Stepper?
Wenn Der Schritte verliert, bist Du 'am Ar*ch'.
Positioniergenauigkeit ist toll, bekommt man, wenn Du eh einen Encoder verbaut hast, auch mit DC hin.
Der kommt zwar auch nicht mehr hinterher, wenn Er 'nicht mehr hinterher kommt' - Der fängt Sich aber 'von alleine', wenn die Last wieder geringer wird.

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

gregorss

#3
Apr 17, 2019, 07:51 pm Last Edit: Apr 17, 2019, 08:45 pm by gregorss
Das tun zu wollen halte ich für halbwegs blödsinnig. Eine Kodierscheibe bzw. ein Rotations-Encoder ist wohl eher etwas für DC-Motore.

Gruß

Gregor

PS:
Bei Vollmond ist Neuerde.

jorkan

#4
Apr 18, 2019, 02:43 pm Last Edit: Apr 18, 2019, 03:28 pm by jorkan
Das klingt nicht gut.. Würde es denn mit dem Motortreiber SMCI32-2 inklusive Encoder funktionieren? Er liefert genug Saft und die Steuerung über die Nanotec Software ist ziemlich unkompliziert.

Würde der Motor hier bei einer Drehmomentänderung hinterherkommen? Dieses wäre in jedem Fall viel geringer als das maximale Drehmoment des Motors bei gegebener Drehzahl. Das Drehmoment bewegt sich dabei in einem Bereich von 0,0X bis maximal 0,4Nm. Wie stark sich das Drehmoment in diesem Bereich genau verändert ist erst mal unbekannt. Die Drehzahl soll sich im Bereich von etwa 30 bis 1000 U/min bewegen.

Eine H-Brücke mit 9V wäre wohl insgesamt zu klein dimensioniert für diese Anwendung.

Die alternative wäre ansonsten ein DC-Motor?

gregorss

... Würde es denn mit dem Motortreiber SMCI32-2 inklusive Encoder funktionieren? ...
Das klingt, als wolltest Du einen Fehler durch eine Dummheit ausbügeln.

Nimm einen DC-Motor, kontrolliere dessen Drehzahl und korrigiere Abweichungen mittels PWM. DC-Motore sind kräftig und halten auch energielos eine große Last.

Gruß

Gregor


Bei Vollmond ist Neuerde.

uwefed

Ein Schrittmotor dreht sich mit seine Schrittfrequenz solange das Lastmoment nicht größer als das max Motordrehmoment bei der gegebene Schrittgeschwindigkeit ist

Quote
Die Drehzahl soll sich im Bereich von etwa 30 bis 1000 U/min bewegen.
Auf 1000 U/min kommt kein Schrittmotor und hat noch ein anständigem Drehmoment.

Abschließend wiederhole ich das von meinen Mitantwortenden:
Ein Schrittmotor ist der falsche Motor für Deine Anwendung.

Rentner

DC-Motore sind kräftig und halten auch energielos eine große Last.

Gruß

Gregor



Hallo,

das stimmt so leider nur dann wenn der Motor auch ein Getriebe hat mit einer ausreichend größen Übersetzung. Für permanent Mangnet Motore kann das teiweise gelten, hängt von der Bauart des Motors und der Anzahl der Polpaare ab. Das gilt so sicher für alle Kleinmotore und für Modellbau-Motore.

für fremderregte DC Motoren gilt das nicht die drehen sich ohne Spannung ganz leicht, ohne Widerstand, wie normale DS Motoren eben auch.

Heinz  






gregorss

für fremderregte DC Motoren gilt das nicht die drehen sich ohne Spannung ganz leicht, ohne Widerstand, wie normale DS Motoren eben auch.
Das stimmt. Im Zusammenhang mit dem Rest dieses Threads hatte ich Getriebemotore im Hirn. Mein Blutschokoladespiegel muss gehoben werden :-)

Gruß

Gregor
Bei Vollmond ist Neuerde.

jorkan

#9
Apr 19, 2019, 02:52 pm Last Edit: Apr 19, 2019, 02:53 pm by jorkan
Schonmal Danke an alle!

Ein Schrittmotor dreht sich mit seine Schrittfrequenz solange das Lastmoment nicht größer als das max Motordrehmoment bei der gegebene Schrittgeschwindigkeit ist
Auf 1000 U/min kommt kein Schrittmotor und hat noch ein anständigem Drehmoment.

Abschließend wiederhole ich das von meinen Mitantwortenden:
Ein Schrittmotor ist der falsche Motor für Deine Anwendung.
Das Lastmoment ist in jedem Fall geringer als das maximale Drehmoment bei gegebener Drehzahl. Laut Kennlinie erreicht er die gewünschte Drehzahl und das Lastmoment liegt in jedem Fall deutlich unter dem maximalen Motordrehmoment.

Nur zusammenfassend weil ich es auch wirklich verstehen möchte. Wenn der Lastwechsel zu schnell/stark ist und der Stepper Schritte verliert kann ich ihn trotz Regelkreis nicht wieder einfangen? Der Schrittverlust wäre bei einem Gleichstrommotor demnach ja nicht mehr existent - die Nachregelung ist demnach möglich.

Ich habe mir mal einen Motor rausgesucht, nur verstehe ich hier nicht ganz die Angabe über das maximale Drehmoment von 0,413Nm. Denn wenn ich mir das Datenblatt und die Kennlinie von Drehzahl über -moment anschaue, sind bei niedrigen Drehzahlen doch etwa 0,8Nm möglich  :smiley-confuse:

https://www.pollin.de/p/hochleistungs-gleichstrommotor-johnson-tc785lg-es-310489

postmaster-ino

Hi

Wenn der Stepper nicht mehr hinterher kommt, reißt die Bindung zwischen Magnetfeld und Rotor ab - diese Bindung müsste man erst wieder finden - da dürfte Es durchaus einfachere Spielereien geben ... einen Mars-Rover zum Beispiel :) (ok, eigentlich habe ich mich mit dem Einfangen eines Stepper noch nicht beschäftigt - wenn Schritte verloren gehen, taugt der Stepper für diese Anwendung nicht, fertig. Da hilft auch kein 'gleich habe ich Ihn aber wieder')
Der DC-Motor kommt bei Überlast halt nicht mehr hinterher, Er dreht aber dennoch, der Abstand vergrößert sich halt solange das Drehmoment zu groß ist.

Viel mehr als 100% (also Das, was die Regelung zum Motor prügeln kann) geht halt nicht - wenn Das nicht reicht, stimmen IST und SOLL halt nicht mehr überein.
Wenn die Last geringer wird, kommt der DC-Motor aber wieder 'auf Punkt' - dann muß die Motorregelung aber eingreifen und verhindern, daß der Motor über das Soll hinaus schießt.
Hier wird's wohl in Richtung PID gehen.

Denke, das 'maximale Drehmoment' ist bei Nenndrehzahl - wie geschrieben, bei Stillstand (Motorwelle blockiert), steigt der Strom (wie auch das Drehmoment) auf ein Maximum, wie lange Das die Wicklung des Motor überlebt (ist ja die ganze Zeit die Selbe !!), könnte auch irgendwo stehen - ist aber weit jenseits des Nenn-Betrieb.

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

jorkan

#11
Apr 20, 2019, 02:00 pm Last Edit: Apr 20, 2019, 02:24 pm by jorkan
Danke für die ausführliche Antwort!

Demnach brauche ich zusätzlich zu dem DC-Motor noch einen PID-Regler und eine Lochscheibe inkl. Sensor um den IST-Wert als Eingang für meinen Regler nutzen zu können richtig? Oder kann der IST-Wert auch direkt über den Arduino eingelesen werden?

postmaster-ino

Hi

Die Lochscheibe stellt die Auflösung dar - wenn die Drehrichtung dabei noch rausspringen soll entweder zwei um 1/2 der Länge der Löcher versetzte Loch-Ringe oder die Sensoren so anbringen, daß die Löcher auf den beiden Sensoren einen Gray-Code abgeben (00, 01, 11, 10).
Dann hast Du Geschwindigkeit und ggf. Richtung.
Das sollte der Arduino gerade so hinbekommen ;)
Für PID gibt's fertige Lib's, bei Denen Du P, I und D festlegen musst - laut WWW ist die Wertfindung nicht ganz einfach, man kann sich aber rantasten.
Dieser Lib übergibst Du auch das ermittelte IST wie das geforderte SOLL - die Lib macht daraus die Ansteuerung des Motor und versucht in kürzester Zeit auf SOLL zu kommen - bei ungeschickter Wahl der Parameter (P,I,D) kann der Kram schingen - wirst Du aber feststellen - dann muß der zuletzt geänderte Wert wieder zurück geändert werden :)

Der Arduino bekommt 1 oder 2 Sensoren zum Erfassen der Lochscheibe, füttert damit den PID-Regler (Library) und steuert mit Deren Ausgangswert via PWM den Motor an (FET).
Minimal-Hardware:
- 1x Lichtschranke (Reflektion oder Gabel?)
- 1x Treiber (im einfachsten Fall ein LL-N-FET)
Wenn der Motor in beide Richtungen drehen können soll, eine H-Brücke wie wohl zwei Sensoren, um die Drehrichtung erkennen zu können.
2x IN (Sensoren), 2x OUT (Richtung + ENable) - Letzteres kann via PWM die H-Brücke 'dimmen'.
Das sollte sich mit ziemlich jedem Arduino erschlagen lassen - die Maximal-Drehzahl und die Anzahl der Löcher der Lochscheibe sollten so zusammen passen, daß der Arduino das 'locker' mitschreiben kann.

So mein Gedankengang dazu

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

jorkan

Moin, danke für die Erklärung und die Anleitung!

Ich habe mir mal folgende Zusammensetzung überlegt: Einen Gleichstrommotor mit genügend Drehmoment bei niedriger Drehzahl, dazu eine H-Brücke (L298N), eine Spannungsversorgung von 9V über ein Netzteil und eine Lichtschranke (LM393) (Schaltplan als Bild angehängt).

Motor 9,6V
Speed Sensor

Mein Problem liegt noch in der Energiezufuhr. Reicht das Netzteil sowohl für Motor als auch Arduino und Lichtschranke? Laut Netzteil kommen bei 9V 1,5A und MAX 22.5VA durch. Denn das reicht doch nicht mal für den Motor wenn der laut Hersteller im Leerlauf 3,7 A und bei Vollast 58,4 A benötigt.. Zumal die H-Brücke auch nur 2A liefern kann. Brauche ich dazu noch einen Transistor um genug Strom liefern zu können und eine separate Quelle für den Arduino?

Rentner

Hallo,
Das wird so nix werden

Warum langsam drehen lassen , wenn du keine hohe Drehzahl benötigst nimmst du einen Getriebe Motor, der ist dann kleiner und braucht weniger Strom

Es macht doch keinen Sinn wegen des Drehmoments einen grossen Motor zu nehmen , denn dann aber nur mit 10% Drehzahl laufen zu lassen .

Falls du die Leistung aber wirklich benötigst dann ist es eben so. Vorschlag Motor fur höher Spannung nehmen , dann sind die Ströme wieder kleiner,

Heinz

Go Up