キーマトリックス方式は偉大だった

明けましておめでとうございます。本年も、しなぷすのハード製作記をよろしくお願いします。

昨年末に、I2C接続の4×4キーパッドを試作した話を書きました。その時に、「PIC16F1823PIC16F1503に乗せ換えて、コストダウンをしたい」と書きましたが、本日、PIC16F1503を使ったキーパッドをユニバーサル基板で作ったら、無事動作しました。案の定、プログラムの変更はほとんどなしで、基板を動作させることができました。

PIC16F1503を搭載したI2C接続のキーパッド

このキーパッドは、マイコンのピンを節約するために、キーマトリックス方式でキーを読んでいます。キーマトリックス方式とは、下の図に示す様に、水平に走る平行線と垂直に走る平行線の交点にスイッチを配置し、それらのスイッチを読み取る方式です。

参考:キーマトリックス方式については、しなぷすのハード製作記ResKeypadライブラリのページに、詳しい解説が載っています。

キーマトリックス方式の原理

広告

この図に示す様に、8本のI/Oピンで、16個のキーを読み取る事ができますので、各スイッチにI/Oピンを割り当てる単純な方式と比べると、8ピンの節約ができる事になります。

ただ、キーマトリックス方式の場合、3個以上のキーを同時に押した場合でも、押されたキーを正しく判定するためには、スイッチと直列に、ダイオードを接続する必要があります。(逆に言えば、同時に押すキーが2個以内なら、ダイオードは不要)

キーマトリックス方式を使わないで、16個のI/Oピンを使ってキーを読み取ると、I/Oピンが増えて高いマイコンを使わなければならないものの、ダイオードを省略できるので、総合的にコスト増になるのか、コスト減になるのかは、詳しく検討しなくては分からない事になります。そこで、キーマトリックス方式を使わない場合のコスト変動を、簡単に見積もってみました。

現状では14ピンのPICマイコンでキーパッドの制御をしていますが、キーマトリックス方式をやめると、I/Oピンが8ピン増えて22ピン以上のマイコンが必要になる事になります。22ピンのマイコンはないので、実際には28ピンのマイコンが必要になってきます。

I2Cインターフェース内蔵の28ピンのPICマイコンで安い物を探すと、秋月電子ではPIC16F883が該当します。PIC16F1503の秋月での価格が80円、PIC16F883の価格が150円ですから、70円の差がある事になります。ダイオードは1~2円で手に入りますから、16本ダイオードが増えても、70円の価格差は吸収できません。

また、ある程度の量産を考えて、Digikeyで表面実装のマイコンを調達する場合を想定して考えると、14ピンSOICのPIC16F1503-I/SLの場合、100個購入時の単価が80.35円となります。一方で、28ピンSOICのPIC16F883-I/SOの場合、100個購入時の単価が212.54円となります。その差は132.19円と広がってしまい、ダイオードの削減による半田付けコストの低下を考慮しても、この価格差は埋め合わせできません。

参考:余談になりますが、これらのマイコンは、値段が高いものの、Amazonでも購入できるようです。しかも、部品屋の販売の取次ではなく、Amazon自体が販売している様なのでびっくりです。注文したら、どういう梱包状態で納品されるのか、ちょっと興味があります。(下に表示している価格は、5個の値段です)

今回、生真面目にキーマトリックスにダイオードを付けても、キーマトリクスを使わない方式より確実にコストダウンになる事が確認できて、キーマトリックス方式の偉大さを再確認しました。それと同時に、基板の再設計の必要性のなさが証明できて、ほっとしました。

関連ページ
広告

 

“キーマトリックス方式は偉大だった” への 2 件のフィードバック

  1. しなぷす様
    はじめまして、伊藤と申します、電子工作初心者39才サラリーマンでございます。
    いつも記事をありがたく拝読させていただいております。
    同時押しを想定したキーマトリクスを構築したいと思いまして、自分なりに配線図を書いてみたのですが、これが正解なのかどうか分からずでして、ご迷惑を顧みずご相談のコメントを書くことにしました。
    https://drive.google.com/file/d/174ON8uQcBXehvdfEBTdwbTGnmuKRK5nV/view?usp=sharing
    このように組んでみようと考えているのですが、抵抗の位置やダイオードの位置にイマイチ自信がなく、もしもこのコメントを発見されましたら何かヒントをいただければと厚かましいとは存じつつも書いてみた次第です。
    1~4ピンをHIGHにして、5~8ピンでREADする想定です。
    もしもご迷惑でなければ、ご教授いただけますととても嬉しいです。
    突然ぶしつけなご相談になり、誠に失礼いたしました。

    1. はじめまして。
      1~4ピンをLOWではなくて、HIGHにするなら、ダイオードの向きが逆だと思います。
      このままではスイッチをONにしなくてもダイオードが導通し、1~4ピンのどれかがHIGHになっていれば、スイッチを押そうと押すまいと、5~8ピンがすべてHIGHになってしまいます。キーを読み取れません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

認証コード(計算結果を半角数字で入力してください) *