自作キーボード / 回路

コントローラーと各キースイッチを繋ぐ必要がある。

自作キーボードの配線に関してメモ

キーボードのコントローラにとってスイッチが入るということはどういうことか?

キーボードのコントローラーには信号出力と信号入力部分がある。 そしてもう一つが、その信号の基準値となるグランドになる。

配線は出力側が2つに分岐して片方が入力へ、もう片方がグランドへ向かっている。 このグランド側にスイッチが入ることになる。

スイッチが切れている状態は、出力と入力が1対1でつながるので、入力側の電圧は上がる。

スイッチが入る状態になると、グランド側へ信号が流れるので、入力側の電圧が下がる。

この電圧の状態をスイッチのオンオフとして検知するということ。

回路としては、出力が二股に分かれていて片方がグランド、片方が入力へ向かっているというもの。

単純なキーボード

出力が10ピン、入力が10ピンのコントローラーがあれば、各出力をグランドに落としてその分岐を入力に入れれば、10個のキーを制御できるようになる。

しかしこれでは一般的なキーボードを作る場合には入出力がそれぞれ100個以上必要になり大変なことになる。

キーマトリクス

ここで、縦の回路と横の回路を繋ぐこと、すなわち出力と入力の対をそれぞれズラして制御することで、出力が10ピン、入力が10ピンのコントローラーで100個のキーを制御できるようになる。

回路は単純版の応用編となる。 単純版と違うところは1個の出力に複数の入力が繋がっているということである。

では仮に Out1 があったとすると、そこから In1 - In10 までの回路全部に繋がっているということになる。 つまり出力1の入力10で10個のキーを制御するということである。

っでこれで基本の回路を組むと、どうなるか、Out から1直線にグランドまで伸びる回路の途中から枝のように In1 - In10 までの入力への分岐が出る。 ここで、基本と同じようにグランド側にスイッチをつけると、別にスイッチと関係なく、In1 - In10 までの電圧は全部一緒で、 スイッチを入れても全部の入力が等しく電圧が落ちるのでどれがどれだかわからない状態になる。

つまりこれではだめなのである。

では Out1 から 10本配線を出して、その片側に Inを10個ぶらさげる、その10個をさらにそれぞれ2分岐して片方をグランドに落とす。 そしてそのそれぞれnグランド側にスイッチを入れれば、単純版を10個並べただけになるので、検知できる。ようになる。

実際には Out1 から信号が10回出て、各 In でどのタイミングでどの変化がおきているのかを瞬間的に判断している。

では、ここで Out2 を増やすとどうなるか。ここもほとんど関係なくて単に並列に回路が増えるだけである。

キーマトリクス同時押し対応

縦横のキーマトリクスを作り、3個のキーを同時押しした場合に問題が起こる。

並行に走る回路を跨ぐようにキーを複数押すと、縦横が一致するキーも押されたかのような4つ押しとして検出される。 これは回路が迂回するように接続されるからである。

この問題に対して、スイッチ部分にダイオードを入れることで回避が可能になる。幻の4つ目のキーは対角にあるスイッチに逆方向に電流が流れることで発生するので、 それをダイオードで切ってしまえば問題は解消する。

ダイオード

キースイッチを繋ぐ配線に挟み込んで同時押しによる間違った信号を送らないようにする。

少ない回路に多くの信号を送り込めるようにキースイッチは信号に対して1対1になっておいらず、縦横のマトリクスとして表現される。 つまり input が 10 と 10 ならば 10 x 10 で 100個のキーが割り当てられる。

単キー押しなら問題ないが、キーを複数押した場合に意図した回路を迂回して別の回路がスイッチされる場合があるのでそれを回避するために回路にダイオードを仕込む。

部品的には電流を1方向だけにしか流さないという働きを持つパーツである。1n4148 という規格のダイオードがよく使われる。

keyboard/diy_keyboard/circuit/start.txt · 最終更新: 2021-06-28 19:36 by ore