Go Down

Topic: 100 microsecond 5V pulse generator  (Read 506 times) previous topic - next topic


For exact timing of pulses use a timer and its Output Compare unit (similar to generating PWM). Interrupt way is somewhat easier but may introduce some jitter (mostly depending on other enabled interrupts).
How to insert images: https://forum.arduino.cc/index.php?topic=519037.0


That is for the micros() function. The delayMicroseconds() doesn't have this limitation.

For a clean, reliably timed pulse of that duration I'd look into timer interrupts, but not sure if OP needs it that precise as they say "at least 10 us" which implies some leeway there.
Based on this reply, I run a quick test. I was curious to see how a pulse generated through the arduino would look like

I wrote a quick testing code
Code: [Select]
void setup(){
void sqwave(){

void loop()

I made a gif of the signal I get on the oscilloscope.

I was wondering what the nature of the fluctuations was. I used two 1-foot long coax cable with a 50 ohm terminator and two probe clip wires (about 10 inches long) to connect them to 10-inches long jump cables that were plugged on port 2 and 3 of the arduino. I run it just for 10 sec to get the video.

If I use  a TC4420  as Leo suggested, I should be able to drive the voltage I want with this square pulse, am I correct?


For exact timing of pulses use a timer and its Output Compare unit (similar to generating PWM). Interrupt way is somewhat easier but may introduce some jitter (mostly depending on other enabled interrupts).
Exact timing is not required.
The pulse must be > 10 µs, but it could be 20, 50, 100 µs. The max rep rate is 200 Hz anyway.

About jitter: the manufacturer recommended a rise time of < 300 ns. The square pulse I recorded using the arduino with the code in my previous reply has ~ 100 ns rise.


50ohm termination (100mA@5volt) can't be safely driven by an Arduino pin...
Your test might not be not valid, because you did overload the pin 250%.


Following Leo suggestion, I got some TC4420 (6A, 4-18 V single channel MOSFET driver)  and I am now trying to figure out the circuit.

The arduino is used to generate a pulse with the desired length. The MOSFET will generate the final pulse with the desired voltage.

In the diagram above, I included two resistors and a capacitors but I am not sure if:
1) Do I need them?
2) Are they in the right position?
3) What value should I use? (At the moment, I would go with R1 = 1kOhm, R2 = 10 kOhM and C1 = 22 uC)
4) I am providing the 5V with a 5V, 2.6 A power supply. Any issue with that?

Below a quick reminder of the goal of this project
1) The trigger circuit should be connected to the BNC in of a laser with a 50 ohm terminator
2) The trigger should allow a variable (1-200 Hz) train of pulses
3) Each pulse should have a voltage between 4.5 and 5V
4) Each pulse should be at least 10 µs long. This will be a constant.
5) from the V and R requirement, the current should be ~ 100 mA


Oct 03, 2019, 09:38 pm Last Edit: Oct 03, 2019, 09:46 pm by Wawa
A properly terminated cable with the same resistors as the characteristic impedance of the coax cable does not mutilate the signal.
But resistors means power loss. You must overcome that with amplifiers.
So you actually drive the the termination resistors. The cable/laser is not the load.

The 50 ohm coaxial cable most 'see' 50 ohm at both ends.
That means a 50 ohm resistor in series (between driver output and cable input) at the cable entry,
and a 50 ohm ternination resistor at the laser end to ground.

Because those resistors also form a voltage divider, you must drive the transmission line with twice the voltage you want at the end of the cable. That means a 10volt supply for the driver chip.
Follow the datasheet for the caps on VCC.
Should not be critical, because you're not driving a capacitive load (like a fet).
No resistor on the input of the chip, and no capacitor from output to ground.
Hope this helps. Can't put it any clearer.

Go Up