I have finally motivated myself to publish my firmware and PCB designs for the MLMC on github. The design is functional and I have a set of five modules chained together sitting on my workbench. They happily display the current temperature via an Arduino and the MAX6675 based Thermocouple board I designed previously.
All the files for the project are currently published on github at https://github.com/brokentoaster/MLMC.
Once a couple of initial glitches in the system had been worked out the modules turned out to be both reliable and easy to drive.
The power consumption as on average 12mA per module while displaying scrolling text. The current consumption is reasonably nicely distributed about the average without any large peaks in current. Each module’s refresh rate is slightly out of sync with its neighbour due to the differences in each of the AVRs on-board oscillators. This has the side effect that all columns switch on at a slightly different time and avoids causing a large spike in the current. While not deliberately designed to act this way it is a benefit of the multiple controller modular design.
Trying to drive 1280 LEDs from just 4 wires was not without its problems, the three main problems are covered in greater detail in later posts but in brief they were as follows:
- Synchronisation issues caused by jitter, noise and missing bits
- Clocking out the last word from one module to the next
- PCB design error – SPI pins are not always the same as the ISP serial programming pins.
- Component Choice. Not enough memory for desired bit depth or bandwidth to achieve original functionality
- USI in SPI mode is not the same as hardware SPI