Results 1 to 10 of 10

Thread: TTL bus has a mysterious pulse on it

  1. #1

    TTL bus has a mysterious pulse on it

    I have a rover. It uses four dynamixels to steer four wheels. (AX-12As)
    I have a Teensy and a 74HCT125 that talks to the Dynamixel bus.
    This largely works great. Except, once in a while (at intervals between 100 ms and 10 seconds) I will receive a return packet from a Dynamixel that has a corrupt checksum. This happens most often with the back-left servo (ID 4) but happens for all of them with reasonable frequency (IDs 2, 3, 4 and 5)

    When I hook up the Saleae, it decodes the bus data correctly, but the analog sample shows that there is a mysterious pulse with a bandwidth of just below 1 MHz that screws with the return data, making the 74HCT125+Teensy detect a 1 when it shouldn't.
    This pulse isn't present in all response packets, only some. This pulse is never present in the query packet. Sometimes, there are two of this pulse in the response packet. When the pulse affects a high state, it doesn't corrupt the data. I haven't seen the pulse on the wire when it's just idle (being pulled up to just under 5V by a weak pull-up to my 5V supply.)

    Other signals on the rover do not show this same pulse; I have three RoboClaw controllers that have a clean bus, and the LED that indicates receive error (which I trigger off of) also doesn't see it, so it's not an all-board kind of spike.

    Some pictures:

    Last edited by jwatte; 07-23-2017 at 10:46 PM. Reason: get the link right

  2. #2

    Re: TTL bus has a mysterious pulse on it

    Oh, also: When I extend the return delay time register from 0 to 150 (which adds 300 microseconds of delay,) the pulses still show up in the response data, and never in the request data or the intervening blank space.

  3. #3

    Re: TTL bus has a mysterious pulse on it

    You know how a Dynamixel sometimes will pause in the middle of a reply for half a millisecond? (Presumably, the control loop interrupts)
    This happened while I was capturing, and the pulse is fairly regularly seen while the servo is sending, in the "dead space" between response bytes.)

    I'd suspect this one servo was somehow bad, except I see the pulse on all four servos.

    And as you can see, this happened for servo ID 5 this time. (The other screens are from servo 4.)

  4. #4

    Re: TTL bus has a mysterious pulse on it

    I made a "capacitor plug" by cutting a TTL cable at an inch, and putting a 1 uF ceramic, a 100 uF electrolytic, and a 16V bidirectional TVS across the GND/power. I then plugged this straight into the un-used TTL port on the back of servo ID 4. That servo now no longer generates these spurious pulses. I don't think the TVS is needed, but it was already there (this plug previously just did the TVS for other purposes.)

    I guess I'll make four of these, plug them in, and see how it goes.

  5. #5

    Re: TTL bus has a mysterious pulse on it

    Four of these: Fixed Forever!

  6. #6
    Join Date
    May 2016
    White Plains, NY
    Rep Power

    Re: TTL bus has a mysterious pulse on it

    Keeping in mind how adamant the Roboclaw folks are about placing external caps near their boards, I'm not surprised that extra caps quiet things down on these Dynamixel servos. They're are awfully small to have much capacitance in them - and they DO have digital electronics and a motor in close proximity!

    I put two Schottky clamping diodes at the 74125 I use - it helped a lot with the ringing & noise issues I saw on the data bus...

    Maybe I should build a small "termination" board for the ends of the servo runs. Power caps, + some way to properly terminate the data bus.
    Last edited by Brooks; 07-24-2017 at 03:14 AM.

  7. #7

    Re: TTL bus has a mysterious pulse on it

    @jwatte - Looks good. At times I have wondered if we need something like these on the Hexapod, as I think there are times when response packets are not always reliable.

    Which TVS are you using?

    @brooks - Yes might be interesting making a termination board. Or wonder if maybe get back to making a version of the Neopixel board with Teensy or smaller board and add extra cap and...

  8. #8

    Re: TTL bus has a mysterious pulse on it

    @KurtEck For the thing I tested, I was using the 5KP15CA, a 5 kilowatt bidirectional TVS. However, that diode wasn't needed in the end (as you can see in the picture, only electrolytic + ceramic.)
    Also, large TVS diodes have lots of capacitance, so they are not so good for data busses...

    @brooks Some fast, low-voltage diodes on ground-to-wire and wire-to-rail might be an OK solution to reduce the final ringing. Although the amplitude really isn't bad and the frequency is > 10 MHz, so "meh" :-) (Other options may be a resistor on the wire, or maybe a ferrite inductor)

    I wonder how non-coaxial, single-ended busses should be terminated. Termination will of course drain more current. There's also the issue that the TTL bus should float high, which means you'd need active termination and a regulator on each end.

    I do agree that soldering up a few plugs with capacitors between 12V and GND would be useful for any single-ended Dynamixel bus, though.
    One of the reasons I ended up doing this was that I'm a bit obsessive about "near misses" -- yes, I can re-try a single failed transaction, but it shouldn't fail in the first place!

    @KurtEck Do you have automatic re-try in your code? Do you get a signal whenever something "misses"? It may be that you would see these problems, too, if you started paying close attention ... (I know that I have occasional time-outs / misses on the MX-64 bus in Onyx, so perhaps this phenomenon extends to all the MX servos? It's worth taking a look!)

  9. Re: TTL bus has a mysterious pulse on it

    Hi jwatte,
    I'm wondering if this solution has stood the test of time for you ? I noticed the original post was over 8 years ago ?
    I'm asking because I'm facing a similar issue.. Although my issue is in the first byte of the packet header, not in the middle (although I haven't looked with an oscilloscope yet).

    Here's what's happening in my case -- I'm finding that for some servos, after a little bit of use (overuse?) my status packets come back with the first packet corrupted -- often its not 255, but something else.. The second packet of 255 in the header, is usually fine, though.. I'm wondering if this is the same issue that you faced, and possibly adding some capacitance will iron this out ?

    Thank you for your consideration..

  10. #10

    Re: TTL bus has a mysterious pulse on it

    The original post was July 23 of 2017, so not that long ago.

    It has, however, stood the test of time, for now. The 'bot this is on did take second place at the autonomous RC car racing in Oakland last month :-)

    "wrong" bytes on the wire can have many causes. This one was "it" for me, but there may be others, including bad wiring, bad routing on PCBs, weak drivers, sagging power supplies, multiple servos with the same ID, bugs in receiving code, overlapping responses from multiple servos, and who knows what else.

    If you don't have capacitors at the end of the power strands, though, it's totally worth trying. It's cheap and easy to put together.

Thread Information

Users Browsing this Thread

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

Similar Threads

  1. Neato LIDAR Laser Pulse Measurements
    By hash79 in forum Sensors
    Replies: 0
    Last Post: 11-20-2011, 11:41 PM

Posting Permissions

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