Connect with us

Delay without affecting pulse width

Discussion in 'Electronic Basics' started by BR, Mar 7, 2005.

Scroll to continue with content
  1. BR

    BR Guest


    Is there a circuit that can delay a pulse train without affecting its
    width? The pulse width is about 1.5ms to 2ms, every 20ms (RC servo
    signals). The delay needed is less than that, perhaps up to 1 ms. It
    would be convenient if it were variable.



  2. John Fields

    John Fields Guest

  3. The only thing I can think of right now, is to couple several TTL-inverters
    in series. Each one of them works as a delay line. The only thing you need
    to know is the delay of each one of them. A typical IC would be an 7404.

    Hope this helps : )
  4. BR

    BR Guest

    The best I can do is give a description of the apparatus. It
    involves three RC servos mounted on a rotating ring used to form a
    gripper system. Each gripper pad is located equidistant about the
    outside rim of a small 5" dia. hemispherical bowl containing water.
    The opening of the 5" bowl must be in full view. The 5" bowl is
    floating in a larger bowl filled with water. All three servos are
    connected to one signal output of an EZ servo 1 chip (a pre-
    programed controller). A problem occurs when the bowl is released.
    The gripper releases the bowl as fast as it can when the signal
    pulse width changes abruptly from 1725µs to 1650µs. However, the
    differences between servos always causes the bowl to drift slowly
    away from the lagging servo. This is determined by releasing the
    bowl while the ring is stationary. Adjusting the servo mounting hw
    only reduces the problem. So, I'm looking for a way to fine tune
    the release and minimize linear motion of the bowl. If this can't
    be done with delay lines I would appreciate any suggestions.


  5. Andrew Holme

    Andrew Holme Guest

    Here's one way you might do it:

    Trigger a monostable on both edges of the input pulse. Clock the input
    into a D-type flip-flop on mono timeout. Exclusive-OR the flip-flop
    output with the input to make a trigger pulse for the mono. The
    flip-flop output is also your delayed pulse.

    It sounds like you're trying to compensate for small differences in
    servo response time. It might require constant fiddling and tweaking
    to counteract ageing or changes in temperature.
  6. At about 10ns each, it would take 100,000 of them to get 1 ms delay;
    still, with six per package it would only be 16,667 ics.
  7. BR

    BR Guest

    Thanks for the suggestion. I'll try it with some old CMOS 4000. I
    assume some variable adjustment is possible with the timing
    resistor on the mono, but the max delay is less than the pulse
    width, is that correct?


  8. Andrew Holme

    Andrew Holme Guest

    Yes. If you wanted a longer delay, you might consider using two
    monostables - one for each edge, but then you'd have to make sure both
    delays were exactly the same. This might even reduce the chip count,
    since you can get dual monos in a single DIL package. A more exotic
    solution might be to use a bucket-brigade delay line - the type of
    thing normally used for audio delay / echo effects.
  9. Chris

    Chris Guest

    Hi, BR. You might want to try using a 74C14, a resistor and a cap,
    like this (view in fixed font or M$ Notepad):

    ` 2/6 74C14
    ` Servo In 200K
    ` ___ ___ |\ |\ Servo Out
    ` o---|___|--o-|___|--o--|H>O--|H>O-----o
    ` 20K | A | |/ |/
    ` | | | about 1ms delay
    ` | | ---
    ` '---' ---
    ` .01uF|
    ` |
    ` ===
    ` GND
    created by Andy´s ASCII-Circuit v1.24.140803 Beta

    The built-in hysteresis of the C14, along with the R and C, act as a
    digital delay line. Your 0 to 1 logic transitions will be delayed
    almost exactly as much as the 1-to-0 transistions.

    This is because the hysteresis of the 74C14 (and the 74HC14) is
    centered on 1/2 Vcc. This doesn't work for the 7414, 74LS14, and other
    TTL versions of this chip for several reasons.

    Once you know the right value for your application, just substitute a
    fixed resistor for the pot, and you're good to go.

    Good luck
  10. Perhaps an easier approach would be to play with the voltage on the
    servos. Higher voltages result in faster servo action (to a reasonable
    point anyway).

    I would use a PIC chip for precision and repeatability. 1uS precision
    is a piece of cake with virtually any PIC, 100nS is just as easy with a
    faster chip and crystal.
  11. You are going to try to slow down the signals to each individual servo,
    I'm guessing, using some kind of RC delay. That sounds like a tuning
    nightmare. The RC delay will probably be temperature dependent. Anthony
    Fremont already pointed out that the servos may be voltage dependent,
    which means that they could be interacting in funny ways if they are all
    powered from the same battery.

    I wonder if somehow slowing down the servo action would work? It is
    probably the quick snap which is imparting energy to the bowl. The
    energy that is imparted by the faster servos is damped by the final servo.

    Another possibility would be to use a clear string (like fishing line)
    to hold the bowl in place. The servos would hold the line, rather than
    the bowl itself. If the line had no tension on it (it was just used to
    anchor the bowl in place), it would not be possible for the servos to
    impart any energy on the bowl by releasing it (depending on their
    position, they may splash the water, causing motion). The line would be
    invisble in the water (hopefully).

    On the other hand, a simple delay using a microprocessor would be easy
    to cook up. Using the internal clock of a PIC, for example, you could
    easily get repeatable delays of 1 ms within about 40us. A single $2
    microprocessor could sequence the three servos in arbitrary and
    repeatable ways, using trimmers to set the relative delay (so you can
    tweak it in the field). I can do this for you if you are still
    interested in persuing the delay scheme. email me if you are interested.

    rc<surname> (replace <surname> with my last name)

    Robert Monsen

    "Your Highness, I have no need of this hypothesis."
    - Pierre Laplace (1749-1827), to Napoleon,
    on why his works on celestial mechanics make no mention of God.
  12. Rich Grise

    Rich Grise Guest

    On Mon, 07 Mar 2005 19:44:21 -0600, BR wrote:

    ....A problem occurs when the bowl is released.
    You need to either fix your servos, i.e. get three exactly identical
    servos, or mechanically couple just one servo to the three fingers.

    Anything else would be a klooge, and as others have noted, a nightmare to

    You could also look at slowing down that "abrupt" change from 1725 to
    1650, to make it a little smoother. One of the things you'll never ever
    tune out is sticktion in a given servo. (i.e., the time from the pulse
    change until it actually moves, overcoming standing friction.)

    Good Luck!
  13. Ok, forget that. What about using a delay line, such as those used in older
    televisions instead?

    Now the only thing i cannot help with is the pinouts for such one thing and
    the delay it provides...
  14. BR

    BR Guest

    I'll add some 74C14 to my Mouser order. Thanks.


  15. I think those things were in the microsecond range, and weren't really
    for clean digital signals. You'd probably have to use some active
    circuit like a one-shot to get to the millisecond area.
  16. Guest

    On Semiconductor still shows dual 64 bit shift registers. Stack up 512
    bits, clock at 500KHz and get 1mS delay with 2 uSec resolution. Or, did
    someone say PIC?
  17. Kitchen Man

    Kitchen Man Guest

    I remember using crystal delay lines, and you're right, they were in the
    microsecond range and were used on RADAR synchronizers. I've seen them
    in ATE, as well.

    There are sophisticated trigger delay devices available, but such things
    are costly. Depending on the OP's budget on building this
    servomechanism, I would highly recommend using one. You feed the
    trigger signal in, and can tap off one or more programmable delays. If
    you get one with one output for each servo (or if your sync signal is
    one of the servos), you can digitally program each one separately. The
    digital alignments and separate synchronization should make a well
    behaved machine.
  18. Kitchen Man

    Kitchen Man Guest

    I don't think there's a system clock involved. The delay has to be
    triggered by the event that is to be delayed. Have I got that right?
  19. Guest

    Not what I had in mind, no. The OP wants a delay on both the leading
    and trailing edge, I.E. maintain the original pulse width, just delay
    it. Think of this as a 1 bit digitizer and the shift register is the
    memory. If your clock is good, no temperature variations, very
    predictable and pretty simple. Take the output from different bit
    counts and/or vary the clock rate for different/multiple delays.
Ask a Question
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.
Electronics Point Logo
Continue to site
Quote of the day