![]() |
![]() |
|
|
ラダーの解説 |
今回はちょっと親切に流れ追ってみたいと思います。 |
カウント部分の構成について |
今回のカウンターの基礎部分の2進化10進数(BCD)についてもう一度考えてみます。ベースは2進数で、4桁で表されます。 最下位の桁(A)が1、その上の桁(B)が2、その上の桁(C)が4、最上位の桁(D)が8となっていて、例えば1001の場合、 (D):8 + (A):1 = 9 というようになります。わかれば簡単です。コンピュータの一番基本は2進数ですので、これがわかれば コンピュータの基本が分かる・・・という話にはなりませんが、基礎学習では必ず登場します。 では、下の表をご覧ください。 ![]() 何か法則がありそうですね。 @最下位の桁は数が増えていくたびに0と1を繰り返す。 Aその上の桁は、下の桁の1/2周期で0と1を繰り返す。 Bその法則はさらにその上の桁になってもあてはまる。 カウンターを作るにはこの法則を使えば、簡単にできることが分かります。 つまり 入力信号がある/なしを2回に一回(1/2)に分周(ぶんしゅう)する回路を作ります。 身近にあるもので言えば、押すたびにON/OFFが入れ代わるスイッチみたいなものです。 それを4段でひと組にすれば10進数でいう1桁が完成です。 でもそのままでは16進カウンターのままですので、10になった時に 自身でリセットをかけることと、10進数でいう上の桁への桁上がり信号を出せばOKです。 回路概念をブロック図で表せば、下のようになります ![]() |
「ダイナミック方式」のテクニック |
上のブロック図を2セット用意すれば2桁分作ることができます。 それぞれの桁のA〜Dをそのまま「BCD-7セグメントデコーダードライバー」のIC(74HC4511)に入れれば、スタティック方式で出力ができます しかし、今回の計画は「ダイナミック表示方式」ですから、テクニックが必要になります。 つまり、上の桁と下の桁の表示を高速で切り換えなくてはいけません。回路図をもう一度思い出してみましょう(見てみましょう)。 下の桁のBCD出力を74HC4511に出力したときに、一番右側のトランジスタをONにすれば、その桁だけ表示条件がそろって、 数字が表示されるのです。 今度は 上の桁のBCD出力を74HC4511に出力したときに、ひとつ左側のトランジスタをONにすれば、 この時もその桁だけ表示条件がそろって、数字が表示されるのです。 それを交互に行うと、ダイナミック表示で出力できるわけです。 |
切替のポイントはM50 |
シーケンス回路の中のM50がポイントです。このM50は、プログラムを実行していく中で、実行ごとにON/OFFが入れ代わります。 それをもとに、上位と下位の表示を切り換えているのです。分かってしまえば簡単ですよね。 このようなPLCの使い方は、お遊び感覚で作っていますので通常ではありません。知識ぐらいで止めておきましょう。 |
というわけでシーケンス回路の公開です |
ここにシーケンス回路を用意しました。どうぞお持ち帰り下さい(ダウンロード後、解凍して下さい) 60進カウンターとしての要望により、用意しました。上記同様にお持ち帰り下さい。16F84A用(zipファイル) ![]() 60進カウンターとしての要望により、用意しました。上記同様にお持ち帰り下さい。16F877A用(zipファイル) ![]() |
||
せっかく作ったところですし、このままにしておくのも何かもったいないので、ひまを見て応用を公開するかもしれません。 適当なスイッチをつけてありますが、チャタリングもあまり気になりませんので、このままでOKだと思います。 応用とすれば、キッチンタイマーの回路から(1分クロックを)流用して、99分カウンターにしても良いし、 回路を増やして3桁以上に増設しても面白いですね。通過センサーを入力にして、物の数を数えたりと、色々使えます。 ゼロのときに00という表示になりますが0を一桁のみにしたい場合は、 74HC4511は10以上の入力を入れると非表示になるので、それをヒントに工夫してみて下さい。 宿題にしておきます。回路はご自分で考えてください。 参考までに、私の作った物の写真を載せておきます。
|
![]() |
![]() |
![]() |
設計画面へ戻る | 9999カウンターへ |