About this project:
Fairly early on in my work with high-power LEDs such the Luxeon
1 and 3
watt devices I considered that PWM (
Pulse
Width
Modulation)
techniques
would
be an interesting means of modulation the LED.
In theory, this should be capable of producing the lowest
distortion modulation on an LED because the linearity of the
LED's
"Current-versus-Luminous Output" curve would be
irrelevant: The
apparent brightness would be integrated by the receiver to
produce a
voltage proportional to the duty cycle.
In addition to high-power LEDs, this unit is also suitable for
driving
inexpensive laser pointers, provided that suitable circuitry
(e.g.
voltage/current regulation) is used with the laser
pointer.
In
other
words, it will NOT safely drive a laser pointer directly!
For actual audio from the very modulator described and
pictured,
listen to the audio clips found
here.
For information about a simpler PIC-based
PWM-type
Laser/LED
driver, see the page:
"A
'Simpler' Pulse-Width Modulator for LEDs, Lasers and
whatnot."
What is PWM?
Figure 1:
How PWM works by varying the duty cycle of the
waveform. These
are from the Luxeon
link on the Modulated
Light web page by Chris, VK3AML and Mike,
VK7MJ.

|
Pulse Width Modulation is widely used nowadays in low power
audio
amplifiers and the so-called "1 bit" D/A converters and the
operation
is simple:
- For a "steady state" DC output (that is, no waveforem
being generated) a 50% duty cycle
square wave is generated at a frequency several times higher
than the
highest-frequency component in the audio to be
reproduced. While
this frequency could theoretically be as low as just twice
the highest
audio frequency, it is usually several times higher than
that to
simplify lowpass filtering and to cut costs.
- To increase the output voltage, the duty cycle of this
square
wave is increased, with 100% being "full on."
Conversely, to
decrease the voltage, the duty cycle would be decrease, down
to 0%
being completely off. In reality, most PWM circuits
avoid getting
too close to either 0% or 100% as either extreme would
produce
objectionable "hard" clipping.
- The PWM output is filtered to average out the square wave,
the
ultimate result being a voltage that is directly
proportional to the
duty cycle of the original square wave.
As it turns out, the linearity of a PWM generator could, in
theory, be
absolutely perfect as the duty cycle is timed precisely
using digital counters, but what is
necessary is that there be enough timer resolution in order
to provide the needed resolution of duty cycle. Take, for
example, a 10 bit PWM converter. Because 10 bits
represents 1024 steps, it would be necessary that the original
timing
clock be 1024 times that of the sampling rate. If, for
example,
our original clock were 20 MHz, one 1024
th of that
would be
19.53125
kHz.
In practical terms, it is usually desirable the frequency
response of
the circuits in a typical
optical receiver
not be able to respond at the
PWM
frequency, with
the resulting "smoothing" being a voltage that is very close to
the
original analog
signal applied to the modulator as depicted in
Figure 1.
This
technique usually works, as
more-sensitive optical receivers designed for speech bandwidth
(and/or
their following amplifier
stages) don't have the frequency response characteristics
necessary to
reproduce the original PWM waveform.
Some caution should be exercised, however: If the optical
receiver
does have the bandwidth to recover the PWM
signal - or
if there is a reduced (but still sufficient) response of the
audio
chain at the PWM frequency - this could play havoc with
downstream
audio
devices in several ways:
- The audio amplifier may be capable of amplifying the PWM
signal,
robbing power from the audio-frequency components. In
this
situation, the audio amplifier is putting out its normal
power, but
some of it may be wasted at the PWM frequency and be
inaudible to human
hearing. In this case, the audio amplifier may
overload at
lower-than-normal volume levels.
- Aliasing artifacts on digital audio devices.
Computer sound
cards and digital audio recorders may not be able to
sufficiently
filter the PWM frequency from their inputs and this may
result in odd
aliasing artifacts, which may include noise, distortion, or
odd mixing
effects.
While the above are possibilities, I have not experienced these
effects
when using my
Version
3
optical receiver (with the lowpass filter switched
out, or
even the "simplified" versions) with
digital audio devices - but the fact that this receiver is
designed to
roll
off above 7 kHz is no doubt a mitigating factor:
The caveat here is that all equipment should be tried out
before
going
out into the field to verify that there is compatibility.
Remember that to detect a PWM signal, the receiver does
not
need to be able to respond to the switching frequency, but only
to the
rate at which the pulse width is being changed - that is, the
audio
modulated
atop the PWM. A "slow" receiver will
simply
integrate (or smooth) together the PWM waveform into a form that
closely resembles the signal that was originally fed into the
modulator
in the first place.
A PIC-based Pulse Width Modulator:
Having done some DSP programming using the Microchip PIC
microcontrollers over the years, I knew that it already
possessed the
hardware to make a nice Pulse Width Modulator for LEDs. I
chose
the PIC16F88 for this task as it had some useful onboard
peripherals:
- A 10 bit PWM generator. With a 20 MHz crystal, it
could
generate a PWM signal with 10 bits of resolution at 19.53125
kHz - a
frequency sufficiently high enough for voice bandwidth
communications
without having to use elaborate anti-aliasing filters.
- A 10 bit A/D converter. Again, this is a useful
feature if
you want to take an analog signal and do anything with it,
and the
ability to use multiple analog inputs allows several analog
voltages to
be digitized. Another useful feature was that the A/D
converter
could be configured to use an external voltage reference.
- Onboard timing. This processor has several onboard
hardware
times, allowing very precise generation of clock periods -
something
that would be useful for generating audio tones for testing.
- An onboard 4-bit R-2R D/A converter. This
peripheral,
originally intended as a voltage reference for the onboard
comparators,
would prove to be very useful when used in a unique manner.
Description of the hardware:
Figure 2:
Schematic of the LED PWM circuit.
This schematic doesn't include some of the later
modifications - see
the comments to the left.
Click on the image for a larger version.

|
Signal input stage:
Audio input can be one of three sources: A built-in
electret
microphone, an external microphone via J1, or an external line
input
via J2: S1, an SPDT switch, selects which source is to be
used and if it is a "center off" type switch, that position can
serve
as a
"mute" setting.
Note that J1 is a "disconnect" type of jack and is wired to
disable
the internal microphone when an external one is plugged in, such
as a
desk-type computer microphone or a microphone-headset
combination.
In
experimentation it has been noted that computer-type microphones
are
wired in one of two ways: While the audio is always on the
"tip",
some connectors apply bias to the tip and leave the ring
disconnected
while others apply the bias voltage only to the ring so the
circuit
shown accommodates both wiring schemes. Note that this
microphone
input is not generally suitable for dynamic or crystal
microphones -
only
electret microphones should be used.
Note also that J2, the "line level" input, is wired such that
the two
resistors will sum (and
attenuate) a line-level stereo input to a monaural signal.
The
resistors (R3 and R4) are necessary in many audio amplifiers
because it
has been noted that with many audio devices, simply shorting the
left
and right channels together might result in distortion as the
two audio
channels may "fight" each other.
The input signal is buffered by Q1, an emitter-followe,r and the
source
impedance is set with R9. Q2, a JFET, is used as a
variable
resistor, controlled by the microprocessor, U2, to reduce gain
of the
input stage. U1B is a non-inverting amplifier used to
boost the
low-level audio input signals (from the microphone, for example)
to a
level suitable for the A/D converter on the
microprocessor. U1C,
along with R18 and C8 form a 3-pole 3.5kHz anti-aliasing lowpass
filter
used to limit the frequency response to below the Nyquist limit
of the
microprocessor's sampling rate of 19.53125 kHz.
LED Current Driver:
U1A is wired as a precision current sink: With a closed
feedback
loop, the drive on the gate of Q1, an N-channel power MOSFET, is
adjusted by U1A as necessary to obtain a voltage drop across
R30, a 1
ohm resistor, that is equal to the voltage on pin 3 of U1A, the
non-inverting
input. In this way, the current through R30 - and thus
through
LED1, the high-power LED - is exactly proportional to that
voltage applied to pin 3. Because the maximum, peak
current
through a 3 watt red
Luxeon LED is 2 amps, R28 is adjusted to provide precisely 2
volts at
the peak of the PWM waveform (from U2) when R29 is all of the
way
up: When adjusted this way, with a 50% duty cycle, the
average
LED current is thus 1 amp.
For current monitoring, R31 and C20 provide a filtered voltage
reference where 1 volt equals 1 amp of average current.
For audio
monitoring, a pair of headphones may be used with R32 being used
to
adjust the audio level, R33 limiting the drive to the headphones
to a
safe level with C21
blocking DC and C22/R33 filtering most of the PWM switching
frequency
out of the
monitor point.
See the comment below about modifications made to the monitor
point.
In order to "mute" the LED drive without powering down the
circuit (and
avoiding the wait for the circuit to re-stabilize when it is
powered
up)
S3 simply disconnects the LED from its voltage source.
Modifications to minimize voltage drop:
In testing, it has been noted that the LM324 used will properly
operate
down below even 10's of millivolts and because of this, it
should be
possible to reduce the value of R30 down to at least 0.1 ohms
and still
acheive a wide range of current modulation with the peak current
being
2.2 amps. If
a low on-resistance MOSFET is used for Q1, it should be possible
to
construct a circuit that will fully modulate the LED with less
than 0.5
volts of additional voltage drop. What this means is that
with
these lower resistances it is possible to run a single Luxeon
III from
a 6 volt supply, or up to three Luxeon III's in series from a 12
volt
battery supply!
(Note that if you were to use a 6 volt
supply, you would have to assure that the +5 volt regulated
supply
could maintain accurate regulation!)
Comments:
- Since drawing the schematic, a simple low-pass filter and
headphone driver was added to the "monitor" jack (J3) to
remove the PWM
energy. The presence of the PWM signal on this lead
caused some
aliasing problems when a digital audio recorder was used.
- Some of the phase/frequency "compensation" components
around U1A
have been later modified to improve stability. While
the
circuitry around U1A shown in the schematic proved to be
sufficient for
the first LED module, changes were made later to allow
stable and
consistent operation with other devices such as other LEDs
and laser
pointers. I have yet to redraw the schematic to
reflect these
(and other) changes but feel free to send an email via the
link at the
bottom of this page if you have questions. The author
is well-aware that the methods shown in the digram to
achieve stability are less than ideal - although they work
quite well in this particular case.
Microcontroller:
U2 is a PIC16F88 microcontroller with a built-in 10 bit A/D
converter,
10 bit PWM generator (used as a D/A output) as well as other
peripherals and the 5 volt PWM signal is applied to the U1A
current
sink via R28/R29. U2 also contains a 4 bit voltage
reference
originally intended to be used with onboard comparators, but it
is used
in this case as another D/A channel, being filtered by R23/C16
and
amplified by U1D and used as the "external" A/D converter
reference
voltage: A divided-down version of this voltage is also
used to provide a centerline reference for the filtered and
amplified
A/D input.
Also connected to U2 are two potentiometers, R19 and R20.
These
produce variable voltages that are read by the A/D converter and
used
by the software to change settings such as gain or tones.
Description of the software:
Figure 3:
Top: Front panel view of the modulator, which
is connected to
a Luxeon 3-watt emitter module with a current
limiter. (No, I
haven't gotten around to properly labeling things just
yet...)
Middle: The interior of the modulator showing
the
component side of the circuit board.
Bottom: Another view of the interior of the
modulator,
showing the backside of the board and front panel.
Click on an image for a larger version.

|

|

|
Timing:
U2 is clocked by a 20 MHz crystal and this is used to providing
timing,
including the 19.53125 kHz PWM frequency and the corresponding
19.53125
kHz sampling rate done in an interrupt service routine.
Because
of the sample rate, the maximum allowable audio frequency that
may be
sampled without distortion is just under 10 kHz: The
3-pole
lowpass filter attenuates input audio by about 20dB at the
Nyquist
frequency, effectively preventing such problems by rolling of
frequencies above 3 kHz at a rate of 18dB per octave.
Operation in audio mode:
Automatic gain control (AGC):
When in "audio" mode - that is, when audio from a microphone or
line
input is being modulated, the voltage at input AN4 is
digitized.
When doing A/D conversions, however, it is important to keep the
audio
level near the maximum input limit of the A/D converter, yet not
overdrive it and cause distortion. To prevent this, the
software
looks at the incoming digitized audio and if the sample voltage
is too
close to minimum or maximum, gain is reduced to prevent
overdriving the
A/D and thus the PWM generator.
Each time a sample of high audio is detected, RB1 ("Gain Control
Pulses") is set high, but it is kept low at all other
times.
Every
time RB1 goes high, charge is added to C5 via R13 (through D2)
and
R14. As the voltage on C5 rises, Q2 begins to conduct,
shunting
away some of the signal being applied to U1B and reducing the
audio
being input to the A/D converter and resulting in fewer "high
audio"
conditions that cause a gain control pulse. If the audio
has not
exceeded
the "gain reduction" threshold, RB1 is kept low and C10 is
discharged
more slowly via R14. With this feedback system, the gain
is
balanced, keeping the audio from getting too high, too often.
Another output, RB7, is used to indicate when the CPU detects
that
either the A/D input and/or PWM output exceeds a high amplitude
(slightly higher than the gain reduction threshold) by
outputting a
pulse that turns on Q3 and causes LED2 to flash, indicating to
the user
something about
the amount of audio present. Note that it is normal for
this LED
to flash once in a while and the occasional audio peaks
that get "hard clipped" by the input A/D don't cause
objectionable
distortion on speech.
The time constants of C10, R13 and R14 are chosen to be fairly
fast in
order to track speech. The effect of this is that this
audio AGC
acts very much like a compressor-type speech processor and can
help
maintain a tight peak to average ratio - something that can
greatly
improve intelligibility of speech under conditions of poor
signal/noise
ratio.
Manual gain control:
Another means of gain control is via R19, a potentiometer:
The
voltage from this pot is digitized and internally converted to a
value
that is applied to the "Comparator Voltage Reference" (Cvref)
output on
pin 1. Although this is a 4-bit D/A converter, roughly 8
bits of
resolution are obtained via software dithering and using U1D,
the
Cvref output is filtered with C16/R23, amplified, and applied to
pin 2,
Vref+, the
voltage reference input of the A/D converter while a sample of
half
this voltage is applied to the audio input through R27 to
provide a
"mid-scale" voltage reference for the A/D converter. By
lowering
the
reference voltage, the gain of the A/D converter is effectively
increased.
When R19 is fully-counterclockwise (minimum gain) the Vref+
voltage is
set to about 5
volts, corresponding with a full-scale range of 0-5 volts of
analog
input voltage. When R19 is but fully-clockwise, the Vref+
voltage
drops to about
0.3 volts: Those familiar with this chip will note that
the
minimum specified A/D converter Vref+ voltage is, in fact, 2
volts, but
this is only
true if full 10 bits of A/D resolution is required. The
penalty of using a voltage lower than this is simply that the
lower-order A/D conversion bits will start to be lost in the
noise. At the lowest voltage, the A/D converter resolution
is
roughly equivalent to 6 or 7 bits, but since the
lower-order bits
contain what sounds like white noise, the overall effect is that
as A/D
conversion gain goes up with
the lowering of Vref+, so does the noise level, which manifests
itself
as a background "hiss."
While this added noise is noticeable, it is not
really objectionable and on any sort of weak optical path - the
condition where the gain might be run up to maximum to
more-heavily
compress the audio for improved intelligibility - it probably
wouldn't
be noticed at all amongst the other noise sources. Note
also that
under normal conditions, the
"manual gain" control would not be operated at maximum,
anyway.
In normal operation, it has been noted that the gain is
sufficient to
pick up the voice of anyone within several feet of the modulator
when
its internal microphone is used.
Note also R11, another gain control. This sets the maximum
gain
of U1B, the first amplifying stage. On the prototype, I'd
used a
100k potentiometer, but noted that I had to set it nearly at
maximum
gain (minimum resistance) so a lower value of potentiometer
(20k-50k)
would probably be more appropriate. Note that setting R11
for too
high of gain can result in instability of U1B and/or excess
noise.
Operation in "tone" mode:
Another feature of the software is tone generation: Using
DDS
techniques, low-distortion sine waves can be generated at
practically
any audio frequency below the Nyquist limit - in this case, with
a
resolution of 0.298
Hz.. Having this capability allows several tone generation
modes:
- Continuously variable frequency. Using R20, the
audio
frequency can be adjusted from 20 Hz to about 2.5 kHz (2457
Hz,
actually.) In this mode, the rotation of R20 is
"de-linearized"
to make it easy to adjust the tone frequency over a wide
range.
- Selection of fixed frequencies. When in this mode,
one of 8
precisely fixed tone frequencies may be selected using R20
as noted
below.
- Ascending or descending tone sequence. The tone
sequence
consists of four dissonant tones that are very easy to pick
out of the
noise. R20 is used to adjust the sequencing rate.
- Activation of a pilot carrier. In this mode, a 4 kHz
tone
(12 dB below 100%
modulation) is digitally mixed in software with the
microphone (or line
input)
audio. The software takes the presence of this pilot
carrier into
account and prevents overmodulation of the LED with the
combined audio
sources. At the receive end, this pilot tone can be
filtered out
and is available for analysis of scintillation or used for
peaking the
receiver.
The selection of tone and audio modes is done by grounding RB3,
RB4
and/or RB6 using diodes D3-D9 and a rotary switch to generate a
binary
code as follows:
A - Adjustable tone: RB3, RB4 grounded,
RB6
open
B - Selection of 8 fixed tones: RB3 grounded, RB4
and
RB6 open - see below for a list of the audio tones
C - Ascending tone sequence: RB4 grounded, RB3
and RB6
open - see below for the list of tones used in the sequence
D - Descending tone sequence: RB3, RB4, and RB6
open -
see below for the list of tones used in the sequence
E - Audio with pilot tone: RB4, RB6 grounded and
RB3 open
F - Audio with no pilot tone: RB6 grounded, RB3,
RB4
open
The 8 fixed audio tones available in
Mode B are:
1 - Musical note B0 (actual freq. = 30.9944
Hz)
2 - Musical note E1 (actual freq. = 41.1295 Hz Hz)
3 - Musical note C4 - middle C (actual freq. = 261.6674
Hz)
4 - Musical note F4-sharp (actual freq. = 369.8468 Hz)
5 - Musical note A5-sharp (actual freq. = 932.26912 Hz)
6 - Musical note
- E6 (actual freq. = 1318.52896 Hz)
7 - 440 Hz - Musical note A4 (actual freq. = 439.907
Hz)
8 - 1kHz tone (actual freq. = 999.9242 Hz)
Note: The ascending sequence (
Mode C)
consists of tones are
#'s3, 4, 5 and 6 (in that order) while the descending tone
sequence (
Mode
D)
are the same tones in
reverse order.
Adjustment:
Maximum LED current:
- The LED connection is shorted out
- R28 is turned all of the way down
(wiper grounded)
- R29 is turned all of the
way up
- R28 is then adjusted for 1.1 amps as measured at the LED
Current
Monitor point
by observing 1.1 volts.
Maximum audio gain:
As mentioned before, R11 is adjusted to provide the maximum
desired
amount of microphone gain. Care should be taken to avoid
setting
R11 to too low a value (e.g. highest gain) to prevent noise
and/or
instability if the U1B
amplifier section.
Comment: 100% modulation is defined as
modulation
that
goes all the way from zero up to twice the average (unmodulated)
current as set by R29.
Important note: It is strongly recommended
that you
never operate any modulator or LED without
having
current limiting on the LED. This may take the form of a
resistor, or
a current
limit circuit such as one using an LM317. If an
LM317-based
limiter is used, you may need to install bypass capacitance
to prevent
distortion of the waveform due to the nonlinear nature of
the PWM
waveform.
Components:
- Diode D1 is a 3-6 amp, 50 volts diode or greater
- Diodes D2-D10 are small-signal diodes, such as 1N914 or
1N4148
- Q1 is an N-channel power MOSFET. A recommended
device is
one that has a current rating of 10-20 amps at up to 100
volts.
Note that high voltage/high current devices have more gate
capacitance
and could make gate drive difficult.
- Q2 is an MPF102
- Q3 is a general-purpose NPN transistor.
- All potentiometers are linear taper.
- J1 is a disconnect-type 3-conductor (stereo) 1/8" (3.5mm)
jack
- J2 and J3 are 3-conductor 1/8" jacks
- S1 is an SPDT switch. A center-off switch is nice to
have,
but not necessary.
- S2 is a 6-position, non-shorting rotary switch. I
used a 6
position switch (from Radio Shack - P/N 275-1386.) If
necessary,
several toggle switches could be used to set the various
modes.
- S3 is an SPST switch
- U1 is an LM324 quad op amp: DO NOT SUBSTITUTE!
If
you
do insist on a substitution, the op amp must be capable of
good
bandwidth as well as operating down to the negative
supply rail. Other rail-to-rail op amps were tried, but did
not work
very well: I need to look into this...
- U2 is an appropriately programmed PIC16F88
microcontroller.
- U3 is an 78L05 (or 7805) 5 volt regulator.
- R11 - Trimmer potentiometer, 20k-50k maximum.
- LED1 is a high-power LED. The use of a red (or
red-orange) 3-watt Luxeon is assumed here, but other units
may be used
provided that R28 is adjusted for maximum safe
current. It is
strongly recommended that the LED itself be equipped with
a current
limiter.
- LED2 is a normal indicator-type LED, probably red.
- TH1 is a self-resetting, 3 amp "thermal" fuse.
Comments:
- It is normal for the "Overload" light to flash on
occasional
audio peaks. With high input levels and/or excess
audio gain,
this indicator may flash much more frequently causing some
some minor
clipping,
but it may sound overly "compressed." Under conditions
of low
signal-noise ratio, however, a heavily compressed audio
signal may be
more intelligible than one that isn't as compressed.
- S3 disconnects the LED to allow "muting" of the light
output, but
leaves the rest of the circuit powered up. This keeps
the circuit
active, thus eliminating the need to wait for things to
stabilize were
the entire circuit powered down: The current
consumption with the
LED off is about 40 milliamps.- Note that as the LED current
is
decreased, the audio output from J3 will also
decrease. When S3
is opened, the audio output will also go away.
- TH1 is a 3 amp self-resetting thermal fuse that is used to
protect the circuit in the event of an internal power supply
short, or
in conjunction with D1 to provide power supply reversal
protection.
- Some time after building this circuit, I joined
the Optical
DX
Yahoo Group and noticed that David Smith, VK3HZ,
had
taken a similar PWM approach - it might be interesting to
compare notes.
- This Pulse Width Modulator does not
offer
any power efficiency over a linear modulator because it
still uses
linear current regulation to limit the LED drive.
- I have also built a
linear modulator that uses the same
"Precision Current Sink" circuit but does not use a
PIC to
process the audio. I did this circuit mainly to see
how well it
works, but having built both, I would recommend the "linear"
version
instead as it is somewhat simpler, and it does not have the
audio
frequency response limitation of this circuit.
- Philips is apparently phasing out the Luxeon I,
III, and V lines in favor of the lower-power
Luxeon Rebel devices. Since I have not used those
other devices,
the
techniques described here may not directly apply. For
the time
being,
however, the Luxeon III devices are still available from
various
sources.
- For this circuit to drive a laser pointer, a shunt
resistance
(about 20 ohms) was used to provide a reasonable amount of
sink current
for the output stage and a simple 3-volt regulator was used
across that
resistance to provide "safe" operating conditions for the
laser module.
Return
to the KA7OEI Optical communications Index page.
If you have questions or comments concerning the
contents
of this
page, or are interested in this circuit, feel free to contact
me using
the information at
this
URL.
Keywords:
Lightbeam
communications,
light
beam, lightbeam,
laser beam, modulated light, optical communications,
through-the-air
optical
communications, FSO communications, Free-Space
Optical communications,
LED communications, laser communications, LED,
laser, light-emitting
diode, lens, fresnel, fresnel lens, photodiode,
photomultiplier, PMT,
phototransistor, laser tube, laser diode, high power
LED, luxeon,
cree, phlatlight, lumileds, modulator, detector
This page and contents
copyright
2007-2011. Last update: 20110426