assignment

This week, we were to create a software user interface for an input/output device.

I combined the previous work I had done making an interface for a 16-pad multitouch board and designing a 72-pad multitouch board to make a mega interface for my new board!

a few hiccups

I ran into a few problems with my first ATMega board - I first set the fuses incorrectly and had to desolder the microcontroller. Then, when resoldering a new ATMega, a created a solder bridge that I just could not get rid of, and I ended up ripping off a pin. But, the third microcontroller went just fine! The board just looked a little mangled from all of the desoldering...

The board firmware and user interface were pretty similar to what I used for my 16-pad multitouch board. However, it was clear that this new, larger board had a lot of charge leakage from pad to pad: touching one pad would cause a hugely noisy mess on tons of other pads as if they were partially touched. So, I began to play around with my circuit design.

At the bottom of each column (representing a string on the guitar), analog measurements are taken by the ATMega. To keep the charge around long enough to read, I had a small RC circuit as well. I decided to play around with the time constants of these, and at an extreme, even decided to remove the capacitor completely and leave a simple pull-down resistor.

It appeared as if the simple pull-down resistor led to the most stable results over other RC values. I desoldered the rest of the capacitors but still ended up with decently noisy readings.

I wondered if the soldermask on my boardhouse-produced board was leaking charge between pads, so I sanded off the soldermask on a few pads.

This led to much stronger readings, but still a decent bit of noise.

My 16-pad multitouch board was also a bit noisy, but the effects were definitely amplified on this larger board. The touchpads on this board are also notably smaller, so I'm wondering if enlargening them and making a ukulele neck board with only four strings could improve the performace.

I changed my thresholding function to a quadtratic function rather than linear which also helped filter out some noisy pads.

After a few hours of debugging, I couldn't get a reliable outcome.

I'm wondering if with the absence of the RC circuit, the capacitance of the touchpads is becoming more influential and leaking charge backwards to other pads in the same row. I'll plan to run an experiment adding a diode between touchpads.

As I'm limited by a single ADC conversion at once, I have to cycle through reading each of the 72 pads one at a time. I was also wondering if there's a more optimal path to take when cycling through pads, maximizing the time between pads that share an input step (on the same fret) or output (on the same string) to allow the leftover charge to dissipate.

The firmware and software can be found on the "guitar" branch here.