|AX-12 Dynamixel Information|
All the tricks and tips I have gleaned whilst using these servos - that isn't in the manual!
Return to the home page of Robots Australia
|Contact Robots Australia |
The Robotis Dynamixel AX-12 Servos represent really good value - they are reasonably low cost (compared to other digital servos anyway), have multidrop network communications, sensing and feedback of position and current draw (load), compliance and the ability to turn off the motor drive to allow 'teaching' by externally moving the servo position. These and many other features make the AX-12 a pretty good choice for small robots (generally under 2kg).
When I decided to use these servos for Quadruped4 I bought two servos from Tribotix to both learn about the usage, and also to test the limits, particularly the operating torque limits, as generally servo manufacturers only specify the stall or holding torque which is not that valuable in terms of physical robot design.
I have tested the available torque of a few other servos (see Servos for Robotics) using a simple technique based on bolting or clamping the servo motor to a platform, attaching a 700mm long lightweight length of aluminium channel to the servo horn such that the servo horn is in the centre of the length (equal weight on both sides), and moving a weight attached via a loop of wire over one side of the aluminium length. Sliding the weight further and further outwards from the servo whilst commanding the servo to move gives you a really good way of testing both the holding torque, and the actual torque you can expect the servo to deliver comfortably during use. When the servo starts to really struggle, you just measure the distance from the loop of wire holding the weight to the servo in the centre and calculate the torque from that. Of course this method requires that the aluminium beam holding the mass has to stay relatively horizontal, so as to apply the full torque loading of the suspended mass, so only small servo movements can be tested.
I needed some way of communicating with the AX-12 Servos for testing purposes. Most people come into contact with the servo through the Robotis Bioloid robot kit, and therefore have the Robotis provided software and their onboard control module to handle the servos. Because of the TTL multidrop interface the AX-12's support, and the 1MBit data rate, I needed a little converter to allow desktop environment software to communicate directly with at least one servo. I re-tasked the PWM Servo Controller board (see Earlier Work) with some new software and a couple of little hardware mods to act as a pass-through converter, one UART acting as a 1Mbit/s TTL level port, and another communicating at 19200 baud through the onboard USB interface to the host computer. I wasn't trying for any performance here, just a working way to set registers within the AX-12. I wrote a little program called AX12Tester which allowed the servo position to be set by a control knob, and various registers to be read or written. This enabled me to test the behaviour of the servos and get a feel for using them in a real design.
The torque is specified as final max holding torque of 16.5 kg.cm at
10V. I wanted to test what the operating torque limits where, operating
torque being the maximum usable torque. I used the same test method I
have used for a few other servos where I have a long arm made out of
aluminium U channel positioned horizontally, hanging maybe 40cm on
either side of the servo itself to counterbalance the weight of the
arm. I then hang a weight on one side at various distances and see
firstly whether the servo can hold the weight without too much droop
and whether it can actually lift the weight when commanded to rotate
the arm to a different angle. I also wanted to test whether the servo
would withstand higher voltages than 10V, as I have seen a few
indistinct references to wider specs for this device on the web (and
the overvoltage defaults in the AX-12 are set to 19V). Ideally I was
looking for the ability to run on 12.6V as this would represent a fully
charged LiPo 3-cell pack.
Ok, I have done a little more experimentation on what effects different
registers have on the Ax-12 operation, and collected a few notes on the
Ax-12 behavour. Firstly, I found that the default value of the Alarm
Shutdown register 0x12 is 0x24 rather than 0x04 as specified in the
manual. This means that the AX-12 by default will shutdown to zero
torque condition on over temperature and over load (too high torque
loading). I found that setting this register to 0x04 and then power
cycling the unit (writing to any of the EEPROM register areas requires
a power cycle to copy the values into the working RAM registers so they
are applied) allows the AX-12 to produce more torque without shutting
off. Mind you this allows the unit to be damaged (stripped gears etc)
if you do use much more than about 10kg.cm of load. I found that when I
loaded the servo with 10kg.cm and commanded the unit to move it flashes
the LED indicating an overload condition, but now does not shutdown
into zero torque mode like it used to with the factory defaults.