The board to board connectors for this idea turned out to be the hardest part for me to figure out. I was essentially copying the stackthrough bus on the PC/104, but I didn't need 104 pins. Not even close. So, for a while I was cobbling it together with a male header soldered from the bottom of the board, and a female header receptacle soldered onto the male pins that were sticking out through the top of the board. It was very problematic for my soldering skill level, but I managed to get it to work fine after much trial and error.
Note: I designed the connectors based on the pinout of the ATmega168P because this was my target MCU. This strategy could be extended to other, more or less powerful MCUs.
The pinout of the ATmega168P lends itself quite nicely to my "quadrant" strategy. Looking at the pinouts, the pins are split into two rows 1-14 and 15-28, simply because it's a DIP package. Additionally, each row is further divided in half, roughly, by the GND, VCC, AVCC, AREF pins. This gives you four clusters of pins in each quadrant. Pins 1-6, 9-14, 15-19, and 23-28. There's, at most, six signal pins in each quadrant.
Power is something I thought long and hard about. I'd like for each module, regardless of size, to have access to regulated power, unregulated power, and ground. This will allow for the ultimate flexibility. That adds another three pins to the connector for each quadrant. So, that adds up to 9 pins for each quadrant.
The connectors I created, and then ultimately found a supplier for, create a stackthrough bus between the PCBs in the stack. All pins are passed through the connector to the board above it, in addition to being connected to a trace on the PCB if needed. This allows modules to share pins, if necessary. I haven't actually needed to share pins yet (except for the I2C bus), so I'm not even sure it's possible/recommended, but I can see where it might be necessary in some cases. There's no magic going on here, so don't start thinking you can just plug a module anywhere and it will work. This is simply a method for organizing and connectorizing.
Here's the AVR baseboard with the connectors attached. Note that since the baseboard is designed to be on the bottom of the stack, I don't use the stacking connectors on this board.
ATmega Baseboard w/ four 1x9 female header receptacles
I was able to find some female header receptacles with longer solder tails. The solder tails are actually shaped like regular header pins, so they're specifically made for this purpose. I sourced them from Samtec and just got my samples in a couple days ago, so you won't see them on my pictures. I think they'll work great. The part number is ESQ-109-14-G-S and they're $1.40 each in quantities less than 555. Over that, I think they drop to about $1.19. You can order the tin version rather than the gold versions using part number ESQ-109-14-T-S and they're $1.02/$0.87.
One Quadrant Module with Stackthrough Connector
Two Quadrant Module with Stackthrough Connector
Module Stacking Example
Note: I realize that there may be some over-current concerns on the connectors, specifically with using the unregulated power for driving motors. I will try to address these in version 2 of the PCB designs by creating some sort of external power bus for the unregulated power. Perhaps another module! :D
|Modular Stacking Example.png||52 KB|
|Modular One Quadrant.png||47.67 KB|
|Modular Two Quadrant.png||38.81 KB|
|Modular Baseboard.png||44.62 KB|