To me all similarly priced servo motors look the same and promise the same performance and maybe they ought to, too. So amongst all the servos out there how do you choose that perfect one for your application? Well, I suppose that is the question that needs answering! Quite fortunately when I had to answer that question, of which set of motors to choose for the 17 Degree-of-Freedom (DOF) robot project, the Tower Pro MG996R motors came recommended, as part of the 17 DOF robot kit. Hence, these motors were thrust upon me.
The predecessor to this motor, the MG996, did not exactly receive the most glowing of reviews and was particularly noted for its lack of accuracy and centering. However this version is meant to be a worthy successor with a redesigned PCB and Integrated Circuit (IC) control system, which allows it to provide precise movement and centering. We provide an insider's view of this servo in this blog post.
People generally see what they look for, and hear what they listen for. - Harper Lee, To Kill a Mocking Bird
The first things one notices about the MG966R, seen below, is how sturdy it is. This is not surprising given that it is rated to provide a stall torque of 15 kg-cm at 6V, along with stable and shock proof double ball bearings. It can be reliably operated within a temperature range of between 0oC and 50oC and consists of metal gears. The underside, that is the opposite side to the side with the label, has the all important CE marking.
Some of the other characteristics of the MG996R are listed in the table below. According to this Table the servos has a dead band width of 5 microseconds, which means that if a Pulse Width Modulated (PWM) signal, used to control the motor, has drifted by less than 5us there should not be any discernible movement in the servo horn or arm. Hence, if a PWM signal of 1.5ms is required to centre it, then a pulse width modulated signal of 5ms ± 5us can be applied to the motor without the arm or horn drifting. A characteristic not listed in the table is the MG996R's compatibility with the JR and Futaba motors.
|Dimension||40mm x 19mm x 43mm|
|Operating Speed||0.17sec / 60 degrees (4.8V no load)|
|Operating Speed||0.13sec / 60 degrees (6.0V no load)|
|Stall Torque||13 kg-cm (180.5 oz-in) at 4.8V|
|Stall Torque||15 kg-cm (208.3 oz-in) at 6V|
|Operation Voltage||4.8 - 7.2Volts|
|Dead band width||5us|
|Gear Type||All Metal Gears|
|Connector Wire||Heavy Duty 11.81" (300mm)
The motor is very easy to strip down, as the casing is simply held together by four extremely long screws, which require a small star-head screwdriver to unscrew. I had one of those star-head screwdriver kits that all computer fiddlers tend to carry around with them and one of the screwdrivers in it fit perfectly. When the servo is disassembled the contents can be seen in the image below.
The motor appears to be a standard DC motor that is wired to a half-length controller board. As can be seen in the Figure above, the metal gears are well greased, although there is no indication as to what the maintenance cycle of the servo is in order for it to continuously perform at its advertised rating. The photo insert shows the accessories that are provided with the servo and include a variety of servo horns and mounting screws. These accessories are essential when used in conjunction with custom parts, printed on a 3D printer, as they provide a fixture to the motor when designing custom motorised robot parts, like in the design of an active toe joint for, example.
The image above provides a close-up top-view of the gears, while, likewise, the image below provides a side-view. Personally, I feel that the construction and quality of these gears could be the biggest selling-point of this servo. Especially, when one considers modding the servo for continuous rotation or for use as a smart stepper motor. In fact, where this motor could truly come into its own is when it is modded to provide positional feedback to a micro controller or especially a FPGA.
While I was writing this article I was also in the process of finalising the design of a controller board for the MG996R that can be specifically used with FPGAs. FPGAs are susceptible to damage when their I/O pins are connected to high currents and high voltages, typically generated by servo motors. Hence, the circuit designed for this board has galvanic isolation (no direct current path) to prevent the high currents, generated by the servo, from flowing back into the FPGA and destroying it.
The block diagram of this driver board can be seen in the Figure above. The major factors that has driven the design of this board has been component size and cost, where the finalised PCB is expected to be mounted directly onto the flat side of the servo. Hence the PCB should roughly be about 40mm by 36mm in area. The major components on the board will be an opto-coupler (HCPL-2730), a dual NAND gate (SN74LVC2G00), a Low Dropout (LDO) Voltage Regulator (LV70233PDBVR) and a Switching Voltage Regulator (TPS563209). You can read more about this design in the 17 DOF Robot Project, especially in the articles following the one on the design of a multi-channel servo-controller board.
During my search for material on the design of a FPGA servo driver board I came across the open servo project or OpenServo (www.openservo.com). The stated aim of the OpenServo is to provide "a combination of hardware and software that is meant to replace the original PCB internal to low-cost analog RC servos". It is an open community project "with the goal of creating low-cost digital servos for robotics". As an extension to the design presented above I might consider integrating it with a open servo board, such that an FPGA could drive a modified, galvanically isolated, MG966R directly. The board will also provide current and voltage data feedback to the FPGA, which should allow the even more precise control required for humanoid biped robot movement.
Before I received a box full of these servos for my robotics project I had not really considered the inner working of servo motors. However, now that I have started working with the MG996R it has become apparent how interesting a world the servo motors resides. When considering using the MG996R in FPGA related projects there is quite a lot to consider including the possibility of developing a FPGA centric, custom IC controller board.
The MG996R is a very robust motor and those that are put off from using it by the performance of its predecessor shouldn't be, because this motor has a lot to offer in its native form or as a customised variant. Our current task is to develop the FPGA driver board for this motor and we should publish our performance figures in a review article, soon. Well, with everything else that is going on hopefully soon.