Hi everybody!
I have an interesting question. I have an Arduino 2 board, i need to pilot 1000 or more led, if possible in PWM. I know that exists a lot of thing like shift register, or special board like Mux board ecc.
No one of these solution can solve my problem.
I'd like to know if there is a special device tha commmunicate with Arduino ( maybe in a special coomunication protocol) that allow to control in PWM thousand of digital output.
The problem do no stop here, ( unfortunatly) i need also to receive other 1000 ( or something less) analog input, in particular i need to mesure the voltage difference produce by a photoresistor ir (they are a presence sensor).
Summary:
A "special" device to control thousand of pwm output
A "special" device to read thousend of analog input
Arduino 2 is only the mind that elaborate the input data and send the output data to those two "special" device, trought a particular communication protocol.
If someone can find a solution i'll be very grateful!! Thank you!
Ziru93:
Hi everybody!
I have an interesting question. I have an Arduino 2 board, i need to pilot 1000 or more led, if possible in PWM. I know that exists a lot of thing like shift register, or special board like Mux board ecc.
No one of these solution can solve my problem.
If someone can find a solution i'll be very grateful!! Thank you!
The solution is quite 'easy'.
Throw money at it.
Hire someone to solve your problem. If you want magical devices hire magicians.
Ziru93, what you are after can be done. What is Arduino 2? The Due?
That may need 3.3V to 5V level conversion circuits also.
For the LEDs with PWM, one way is to string together WS2801 driver with 3 LEDs or WS2803 driver with 18 LEDs each. They need a clock line and a data line, you send it a byte of data per LED (so 8-bit PWM each), after the devices sense that data has stopped being driven for some number of uS they all update their outputs.
You can have a 1000 byte array, and just send the data out using SPI.transfer:
for (x=0; x<1000; x=x+1){
SPI.transfer(ledArray[x]);
}
A similar chip is the WS2811; and the WS2812B takes it a step further by integrating an RGB LED into the package. They both receive PWM level info by using special timing on a combined clock/data line. Adafruit has a library for driving that line.
For 1000 analog inputs, your best bet might be a large bank of 16-channel ADC chips
with a 16-channel analog switch/mux for each ADC input.
Then 1 ADC could sample from 256 inputs, so 17 chips for 256 channals, and 68 chips for 1024 channels.
You drive all the muxes in parallel with 4 address lines, and select which ADC to read from with 4 chip select lines, assuming you use SPI interface parts for speed.
How well the photoresistor is read thru the 90 to 100 ohm analog switch will need a little experimenting before you commit to that route.
A better control chip might be the Atmega1284P. 32 IO, 16K SRAM, 5V part, runs at 16 MHz which is fast enough to drive the LEDs and read the ADCs. A much faster processor won't help, it'll just be waiting for the interfaces to do their things.
Do you really expect, your detailed answer to provide a turnkey result for him? He asked for magic, 'I have arduino 2, I want 1000 pwm outputs'. Your design will not fit on a single bread board, do you really expect him to jumper it together?
I admit I was snarky.
I was hoping he would respond to discredit my absurd response, He needs passion to to tackle such a challenge. I dislike giving handouts, a handup that directs an avenue of learning usually results in an increase of knowledge.
Give someone a fish they eat for a day, teach them to fish, they eat for a lifetime.
Ziru93:
Hi everybody!
I have an interesting question. I have an Arduino 2 board, i need to pilot 1000 or more led, if possible in PWM. I know that exists a lot of thing like shift register, or special board like Mux board ecc.
No one of these solution can solve my problem.
I'd like to know if there is a special device tha commmunicate with Arduino ( maybe in a special coomunication protocol) that allow to control in PWM thousand of digital output.
The problem do no stop here, ( unfortunatly) i need also to receive other 1000 ( or something less) analog input, in particular i need to mesure the voltage difference produce by a photoresistor ir (they are a presence sensor).
Summary:
A "special" device to control thousand of pwm output
A "special" device to read thousend of analog input
Arduino 2 is only the mind that elaborate the input data and send the output data to those two "special" device, trought a particular communication protocol.
If someone can find a solution i'll be very grateful!! Thank you!
Consider using FPGAs, for the kind of application you want is very suitable.
First of all, most of controllers, even though they used parallel hardware technics and VLIW solution do not permit what you want to do. Altough you can use mux boards or program solution as the one exposed by CrossRoads you will never be acting on the 1000 leds at the same time.
With a FPGA you can program 1000 ADC. But, for sure, it depends on your application (if you do not need to do it at the same time, mux solution could be possible). Or for example if all the leds have to do the same things, you can buy a buffer for example at www.ti.com, weld it to the pwm output and connect the leds. It also depends on how much current can your pin give.
And because programming HDL is not as simple and easy as programming software (because FPGAs is hardware so it has to be programm in HDL), there are tools that converts C code to VHDL for example. There is also a Matlab solution. Investigate on Matlab Symulink and Matlab System Generator.
FPGAs is performance parallel future. They are wonderful.