目次

ハードウエアテスト(その15)

 タイマー/カウンタで有名なICである555の動作を
 テストします。

 555は、単安定、無安定の2つの発振が可能。
 どちらの発振もIN、OUT命令を利用し調べます。

 555の概観は、以下。



 8ピンのICで、ピンアサインは、以下。
 (nがはじめる信号は負論理を意味します)

 内部には、ウィンドウコンパレータ、RSラッチ、ディスチャージ
 トランジスタが含まれています。




 RSラッチは、nRESETを使いリセット状態にできます。
 nRESET='0'を与えると、Qは'0'となり、nQは'1'を出力。





 RSラッチに接続されたディスチャージトランジスタは
 nRESET='0'で導通となり、ドレインからソースに向け
 電流を流します。

 OUTPUTは、nQの'1'を反転するので'0'となります。

 nRESETによるRSラッチの動作を使わないなら
 Vddに接続しておきます。




 nRESETを使わないとき、RSラッチの動作は、次の
 タイミングチャートに従います。



 Sに'1'のパルスを与えるとQは'1'になり、その状態をキープ
 Rに'1'のパルスを与えるとQは'0'になり、その状態をキープ
 というのが、RSラッチの動作。

 S、Rに与えるパルスにより、出力が決定されるため
 パルスを与える前の状態とは、無関係です。

 S、Rにパルスを与える回路は、ウィンドウコンパレータです。




 左向きの三角形で表現しているのがコンパレータで
 2つの組合せでウィンドウコンパレータに。

 コンパレータは、+、−の2端子の電圧を比較して
 出力を決定する回路。+側の電圧が−側の電圧より
 大きいと'1'を出力します。

 下のコンパレータは、電源電圧の1/3が+側の電圧に
 固定されているので、nTRIGGERの電圧が+側より下
 になると、Sに'1'を出力し、Qを'1'に遷移させます。

 上のコンパレータは、−側の電圧が電源電圧の2/3に
 されていますが、CONTROLを利用して変えることも
 可能。

 上のコンパレータは、電源電圧の2/3が−側の電圧に
 固定されているので、THRESHOLDの電圧が−側より上
 になると、Rに'1'を出力し、Qを'0'に遷移させます。

 nTRIGGER、THRESHOLDの電圧とRSラッチの出力の関係は
 以下となります。



 IchigoJamで、RSラッチの動作を確認するには
 次のように555の配線を決めます。



 nTRIGGER、THRESHOLDに与える値を考えてみます。
 (nTRIGGERは負論理であることに注意)
  1. (nTRIGGER,THRESHOLD)=(1,0)
  2. (nTRIGGER,THRESHOLD)=(0,0)
  3. (nTRIGGER,THRESHOLD)=(1,0)
  4. (nTRIGGER,THRESHOLD)=(1,1)
  5. (nTRIGGER,THRESHOLD)=(1,0)
 配列に値を入れてnTRIGGER(OUT_1)、THRESHOLD(OUT_2)の出力を  決めることにすれば、サブルーチンは単純に書けるでしょう。 100 ' 110 FOR I=1 TO 2 120 OUT I,[I] 130 NEXT 140 WAIT 15 150 RETURN  サブルーチンを使う側は、状態変数を利用して配列に  データを設定すれば充分。 10 ' 15 LET S,1 20 IF S=1 LET [1],1,0 25 IF S=2 LET [1],0,0 30 IF S=3 LET [1],1,0 35 IF S=4 LET [1],1,1 40 IF S=5 LET [1],1,0 45 GOSUB 100 50 LET S,S+1 60 IF S=6 LET S,1 70 GOTO 20 80 END  555の動作がわかるように、IN命令でOUTPUTとCONTROLの値が  どうなっているかを表示する処理をつけます。 10 ' 15 LET S,1 20 IF S=1 LET [1],1,0 25 IF S=2 LET [1],0,0 30 IF S=3 LET [1],1,0 35 IF S=4 LET [1],1,1 40 IF S=5 LET [1],1,0 45 GOSUB 100 50 LET S,S+1 60 IF S=6 LET S,1 65 ? [1],[2],IN(1),ANA(2) 70 GOTO 20 80 END  状態値を指定する部分をサブルーチンにして  単純にしてみます。 200 ' 210 IF S=1 LET [1],1,0 220 IF S=2 LET [1],0,0 230 IF S=3 LET [1],1,0 240 IF S=4 LET [1],1,1 250 IF S=5 LET [1],1,0 260 RETURN  まとめます。 10 ' 20 LET S,1 30 GOSUB 200 40 GOSUB 100 50 LET S,S+1 60 IF S=6 LET S,1 70 GOTO 30 80 END 100 ' 110 FOR I=1 TO 2 120 OUT I,[I] 130 NEXT 140 WAIT 15 150 ? [1],[2],IN(1),ANA(2) 160 RETURN 200 ' 210 IF S=1 LET [1],1,0 220 IF S=2 LET [1],0,0 230 IF S=3 LET [1],1,0 240 IF S=4 LET [1],1,1 250 IF S=5 LET [1],1,0 260 RETURN  ラベルを使えば、次のように書けます。 10 ' 20 LET S,1 30 @LOOP 40 GSB @JUDGE 50 GSB @HND 60 LET S,S+1 70 IF S=6 LET S,1 80 GOTO @LOOP 90 END 100 @HND 110 FOR I=1 TO 2 120 OUT I,[I] 130 NEXT 140 WAIT 15 150 ? [1],[2],IN(1),ANA(2) 160 RTN 200 @JUDGE 210 IF S=1 LET [1],1,0 220 IF S=2 LET [1],0,0 230 IF S=3 LET [1],1,0 240 IF S=4 LET [1],1,1 250 IF S=5 LET [1],1,0 260 RTN  結果は、次のようになります。  nTRIGGERをイネーブルにすると、OUTPUTは'1'になり  THRESHOLDをイネーブルにすると、OUTPUTは'0'です。  THRESHOLDをイネーブルにすると、CONTROLの電圧は  ほぼ電源電圧になっています。  これで、RSラッチ動作になっているとわかります。  ウィンドウコンパレータの動作が理解できたなら  単安定発振の動作を見てみます。  単安定発振の接続は、以下。  nTRIGGERに負のパルスを与えるようにすれば、OUTPUTから  指定時間だけ正のパルスが出力されます。  回路図の抵抗値とキャパシタンスで、最大で0.1秒程度の  パルスになります。負のパルスを与えから、1秒程度  OUTPUTの値を表示するプログラムを作成。  状態変数を用意し、その状態変数の値で、何をするのか  を決めておけば、わかりやすいでしょう。  状態変数Sが、1のときに負のパルス出力。  状態変数Sは、0から20までの値をとり、常に  入力値を表示するために利用。  この動かし方をIchigoJamのBASICで書きます。 10 ' 20 FOR S=0 TO 20 30 IF S=1 LET [1],0 ELSE LET [1],1 40 OUT 1,[1]:WAIT 60 50 ? S,[1],IN(1) 60 NEXT 70 IF BTN() GOTO 90 80 GOTO 20 90 ? "exit" 95 END  ラベルを利用して、次のようにも書けます。 10 ' 20 @LOOP 30 FOR S=0 TO 20 40 IF S=1 LET [1],0 ELSE LET [1],1 50 OUT 1,[1]:WAIT 60 60 ? S,[1],IN(1) 70 NEXT 80 IF BTN() GOTO @EXIT 85 GOTO @LOOP 90 @EXIT 92 ? "exit" 94 END  結果は、以下。  無安定発振の接続も確認してみます。  各信号の配線は以下。  単安定動作のnTRIGGERを、555自身の信号で生成  するため、フィードバックをかけてます。  キャパシタの充電と放電を利用し、nTRIGGERの電圧  を生成。  2つの信号の状態を表示すれば、発振を確認できます。 10 ' 20 LET [1],IN(1),ANA(2) 30 ? [1],[2] 40 IF BTN() GOTO 60 50 GOTO 20 60 ? "exit" 70 END  ラベル利用では、以下。 10 ' 20 @LOOP 30 LET [1],IN(1),ANA(2) 40 ? [1],[2] 50 IF BTN() GOTO @EXIT 60 GOTO @LOOP 70 @EXIT 80 ? "exit" 90 END  結果は、以下。
目次

inserted by FC2 system