loading
Picture of Stop Time with an LED Stroboscope!
A stroboscope is a tool which uses a bright flashing light to allow a user to view objects which are rapidly moving in a periodic manner. When the frequency of the flashing light is matched to the speed of the object, the object can appear to be stationary.

Stroboscopes are commonly used to examine moving machinery in an industrial setting. The stroboscope allows the equipment to be inspected or monitored while it is operating.

If the strobe frequency is high enough, the observer won’t perceive the flashing of the light, similar to how one does not notice the fact that a movie projection actually consists of individual frames.

This article details construction of a control circuit that can drive an array of LEDs for use as a stroboscope. The LED array can be made by straightforward modification of inexpensive LED flashlights, or a custom array can be built.

One note of caution.  Some people who have epilepsy are susceptible to seizures caused by rapidly flashing lights.  Do not use the device shown here, or any commercial strobe light around anyone who is known to have such a susceptibility!


Here is a YouTube video demonstration of just a few ways that this stroboscope unit can be used to view moving objects.


 
Remove these adsRemove these ads by Signing Up

Step 1: Theory

Picture of Theory
The stroboscope works by producing very brief yet very bright pulses of light. If the frequency of the light pulses is correct, the rotating object will be illuminated at the same position during each flash of light, giving the appearance that is stationary. This phenomenon is called the stroboscopic effect.

The stroboscopic effect is really a phenomenon of aliasing, which is the result of under sampling. If you are familiar with digital signal processing, you may be aware that a signal that is sampled can produce “aliases” depending on the sample rate used. A signal that is sampled at less than twice its frequency can produce a result called an alias, which has a lower frequency than the original signal.

If a signal is sampled at a rate which is exactly the same frequency as that of the input signal, then the sample will take place at the same point in its cycle, and so the same value will always be read. Because the sampling results in the same value each time, the resulting sampled signal representation appears as DC value instead of the alternating waveform of the actual signal. The original signal has therefore been downshifted in frequency to a DC signal. The same concept applies to the stroboscope. The actual rotational speed will be downshifted to zero in the eyes of the observer, giving the false perception that the object is standing still.

The object will also appear stationary when the strobe frequency is some integer fraction of the rotational frequency, such as one half, one third, or one forth, etc. This is because these cases will also result in the object being illuminated when it is in the same position each time.

If the strobe frequency is slightly lower or higher than the rotational rate (or an integer fraction of the rotational rate) of the object, it will appear to rotate slowly forward or backward. In these cases the rotational speed has been downshifted to a speed slightly greater than zero in the eye of the observer.

The appearance of a rotating object illuminated by a strobe can show more complex behavior if the rotating object has multiple identical sectors, like the spokes of a wheel or the blades of a fan or propeller. In these cases, the object can appear stationary when the period of the strobe frequency is an integer multiple of the rotational period divided by the number of sectors. If the individual sectors are similar enough in appearance that they are identical to an observer, then the object will appear stationary for any strobe frequency where any of the identical sectors is in a given position. As the strobe frequency is swept, the observer may notice several points at which the rotation appears to first slow , then stop, and then begin rotating in the opposite direction.

Step 2: Light Requirements

Picture of Light Requirements
The pulses of light which are generated need to be very short and very bright. They need to be short, because the longer the light is on, the more the object will change position during this time. If the object moves significantly during the time it is illuminated, it will appear blurry to the viewer. This is analogous to the shutter speed of a camera. Since the pulse needs to be very short, it also needs to be very bright, to provide sufficient illumination during the brief time that it is on.

Stroboscopes typically use a Xenon flash tube to generate the brief, intense pulses of light. This project uses white LEDs instead of a Xenon flash. Xenon flashes are capable of much greater intensity than an LED array. The resulting pulses are not as bright as that produced by a Xenon tube. Because this LED based strobe does not provide nearly the level of illumination of a Xenon version, it helps if it is used in lower light conditions.

Step 3: OPTIONAL: Modifying Off the Shelf Lights

Picture of OPTIONAL: Modifying Off the Shelf Lights
The driver circuit described later is designed for use with an LED array. A suitable LED array can be created by modifying an off the shelf LED flashlight or lantern. There are some modifications that I made to these off the shelf products to make them more suitable for use with the driver, and I discuss them in the details in the following steps.

In normal use, the LEDs in the flashlight are powered continuously with DC current from the battery. A flashlight of this type typically consists of just the LEDs, one or more current limiting resistors, and a switch to turn it on and off.

When driven continuously for use in a flashlight, the current in each LED is usually limited to a level of about 10 to 30mA. For use in a strobe light, the LEDs need to be as bright as possible, but they must also be driven by very brief pulses to keep the object from appearing too blurry. In other words, the duty cycle of the LED drive will be very low.

LEDs can be made to generate a brighter output if they are driven with higher current. In order to get the most illumination out of the LEDs with such a low duty cycle drive, they should be driven with as high a current as they can handle without risking damage.

The most commonly used size of LEDs in flashlights are the T-1 ¾ size. You most likely won’t be able to find a part number or data sheet for the actual LEDs used in an off the shelf flashlight, but you can get an idea of a reasonable maximum current they can be driven with by examining the specs from other low cost LEDs of the same package. I examined the datasheets of several low cost white LEDs of the T-1 ¾ size, and found that a typical rating for a maximum pulse current is 100mA.

To get the most illumination out of the light, it should be configured so that each LED will carry a current close to the maximum pulse current rating. When I modified the lights described in later steps, I chose to drive them at about 75% of the maximum pulse rating, approximately 75mA each. I chose not to drive at the assumed 100mA pulse current, to give some margin to help ensure they would not be damaged.

The driver described here was designed for 12 volt operation. The flashlights I modified were designed to be powered by lower voltages, usually from 3 or 4 AA or AAA batteries in series. The increased drive current and different supply voltage makes it necessary to modify these off the shelf lights before they can be used with the driver circuit.

Step 4: OPTIONAL: LED FLASHLIGHT MODIFCATION #1

Picture of OPTIONAL: LED FLASHLIGHT MODIFCATION #1
IMG_6951_.jpg
IMG_6959_.jpg
IMG_6984_.jpg
24_LED_Unmodified.GIF
24_LED_Modified.GIF
Prior to Modification:

The first LED flashlight I modified was a small unit which sells for about four dollars at Harbor Freight. It contains 24 LEDs in a main light, and 3 LEDs in a smaller light. A pushbutton switch cycles through the different modes: main light, OFF, small light, OFF, and so on.

The schematic below shows how this product is designed.

When I opened up the case, I was surprised as to how the LEDs were connected. Note from the schematic that all 24 LEDs are directly connected in parallel. I have always built LED circuits with each series string of LEDs having its own resistor. The theory behind that practice is that that if they are directly placed in parallel, the current will not necessarily be shared equally between them. The results could range from some LEDs being dim due to reduced current, while others may have a risk of being damage due to excessive current. Placing a separate resistor in each string ensures that the current through the series branches are mostly equalized.

Prior to modification, the main array of 24 LEDs had a single 1 ohm current limiting resistor in series with it. The light is powered by 3 AAA batteries (4.5 Volts). The forward drop of the LEDs is about 3.5 volts. I observed that the battery voltage would drop from 4.5V down to about 4V when the light was on, even with new batteries. So the total current through the bank of LEDs in normal operation of the unmodified light is about:

I_LED_BANK = (4.0V-3.5V) / 1 ohm = 0.5 Amp.

If the current divides evenly between the LEDs, the current through each is then:

I_EACH_LED = 0.5Amp/24 = 21 mA.

Modifications:

With the 12 Volt supply used with the driver circuit, I can make more efficient use of power by changing the LED connections. I modified the PCB connections to separate the 24 parallel LEDs into two groups, each with 12 LEDs in parallel. This required cutting traces on the PCB, as shown in the picture. The two groups of 12 LEDs are then placed in series. Refer the schematic below for the modified light.

I chose to add a reverse protection diode into the LED array as well, to prevent it from being damaged if it was ever wired incorrectly. I’ve assumed a voltage drop of 0.7V for that diode.

Recall that there is also a series diode between the input from the battery/power supply on the driver PCB, and it must be taken into consideration also.

As mentioned earlier, I chose to have the pulse current be about 75% of the assumed 100mA max pulse current to allow some margin.

Note that the total current through the array is 12 times the individual LED current.

The new current limiting resistor value was calculated as follows:

R = (12V – 3.5V -3.5V– 0.7V -0.7V) / (12 * 75mA)

R = 4 ohms.

Even when the LEDs are driven with a level of current close to the 100mA pulse current rating, the brightness of the light will not be as great as that produced by the original light. This is unavoidable with such a low duty cycle. Operation at a higher current would risk destroying the LEDs, and operating at a higher duty cycle would make the moving object appear blurry. If a greater illumination is required, it will be necessary to build a custom LED array with more LEDs.

Step 5: OPTIONAL: LED FLASHLIGHT MODIFCATION #2

Picture of OPTIONAL: LED FLASHLIGHT MODIFCATION #2
IMG_6947_.jpg
65_LED_Unmodified.GIF
65_LED_Modified.GIF
Prior to Modification:

The second flashlight I modified is a 65 LED model. The flashlight has two settings, one with 21 of the 65 LEDs on and the other with all 65 LEDs on. A push button switch cycles between the modes.

The schematic shows how this flashlight is constructed.

Just like I had found with the 24 LED light, when I opened it up and examined the connections, the LEDs are connected directly in parallel. Despite the prevailing opinion about how LEDs should not be connected in parallel directly, it apparently works fine here as well.

When viewed, the brightness of the LEDs in this device appear uniform, so the current through them must be shared relatively equally. So, maybe you can get away with placing LEDs in parallel like that after all. However, even in light of this, when I build any LED arrays I will continue using the suggested practice of using a separate resistor in each string.

So the total current through the bank is about:

I_LED_BANK = (6.0V-3.5V) / 1 ohm = 0.5 Amp.

If the current is dividing fairly evenly between the LEDs, the current through each is then approximately:

I_EACH_LED = 0.5Amp/24 = 21 mA.

Modifications:

The array will be driven by 12 volts. With 12 Volt supply, I can make more efficient use of power by changing the LED connections. I modified the PCB connections to separate the 65 parallel LEDs into two groups, one with 33 LEDs in parallel and one with 32 LEDs in parallel. This required cutting traces on the PCB, as shown in the picture. The two groups of LEDs are then placed in series. Refer the schematic below for the modified light.

I chose to add a reverse protection diode into the LED array as well, to prevent it from being damaged if it was ever wired incorrectly. I’ve assumed a voltage drop of 0.7V for that diode.

Recall that there is also a series diode between the input from the battery/power supply on the driver PCB, and it must be taken into consideration also.

As mentioned earlier, I chose to have the pulse current be about 75% of the assumed 100mA max pulse current to allow some margin.

Note that the total current through the array is 12 times the individual LED current.

The new current limiting resistor value was calculated as follows:

R = (12V – 3.5V -3.5V– 0.7V -0.7V) / (33 * 75mA)

R = 1.5 ohms

Even when the LEDs are driven with a level of current close to the 100mA pulse current rating, the brightness of the light will not be as great as that produced by the original light. This is unavoidable with such a low duty cycle. Operation at a higher current would risk destroying the LEDs, and operating at a higher duty cycle would make the moving object appear blurry. If a greater amount of illumination is required, it will be necessary to build a custom LED array with more LEDs.

Step 6: OPTIONAL: Custom LED Array

Picture of OPTIONAL: Custom LED Array
If modifying an off the shelf light won’t meet your needs, you can build a custom LED array using individual LEDs.

How to connect LEDs into an array has been covered many times before on this site and elsewhere. I’ve put together my own short description of the process of designing an LED array, which is covered in this section.

Simple LED Array Design:

If you want to drive a string of LEDs with a specified current (I_LED) from a known voltage source (Vs), the following procedure can be used to determine how many LEDs can be placed in series and what series resistor value is required to set the desired current.

The basic steps in the design process are as follows. Refer to the schematic diagram.

1) Divide the supply voltage (Vs) by the forward voltage (Vf) of the LED you are using.

The forward voltage is the voltage drop across the LED when it is forward biased. A graph of forward current versus forward voltage will have a very steep knee, as it takes a significant change in current to get much of a change in the forward voltage. The forward voltage is dependent on temperature, and it is higher at lower temperatures (it has a negative temperature coefficient).

The power supply voltage must be at least as great as the forward voltage of a single LED to be able to light an LED at all. So, the result of this calculation must be greater than one to be able to light even one LED.

2) Round the result from step 1 DOWN to the nearest whole number. The result gives you the number of LEDs that you can put in series for the given power supply voltage and LED forward voltage.

3) Multiply the result from step 2 by the LED forward voltage. This gives the total of all the forward voltage drops of the LEDs in the series string.

4) Subtract the result from step 3 from the power supply voltage. The result is the amount of voltage that will be dropped across the current limiting resistance.

5) Divide the results from step 4 by the current you want to flow in the LED string. The result is the resistance value for the current limiting series resistor. Select an appropriately sized resistor to ensure it is not damaged due to power dissipation. The power in the current limiting resistor will be:

PWR_R_current_limit = (I_LED^2) *R_current_limit

Choose a resistor with a power rating greater than PWR_R_current_limit value.

This is the minimum power rating if the array is driven with a 100% duty cycle.  If the array will be used in an application where it is pulsed at a fairly high frequency instead of being on continuously, then the power rating determined above can be multiplied by the maximum duty cycle to get the average power.  The stobe appication has a fairly low duty cycle, about 3% max for the design presented in this instructable.

If you put the number of LEDs in series which was determined in step 2 in series with the resistance that was determined in step 5 and apply Vs across the string as shown in the diagram, then the LEDs will carry the desired current (I_LED)

When this string is applied across the power supply voltage, the desired current will flow through the LED string. Each LED in the string will carry the same current, and so each should have comparable brightness. If a larger array of LEDs is needed, then several identical strings, each with its own current limiting resistor, can be placed in parallel as needed. The total current that will be drawn from the power supply will be equal to the number of strings multiplied by the current in a single string.

If the power supply Vs is directly connected to a battery, then Vs will of course drop as the batteries are discharged. The LED current will be reduced and so will the brightness of the LEDs. If this is unacceptable, then Vs should be a regulated voltage source.

Step 7: Physical Construction:

Picture of Physical Construction:
Strob_Unit_Side_View.jpg
I chose not to use a typical project enclosure box for this. Instead, I made kind of a sandwich. The whole assembly looks a little ugly, but it works. See the pictures for details.

I used sheets of 1/8” thick plastic panels separated by pieces of lightweight aluminum channel stock. The knobs and switches are located on the rear panel. Most of the circuitry is built on a small custom PCB, attached to the inside of the rear panel. The AA battery holders are mounted on the next panel in the “sandwich”. I have the 24 LED light mounted on the front panel. A short harness connects the 24 LED light to the driver circuit output jack. The user can always disconnect the 24 LED light and attach a larger LED array if greater illumination is required.

Step 8: Operating Modes

Picture of Operating Modes
Triggered_Strobe_Mode_Timing.gif
The software provides two types of modes, stroboscope modes and a triggered strobe mode. In all modes, the on time of the pulse is adjustable from 50 to 562 microseconds using the potentiometer.

The user will need to adjust the on time of the pulse as needed to get a sharp image. A greater on time will produce greater illumination, but the object may appear blurry depending on how fast it is moving. In general, the object will appear more blurry as its speed increases, as it will move a greater amount during the light pulse.

Stroboscope Modes

In the stroboscope modes, the strobe frequency (overall period, as shown in the timing diagram) is determined by the frequency setting potentiometer. The strobe frequency range is split up across the normal mode strobes. One mode covers the range from 5Hz to 15Hz, the second covers from 15Hz to 30 Hz, and the third covers from 30Hz to 50Hz.

When in one of the stroboscope modes, there are to buttons, (jog forward and jog reverse) which allow the frequency of the pulses to be slightly increased or decreased from the nominal value set by the frequency select input. Slightly shifting the frequency in this way allows the position of the object to be rotated forward or backward.

Once the object is in the desired position, the switch is released, returning the pulse frequency to its normal value.

Triggered Strobe Mode

In the triggered strobe mode, the light is flashed after the detection of a trigger signal (low going signal).  The timing diagram shows the relationship between the trigger pulse and the output pulse.

This mode is useful if there is a sensor mounted on the machinery so that it produces a low going trigger pulse for each revolution or cycle. The circuit detects this trigger, and then generates a pulse after a delay determined by the delay input. This way, the strobe is automatically synchronized to the speed of the object.

In the triggered strobe mode, the on time setting function is the same as it is in the stroboscope modes. The second potentiometer (used for frequency select in the other modes) is instead used to set the delay between the detection of the trigger and the flash output. The delay can be set between about 50 microseconds and 51 milliseconds, in 200 microsecond increments

The reverse jog input is used as the trigger input. This input is brought out to an external connector so that it can be connected to a sensor. Any type of sensor that can pull the line low can be used, such as IR photo sensors, Hall Effect sensors, etc. The sensor must produce a low going pulse once per revolution


Step 9: Detailed Circuit Description

Picture of Detailed Circuit Description
The driver board uses a microprocessor to read the user input potentiometers and switches, and strobes the LED array accordingly. The microprocessor has six I/O pins. Using a microcontroller gives the flexibility to control both the on time and the frequency independently. The software allows the strobe frequency to be set between 5 Hz and 50 Hz (over three frequency ranges), and it allows the on time of the pulse to be set between 50 microseconds and 562 microseconds.

Power Inputs

Power input can be via an external jack, J1, or from the battery pack. Diodes D2 and D1 are used to isolated the battery and the external power supply if they are ever connected at the same time, and they also prevent damaged to the circuit if the power input polarity is reversed.

+5V Regulator

A LM7805 regulator, U2, provides the +5V regulated voltage for the pulse generator circuitry. There are electrolytic and ceramic capacitors (C1, C2, C3, C4, and C9) on both the input to and output from the regulator for filtering.

Analog Inputs

The microprocessor uses its internal A/D converter to read two analog inputs (AN2and AN3). These analog inputs read the settings of potentiometers R1 and R3, which set the on time of the flash and the frequency of the strobe flash. R2 and C6 and R4 and C7 are used as low pass filters on these analog inputs. The on time and frequency are controlled independently of each other. The software generates the output pulses based on the on time and frequency readings.

Mode Select Input

A third analog input (AN1) is used to read a mode select input. The mode select input reads the voltage on the common terminal of a multi position rotary switch. The common terminal of the switch is connected to +5 volts by resistor R9, and connected to ground via one of several different resistors (R11, R12, R13, or R14), depending on the position of a rotary switch. Each switch position will result in a different voltage setting at the mode select analog input. The analog value is read by the microprocessors A/D converter and the proper operating mode is selected based on that value.

Digital Inputs

The microprocessor also reads two digital inputs (GP5 and GP3) connected to normally open SPST switches, the function of which depends on the operating mode selected. These switch inputs are pulled up to +5V by R5 and R7. R6 and R8 are used to prevent damage to the inputs of U1 is the input is ever shorted to the power supply.

In the stroboscope modes, these switches are used to jog the strobe frequency up or down very slightly, to “reposition” the object to a more suitable position, if desired.

The jog reverse input is also used as the trigger input in the triggered flash mode. This connection is brought out via a 9 pin D-sub connector (J3) for interface to external sensors. Any sensor or other external circuit, such as an optical interrupter or Hall Effect switch, which can pull this line LOW to ground, can be used to trigger the flash. A current limited output is also provided on the D-sub connector, to power an infrared LED if an optical interrupt kind of switch is used. This line is connected to +5V through a 200 ohm resistor. Refer to the schematic to see the signals provided on the D-sub and how to connect them to interface to an optical interrupt switch.  An example of an IR optical sensor is shown at the bottom of the schematic.

LED Drive Ouput

The pulse output of the microprocessor is applied to the base of FET Q1, allowing current to flow through the LED array. R16 is used to keep the FET gate pulled low so that it does not float high. R15 is in series with the gate of the FET to prevent any ringing on the gate due to parasitic capacitances of the FET.

The output connector J2 is where the LED array connects to the driver output. The LED array positive connection is connected directly to the 12 volt supply, and the current path through the array is completed via the FET.

Step 10: Software

The software was written in PIC assembly language. The source code (*.asm file) and the assembled file for programming (*.hex file) are included here. I have also included a PDF of a flow chart showing how the software functions.

Step 11: Use and Results:

Picture of Use and Results:
Lathe_Strobe_1_sec_exposure.jpg
The video in the first section contains examples of the stroboscope in use. What is happening in each example is briefly discussed below.

Example 1: Fan Blades

One way to observe the stroboscopic effects is by looking at a fan. Adjust the frequency of the strobe and watch as the direction and speed of the fan blades change.

The still picture below is of a fan rotating at about 600 rpm or 10 revolutions per second. It was taken when the strobe frequency and fan speed were closely matched. This picture was taken with the shutter open for 1 second. If the strobe had not been synchronized to the fan, the picture would be a complete blur.

It can be difficult to make the motion stop entirely when manually matching the strobe frequency to the object speed, as even a small difference between the speeds of the object and the strobe will result in some visible rotation.

To highlight some of the strobe effects, I attached a label with a number to each of the five blades of the fan. When the strobe is flashing at a rate equal to the rotation speed or an integer fraction of it, the numbers will appear to stand still along with the fan blades. At frequencies where a different blade is in the same position as the previous one each time the strobe turns on, the blades will appear to stand still but the numbers will be counting up or down.

Example 2: Observing a bit drill a hole

An interesting effect can be seen in the video of a hole being drilled in a board. With the strobe frequency synchronized, the bit appears stationary, even though it is rotating at about 660 rpm. When the bit is plunged into the board, the loading on the drill motor increases and so the rotational speed decreases slightly. With the reduction in speed, the strobe frequency is not quite in sync with that of the bit, and so it appears to rotate, but very slowly. You can see the hole being formed in the board as the drill moves down, with chips of wood flying off to the side, even thought the bit appears to be almost stationary.

Example 3: Lathe

This demonstration uses the triggered strobe mode. I attached a reflective type infrared sensor to a bracket on the head of a lathe. This is the type of sensor that has the IR LED and the IR photo transistor all in one package, as shown in the pictures below. The transistor and LED in the package are mounted so that they both point down at an angle. When an IR reflective object passes beneath the sensor at the correct height, the IR light is reflected back onto the phototransistor, which then turns on and pulls the trigger input low.

The chuck of the lathe has a wrapping of black tape, with one small section of white tape. When the section of white tape passes beneath the sensor, the infrared light from the LED in the sensor is reflected back to the phototransistor in the sensor, and it pulls the trigger input low, triggering the flash. The wrapping of black tape was needed, as the shiny metal of the lathe chuck reflected the IR light enough to falsely trigger the sensor.

The video shows that the chuck appears to stand still, even as the speed is increased, as the flashing is controlled by the trigger signal from the sensor. The position of the chuck can be seen moving back and forth by as the delay between the trigger signal and the flash is increased and decreased.

Conclusion:

These are just a few simple examples of stroboscopic effects. There are many other interesting demonstrations that can be done, including observing a speaker cone and falling droplets of water. 

I hope you have found the information here useful, and sucessd in building your own strobe light.  If you do, pleasa share any cool applications or demos you find for your stobe light!
kayv11 months ago

i am a new person and i want stroboscope , in the diagram above shown is very typical may you please mail me the component list with name and specifications and may you please elaborate the circuit diagram so that i can make this project and how we can do the programing of the micro processor .

kayv11 months ago

i am a new person and i want stroboscope , in the diagram above shown is very typical may you please mail me the component list with name and specifications and may you please elaborate the circuit diagram so that i can make this project and how we can do the programing of the micro processor .

ecgrishma1 year ago

Instead of pic any other IC can be used??

Like say, 555 or mic3201 etc.

I have a flashlight that does this, It's really fun to walk around in the dark with it
ajoyraman2 years ago
Thank You for a fine illustration of the Strobe Concept.

Thanks also to all those who have made such excellent comments.

This project is a essential item to have around.
Great ible! I like PICs.

I did something similar about 5-6 years ago. I started with a prototype using a 556 dual timer to check the concept and then built a final version using a PIC driving an LCD display and a single 5W LED.

I built my strobe for a microscope illuminator so that I could observe the motion of the cilia of microorganisms. I controlled the flash period using a rotary encoder and it was settable between 1/5 sec and 1/256 sec in one continuous range which would display on the LCD. The flash duration was settable from about 5 to 250 uS. I drove 15A current spikes through the LED (5W LEDs can handle it as long as you keep the duty cycle low).

It was really surprising what could be seen using the strobe. Cilia that normally move too fast to be seen became clear as day and one could see patterns in their motion like the wave-like pattern you can see in centipede's legs when they are moving fast. Really amazing when you consider that a single-celled organism has no nervous system to coordinate the motion.
LargeMouthBass (author)  Mark Rehorst3 years ago
I would never have thought about using the stobe for viewing anything microscopic. Cool application!
I really like that you used assembly language. Too many people go immediately to higher level languages that obfuscate the CPU functions and prevent real learning about uCs. Writing assembly code for a project like this will really improve understanding of the technology.

Have you looked at using rotary encoders instead of a pot with an analog input? It is so much easier to use an encoder - a simple lookup table is all that is needed to determine rotation direction and counter increment/decrement. It's lightning fast and It will greatly simplify your code. Most rotary encoders, even the cheap ones (see here: http://search.digikey.com/us/en/cat/sensors-transducers/encoders/1966131?k=rotary%20encoder), will work more reliably and last longer than a pot.

This page has a great explanation of how to read an encoder in assembly language: http://mcmanis.com/chuck/robotics/projects/lab-x3/quadratrak.html
strobe_controller.jpg
LargeMouthBass (author)  Mark Rehorst3 years ago
Yeah, I prefer assembly for PICs. It's all I know frankly, and it suits me fine for smaller microcontroller projects. I kind of like knowing what the processor is doing in microscopic detail.

I do see the benefits of an encoder, and I have some sitting around that I've intended to use on projects but just haven't ever gotten around to it. I may do a second version of this project that uses an encoder instead.

I would also have liked to add an LCD for frequency and on time readout like you have, but I built this stobe project using a custom general purpose PCB that was only laid out for an 8 pin PIC processor.
I built my controller using a PIC-MT-USB (http://www.olimex.com/dev/pic-mt-usb.html) made by Olimex with a PIC18F874 . I selected it for the number of IO pins available and the LCD display. I never used the USB port.

All I added was a 15V 5A power supply, a 5V regulator to power the board from the 15V supply, power FET switch to switch current pulses into the LED, and the encoder. The 5A supply charged a capacitor that rapidly discharged through the LED to get 15A pulses.

One nice thing about encoders is there is no mechanical stop- you can just keep spinning and spinning the thing eliminating the need for range switching. You can make the increment/decrement function speed-sensitive so that you get fine control for slow rotation and quick jumps for fast rotation.
X-mind3 years ago
This is the ultimate DIY slow-motion capture equipment :)
jabbawokie3 years ago
Nice iv been wanting to make 1 of these for ages but alot of the circuit diagrams i could find wer rather complex i dont know why i never thought about using a microcontroller!! good stuff mate :)
There are other 556 versions that blink so rapidly that it is hard to see.
Eurober3 years ago

A well-done project. For people that do not want to use a microprocessor-based solution, the 555 timer could be implemented to perform the main function. In spite of the lower accuracy (could be improved by careful calibration) the circuit would be simpler and easy to put together.