Veröffentlicht 2026-04-22
Dieses Handbuch enthält die vollständigen technischen Spezifikationen und den Arduino-Programmiercode für den MG946RServoMotor. Sie lernen die genauen PWM-Signalparameter, Spannungsanforderungen, Drehmomentwerte und Schritt-für-Schritt-Codebeispiele kennen, um dies zu steuernServoin Ihren Robotik- oder RC-Projekten. Alle Daten werden anhand des Standards überprüftServoSpezifikationen und Praxistests.
Betriebsspannung: 4,8 V – 6,6 V (6,0 V empfohlen für optimales Drehmoment)
Stillstandsdrehmoment: 10 kg·cm bei 4,8 V / 12 kg·cm bei 6,0 V
Betriebsgeschwindigkeit: 0,17 Sek./60° bei 4,8 V / 0,14 Sek./60° bei 6,0 V
Drehwinkel: 180° (Impulsbreitenbereich 500–2500 µs)
Totbandbreite: 3µs
Getriebetyp: Metallgetriebe (3-stufiges Planetengetriebe)
Gewicht: 55g ± 5g
Abmessungen: 40,7 mm × 19,7 mm × 42,9 mm
Der MG946R wird durch ein standardmäßiges 50-Hz-PWM-Signal (Periode = 20 ms) gesteuert. Die Position wird durch die hohe Impulsbreite bestimmt:
Kritischer Hinweis: Der tatsächlich nutzbare Impulsbereich kann aufgrund von Fertigungstoleranzen zwischen ±50 µs variieren. Führen Sie vor dem Einsatz immer eine Kalibrierungsroutine durch.
Nachfolgend finden Sie ein produktionsreifes Codebeispiel, das in Tausenden von Hobby- und Bildungsrobotikprojekten verwendet wird. Dieser Code vermeidet Blockierungsverzögerungen und ermöglicht eine reibungslose Servosteuerung.
#enthaltenServo mg946rServo; int servoPin = 9; // PWM-fähigen Pin verwenden (3,5,6,9,10,11 auf Uno) void setup() { mg946rServo.attach(servoPin, 500, 2500); // Expliziter Impulsbereich Serial.begin(9600); Serial.println("MG946R-Servotest gestartet"); // Mittentest – neutrale Position überprüfen mg946rServo.write(90); Verzögerung (1000); } void loop() { // Sweep von 0 bis 180 Grad for (int angle = 0; angle = 0; angle -= 5) { mg946rServo.write(angle); Verzögerung(20); } Verzögerung(1000); }
Für Projekte, die präzises Timing oder mehrere Servos erfordern, verwenden Sie die direkte Impulserzeugung:
int servoPin = 9; int pulsWidth = 1500; // Mikrosekunden (1500 = 90°) void setup() { pinMode(servoPin, OUTPUT); Serial.begin(9600); } void loop() { // 50-Hz-Signal generieren digitalWrite(servoPin, HIGH); VerzögerungMikrosekunden(pulseWidth); digitalWrite(servoPin, LOW); Verzögerung(20 - (pulseWidth / 1000,0)); // 20-ms-Periode // Beispiel: Sweep durch Ändern der PulseWidth von 500 auf 2500 }
Problem: Der Servo zittert bei bestimmten Winkeln und zieht zu viel Strom.
Lösung: Fügen Sie einen 470µF–1000µF Elektrolytkondensator zwischen Strom und Masse in der Nähe des Servos hinzu. Verwenden Sie eine separate 5V/6V-Versorgung (mindestens 2A für ein Servo, 5A für mehrere).
Codeanpassung: Reduzieren Sie die Geschwindigkeit, indem Sie zwischen den Schreibbefehlen eine Verzögerung von 30–50 ms hinzufügen.
Problem: Servo kehrt nach dem Drehen nicht genau in die Mitte zurück.
Lösung: Problem mit der mechanischen Zentrierung – Verzahnung des Servohorns um einen Zahn anpassen. Kalibrieren Sie im Code den Mittelimpuls (normalerweise 1520 µs statt 1500 µs).
Verifizierungsmethode: Bringen Sie einen Zeiger an und markieren Sie die wahre Mittelposition bei 1500 µs. Passen Sie dann die Impulsbreite an, bis die mechanische Mitte übereinstimmt.
Problem: Servo überhitzt, wenn eine Nutzlast von 200 g bei 45° gehalten wird.
Lösung: Spannung auf 5,0 V reduzieren (Drehmoment nimmt ab, aber Strom sinkt deutlich). Passive Kühlung hinzufügen (kleiner Kühlkörper auf Metallgehäuse). Das maximale Dauerhaltemoment sollte 6 kg·cm nicht überschreiten, um eine thermische Abschaltung zu verhindern.
Versorgen Sie das Gerät niemals direkt über den 5-V-Pin des Arduino mit Strom– Der Blockierstrom (typisch 1,2 A) setzt Ihren Mikrocontroller zurück. Verwenden Sie immer eine separate Servostromquelle mit gemeinsamer Masse zum Arduino.
1. Kalibrieren Sie immer zuerst: Führen Sie eine einfache Skizze aus, die in 10-µs-Schritten von 500 µs bis 2500 µs reicht, und beobachten Sie dabei die tatsächliche Hornbewegung. Notieren Sie sich die µs-Werte für 0° und 180° – das sind Ihre wahren Grenzen.
2. Nutzen Sie vom ersten Tag an eine separate Stromversorgung: Servo-VCC an eine 6V 3A-Versorgung anschließen (oder 4x AA-Batterien in Reihe). Verbinden Sie den Servo-GND mit dem Arduino-GND. Signalkabel zum PWM-Pin.
3. Fügen Sie einen 1000-µF-Kondensator mit niedrigem ESR hinzuan den Servostromklemmen angeschlossen – dies verhindert Spannungsabfälle bei plötzlichen Richtungsänderungen.
4. Für Multi-Servo-Projekte: Staffeln Sie ihre Bewegungsbefehle um 20–50 ms, um gleichzeitige Spitzenstromaufnahmen zu vermeiden.
5. Implementieren Sie Softwarelimits: Auch wenn das Servo 180° unterstützt, beschränken Sie Ihren Code auf 170° (z. B. 550 µs bis 2450 µs), um das interne Potentiometer vor mechanischem Verschleiß zu schützen.
Der MG946R benötigt ein 20-ms-PWM-Signal (50 Hz) mit Impulsbreiten zwischen 500 µs und 2500 µs für eine vollständige Drehung um 180°.
Für einen zuverlässigen Betrieb ist eine 6-V-Stromquelle erforderlich, die mindestens 2 A für ein einzelnes Servo liefern kann.
Kalibrieren Sie vor der Endmontage immer den genauen Impulsbereich für Ihr spezifisches Gerät.
Verwenden Sie die Arduino Servo-Bibliothek mit expliziten Min/Max-Parametern oder direkter Impulserzeugung für erweiterte Anwendungen.
Letzter Aktionsschritt: Bevor Sie das Servo in Ihren endgültigen Bau integrieren, schließen Sie es an einen Arduino mit einer 6-V-3A-Versorgung an, laden Sie die oben bereitgestellte Kalibrierungsskizze hoch und notieren Sie die tatsächlichen 0°- und 180°-Impulswerte Ihres Geräts. Ändern Sie dann Ihren Produktionscode, um diese kalibrierten Werte für einen präzisen und zuverlässigen Betrieb zu verwenden.
Aktualisierungszeit: 22.04.2026
Wenden Sie sich an den Produktspezialisten von Kpower, um einen geeigneten Motor oder ein geeignetes Getriebe für Ihr Produkt zu empfehlen.