Electronic – Ignore Pulses Less than a Given Width in a Pulse Train

filterlogic-levelpulse

Let's say I have a 5V pulse train that varies between 0 and 75000 pulses per second. Pulse width, let's say, is 5 microseconds. How could I calculate or determine the best way to filter out all pulses less than 4 microseconds in width?

Best Answer

This circuit should do what you want:

enter image description here

When a pulse comes in on the lead marked IN, it starts the first 74221 monostable (there are two in the same package) which is set for 4 µs. The output of the monostable \$\small \overline{\text{Q}}\$ pin will be 1 until it is started, then it goes to 0. So during the 4 µs period, the AND gate (74HCT11) is inhibited so there is no output. After 4 µs, the AND gate is enabled again, so the rest of the pulse (if longer than 4 µs) goes through to OUT. See the timing diagrams below.

Since 4 µs has been cut off the beginning of any valid pulse, the second monostable is started on the falling edge of the input pulse (but only if it is longer than 4 µs), and the output remains high to add an additional 4 µs to the end of the output using the OR gate (74HCT32). Thanks to stefandz for pointing out the need for this additional functionality.

enter image description here

The buffer marked DS1100Z at the bottom is actually a delay line with a delay of 100 ns; this is to compensate for the propagation delay in the 74123 from trigger to output.

Note because of the tolerance of the capacitor, this timing could be off by 10%, so the resistor should be tweaked as necessary.

By using monostables, it is trivially easy to modify the timing value from 4 µs to something else just by changing a the resistors and/or capacitors.

Power pins (Vdd and Vss) and decoupling caps are not shown.

I was originally going to use a 555 timer, but it turns out the 555 is not supposed to be used for pulse widths less than about 10 µs. So I turned to the 74221, which can generate pulses down to the ns range.

Related Topic