Page 1 of 3 123 LastLast
Results 1 to 10 of 30

Thread: Incomplete Dynamixel documentation

  1. Question Incomplete Dynamixel documentation

    Hello

    I have read all available documentation about Dynamixel but there is still info missing.
    I'm trying to make a AX12A running but it does not respond, not even to a PING on the broadcast address.
    I am applying 11V to Vdd.

    Question 1)
    My manual (PDF) says:

    > When power is applied to the Dynamixel actuator, the LED blinks twice to confirm its connection.

    But my servo does not blink twice.
    The red LED flashes only once.
    Is this an error in the servo or in the manual ?

    Question 2)
    There are no details about the voltages on the multi drop bus in none of the manuals.
    I suppose that a start bit is zero and a stop bit is 1.
    Is that correct ?

    Question 3)
    I have connected the Dynamixel to a CPU that runs with 3,3V.
    To make the COM port half duplex I use a diode and a resistor.
    So the voltages that come to the servo are:
    Low = 0,7V
    High = 4,0V

    I doubt that this is the problem because modern chips have a threshold of about half the operating voltage which is around 2,5V for TTL. So there should be no problem to detect 0,7V as low and 4V as high ?

    What are the threshold levels for Low and for High of the Dynamixel AX series ?

    Question 4)
    I checked on my oscilloscope the signals on the bus.
    They are very clean and they are 1 mega baud.

    What else can I do to find the reason why the servo does not respond at all?

    Elmü

  2. #2

    Re: Incomplete Dynamixel documentation

    If it were me, I would have some setup that is known to work and compare the results.

    I started with Arbotix boards, I also have some of the USB plug ins, like USB2AX, USB 2 dynamixel, Open CM 9.04... That way you should be able to plug your servo in and make sure it works. Also you can then compare the signals.

    I did this earlier and was then able to get AX12 servos to work with Arduino Mega, as well as teensy 3.1 (runs at 3.3v).

    Kurt

    Edit - Here is a simple logic Analyzer output showing 1 packet going out.
    Click image for larger version. 

Name:	LA-AXBus-Update.jpg 
Views:	220 
Size:	36.2 KB 
ID:	5803
    Last edited by KurtEck; 01-16-2015 at 01:06 PM.

  3. #3

    Re: Incomplete Dynamixel documentation

    The TTL UART bus does, in fact, have positive polarity that you suggest -- start bit is low (0V) and stop bit is high (5V.)
    The TTL UART bus is specified at 5V, and the driver chip is something like a 74HC125, which may not like 4V as high. (as opposed to 74HCT125, which behaves more like you suggest.)
    I find that the best way of turning a full-duplex UART into a single-duplex uart is to just tie RX and TX together, and use software to toggle the enablement of the TX vs RX parts of the UART. (Not all MCUs support this, so that may not be an option for you.)

  4. Re: Incomplete Dynamixel documentation

    Hi,

    You are talking about a PDF manual? I don't think there has been any official PDF manual since about 2006, when they sold AX-12 servos (after that they upgraded to AX-12+ then AX-12A).
    Better use the actual, up to date manual at http://support.robotis.com/en/

    Funnily enough, looking at the "blink twice" question, I just saw that in the manual, they have some erroneous info about the LED on the AX-12/AX-12+/AX-12A page (they mention Red, Green and Blue LEDs even though these servos only have a red LED).
    Seems to me either a new revision is imminent, or someone has been over-zealous.

    Now to answer more in details:

    1) Should blink only once when you apply power, your servo is OK.

    2) The bus uses 8N1 TTL serial, so yeah as jwatte mentions, your suggestion is right.

    3) the driver chip (i just opened a 1year-old 12A to check) is the 74HC126D by NXP, so the high input threshold is (interpolated from the available data) VIH~= 3.5V min / 2.7V typical. With 4V you should be OK.
    Low level should be around 1.5V, OK too.
    ---
    Personal blog: http://xevel.org
    USB2AX documentation: http://xevelabs.com

  5. Re: Incomplete Dynamixel documentation

    Also, is the AX-12A fresh out of the box (default config?)?, what code do you use?, what packet is produced?, on what MCU?, how did you actually connect everything (schematics)?
    Many things could go wrong : the packet you send might be erroneous, the ID might not be the right one, the line might not be tri-stated properly, the baud rate might be wrong...
    ---
    Personal blog: http://xevel.org
    USB2AX documentation: http://xevelabs.com

  6. Re: Incomplete Dynamixel documentation

    Hello

    Thanks for your quick answers.
    Yes, I also wondered about the green and blue LED's.
    It seems that the one who wrote this had much fantasy.
    Apart from that the online (HTML) documentation is written in a horribly bad english.


    The PDF that I have is about the AX-12 without "+" or or "W" or "A" behind.
    I suppose it is some years older.
    (But this PDF was much better quality than the actual documentation: perfect english, well explained)


    My servo is factory default.
    I took it out of the package and it never has moved.
    So it should work at 1 Mbaud with ID = 1.


    Here is my schematics.

    Click image for larger version. 

Name:	Dynamixel_Rs485.gif 
Views:	453 
Size:	4.5 KB 
ID:	5804

    On the oscilloscope I see that the signal is clean and at 1 Mbaud.
    I checked the polarity: Start bits are negative.
    When I send FF I get a narrow negative pulse like in the image from KurtEck


    Due to this hardware design I get the echo of the command that I have sent back to the input.
    My software checks for the correct echo.

    I send the code from the examples section in the documentation:
    FF FF 01 02 01 FB (Ping to ID 1)

    I get the same bytes back to the serial port's input but there is no response from the servo coming behind these bytes.
    Last edited by Elmue; 01-16-2015 at 02:08 PM.

  7. Re: Incomplete Dynamixel documentation

    2.2k might be a little strong for your pull-up. I would go with something more in the >10k range personally. On the usb2ax I use the internal pullups that are more like 20-40k.

    Your setup with the diode seems strange to me, unless you tristate TX, I don't see how the servo is supposed to be able to pull the DATA line to low.
    TX will be at 3.3V, you'll have the servo try to pull DATA low, already fighting the pull-up, and then the diode will prevent DATA from getting any lower than 3.3-0.7=2.6V. Am I completely missing something?

    What does the scope show about 500-510us after the end of the instruction packet? (that's the default response delay)?

    Seems to me that to get proper operation you should turn off the TX part of the UART when not sending data. That's probably the TXEN bit of the TER register (cf LPC23XX user manual).
    ---
    Personal blog: http://xevel.org
    USB2AX documentation: http://xevelabs.com

  8. Re: Incomplete Dynamixel documentation

    Hello

    I chose 2,2 kOhm because 1 Mbaud is a high frequency.
    If the factory default would be a more intelligent value like for example 9600 baud I would also have chosen a higher resistor.

    > I don't see how the servo is supposed to be able to pull the DATA line to low.

    It is just the diode that allows that the servo can pull down the line to whatever it wants.
    It is the opposite: the servo could have problems to pull UP to 5V because the diode and the µP output might limit it to 4V.
    But the USBizi chip is 5V resistant.
    And if the line is 4V or 5V should not matter: The µP recognizes already 3,3V as high.

    But I see on the scope (even after more than 500 µs) that the servo does not even TRY to pull the line up or down.
    It stays EXACTLY at 4V.

    > Your setup with the diode seems strange to me

    Yes I know that this is a quick and dirty circuit.

    But the µP is programmed in C# and there is no command to put the COM port in tristate mode.
    I suppose that I will have to add an external tristate chip.
    But I doubt that this will solve the problem.

    You wrote that you found a 74HC126D chip in the servo.
    But the data sheet does not show the details for a "D" chip.
    May be this behaves different than the chip without "D" ?
    Last edited by Elmue; 01-16-2015 at 03:02 PM.

  9. #9
    Join Date
    Sep 2010
    Location
    ಠ_ಠ
    Posts
    2,282
    Images
    27
    Rep Power
    275

    Re: Incomplete Dynamixel documentation

    The RGB LED change occurred in the online docs something like a year ago, but was most likely anticipation of as-yet-nonexistent upgrades to match the XL-320. Under status return level: "When Instruction Packet is Broadcast ID, Status Packet is not returned regardless of Status Return Level.", so PING sent to broadcast can never work. If you think about how the Broadcast ID is supposed to work with multiple servos, the reason for this should be obvious.

    What packets have you sent to it over the time you've had it? Only PING, or were there WRITE packets that may have changed the baudrate or other EEPROM settings? Have you made sure there is a solid connection between ground pins of the servo and microcontroller? What is current rating of the 11V power supply? It must be at least 1A at 11V, and preferably greater than 2A since the ratings tend to be a bit optimistic (voltage often sags a bit and/or goes into overload in cheap supplies).
    Please pardon the pedantry... and the profanity... and the convoluted speech pattern...
    "You have failed me, Brain!"
    bleh

  10. #10
    Join Date
    Sep 2010
    Location
    ಠ_ಠ
    Posts
    2,282
    Images
    27
    Rep Power
    275

    Re: Incomplete Dynamixel documentation

    1Mbps is default because the CM-5/510/530/700/730/900 under RoboPlus Task/Motion use 1Mbps as default and most every microcontroller is easily capable of >1Mbps even in fairly noisy environments. Even the DX/EX/RX/MX servos default to a half-decent 57600bps, instead of abysmally slow 9600 bps.

    2.2k is very low value for a pull-up resistor on the dynamixel bus. The value used in CM-5/510/530/700/730/900 is 10k and most ATmega alternatives that use tied TX-RX pins use only the 10~50k internal pull-up without any issues.
    Please pardon the pedantry... and the profanity... and the convoluted speech pattern...
    "You have failed me, Brain!"
    bleh

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Arduino Library for Dynamixel XL-320 (and Dynamixel PRO if modified).
    By LuisGIII in forum DYNAMIXEL & Robot Actuators
    Replies: 3
    Last Post: 06-07-2015, 11:00 PM
  2. 18 Dynamixel Ax-12A with ArbotiX/Arduino - How to connect the dynamixel?
    By Snuuq in forum Arbotix, Microcontrollers, Arduino
    Replies: 20
    Last Post: 02-14-2014, 11:29 AM
  3. News/Announcement Check Out the New InterbotiX Documentation Site!
    By kgranat in forum Robotics General Discussion
    Replies: 0
    Last Post: 08-12-2013, 06:19 PM
  4. Arduino Pictures for your Project Documentation
    By Migs in forum Arbotix, Microcontrollers, Arduino
    Replies: 1
    Last Post: 10-23-2009, 08:52 AM
  5. Documentation Comments
    By slashsplat in forum Humanoids, Walkers & Crawlers
    Replies: 9
    Last Post: 01-06-2007, 01:51 PM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •