LED Sphere project

Hi!

I'm new to Arduino development and have been thinking of starting my first own project after completing few exercise projects I did with my starter kit & Arduino Uno. I would like to work on a LED sphere similar to this one:

Expect I would like there to be multiple layers of sphere (~10 layers) accounting ~300 LED's total for the sphere. I'm thinking of getting bunch of 5mm tri-color LED's and TLC5940 shift registers to drive the LED's. I expect the sphere to rotate ~6000RPM (100RPS) and the diameter of the sphere to be 25cm.

Driving the LED's with the registers sounds simple in theory but I got bunch of questions about the feasibility of this project:

  1. based on the LED sphere specs it seems that I need max update frequency of 15707Hz of the LED's (100RPS25cmpi/5mm). Are LED's fast enough for this kind of update speed? I read somewhere that LED's generally are supposed to have <1 microsecond on/off speed, so that would mean 1MHz update speed and thus sounds sufficient to me, but I would like to verify this.

  2. each LED is supposed to have different level of brightness driven by PWM of the TLC5940 chip, which has 12bit PWM control that can be run at 30MHz (AFAIK), so then each LED can be updated only at 7342Hz (30MHz/4096). Is it possible to change the PWM control to use less bits for faster update (e.g. count only up to 256, because the data can have only 256 level of brightness for RGB anyway)?

  3. Can Arduino control the TLC5940 chips fast enough? The IC's need to update their data at ~16KHz and there are ~300 LED's on the sphere. Each PWM control requires 12 bits of data for RGB triplet and each bit of data takes at least 3 cycles to update (data setup + clock up + clock down). That means ~170MHz data update frequency (16KHz123003) and thus ~500MHz pin update speed (170MHz3). This is assuming serial data update of all TLC5940 chips, but this could be parallelized using more pins, but still Arduino should be able to update data at 500MHz, which doesn't sound feasible considering only 16MHz clock speed of Arduino. Also since TLC5940 runs at 30MHz, it doesn't sound feasible. How should I drive the data to the chips instead?

Thanks, Jarkko