Line Level Input - RCA from Car Radio

Hey guys, I've been working on a LED lights project in my car. In my previous version, I used a raspberry pi and spotify and processed the audio before it left the device.

In this much simpler rev2, I am using an Arduino to read the output of the audio from the RCA jacks on the back of my Car Radio (Kenwood KDC-X399). From what I've gathered, it is a 3V peak-to-peak level.

Now on to my problem. I was first reading the outputs of headphone amplified audio, and everything was working perfectly. I would read the levels between 0-~350. (I know I can't read the negative voltage, but for my purposes, its fine). This range gave me enough information to "detect" when there is a loud volume change, or a beat, at that time I would change the color of the LED strip.

When I began to read the levels of the line-level audio from the RCA jacks, I would get a range from about 0-10. That made it much harder to determine volume and whatnot. Plus, I would only get anything above 0 when my radio was really loud.

I then added a small capacitor that increased the level to about ~330-350, allowing me to read the negative voltage, however, that doesn't really solve the problem, because the range is so narrow.

I'm assuming I'm going to need an amp of some kind to increase those narrow levels, or maybe I'm totally wrong.

So, my question, what do I need to do to increase the range?

Thanks,
Jonathan

It's been a few days now so, bump

A capacitor doesn't solve the negative voltage problem. You need to [u]bias[/u] the Arduino input.

With the analog input biased at 2.5V, silence should read about 512, and the louder the signal the more deviation you'll get around that value. You can subtract-out the bias (in software) if you wish, and then you can either ignore the negative values or take the absolute value.

The Arduino can actually be damaged by negative voltages, and the audio signal will be "damaged" (distorted) too. If you are lucky, the line-output didn't supply enough current to damage it. If you have a potentiometer handy you might want to check your Arduino with the [u]Analog Read Serial Example[/u].

From what I've gathered, it is a 3V peak-to-peak level.

That would be at full-volume.

When I began to read the levels of the line-level audio from the RCA jacks, I would get a range from about 0-10.

The problem may have been a "floating input" with no "DC reference". If the input isn't biased, it may need to be pulled-down with a resistor (depending on what's connected.)

Littlejd97:
Hey guys, I've been working on a LED lights project in my car. In my previous version, I used a raspberry pi and spotify and processed the audio before it left the device.

In this much simpler rev2, I am using an Arduino to read the output of the audio from the RCA jacks on the back of my Car Radio (Kenwood KDC-X399). From what I've gathered, it is a 3V peak-to-peak level.

I find the MSGEQ7 chip interesting, a little chip that will do a lot of the work for you (interfaces with the audio signal and even analyzes the frequency spectrum of the music for you):

http://tronixstuff.com/2013/01/31/tutorial-arduino-and-the-msgeq7-spectrum-analyzer/
http://www.ebay.com/itm/MSGEQ7-Breakout-Board-Arduino-microprocessor-/321746523983