5
\$\begingroup\$

First, a bit of background: I am just a hobbyist with electronics and have very little formal education in the area. I understand most terminology, but generally require a schematic for me to be able to create something of any decent complexity.

I am working on a personal project in which I have run into a bit of an issue. I have a digital square wave that I need to transform into pulses. My guess is that there is something that can output a pulse on the rising edge, but I don't know what it would be called. Sorry if this has been asked a thousand times, or is something elementary. I've tried searching all over and am not sure what something like this would be called. I want a circuit to transform a digital waveform that looks like this

____------____------_____

into one that looks like this

____|_________|__________

using common ICs and/or passive components that a hobbyist might have around.

Thanks.

edited to remove superfluous details

Edit:

Maybe I can rephrase the issue in another way, instead of shortening a pulse to some undefined short duration. What I want is to divide a clock by 4096, such that every 4096 pulses, I can get a pulse of the same duration as the input clock.

i.e.

_-_-_-_ ... x4090 ... _-_-_-_-_

becomes

___________________________-___

\$\endgroup\$
6
  • 1
    \$\begingroup\$ "I need a clock that runs at roughly 250kHz to minimize flicker" - precisely what does "flicker" mean in this context. If you start by saying "visible" flicker then think again i.e. please don't you think that this is possible. Also, try and simplify your question to the bare bones - at the moment there has to be too many words - I appreciate the little ascii waveforms but there is too much here I'm thinking. \$\endgroup\$
    – Andy aka
    Jan 12, 2016 at 23:21
  • \$\begingroup\$ Indeed it is visible flicker. The 250kHz value comes from multiplying 4096 by 60 "frames per second". The way the TLC5940 IC works is that the pulse width of its PWM output is 4096 pulses of its input clock. The frequency of the signal I want to have transformed will then be roughly 60Hz, which seems very reasonable to me. \$\endgroup\$
    – Vale H
    Jan 12, 2016 at 23:24
  • \$\begingroup\$ Beware, if you are doing edge detection and those top waveforms are long, that's fine. If the triggering waveforms are already short, however, then making even shorter pulses may not get what you want. If you are going to read those into another IC, to short a pulse causes metastability. \$\endgroup\$
    – mcmiln
    Jan 12, 2016 at 23:49
  • \$\begingroup\$ combine your clock and all of your binary outputs together using a cascade of AND gates. Then, the output of the top-level AND gate will be one pulse (having the exact same length as your clock) occurring every time your binary counter reaches its "All bits ON" state (1111...111). You could achieve the inverse of this by OR-ing all of the binary counter outputs and the clock source together. \$\endgroup\$ Jan 13, 2016 at 1:33
  • \$\begingroup\$ @JensenR30 That would work indeed. Of course, life can't always be that simple. The divider IC I'm using (4060) doesn't have outputs for the divide by 2, 4, 8, or 2048 stages. That might be a starting point for a solution though. \$\endgroup\$
    – Vale H
    Jan 13, 2016 at 1:50

4 Answers 4

11
\$\begingroup\$

To make a pulse generator, use a resistor, a capacitor, an AND gate and an inverter:

schematic

simulate this circuit – Schematic created using CircuitLab

To make a dual-edge-triggered pulse generator, use a resistor, a capacitor, and an XOR gate:

schematic

simulate this circuit

EDIT by another user: An excellent answer with one caveat: As the signal into the gate is now analogue best use a Schmitt version for the 2nd gate. These are available in NAND and NOT versions but less available for AND or XOR. It will work with non Schmitt versions but there may be a few power spikes on the rail and/or non full logic values at the 2nd gate output.

\$\endgroup\$
1
  • \$\begingroup\$ Accepted because this technically answers my original question. The other discussions have been very helpful as well. \$\endgroup\$
    – Vale H
    Jan 13, 2016 at 13:56
5
\$\begingroup\$

This is an ultra basic edge detector. It converts a rising edge into a pulse with a capacitive dischage characteristic.

schematic

simulate this circuit – Schematic created using CircuitLab

Edit:

Edit: Maybe I can rephrase the issue in another way, instead of shortening a pulse to some undefined short duration. What I want is to divide a clock by 4096, such that every 4096 pulses, I can get a pulse of the same duration as the input clock.

This is just a 12-bit counter.

\$\endgroup\$
4
  • \$\begingroup\$ I didn't think of using a high pass filter. It's a good suggestion, but I'm not sure if I can get the precise timing that I need because of the details that I edited out of the original question. \$\endgroup\$
    – Vale H
    Jan 13, 2016 at 0:33
  • 1
    \$\begingroup\$ @AndrewH -- there are more sophisticated edge detectors you can use, this is just the simplest possible one :) \$\endgroup\$ Jan 13, 2016 at 1:07
  • \$\begingroup\$ I'm trying to understand how this edge detector works, but I just can't (I am a hobbyist, a beginner to that). Can someone explain? \$\endgroup\$
    – A Sz
    Nov 24, 2016 at 10:19
  • \$\begingroup\$ When the positive edge comes in, it pushes current forward through the diode. This generates a positive-voltage pulse on the output. When the negative edge comes in, the diode is reverse-biased and will not conduct. The capacitor equalizes through the resistor to prevent a large negative voltage from appearing between the capacitor and diode. \$\endgroup\$
    – Daniel
    Nov 25, 2016 at 5:13
0
\$\begingroup\$

To answer the question as posed, what you are looking for is a "Monostable Multivibrator". You can make one from a pair of transistors and a bunch of passives, or the usual approach is to use a 555 timer. I'm not sure how a 555 will go with generating pulses down around 1us wide though, I suspect that's a bit too fast.

From the comments though, it seems you want to do this to the clock input to a TLC5940, and I don't understand why. It will be perfectly happy, in fact probably happiest, with a 50% duty-cycle clock. Note the GSCLK max frequency is 30MHz, so you could happily buy an 8MHz oscillator module and use that, which would give you a ~2kHz refresh rate, which would make the display look stable even while moving. 60Hz will visibly flicker as you turn your head with respect to the display.

\$\endgroup\$
2
  • \$\begingroup\$ I already have set up an oscillator to drive the GSCLK input. The issue is that the BLANK input needs to be triggered every 4096 pulses of GSCLK to reset the outputs. I may be misunderstanding how to drive the TLC5940. All I have to go off is the spec sheet and some example code someone wrote for arduino which isn't easy to follow. My assumption that BLANK needs to be toggled every 4096 pulses comes from page 14 of the spec sheet: ti.com/lit/ds/symlink/tlc5940.pdf \$\endgroup\$
    – Vale H
    Jan 12, 2016 at 23:53
  • \$\begingroup\$ I edited the question with an alternate phrasing of my problem. \$\endgroup\$
    – Vale H
    Jan 13, 2016 at 0:13
0
\$\begingroup\$

The TTL IC 74294 is a programmable frequency divider. You want to divide by 4096, which is equal to 2^12. Once you provide 12 as input to the A,B,C,D pins of the IC, you can get your new pulse train from the Q pin.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.