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
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)
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.
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.
jorkan:
... 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.
Ein Schrittmotor dreht sich mit seine Schrittfrequenz solange das Lastmoment nicht größer als das max Motordrehmoment bei der gegebene Schrittgeschwindigkeit ist
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.
gregorss:
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.
uwefed:
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
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.
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?
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.
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).
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?
Wenn Du von 30 bis 1000 U/min brauchst, dann such Dir einen Motor der bei Nennspannung ca 1000 u/min macht.
was glaubst Du was "Zwangskühlung" bedeutet?
Kauf keinen unbrauchbaren Motor, nur weil er 1,45€ kostet.
Da muss ich ja jetzt richtig tief in die Tasche greifen
Getriebemotoren hatte ich nicht auf dem Schirm.. Der hier Getriebemotor 24V sollte es dann wohl packen. Er dreht zwar nicht ganz so schnell wie ich es gerne hätte, besitzt aber ein ausreichendes Drehmoment bei geringer Drehzahl (0,5 Nm). Der Motor zieht maximal 0,85A, was bei meinem Netzteil past, welches 1A liefert. Habe nochmal einen aktualisierten Schaltplan angefügt, sollte nun eigentlich so passen.
Nein, das ist falsch.
Das ist der Nennstrom. Der Kurzschlußstrom (blockierte Welle) bzw der Anlaufstrom ist ca 10 mal der Leerlaufstrom sprich ca 1,8-2A.
Grüße Uwe