じぶんキーボードの制御基板を検討してみました。
制御基板概要
前回からかなり時間が経ってしまいましたが、じぶんキーボードの制御基板をいろいろ検討してました。
じぶんキーボードに接続するキースイッチはいろいろなパターンが考えられるので、制御基板も複数のタイプを設計してみました。というのは、テンキーのようにキースイッチと制御基板を短い配線で接続するタイプや、足で操作するキースイッチを接続するような、長い配線で接続するタイプなどが考えられるためです。短い配線の場合は、それほどノイズのことを考えなくていいと思いますが、さすがに1〜2mの長い配線をする場合はノイズ対策をしておいた方がいいかな、と考えています。
ということで、いろいろ検討したのですが、施策としては以下の3種類の制御基板を設計してみました。以下の表に出てくる「ノイズ対策」と「チャタリング対策」についてはこの後詳しく説明してみます。
種類 | 概要 | 大きさ |
---|---|---|
Lite版 | ハード的なノイズ対策・スイッチチャタリング対策はしていないバージョン。チャタリング対策はどの程度できるかわからないけどソフトで対応予定。キースイッチと制御基板間の配線が短いキーボードを想定。 | 6cm x 3cmぐらい |
Standard版 | Lite版の構成に追加して、マイコンの入力ポートにノイズ対策用の抵抗をつけたバージョン。チャタリング対策はしていないが、配線が長いキーボードの場合、配線が拾うノイズの影響を抑えるもの。 | 6cm x 4cmぐらい |
Full版 | Standard版の構成に追加して、マイコンの入力ポートに抵抗とコンデンサのチャタリング対策と、シュミットトリガをつけたバージョン。大きいキースイッチなどはチャタリングか多いためなるべくハードで信号整形することを目的としていますが、どの程度チャタリングが軽減できるかはいろいろ実験してみたいと思います。 | 8cm x 4xmぐらい |
ノイズ対策
キーボードとしての動作は前回エントリの回路で確認できましたが、実用で使うとなるといろいろ検討が必要になってきます。一つはノイズ対策、もう一つはチャタリング対策です。スイッチのチャタリング問題は、このサイトの「MacでPICマイコン入門 第27回」で説明していますので、ご存じない方はご参考にされてみてください。
ということで、まずはノイズ対策(ノイズからのマイコン保護)についてちょっと検討してみました。
PICマイコンを始め、他のマイコンやRaspberry PiなどのボードPCには、プグラムで有効/無効設定が可能なプルアップ抵抗が内蔵されています。ただ、この抵抗は50k〜100kΩ程度の大きい抵抗値で、ノイズに弱いため、Weak Pull-up Resistor(弱いプルアップ抵抗)と呼ばれています。そこで、今回製作するキーボードの制御基板は、すべてのポートに10kΩのプルアップ抵抗をつけることにしました。
ということで、例えばPIC18F14K50のポートRC0にスイッチを付ける場合、以下のようにプルアップ抵抗をつけることにします。
チャタリング対策
ただ、この回路では、RC0ポートにスイッチの状態が直接入力されることになります。RC0ポートとスイッチの配線が短い場合はそれほど問題ないのですが、1〜2mの長い配線を使う場合は、その配線がアンテナとなって電気的なノイズを拾ってしまいます。
そこで、RC0ポートへのノイズ流入を抑えるため、ポートに抵抗を入れることにしました。マイコン保護目的ですので、抵抗値は1k〜5kΩぐらいが良いと思いますが、プルアップ抵抗として10kΩを使いますので、とりあえずいろいろな抵抗値を揃えるのも面倒ですので、全て10kΩ抵抗に揃えてみます。
ここまでの回路でノイズ対策、ということにします。試作するプリント基板ですが、このノイズ対策がなしのバージョンをLite版、ノイズ対策したバージョンをStandard版として設計してみます。
チャタリング対策
次にノイズ対策に加え、チャタリング対策をしたバージョンをFull版として設計してみます。
チャタリング対策は抵抗とコンデンサを使った積分回路を入れてみます。時定数は1msぐらい、抵抗は10kΩで統一しようと思いますので、コンデンサは1μFにしてみます。ということで、回路としては以下のようにしてみます。
なお、今回使用するPIC18F14K50は、ポートの仕様を見ると、RCポートをI/Oポート設定にした場合、シュミットトリガ入力になっています。表中、Buffer Typesの欄にその説明があり、RCポートは全てST(Schmitt Trigger)になっています。
(Microchip社発行のPIC18F14K50データシートより引用・加工)
一方、RBポートはRB4〜RB7の4ピンとも全てTTL(単なるロジック判定)になっています。
(Microchip社発行のPIC18F14K50データシートより引用・加工)
今回はチャタリング対策としてシュミットトリガ回路も入れたいので、RBポート用にシュミットトリガICを使用することにしました。
これらを考慮して、Lite版、Standard版、Full版のプリント基板を設計してみます。プリント基板製造の発注をしますので、EAGLEで基板設計します。
Lite版基板の設計
キーボード制御は、マイコンとしてPIC18F14K50を使用して、USBコネクタは秋月電子通商さんで販売しているプリント基板実装用のTypeB miniを使用しました。2016年5月現在、4個入りで200円でした。
この部品、EAGLEのライブラリの中に見つけられなかったので、ライブラリを作成しました。また、USBコネクタからの給電部は過電流防止のためヒューズ、というかポリスイッチをつけました。他は特殊な部品はないと思いますので、あとは回路図を見ていただければわかるかな、と思います。
Standard版基板の設計
Standard版の回路は、Lite版にさらにポートの保護抵抗をつけたものですので、抵抗の数が2倍になっています。なお、RA3ポートはシフトキーの入力に使用しますのでここにも保護抵抗を入れていますが、PICKIT3でプログラムを書き込む場合はこの保護抵抗は必要ありませんので、プログラム書き込み時用にジャンパ回路を入れてあります。プログラム書き込み時にジャンパをつけて、動作確認の時は外して、、、というのも面倒ですので、基本的に開発検討時はジャンパをしたままで、実用にする時に外せばいいかな、と思います。
Full版基板の設計
Full版はさらに抵抗とコンデンサの積分回路でノイズを平滑化、さらにシュミットトリガ回路を追加しました。先ほどご説明しました通り、RCポートはI/Oポート時はシュミットトリガ動作をするようですので、RBポート(RB4〜RB7)の4ポートにシュミットトリガを追加しました。
シュミットトリガICは秋月電子通商さんで売られているものを使用しました。2016年5月現在で1個30円です。このような汎用ロジックICってかなり昔から値段が変わらないですね。物価が上がった分と製造コストが下がった分が同じ、って感じなんでしょうか。
これからガーバーデータを生成してElecrowに発注します。
以上3タイプの回路図とボード図をアップしました。