I'd like to design a board for Lego Mindstorms NXT/EV3 that has many I/O ports.
The board, like the original "smart" bricks, would have 2 kind of ports:
- sensor ports (two modes: analog, and I2C)
- motor ports
However, unlike the original "smart" bricks, which are quite limited, it would have at least 8 motor ports and 8 sensor ports.
I'm asking help to find a suitable board, or a suitable design for this large number of sensors/motors.
Each sensor port requires an ADC (for sensors operating in analog mode, like temperature and touch sensors), and requires two digital I/O ports for the I2C protocol (SCL, SDA).
So, the sensor ports put a requirement of at least 16 I/O ports, and 8 ADCs.
Each motor port requires two PWM lines thru a motor driver like L293D, and two digital inputs for reading the quadrature encoder output, with programmable interrupts.
So, for at least 8 motors, there is a need for another 16 PWM ports, and 16 I/O ports with programmable interrupts.
In total: 48 I/O ports (16 output ports with PWM, 32 input/output ports with programmable interrupts), 8 ADCs.
Now this requirement is a bit beyond the specs of popular amateur boards like Arduino, Galileo, etc...
How would you recommend to design this solution? Are there boards with this number of ports at a reasonable cost?
Would be more cost effective to attach further ICs to one of such boards? In detail:
- a PWM driver like the TLC5940 would satisfy the PWM requirements (and it is daisy-chainable, in case one would like to double the number of motors)
- external ADC, or perhaps simple analog multiplexer ICs can satisfy the requirement of ADC ports
However, the number of IO ports with interrupts is quite high... I'm not sure if each port needs dedicated ports with programmable interrupts. Maybe there exist a solution to shrink this number of ports to a minimum, by using some kind of multiplexer or other trick..?
Could you comment on this project? Which board would you choose? How would you design it? Which ICs would you add?
I said 8 motor ports and 8 sensor ports, but the more the merrier :)