Dynamixel AX-12+ Utility for finding or changing baud rates and ID numbers
Duane Degn
Posts: 10,588
A couple of years ago, when I was first starting my adventures with the Propeller chip (and microcontrollers in general), I attempted to change the baud rate on a recently (at the time) acquired Dynamixel AX-12+ robot controller. I havent been able to communicate with it since.
A couple of months ago ratronic posted an his improved version of an object to communicate with AX-12+s. I thought it was high time to reclaim my incommunicado AX12.
I wrote a program that would ping the AX12 with each possible ID number at each possible baud rate. After a few minutes of churning through the numbers my trusty Propeller found both the ID number of my AX12 and its current baud settings (almost).
In preparing to share my little utility I decide to add a couple of features. It now not only pings an AX12 but it also verifies the register values are what they should be at the likely ID number and baud setting. I was finding I was getting successful pings with baud rates way off the actual values (by 400% sometimes). This is partly do to Davids (ratronics) short cut in checking for a successful ping (Im not knocking David or short cuts). By checking register values this program double checks to make sure the ID numbers and baud rates are what the initial ping results would lead one to believe.
The program checks input to make sure they are valid options for the AX12s.
As mentioned in the title this object allows one to find unknown ID numbers and/or baud rate settings for Robotis Dynamixel AX-12+ controllers.
Is this worth putting in the OBEX? (Im thinking not.)
Ive left some debugging statements in the code (Im tired of working on it for now). You might need to scroll up in the terminal window to find the output of some of the tests.
Hopefully this will help someone else who has an incommunicado AX12.
This does not communicate at 2M bps. I think if the baud register is set to zero the AX12's baud becomes 2,000,000 bps. I havent ever tried setting any of my AX12s to this baud and Davids object checks data to prevent it from happening but Id think its possible. I think if an AX12 is set to 2M, it would require a special PASM program with a hard coded message to reset the AX12 so it would be usable with the Propeller again.
I dont know of any communication objects that transmit at 2Mbps. Is there anything this fast? I know faster communication is possible with the Prop but I think this faster methods use multiple lines in parallel.
Thank you radtronic for a very useful object.
Duane
Here's the options in the main menu
AX12_Find_Change_ID_Baud_010 - Archive [Date 2010.11.30 Time 19.45].zip
A couple of months ago ratronic posted an his improved version of an object to communicate with AX-12+s. I thought it was high time to reclaim my incommunicado AX12.
I wrote a program that would ping the AX12 with each possible ID number at each possible baud rate. After a few minutes of churning through the numbers my trusty Propeller found both the ID number of my AX12 and its current baud settings (almost).
In preparing to share my little utility I decide to add a couple of features. It now not only pings an AX12 but it also verifies the register values are what they should be at the likely ID number and baud setting. I was finding I was getting successful pings with baud rates way off the actual values (by 400% sometimes). This is partly do to Davids (ratronics) short cut in checking for a successful ping (Im not knocking David or short cuts). By checking register values this program double checks to make sure the ID numbers and baud rates are what the initial ping results would lead one to believe.
The program checks input to make sure they are valid options for the AX12s.
As mentioned in the title this object allows one to find unknown ID numbers and/or baud rate settings for Robotis Dynamixel AX-12+ controllers.
Is this worth putting in the OBEX? (Im thinking not.)
Ive left some debugging statements in the code (Im tired of working on it for now). You might need to scroll up in the terminal window to find the output of some of the tests.
Hopefully this will help someone else who has an incommunicado AX12.
This does not communicate at 2M bps. I think if the baud register is set to zero the AX12's baud becomes 2,000,000 bps. I havent ever tried setting any of my AX12s to this baud and Davids object checks data to prevent it from happening but Id think its possible. I think if an AX12 is set to 2M, it would require a special PASM program with a hard coded message to reset the AX12 so it would be usable with the Propeller again.
I dont know of any communication objects that transmit at 2Mbps. Is there anything this fast? I know faster communication is possible with the Prop but I think this faster methods use multiple lines in parallel.
Thank you radtronic for a very useful object.
Duane
Here's the options in the main menu
************************** Main Menu ************************** Methods that attempt to find either ID numbers or baud rates work better with only one AX-12+ controller connected. Enter i to find the ID number of an AX-12+ controller. (with a known baud rate) Enter b to find the baud rate of and AX-12+ controller. (with a known ID number) Enter ? if both the ID number and the baud rate of the AX-12+ are unknown. (This will search through all ID numbers at each baud rate.) Enter c if you want to change the ID numbers of AX-12+ controllers. (with a known baud rate) Enter r if you want to change the baud rate of the AX-12+ to test. (with known ID numbers) Enter t if you want to check to make sure an AX-12+ has a certain baud and ID number. (with known baud and ID numbers) ***************************************************************
AX12_Find_Change_ID_Baud_010 - Archive [Date 2010.11.30 Time 19.45].zip
Comments
By all means, upload to OBEX. If you don't , it will get buried in the forum, although the search engine is much better now.
I will check out your code in about a month as I have some AX-12+ coming in to play with.
Thanks for the code.
Jim