PSoC 4200 Prototyping Kit (28)

いまさら新鮮味はないのですが、PSoC4 の CapSense 機能を利用してタッチ鍵盤を実現した無限音階オルガンを作っています。
無限音階オルガンでは、鍵盤は 1 オクターブ分の 12 鍵だけあればよく、PSoC4 の独立したピン 12 本に電極をつなぐだけで実現できます。
同時には高々 1 個しかキーを押さないということであれば、3 × 4 のマトリクス構成でピン 7 本ですますことができますが、その場合には「単音」しか出せなくなります。
無限音階オルガンのプログラムは、これまでに NXP LPC810 用、Atmel ATmega168/328 用、Atmel ATtiny2313 用、Nuvoton NUC120LE3AN 用に作ってきましたが、ソースを公開しているのは LPC810 用のみです。
LPC810 はフラッシュ 4 KB なので機能限定版ですが、NUC120LE3AN はフラッシュ 128 KB でフル機能版となっています。
PSoC4 はフラッシュ 32 KB なので、その中間のレベルの機能となると思います。
ただし、現在の所は基本的な機能だけを実現しています。
現在の基板の写真を下に示します。

「フル鍵盤」の 1 オクターブあたりの配置ピッチは 165 mm 程度になり、手持ちの基板には収まらないので、「ミニ鍵盤」サイズの 140 mm 程度のピッチにしてあります。
鍵盤部の寸法を下に示します。

簡単のため、鍵盤奥の白鍵と黒鍵が交互に並ぶ部分の配置ピッチを等しく 12 mm としています。
その結果として、オクターブの配置ピッチは 12 × 12 = 144 mm になります。
当初はタッチ電極間のギャップを 2 mm 程度にしていたのですが、電極が近すぎて隣の音が同時に鳴ってしまうので、ギャップ幅を 6 mm、鍵盤奥の電極幅も 6 mm としています。
電極部分は 100 円ショップの銅箔テープを利用して作成しています。
CapSense 方式では、電極に触れることによる容量変化を検出しているので、必ずしも電極に直接触れる必要はなく、電極の上に貼られた薄い誘電体の膜の上から「タッチ」しても検出することができます。
上の写真では良く見えませんが、片面基板上に銅箔テープを貼り、その上にさらに梱包用透明テープを貼り付けて電極を保護しています。
「シールド電極」を設けない方式だと、電極から指を離してもしばらく「タッチ」状態になる場合があったので、基板裏面に (基板各部とは直接に接触しないように絶縁した上でシールド電極ピンのみに接続した) 金属板を置いてシールド電極として使っています。
シールド板は基板とは固定しておらず、上の写真ではシールド板は設置していません。
DAC として 9 ビット Center align PWM DAC (46.875 kHz サンプリング周波数) を使っており、LPF は基板上には組んでおらず、3 次パッシブ LC フィルタを外付けしています。
そのため、基板上にある配線は、各タッチ電極と PSoC4 Prototyping Kit の各ピンとの間の 12 本だけです。
最後に、「A」のキーにタッチした場合の出力を WaveSpectra で観察した結果を示します。

8 個のサイン波を重ねたものとなっており、その周波数は、
55 Hz, 110 Hz, 220 Hz, 440 Hz, 880 Hz, 1760 Hz, 3520 Hz, 7040 Hz
となっています。