Well that’s because this isn’t the original TowerPro MG996R servo, but a cheaper replica, which obviously has worse performance. The maximum current draw that I noticed was up to 0.63A at stall. I connected a multimeter in series with the servo to check the current draw. Pulses with 0.6ms duration corresponded to 0 degrees position, 1.45ms to 90 degrees and 2.3ms to 180 degrees.
A pulse each 20ms digitalWrite(servoPin, HIGH) ĭelayMicroseconds( 1450) // Duration of the pusle in microseconds digitalWrite(servoPin, LOW) ĭelayMicroseconds( 18550) // 20ms - duration of the pusle // Pulses duration: 600 - 0deg 1450 - 90deg 2300 - 180degĪfter some testing I came up with the following values for the duration of the pulses that work with my servo.
Servo Motor Control - 50Hz Pulse Train Generator We just need to define the pin to which the servo is connect, define that pin as an output, and in the loop section generate pulses with the specific duration and frequency as we explained earlier. Now let’s take a look at the Arduino code for controlling the servo motor. See Also Arduino Brushless Motor Control Tutorial | ESC | BLDC Servo Motor Control Arduino Code