Wednesday, November 3, 2010

How to put FFT in a microcontroller? 1

I would like to make an LED display that will flash to the beat of various music.
Here are some requirements.
  1. Their will be multiple LED groups that will have different controllers for each.
  2. Each group will be controlled by a different range of frequencies.
  3. The system must be capable of frequencies past 40 kHz.
  4. The whole system should not waste power.
    1. LED should draw little current.
Most people can hear between 20 Hz and 20 kHz, though the frequencies I am most interested in are the rhythm frequencies, below 600 Hz. Most systems should have no trouble keeping up with this.

I could either go digital or analog, depending what I want from the system. If there was only one range of frequencies I was interested in, with only one set of LEDs, analog would work the best, because it would be the simplest: only one filter, LED driver, and the LEDs. Because I am interested in several groups of LEDs, all controlled by a different range of frequencies, the analog solution is out. With a digital system, like with a microcontroller, I could easily program in different frequencies using a digital filter, or use an FFT algorithm, to target any set of frequencies I want. The problem with using a digital filter is that it is for only one range of frequencies. I would like each group of LEDs to be controlled by different sets of frequencies. It looks like my best option is to use an FFT algorithm, because that divides a frequency range (half Nyquest frequency divided into N samples), and quantifies that with an amplitude.

I would like to choose a Microcontroller that is fairly easy to operate, yet has enough functionality to get the job done. I have looked into the Texas Instruments Piccolo, but I have yet to see anything that would make me want to pursue it any further. It lacks a user base, all of the material comes from TI. Its documents and coding are confusing. The site says they wanted to create a microcontroller that was sufficiently easy to use, so that developers could easily apply it to their projects, but have they really done that? They have a lot of existing projects, but I don't quite see how to change those projects to fit my needs. I think I am better off going with a different microcontroller, which is what I will be researching next.

http://www.linkedin.com/in/andrewvall
http://www.elance.com/provprofile?userid=184021&rid=3QOZ
Electrical Design Engineer, Minneapolis, Minnesota

No comments:

Post a Comment