Maker Pro
Maker Pro

Delay without affecting pulse width

B

BR

Jan 1, 1970
0
Hello,

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.

Thanks


Ben

--
 
J

John Fields

Jan 1, 1970
0
Hello,

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.
 
G

Geir Klemetsen

Jan 1, 1970
0
BR said:
Hello,

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.

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 : )
 
B

BR

Jan 1, 1970
0
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.


Ben

--
 
A

Andrew Holme

Jan 1, 1970
0
BR said:
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.

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.
 
J

John O'Flaherty

Jan 1, 1970
0
Geir said:
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.

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.
 
B

BR

Jan 1, 1970
0
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.

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?

Ben

--
 
A

Andrew Holme

Jan 1, 1970
0
BR said:
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?

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.
 
C

Chris

Jan 1, 1970
0
BR said:
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?

Ben

--

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 www.tech-chat.de

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
Chris
 
A

Anthony Fremont

Jan 1, 1970
0
BR said:
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.

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.
 
R

Robert Monsen

Jan 1, 1970
0
BR said:
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.

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>@comcast.net (replace <surname> with my last name)

--
Regards,
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.
 
R

Rich Grise

Jan 1, 1970
0
On Mon, 07 Mar 2005 19:44:21 -0600, BR wrote:

....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.

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
tune.

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!
Rich
 
G

Geir Klemetsen

Jan 1, 1970
0
John O'Flaherty said:
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.

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...
 
B

BR

Jan 1, 1970
0
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
www.tech-chat.de

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
Chris

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

Ben

--
 
J

John O'Flaherty

Jan 1, 1970
0
Geir said:
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...

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.
 
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?
GG
 
K

Kitchen Man

Jan 1, 1970
0
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.

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.
 
K

Kitchen Man

Jan 1, 1970
0
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?

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?
 
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.
GG
 
Top