目次
前
次
ハードウエアテスト(その15)
タイマー/カウンタで有名なICである555の動作を
テストします。
555は、単安定、無安定の2つの発振が可能。
どちらの発振もIN、OUT命令を利用し調べます。
555の概観は、以下。
8ピンのICで、ピンアサインは、以下。
(nがはじめる信号は負論理を意味します)
- 1 GND
- 2 nTRIGGER
- 3 OUTPUT
- 4 nRESET
- 5 CONTROL
- 6 THRESHOLD
- 7 DISCHARGE
- 8 Vdd
内部には、ウィンドウコンパレータ、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は負論理であることに注意)
- (nTRIGGER,THRESHOLD)=(1,0)
- (nTRIGGER,THRESHOLD)=(0,0)
- (nTRIGGER,THRESHOLD)=(1,0)
- (nTRIGGER,THRESHOLD)=(1,1)
- (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
結果は、以下。
目次
前
次