5

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

___________________________-___

Vale H
  • 153
  • 1
  • 1
  • 5
  • 1
    "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. – Andy aka Jan 12 '16 at 23:21
  • 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. – Vale H Jan 12 '16 at 23:24
  • 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. – mcmiln Jan 12 '16 at 23:49
  • 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. – Ryan Jensen Jan 13 '16 at 01:33
  • @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. – Vale H Jan 13 '16 at 01:50
  • @Andrew H You could use two 4040 12-stage counters chained together. But even then, you would need two DIP packages and a bunch of AND gates (or diodes or transistors if you choose to create some sort of diode-OR-ing circuit). Or, you could program a microcontroller to do this function. An ATtiny would work. http://www.atmel.com/devices/attiny85.aspx – Ryan Jensen Jan 13 '16 at 19:43

4 Answers4

11

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.

Ryan Jensen
  • 821
  • 1
  • 6
  • 13
  • Accepted because this technically answers my original question. The other discussions have been very helpful as well. – Vale H Jan 13 '16 at 13:56
5

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.

Daniel
  • 6,168
  • 21
  • 33
  • 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. – Vale H Jan 13 '16 at 00:33
  • 1
    @AndrewH -- there are more sophisticated edge detectors you can use, this is just the simplest possible one :) – ThreePhaseEel Jan 13 '16 at 01:07
  • 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? – A Sz Nov 24 '16 at 10:19
  • 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. – Daniel Nov 25 '16 at 05:13
0

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.

  • 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: http://www.ti.com/lit/ds/symlink/tlc5940.pdf – Vale H Jan 12 '16 at 23:53
  • I edited the question with an alternate phrasing of my problem. – Vale H Jan 13 '16 at 00:13
0

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.

SoreDakeNoKoto
  • 1,635
  • 1
  • 13
  • 22