I recently decided that instead of making a specialized PCB for every new project I work on, it would be a lot cheaper, and faster to make a controller that could handle just about everything I would need for the type of stuff I work on. The pictures above show the board being used in a future project.
The main control of the board is done by an Atmegax8 (88,168,328), and can communicate via either USB (ft232RL), or wirelessly over a XBee radio. All of the inputs/outputs are controlled from a shift register data bus, basically 6 pins on the AtMega control the shift registers, one for the clock, one for the strobe, 1for input, 3 for output. There are 3 daisy chained registered in 4 groups which yield the following capabilities:
- 48 open/collector outputs ( 6 TPIC6B595, high current drain only outputs for sinking current, up to 500mA per channel.
- 16 digital outputs (TTL, minimal current driving capability, coming from 2 – 74HC595 chips)
- 8 high current outputs (2 SN75441 hex driver chips, 1A output current per channel with optional external voltage drive, allows for higher voltage for driving relays, motors etc)
- 24 digital inputs (3 74HC165 with 10k pullup resistors)
- 8 analog inputs (all of the onboard analog inputs are open on the AtMega)
- 6 GPIO (leftover pins from the AtMega leaving SPI port and I2C port available for external communication)
- high voltage dc-dc converter (fail)
Due to the fact that all the i/o is handled on a shift register chain, the updating of the i/o is somewhat slow. However, since there are only 3 registers on each chain, you can still do some PWM and other desirable higher frequency i/o operations. The main feature though really is the 48 high current drain outputs, mostly suited for driving leds, lots of them. You could potentially drive 48 high power leds from this board, i.e. the 3 watt killers that are available use ~450mA, or instead 16 3watt RGB leds could be controlled. I have tried this out with lower current leds and can actually get 8 bit resolution on the leds using PWM through the shift register chain. Not too shabby.
One other note, I had some leftover space on the board in the middle when I was done and I tried to cram in a DC-DC converter, ignoring all the lessons about how not to layout such a device. Ultimately, it failed and is not worth mentioning more.