Me gustaría diseñar una placa para Lego Mindstorms NXT / EV3 que tenga muchos puertos de E / S.
La placa, al igual que los ladrillos "inteligentes" originales, tendría 2 tipos de puertos:
- puertos de sensor (dos modos: analógico e I2C)
- motor puertos
Sin embargo, a diferencia de los ladrillos "inteligentes" originales, que son bastante limitados, tendría al menos 8 puertos de motor y 8 puertos de sensor.
Solicito ayuda para encontrar una placa adecuada o un diseño adecuado para esta gran cantidad de sensores / motores.
Cada puerto de sensor requiere un ADC (para los sensores que funcionan en modo analógico, como sensores de temperatura y táctiles), y requiere dos puertos de E / S digitales para el protocolo I2C (SCL, SDA).
Por lo tanto, los puertos del sensor imponen un requisito de al menos 16 puertos de E / S y 8 ADC.
Cada puerto de motor requiere dos líneas PWM a través de un controlador de motor como L293D , y dos digitales Entradas para leer la salida del codificador de cuadratura, con interrupciones programables.
Entonces, para al menos 8 motores, se necesitan otros 16 puertos PWM y 16 puertos de E / S con interrupciones programables.
En total: 48 puertos de E / S (16 puertos de salida con PWM, 32 puertos de entrada / salida con interrupciones programables), 8 ADC.
Ahora este requisito es un poco más allá de las especificaciones de los tableros de aficionados populares como Arduino, Galileo, etc ...
¿Cómo recomendaría diseñar esta solución? ¿Hay placas con este número de puertos a un costo razonable?
¿Sería más rentable agregar CI adicionales a una de esas juntas? En detalle:
- un controlador PWM como el TLC5940 satisfaría los requisitos de PWM (y es de tipo margarita, en caso de que uno quisiera duplicar el número de motores)
- el ADC externo, o quizás los IC multiplexores analógicos simples pueden satisfacer los requisitos de los puertos ADC
Sin embargo, el número de puertos IO con interrupciones es bastante alto ... No estoy seguro si cada puerto necesita puertos dedicados con interrupciones programables. Tal vez exista una solución para reducir al mínimo este número de puertos, mediante algún tipo de multiplexor u otro truco ...?
¿Podría comentar sobre este proyecto? ¿Qué tabla elegirías? ¿Cómo lo diseñarías? ¿Qué CI agregarías?
Dije 8 puertos de motor y 8 puertos de sensor, pero cuanto más mejor :)