You are viewing an older revision! See the latest version

Dynamixel AX12 Servo

Dynamixel Ax-12+ Servo

This page is intended as a write-up / tear-down of the the Dynamixel AX-12+ servo motor that was used in the http://mbed.org/etch-a-sketch demo at Embedded Systems Conference.

Introduction

This little beast is a highly featured peice of kit. It's not the cheapest servo money can buy, but it is certainly very versatile, and delivers a serious bang for your buck.

AX12

The headline features are:

  • 55g
  • 7v - 10v supply
  • 900mA maximum current
  • 16.5kg/cm Holding torque
  • 300 degree or continuous rotation
  • Half duplex serial (8-N-1) interface, up to 1Mbps
  • Feedback for position, temperature, load, voltage etc

It is really mechanically sound too, and comes with a mounting plate, a bracket to fit to the spindle and plenty of nuts and bolts to bolt it all together. It has been designed so that one servo canbe mounted on the spindle of another so you can do multple degrees of freedom just by mounting them on eachother.

As ever the first step is simply to establish communication with the AX-12. Once we are reliably reading and writing data to the the AX-12 we can think about an API that makes it simple to control.

Hello World!

We'll now go through the stages of "Hello World", namely:

  • Wire it up
  • Understand the protocol
  • Simple experiment to just get it responding

Wiring it up

The first thing to note is that this servo uses a serial interface, but it is half duplex i.e, a shared wire for transmit and recieve.

When we did this experiment for the Etch-a-sketch, this mean we need to wire up some external circuit to make sure we switch the transmit pin to high impedance when we wish to recieve.

An example circuit using a 74HC126 is given in the AX-12+ data sheet on page 7, but I chose to do it slightly differently. Firstly I am using a 74HC125, because that is all I had laying around. Secondly, I am not disabling recieve when I am transmitting. This does lead to my transmissions being looped back, but for now that is useful information.

Here is what I originally built:

Schematic Circuit

However, following the recent release of the SerialHalfDuplex class (somewhat inspired by this project!) this is whole circuit is no longer required in order to drive an AX12. You simply tie the TX and RX pins together with the Data pin on the AX12.


All wikipages