RAPS128 Schrittmotortreiber
RAPS128 ist die Abkürzung für "RAADS Power Stepper Driver with 1/128 Microstepping". Die Baugröße entspricht den beliebten Pololu-Treibern und die Pinbelegung ist kompatibel, aber nicht identisch. Die Treiber können auch auf RAMPS, Rumba und anderen RepRap-Elektroniken eingesetzt werden, wobei 8-Bit-Elektroniken i.d.R. zu langsam für 1/64 und 1/128 Microstepping sind.
Spezifikation:
- Treiber-IC: THB6128 für präzisen und leisen Motorlauf
- Motorspannung 10 - 25 V
- Motor-Spitzenstrom 0 - 2,2 A (einstellbar mittels Poti)
- Digitaleingänge kompatibel mit 3,3 und 5 V Mikrocontrollern
- Decay-Methode (Spannungsabbau in den Motorspulen) einstellbar mittels Poti
- Sleep- und Boost-Modus (von RepRap-Elektroniken bisher nicht unterstützt)
- Logikspannung wird aus der Motorspannung erzeugt (kein weiterer Anschluß erforderlich)
- Kurzschluss-Abschaltung
- Enable = HIGH (bei Pololu-Treibern LOW, in Firmware invertieren!)
Bilder (zum Vergrößern anklicken):
Der Schrittmotortreiber schaltet mit sehr hoher Taktfrequenz den Motorstrom ein und aus. Während einer Einschalt-Phase wird der durch die Motorspule fließende Strom gemessen und wieder abgeschaltet, wenn er den mittels Referenzspannung eingestellten Strom erreicht hat. Dieser Spitzenstrom fließt nicht im Mittel und kann daher nicht einfach - z.B. anhand der Anzeige eines Labor-Netzteils - gemessen werden. Die beiden folgenden Diagramme vermitteln einen Eindruck, wie Referenzspannung, Treiber-Erwärmung, mittlerer Motorstrom, Motor-Spitzenstrom und Drehmoment zusammenhängen.
Temperatur des Kühlkörpers (horizontal, kein Lüfter) und mittlerer Strom in Centi-Ampere (Labornetzgerät-Anzeige) in Abhängigkeit der Referenzspannung (Poti). Empfohlener Spannungsbereich: 0,8 bis 1,6 V. Das entspricht einem theoretischen Motor-Spitzenstrom von 0,73 - 1,46 A, Gleichung: I = k U mit k = 0,91 A/V.
Drehmoment eines Schrittmotors in Abhängigkeit von der Referenzspannung bei einer Drehzahl von ca. 100 U/min und 128 Mikroschritten pro Vollschritt (Messung siehe Wiki, Motor: Wantai 42BYGHW609 mit 39 Ncm bei 1,7 A (Herstellerangabe). Der laut THB6128-Spezifikation zulässige Motor-Spitzenstrom von 2,2 A (VRef = 2,4 V) ist hier überschritten.
Mit dem Decay-Poti kann der Spannungsabbau in den Motorspulen beeinflusst werden. Eine mittlere Einstellung hat sich bei vielen Nema 17 Motoren bewährt.
Dokumentation (zum Download als *.pdf bzw. *.zip Bilder anklicken):
Dieses
Werk bzw. der Inhalt steht unter einer
Creative Commons 3.0 Unported License: Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen.
Sleep-Pin (SLP): Wenn der Sleep-Pin mit einem digitalen Ausgang eines Mikrocontrollers verbunden wird, dann kann die Referenzspannung und damit der Motorstrom verändert werden. Digital LOW (0 V) reduziert den Motorstrom um ca. 45% und digital HIGH (+5 V) hebt ihn um ca. 30% an (+3,3 V => +5%). Basis der Prozentangaben ist ein nicht verbundener Sleep-Pin bzw. ein auf INPUT eingestellter Mikrocontroller-Pin.
Bei RepRap-Elektroniken ist der Sleep-Pin häufig mit Reset (RST) verbunden. In diesem Fall liefert der Sleep-Pin ca. 3 V und aktiviert damit den Treiber (RST = HIGH).
Mikroschritte, off = nicht verbunden oder Masse, on = 2 - 5 V bzw. logisch HIGH, die Nummerierung MS1 - MS3 entspricht der Mikroschalter-Nummer auf dem RADDS-Board:
mode | MS3 | MS2 | MS1 |
---|---|---|---|
1 | off | off | off |
1/2 | off | off | on |
1/4 | off | on | off |
1/8 | off | on | on |
1/16 | on | off | off |
1/32 | on | off | on |
1/64 | on | on | off |
1/128 | on | on | on |
Zum Einstellen der Mikroschritte muss das RADDS-Board vom Arduino-DUE abgenommen werden. Um dies zu vereinfachen, wurde ein Demontagewerkzeug erstellt.
Die empfohlenen Kühlkörper sind ICK PGA 6 x 6 x 14 von fischerelektronik. Anders als die Typbezeichnung erwarten lässt, sind sie 14 x 14 x 14 mm groß.
Schrittmotor-Tester (zum Download als *.pdf bzw. *.zip Bilder anklicken):
Die Entwicklung des RAPS128-Treibers resultierte aus einem Treibertest (YouTube). Der dabei eingesetzte Schrittmotor-Tester ist hier dokumentiert.
Die Basis ist ein Arduino Nano. Der Aufbau erfolgte auf einer Lochraster-Platine mit jeweils 3 verbundenen Bohrungen. Auf die Lochraster-Platine sind Buchsenleisten (Reichelt) gelötet, in die der Arduino Nano und der Motor-Treiber gesteckt werden. Die im Schaltplan eingezeichneten Kondensatoren sind unter dem Nano (Elko mit 10 µF, min 6,3 V) und dem Treiber (Elko mit 100 µF, min 25 V) versteckt. Zum Download steht nur der Schaltplan zur Verfügung, da die Verdrahtung sehr einfach ist und kein Platinen-Layout erstellt wurde.
Geschwindigkeit und Drehrichtung werden über ein Poti eingestellt (Mitte = Stillstand). Die Drehzahl-Regelung ist nicht-linear, wodurch die Drehzahl auch so klein eingestellt werden kann, dass man fast die Mikroschritte "mitzählen" kann. Eine Einstellung der Microschritte (1/2, 1/4, ...) ist im Programm-Code möglich. Ebenso muss im Programm-Code je nach Treiber das ENABLE-Signal entweder auf HIGH (THB6128) oder LOW (Pololu-Treiber) eingestellt werden. Die maximale Geschwindigkeit liegt bei gut 100 kHz des STEP-Signals. Das Programm funktioniert nur mit dem Nano! Da aus Geschwindigkeitsgründen die Ports direkt (nicht über digitalWrite()) gesetzt werden, besteht die Gefahr, dass bei anderen Arduino-Boards die serielle Verbindung unterbrochen wird und nur noch eine ISP-Programmierung das Board rettet.
Im Bild links ist ein "Schatten" zu sehen, der einen Winkel von rund 30° einschließt. Dieser Schatten ist die Bewegungsunschärfe einer Schraube bei der Belichtungszeit von 1/200 s. Daraus ergibt sich die Drehzahl zu rund 1000 U/min und die Stepper-Ansteuerung zu 53 kHz, was bei dem Motor bei 12 V das Maximum ist. Danach treten Schrittverluste auf.