reasoning

After tons of problems with noise on my 72-pad multitouch guitar neck, I figured it was time to change.

I learned that very long traces can have significant capacitance and inductance, keeping charge around and making it look like pads are touched that actually are not. To solve this problem, I needed to measure the touchpads really close to them, requiring many smaller microcontrollers measuring right behind the touchpads. I decided to use ATtiny44s for this, but each microcontroller only had six free pins, allowing for a maximum of 3x3=9 pads per microcontroller.

To simplify things, I decided to create an electronic ukulele. Each fret only needs four touchpads for the four strings on a ukulele, allowing me to power two frets (eight total pads) with one ATtiny. To also reduce the number of microcontrollers that need to talk to each other, I decided to only make six frets, or three microcontrollers of multitouch sensing. I only know how to play songs on the ukulele that stay beneath six frets, so I figured this would do!

design

The actual electronics for sensing touch on this board are identical to my last few prototypes. The hard part about this board was the networking. As mentioned, I have 3 ATtiny44s powering 8 touchpads each. Additionally, I have one ATmega powering the four strumming touch sensors which blend in and look similar to the other pads on the board.

The schematic for one of the three touch-sensing ATTiny44s.

In addition to powering the touchpads for the four strumming strings, the ATMega also serves as the master board in a serial bus communication protocol using the MISO and MOSI pins on the programming header. The master board sends over MOSI the address of a board in serial, giving that board permission to communicate back on MISO. When the master hears the response from the slave board, it asks cycles through the other slave boards, giving them permission to talk on MISO.

The schematic for the ATMega master board.

I added a handful of extra programming headers for unused pins to the ATMega, in case I decide to have it communicate with another board and have the sound synthesis happen on another board.

The board shares VCC and GND between all microcontrollers with a handful of decoupling capacitors near each microcontroller. MOSI and MISO will be connected between all boards using the programming header. With the freedom of a two sided board, I let the Eagle autorouter take care of routing the board.

The design can be found here.