View Full Version : Implementing a custom Bioloid Device from an Arduino

01-01-2011, 06:41 PM
Hello and happy new year ;)

I want to make a custom Bioloid device that would be capable to seamlessly join the Bioloid bus, and accept the same commands as an AX servo or sensor.

Has anyone done that, or seen some information about something similar?

My first thought were to use an ATmega328 (arduino mini pro, 5V, 16MHz) and the Arbotix BioloidController library (or at least ax12.h & ax12.cpp). I haven't really looked into the details of the code yet, but my understanding of how the half-duplex Bioloid bus works makes me think that some modification would be needed, as I'm not making a master, but a device (always listening and talking only when asked, instead of always holding the line and listening only to get replies).

Any advice/documentation that could get me going ?

EDIT: Just had to post about it to find what I was looking for :D : http://profmason.com/?page_id=998

01-02-2011, 01:56 AM
I've had a decent amount of trouble getting the tie the RX/TX lines trick working reliably. This might be due to me giving my ATMEGA too much work to do or the fact that I am stubborn programmer and don't use Jon's code. I dunno. From now on I'm just going to bite the bullet and add the extra gate chip to do the tristate in hardware. Here's my latest device..
It's basically just the diagram in the AX-12 manual without the inverter chip. Instead I just use two digital pins.

01-03-2011, 08:16 AM
Ok, thanks for the feedback.

I think I'll try with the TX/RX lines tied, and get back to your solution if I can't get it to work properly. If your problems came from the MCU being overloaded, I guess I won't have the same issues.

02-14-2011, 08:25 PM
Hello again,

I'm working on some code to do my device, and I have a question relative to communication on the Dynamixel Bus.

Is it possible to have valid communication where we can see two 0xFF bytes one after the other followed by a byte different from 0xFF inside a packet ? And if it was possible, do the other servos on the bus manage to get around it without failing at reading the next packet ?

EDIT: once again, I just have to post about it to find an answer by myself >_>... this time looking at the Control Table Data Range in the AX-12 manual.
The answer is no, as long as the master sends proper instructions, with parameters in valid range. And it's completely impossible to have this problem coming from a Status Packet.