ロータリ・エンコーダ 今回、私が使用したエンコーダはALPS電気社製のEC16Bというものです。 エンコーダには3つの端子があり、1つが共通端子(COM)で、他の2つが出力用の端子です。 出力用と言っても、電圧が発生するわけではなく、共通端子と接続するか、しないかです。 出力用の2端子はエンコーダの軸を回転させた時に共通端子と接触するタイミングが異なっています。 EC16Bの場合の出力関係は以下の図のようになります。 EC16Bの規格
チャッタリング防止回路 チャッタリング防止にはコンデンサ(C)を使用しています。 チャッタリングとはスイッチが接続するときに微少な時間ON、OFFを繰り返す現象です。 これは機械的なスイッチなどを使う場合に出る現象ですが、電子回路ではこの短時間のON、OFFも検出してしまい、誤動作する場合があります。今回もチャッタリング防止回路を使用しないと1つだけ数字を上げたいだけなのに2、3と複数上がってしまうことがあります。 さらに波形を整えるためにシュミットトリガタイプのインバータ(7414)を使用しています。 シュミットトリガタイプのインバータの内部回路はダーリントン接続と呼ばれる前段のコレクタを次段のベースに直接接続する回路が使われています。これによりインバータの出力反転が高速になっています。 アップ・ダウン判定回路 エンコーダからの2つの出力を比べて、右回転か、左回転かを判断する回路です。 判断を行うのにはDタイプのフリップ・フロップ(7474)を使用しました。 Dタイプのフリップ・フロップはクロック(CK)の立ち上がり(L→H)時点でD入力端子の状態を出力(Q)に出力する動作をします。 右回転での動作を説明します。 A点がLからHに変化するとICBのクロック(CK)がLからHへ変化し、ICBはD入力を取り込む状態になります。しかし、この時点でB点はL状態で、ICBのクリア端子はL状態です。そのため、ICBの出力(Y点)はL状態のままとなります。右回転ではICBのクロック(A点)がLからHになる時には常にクリア端子はLですので、ICBの状態が変化することはありません。 次にB点がLからHに変化します。これによりICAのクロック(CK)がLからHへ変化し、ICAがD入力を取り込む状態となります。この時点でA点はすでにH状態となっており、クリア状態も解除されているので、ICAの出力(X点)はLからHに変化します。 さらに回転が進んで、A点がHからLに変化するとICAのクリア端子がLとなりICAはクリアされ、ICAの出力(X点)がHからLに変化します。 以上のようにエンコーダを右に1クリック分動かすとX点には一回のパルスが出力されることになります。Y点側にはパルスは現れません。 X点にはクリックする都度パルスが発生します。 左回転の場合も同様な動作をしますが、B点の方がA点より先にLからHに変化するので、X点にはパルスは現れず、Y点側にクリック分のパルスが発生します。 以上の動作により、右回転、左回転の判断を行い、クリック分のパルスをそれぞれに対応する出力に発生させることができます。 BCDカウンタ BCDとはBinary Coded Decimalの略で、0から9までカウントアップして次のパルスで0に戻るカウンタです。 カウンタとしては74192を使用しました。このカウンタは加算(UP)用の入力と減算(DOWN)用の入力があります。アップ・ダウン判定回路からの出力を右回転時のパルスをUPに左回転時のパルスをDOWNに入力します。 カウンタは電源投入時にゼロを表示させるためにコンデンサと抵抗により、電源投入直後にクリア端子をH状態としてカウンタの初期化を行っています。 今回は1桁だけのカウンタですが、74192は桁上げ(Carry)の端子、桁下げ(Borrow)の端子もあり、複数桁のカウントが可能です。 LEDドライバ 7セグメントの数字表示用のLEDを駆動するためのドライバです。 入力はBDCで出力として7セグメントの各素子を駆動するように働きます。 BDCと7セグメントの各素子との関係は以下のようになります。
*:7447は否点灯、74247は点灯 74LS247 データシート 7セグメントLED 7セグメント(7つの素子)を使用した数字表示用のLEDを使用します。 大きさはいろいろなものがありますので、好みのものを使用して下さい。ただし、今回の回路で使用する場合にはアノードコモン・タイプを使用して下さい。 7セグメントのLEDにはアノードコモンとカソードコモンの2種類があります。 LEDの電流制御用の抵抗は各セグメント毎の入れる必要があります。共通の部分に入れると、LEDで表示する数字によって点灯するLED素子の数が違うため、LEDの明るさが変化してしまいます。 |