Amplifying a Signal

Hey guys,

so i'm a a super novice when it comes to using Arduino. Currently, my group is working on a laser listening device. The laser beam will pick up sound signals, and will be aimed at a photocell. The goal is to have the photocell said the input signal to the Arduino and play it back through a speaker that is connected.

We had to amplify the signal in order to hear it so we built a circuit using on op amp and a capacitor. Now that we have it working with the circuit we built, my question is if there is any way to amplify the signal using Arduino and not having to use the external circuit. Any help as to how to approach this issue would be greatly appreciated.

much thanks,


With Arduino, you'd have to digitally sample it, modify it, and play it back out using a DAC,

Is there any guidance as to how to start this? We are in an embedded systems course and have to incorporate the arduino. If we use the circuit that we built to amplify the signal and then plug it in to the arduino, I know that we have to map the signal (i.e. signal can't oscillate around 0 for arduino). Once we do this, could we simply just output the signal to a speaker or will there have to be a lot more coding and processing involved? Again, i'm really sorry, we're noobies lol seems like we aimed a little high with our project

Yes, you overstepped a lot.
Arduino is not really equipped for audio processing.
Arduino has a 10-bit Analog to Digital Converter. It can sample at around 10 KHz.
It does not have a Digital to Analog Converter for output tho.
You can fake a Digital to Analog Converter by sending the 10 data bits out of 10 pins into a resistor ladder that will sum up the 10 bits into an analog signal - run that thru a power op-amp to have current to drive a speaker. Like a LM386.

I was under the impression that we were reading in an analog signal and outputting an analog signal through the speaker. Does it somehow get converted into digital when it makes it to the arduino?

That's what reading in the analog signal does.
Converts up to 0 to 1.1V, or 0-5V, or 0 to an externally supplied signal (say 3.3V) into a reading of 0-1023.
Then you have to convert it back.
Google R2R DAC - the arduino will output 8 or 10 outputs into the ladder to reform an analog signal.
Or, get a 10-bit DAC, something in the MCP4911, MCP4912 family at

@ smcgehee

As Cross Roads wrote, the Arduino is not really meant for audio processing but what you could do is sample the audio using the ADC then use a digital pot (controlled via I2C from the Arduino) to set the gain of a op-amp based on some average values from the ADC.
So you would be creating a sort of automatic volume control.

This way you would still be incorporating the Arduino into your project.
Simplified schematic below.


You might also want to look at the Audio Hacker shield, which allows you to amplify an incoming signal as much as 100X using an adjustable preamp. All the circuitry is on a convenient shield, so no other components are needed. And you can record/manipulate your audio if you'd like. Lots more info and projects documented here:

In addition, a photocell is a bit slow in responding to a signal, slower the darker it is lit. You might consider a PIN photodiode and amplifier.