Arduino PWM Laser Transmitter

A couple of weeks ago, I programmed an Arduino to take digitized sound stored in its rom, and send it out via PWM of an LED. A couple days after that, I used the same code to send voice using a small 5mw laser module. Ever since then, I thought it would be good to use the Arduino’s analog to digital converters to sample the sound from a small microphone, and then use that as the signal to send over PWM. Here’s my first test:



There is lots of noise remaining in the signal. Some further experimentation showed that the voltage regulation wasn’t very good: I did tap 5v from the Arduino, but the load must have been near its limit, because the overall voltage levels were varying by nearly 100 millivolts, which is only slightly less than the signal amplitude. I also have many leads which are too long, poor layout, and unoptimized values for AC blocking caps. But it does seem to work. I’ll be revising this over the next couple of weeks.

Addendum: I did measure the current through the op amp preamp, and the laser diode module. The op amp circuit only needs to drive the Arduino input, which is very high impedance, so it draws less than four milliamps. The laser diode averages 20ma, but has a peak power of twice that.

3 thoughts on “Arduino PWM Laser Transmitter”

  1. Hi Mark I am working on a project very similar to this one where I am using an electret mic and preamp connected to analog 0. I am trying to use an LED to transmit to a very similar solar receiver as the one you have used. The problem is I am have a lot of noise at the receiver end. I am using the same code you have posted and analog reading A0 and analog writing to pin 11. Any ideas? Or is this code posted anywhere?

Leave a Reply

Your email address will not be published. Required fields are marked *