After a long flight from San Francisco to London, I’ve decided to replace the MM908E625 by an AT90USB1287. Why? Because the former uses the LIN protocol, which is great if you’re building a car, but not really suited for anything else. Instead, we will be able to connect the latter over USB, for both power and data, which will further simplify our internal cable management.
Unfortunately, the AT90USB1287 does not come with a built-in quadruple half-h driver for the driving of our motorized faders, but we can easily pair it with an SN754410, as illustrated on this great article. And using the Atmel AVR microcontroller would give us direct access to the plethora of circuits developed for the Arduino, which we could use for inspiration.
Clearly, the AT90USB1287 is a bit overkill for what we need, with 128 KB of flash, and 64 pins. Something like the ATmega16U2 might be plenty enough, but I want to make sure that we design our bargraph boards with enough space for the AT90USB1287, just in case we need more flash or more I/Os.
Also, we decided to go for a version of the AVR microcontroller that provides a built-in USB controller, instead of the ATmega328 used by the Arduino Uno. This will make our work a bit easier, while reducing the amount of PCB real-estate required.
That’s important, because we will connect our nine bargraph boards (which are used to drive our motorized faders) through USB, using it for both power and data. To do so, we will add a 12-channel powered USB hub on the keypad board. 9 channels will be used by the 9 bargraph boards, and 3 channels will be left for future extensions.
This powered USB hub will itself be connected to the USB port of submodule 4 through the backplane. As a result, we won’t need any GPIOs from the submodules to drive our bargraphs and faders, which is quite nice. In fact, we might even do the same for the keypad and transport panel, driving everything with an extra AT90USB1287 microcontroller.
Here is a great article explaining how multiple Arduino boards can be driven over USB by using a powered USB board. We will likely develop something similar to interface submodule 4 with our 9 bargraph boards and our keypad board.