and one amp. All six fire at once, drawing a total of 6A to
produce a whopping 6,000 lumens. The large capacitance
of C8+C9 provides energy storage to supply the LED’s 6A
demand without subjecting the batteries to this high draw.
The StroboDuino’s flash is limited to 10% duty cycle,
meaning that the batteries will see a maximum average
demand of about 600 mA.
In practice, the flash duty cycle is usually kept at
0.5%, which drops the average battery demand to only
about 30 mA — a very comfortable level for alkaline
batteries. (Interpolating the graph on Duracell’s AA
datasheet, the batteries should be able to source 30 mA
constantly for about 20 hours before dropping to 11. 2
volts.) Limiting the LED duty cycle also limits heat
accumulation, allowing the LEDs to be used safely without
heatsinks. R11-R16 represents equalizing resistors so that
each LED will see the approximate same energy.
Q2 (an NDP6020P) is a premium switching P-channel
MOSFET optimized for extremely low ‘on’ resistance of
only about 0.05Ω. While it’s important to keep this
resistance low (it’s a pure loss), the loss is small compared
to the equalizing resistors. Other (i.e., cheaper) P-channel
MOSFETs can be substituted. Even bipolar NPN power
transistors with slightly more voltage drop can be
D1 acts as a check valve so that C8+C9 won’t
reverse-power the logic board when it’s turned off, and
also to drop the 12V battery voltage to something around
11. 4 volts for C8+C9. When the drops of R11- R16 and
Q2 are subtracted from the 11. 4 volts, the LEDs are within
their maximum voltage of 11.0 volts.
The chosen LEDs are really bright, but expensive. You
can substitute less expensive LEDs as long as the 11 volt
supply voltage is taken into consideration in your design.
In most uses, the prescribed LEDs are overkill, and
acceptable performance can be had from an array of
Software — the Arduino
This section will follow the flowchart (Chart 1) for the
StroboDuino sketch which, in turn, refers to the
StroboDuino sketch downloadable at the article link.
Before we look at the details in the code shown in
Listing 1, let’s do a high level overview. In operation, the
operator selects flash rate with the FPM , FPM↓, FPM÷ 2,
and FPMx2 buttons. The corresponding flash rate (in FPM)
is always shown on the LCD display. The FPM and FPM↓
buttons start off incrementing (or decrementing) by one;
then, they actually accelerate as long as they are held
down. The operator will need to become adept at ‘letting
off’ to slow the rate of change.
The FPM÷ 2 and FPMx2 buttons are debounced for
one shot per button press. The bottom two buttons (with
red caps in the prototype) are PW↓ and PW for
adjusting the pulse width percentage from 0 to 10% in
The StroboDuino uses the Arduino’s 16-bit Timer1 for
its LED timing. The Timer1 loaders are derived from the
inputted FPM variable and the pulse width (pw) variable;
refer to Figure 6. The ‘period’ in this graphic is the timer
loader variable calculated based on the FPM in the display.
That number is split according to the pw percentage,
so that we have two loaders: one for the on time
(rLoaderH), and one for the off time (rLoaderL). On each
timer interrupt (each transition in Figure 6), the
appropriate loader is written into the Timer1 register for
the next phase. Simple as that.
32 October 2017
■ CHART 1.
■ FIGURE 6. LED flash timing.