今回はADコンバータ機能を利用する回路を設計します。
追加する機能の説明
基礎編で製作したタイマーは、タイマーの時間を変更したい場合、プログラムを変更してPIC12F1822に書き込む必要があります。時間を変えるたびにプログラム変更→書き込み、という作業はやってられませんので、例えば時間設定スイッチを設けて、3分タイマーと5分タイマーのどちらかを選択できるようにすると便利です。
そこで、現在のタイマー回路に、タイマー時間を増減するスイッチを追加したいと思います。スイッチは、1回押すたびにタイマー時間を1分ずつ増やすスイッチと、1分ずつ減らすスイッチの2個のスイッチを付けることにします。
ところで現在の回路では、空いているピンは1ピンしかありません。5番ピン(RA2)です。
そこで、このピンにスイッチを2つ接続して、ADコンバータ機能を使用してどちらのスイッチが押されたかをプログラムで判定し、タイマー時間の増減をしてみようと思います。
回路の考え方
同じピンにスイッチを2つ接続する、というのは今までの知識では「そんなことできるのかな?」と思ってしまいますが、ADコンバータ機能を利用すると簡単に実現できます。
最初に、実現方法の考え方を説明します。
回路は、スイッチを2個接続して押したスイッチに応じて電圧が異なるような回路を作成します。次にプログラムでは、その電圧値をADコンバータ機能で読み取り、その読み取った電圧値に応じてどちらのスイッチが押されたのか判別する、という仕組みです。
今回の記事では、どのような回路にすればよいか考え、次回の記事でプログラムを作成します。
回路を設計する
これから、押されたスイッチに応じて電圧が異なるようにする回路を設計します。
最初に、基本的な考え方を説明します。詳細に説明するには「オームの法則」と「キルヒホッフの法則」が必要になりますが、ここでは現象のみ説明することにします。(こういうものだ、と覚えてしまってください)
タイマー回路では、いくつかの「抵抗」という部品を使用しています。この抵抗を複数本、直列に接続すると、それぞれの抵抗には抵抗値に比例した電圧が加わります。言葉だけではわかりづらいので、具体例で説明します。
例えば、10kΩの抵抗を2本直列に接続して5Vの電源に接続することにします。
この2本の抵抗値は同じですので、それぞれの抵抗には同じ電圧が加わります。2本の抵抗に5Vの電圧が加わっていますので、それぞれの抵抗には2.5Vずつ加わることになります。
電圧はこのように加わりますが、回路上の位置で見てみると、以下のような電圧になっています。
今回設計する回路では、この性質を利用します。つまり、2つのスイッチを接続して、押されたスイッチに応じて、PICマイコンのピンが異なる電圧になるようにします。
回路を実装する
上の回路を元に、PICマイコンのピンにどのように抵抗を接続すればいいか、、、なかなかわからないですよね。ということで、最初に最終的な回路を示し、そのあとに動作を説明します。
まず、今回作成する回路図は以下のようになります。
この回路で、両方のスイッチがOFFの場合、スイッチ1が押された場合、スイッチ2が押された場合に、RA2ピンはどのような電圧になるか考えて見ましょう。
まず両方のスイッチがOFFの場合です。
この場合は、RA3ピンに接続した回路と同じ考え方で、5Vになりますよね。もし???となったら、RA3ピンのプルアップ抵抗の回路をもう一度復習して見てください。
次にスイッチ1をONにしてみます。
この場合もRA3ピンに接続した回路と同様に、0Vになります。
最後にスイッチ2をONにしてみます。
この場合は、先ほど抵抗を2本接続した回路と同じになりますので、RA2ピンの電圧は2.5Vになります。
ということで、スイッチがOFFの場合、スイッチ1がONの場合、スイッチ2がONの場合、それぞれRA2ピンの電圧は、5V、0V、2.5Vとなり、スイッチの状態を判別できる回路になりました。
ちょっとややこしいところもありますが、回路の形は変わっても電気的接続に注意して回路図を読み解いてみてください。
次回はプログラムを作成します。
更新履歴
日付 | 内容 |
---|---|
2017.5.16 | 新規投稿 |
2018.12.2 | 回路図のコネクタを5ピンに変更 |