About this project:
Fairly early on in my work with high-power LEDs such the Luxeon 1 and 3
watt devices, I have considered that PWM (
Pulse
Width
Modulation)
techniques would be an interesting means of modulation the LED.
In the strictest sense, this could be capable of producing the lowest
distortion modulation on an LED because the linearity of the LED
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.
For actual audio from the very modulator described and pictured,
listen to the audio clips found
here.
What is PWM?
Figure 1:
Graphics showing how PWM works. These graphs 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-powered audio
amplifiers and the so-called "1 bit" D/A converters and the operation
is simple:
- For a "steady state" output (that is, no output) a 50% duty cycle
square wave is generated at a frequency several times higher than the
highest-frequency component in the audio being 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 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: The duty cycle is simply timed precisely
using digital counters - which are absolutely precise. What is
necessary, however, 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 1024th of that would be 19.53125
kHz.
In practical terms, the frequency response of the circuits in a typical
optical receiver may not be able to respond at the PWM frequency, with
the result being a voltage that is very close to the original analog
signal applied to the modulator. This technique usually works, as
the more sensitive optical receivers (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) with
digital audio devices - but the fact that this receiver starts to roll
off severely above about 7 kHz is no doubt a mitigating factor.
The caution here is that all equipment should be tried out before going
out into the field to verify that there is compatibility.
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.
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 a "center off" switch, that position can serve as a
"mute" setting.
Note that J1 is a "disconnecting" 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. The circuit
shown accomodates both wiring schemes. Note that this microphone
input is not suitable for dynamic or crystal microphones - only
electret microphones should be used.
Note also that J2's 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 often results in distortion.
The input signal is buffered by Q1, an emitter-follower 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.
In order to "mute" the LED drive without powering down the circuit (and
avoiding the wait for the circuit to re-stabilize if 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. 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!)
Comment: I plan to revisit the audio monitor and install a
buffer amplifier so that it will be insensitive to the load of the
LED: As shown, the audio output from J3 decreases when R29, the
current
setting is decreased - or just goes away when S3 is opened.
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. 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: 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 that occasional audio peaks
that get "hard clipped" by the input A/D won'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, 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 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.
- Activitation 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 of average current
(when
using a 3 watt red Luxeon) 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 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!
The op amp used here must be capable of 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-powered 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 to protect the LEDs.
- LED2 is a normal 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, the
light 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.
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.
This page and contents copyright
2007. Last update: 20070517