I have recently purchased my first ever servo, a cheap unbranded Chinese MG996R servo, for £3.20 on eBay.
I am using it in conjunction with a Arduino Servo shield (see below):
As soon as it arrived, before even plugging it in, I unscrewed the back and ensured that it had the shorter PCB, rather than the full length PCB found in MG995 servos. So, it seems to be a reasonable facsimile of a bona-fide MG996R.
I read somewhere (shame I lost the link) that they have a limited life, due to the resistive arc in the potentiometer wearing out. So, as a test of its durability, I uploaded the following code to the Arduino, which just constantly sweeps from 0° to 180° and back to 0°, and left it running for about 10 to 15 minutes, in order to perform a very simple soak test.
#include <Servo.h>
const byte servo1Pin = 12;
Servo servo1; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup()
{
servo1.attach(servo1Pin); // attaches the servo on pin 9 to the servo object
Serial.begin(9600);
}
void loop()
{
pos = 0;
servo1.write(pos); // tell servo to go to position in variable 'pos'
Serial.println(pos);
delay(1000); // waits 15ms for the servo to reach the position
pos = 180;
servo1.write(pos); // tell servo to go to position in variable 'pos'
Serial.println(pos);
delay(1000); // waits 15ms for the servo to reach the position
}
When I returned, the servo was just making a grinding noise and no longer sweeping, but rather it seemed to be stuck in the 0° position (or the 180°). I picked the servo up and whilst not hot, it was certainly quite warm. A quick sniff also revealed that hot, burning motor windings smell. After switching of the external power supply and allowing it to cool, the servo began to work again. However, the same issue occurred a little while later. Again, after allowing it to rest, upon re-powering, the servo continues to work. However, I am reluctant to continue with the soak test, as I don’t really want to burn the motor out, just yet.
Is there a common “no-no” of not making servos sweep from extreme to extreme, and one should “play nice” and just perform 60° sweeps, or is the cheapness of the servo the issue here?
I am powering the servo from an external bench supply, capable of 3A, so a lack of current is not the issue.
Please note that I also have a follow up question, Should a MG996R Servo's extreme position change over time?