暗くなると点滅する回路
CDSを使って、暗くなると点灯する回路をつくりました。
そして、デジタルのゲートICを使って、暗くなると点灯、明るくなると点灯 の切り替え回路を前回考えました。
今度はそれを組み合わせて、暗いときだけ点滅する、また、暗くなると点滅、明るくなると点灯 の切り替え、などこの回路を様々に切り替える回路をデジタルICを使って考えましょう。
デジタルICで機能を作る(論理)
デジタルICで点滅させる回路はできました。
それと光センサ回路をどのようにつなぐか? ということなのですが、
74HC14 74HC00 の2つを使って考えましょう。
デジタルのANDやNOTなどゲート機能を使って、回路で自動でこうしたい、ああしたいと機能を作るのは用語で論理といわれます。
どのように組み合わせれば、目的の回路の動作(論理)ができあがるか?
2種類ののICしか使いませんが、これだけでガンバリましょう
これだけでもかなりいろんなことができます。
ゲートICは安いもので、全部そろえてイッパイ使ってもいいのですが。。。
これらを作るときも、ゲートのNOT AND OR 、、、など全部そろえてから取りかかって、それらを使って論理を考えれば頭をひねらなくてもススッと出来ることも多いです。
世の中、最初から全部そろえてから取りかかる、カタチから入る人は多いですが、でもそうしてるとそのうち、そんな風に全部そろえて準備した条件がそろわないとスタートできない(出力がでない)デジタルな人になってしまいます
別にデジタルが偉いワケではないので、いろいろ工夫する人の知恵で対抗しましょう!
AND回路を使う
出てきた点滅回路とをANDでまとまめます。
実際はNANDを使うのですが、わかりやすいようにANDで考えましょう。
ANDの入力1には 点滅回路からの H,Lが定期間隔で切り替わり入ってきます。
(NOTを2コつないでありますが、1コでも点滅します、もう一つつなぐと1コの場合とH,L逆になるのでNOT1コでLED ON、OFF時間に差があると それが逆になり多少点滅の感じを変えられる)
入力2 にはセンサ回路から暗くなると ハイ が入ってきます。
この2つはAND論理によって出力が出され、両方ハイになったときにLEDは点灯します。
入力の1つにローがあると 出力は必ずローとなり、ハイになることはない。。。
前回はこれがスイッチの役目で、スイッチをつなぎました。
今度は センサ回路がそんなスイッチの役目をすることになります。
NANDはANDと出力が反対なので、NANDではLEDを吸い込みで点灯にすると、このAND回路と同じことになります。また、点滅は74HC14のNOTではなく、NANDで作るNOTでも出来ます。それなら、NAND IC1つで同じようなものが作れることになります。
このようにいろいろ回路を作り替えて暗いとき点滅、明るいときは点灯 、 点灯と点滅の切り替えなどを様々に考えて機能を試して作ってみましょう。
明るさの範囲や比較
すこしだけ応用を考えてみます。
明るさセンサのCDSを2カ所の別の場所において、二カ所の明るさを判断してLEDをつけるような回路もすぐ思いつきます。
二カ所の光センサ回路をAND、NANDなどにいろんな論理でつなぐと、明るさの比較などでLEDの点灯条件を変えられます。
二カ所のこっちだけ明るいときは点灯 、 両方明るいと点滅など。
デジタル論理回路のゲートICをあれこれ組み合わせると、いろんな回路ができますね。
以前の
暗くなるとON、 明るくなるとON の回路をそれぞれ ANDの入力につなげるとどうなるか ?
ANDへの入力をこのようにした場合 どうなるんでしょう?
入力両方がON(つまり ハイ)の場合だけANDはハイの出力を出し、LED点灯することになります。
それぞれの入力が
- 明るい→ON
- 暗い→ON で出力ハイで点灯します。
論理だけで考えると 相反するのですが、R,1,R2の抵抗で調節すれば ”明るい” ”暗い” の間の、ある度合いで点灯する といえます。
(明るいとON)になるのですが、他方の入力2の (暗い→ONということは明るいOFF になる) この”明るい”の度合いを抵抗で ある明るさに調節すれば、、、
- 入力1は 明るくてON(ハイ)になり
- 入力2は 明るいが ある明るさになるとOFF(ロー)します。
それで ある範囲の明るさ でLEDが点灯するという回路になります。
このような回路は 2カ所の明るさを較べる ならいいのですが、
これを一カ所において、ある範囲の明るさを感じ取るだけに2つのセンサを使うのはムダです。
1カ所の明るさを感じ取る・・・そんな場合には、明るさを感じ取る感覚器としてのセンサは1つでいいハズです。
そして、1つの感じ取った明るさのうち、ある範囲だけに反応するような回路にすれば・・
つまり 明るさセンサ(CDS)からの ある範囲を得る という回路を考えるべきでしょう。(CDSは安価なので2つつかっても問題ないので機能が同じなら、どっちが簡単な回路かになります)
結局、作ってしまえばCDS1コでも2コでも同じような動作をするのですが、こんな風に、より改良していくことで回路の改良や学習はドンドン広がるでしょう。
反対に改良を怠り、出来ればイイとして、どんどん作っていくと、、、
ある時、自分の作った回路を ものすごく単純な部品だけで実現したような、工夫ある回路に出会って、ガク然とすることになります
大きく進んだ回路
すでに点滅、点灯などを切り替える回路を作りましたが、今入ってくる情報(信号)をモトに条件で出力を切り替えるという回路です。
回路に自動的に入力から分岐、判断をさせて行動を切り替える
これも単純なようで、複雑な条件をより分けさせて行動させればなかなかスゴイ機能です。
しかし、これらはすべて、どれほど複雑にしても、現在の情報 という、”今”を扱う機能です。
今、センサや入力がそのようになっているか、、を判断するだけです。
もっと大きな回路の進歩は 過去の出来事を覚えてその記憶をもとに、さらに現在の情報と較べて、行動する。。という記憶を持つ回路
この機能を持つことで、現在と過去がつながります。(順序回路といわれます)
NANDでは記憶をもつ回路を作るコトができます。
フリップフロップ
フリップフロップの回路
フリップフロップもデジタル論理回路には必ず出てくる定型のデジタル回路です。
この回路は、回路に記憶をさせるという機能を持つことで
人に近づいた一歩ではないかと思います。
説明には出力と入力が書いてあって、出力がこうなるとか、それだけ見るとあんまり役に立ちそうにもない回路ですが、このフリップフロップは1ビットの記憶回路(RAM)といえます。
記憶が出来る
わずか 1か0(H,L) を記憶できるだけなのですが、これでも回路に記憶させるということを実現した回路の形です。
この回路で過去の入力を記憶させることが出来ます。
いままでのゲートの組み合わせでは、いろんな入力で出力がどうなるか という
真理値表 で表されましたが、このフリップフロップは単純に真理値表だけで表すことはできません。
なぜなら、入ってくる入力 だけでなく 記憶したもの によっても出力が変わるからです。
フリップフロップ真理値表
/S /R Q /Q H H 記憶値 記憶値 L H H L H L L H L L / /
フリップフロップはよ~く考えると複雑な入出力なのですが、記憶するという機能をさせるものなので、普段は入力 H,H で 入力を保持(一度書き込まれると新しい値が書き込まれるまで保持する)
その出力はQ、(/Qはその否定が常に出力されるが使わないでもいい)フリップフロップの入力には /S、/R が両方 ローになるような入力は原則禁止です。
そうならないような入力にする必要もあります。
入力を記憶して光る
光センサで 暗くなるとLED点灯、点滅 などの機能をつくりましたが、続いて、暗くなったということを記憶する回路に改良します。
これまでの回路では ”暗くなるとLED点灯” するが ”明るくなると消灯する” というモノでした。
これをいったん暗くなると それを記憶して、明るくなっても点灯したまま という回路をフリップフロップで作ります。
つまり、一度暗くなったのを記憶しておく機能です。
上のフリップフロップでは、入力/S と 出力Q は反対になるので、わかりやすいようにNOTを入れてこのようにします。
真理値表
/S | /R | Q | /Q |
H | H | 記憶値 | 記憶値 |
L | H | H | L |
H | L | L | H |
L | L | / | / |
記憶を持つ回路
これがその記憶を持つ回路です。
Qを出力にしてLEDを点灯させます。
その論理 最初は少しわかりにくいかも
上の真理値表 とよーく見比べて
考えればわかります。
*この回路図、下側のNOTのプルダウンが書き間違いでヘンです。これでも動作しますが、普通のプルダウンのつもりです。
これはいったん暗くなる(センサからハイが入る)と それを記憶して、明るくなっても点灯したまま の回路。
一度、暗くなると明るくなっても点灯したままで、点灯を保ちます。
そして、スイッチでリセットすることで、その暗くなったという記憶がリセットされます。
これも同様にデジタル回路組み合わせで記憶をもたせ 点灯を → 点滅にも変えられますね。
今回はリセットをスイッチを押すことでしました。
記憶するという機能が加わったことで、そのリセットをセンサからの信号にさせる、、など、回路にリセットさせるとか、さらにいろんな機能を持たすことができるでしょう。
いろいろ変更して試してみましょう。
たった1ビット=1か0 (H , L) をおいとける箱のようなものですが、これで回路はもっといろいろに広がると思います。
フリップフロップ発展型
これを発展させて、NAND 1コ だけで作れる形として
こういうのもあります。
RSフリップフロップを もう一つの入力 C で制御できるというものです。
C=0のときは
付け加えた回路から NANDの1つの入力が C=0 でローなら
FS-FFへの出力は必ずハイとなり 記憶保持になります。
C=1(ハイ) のときは
RS-FFとして働くという回路です
これを使えば、NANDだけでもいろいろ応用ができそうです
ここで出てきたのはリセットできるフリップフロップ(RSFF)ですが、Dフリップフロップやラッチなど、いろんな形のものがあります。
偉大な一歩 記憶
単に1ビットのメモリですが、これを8コ作ると1バイトになってマイコンの記憶を担当するレジスタにもなります。
また、記憶をもつフリップフロップをいくつか組み合わせて、先にハイになった方を優先する、優先回路とか、この形は発展してきます。(だから基礎になるんでしょう)
これをもとに、光センサで人の通りを関知するということもできますね。
CDSに常時あたっている光が人が通って一瞬さえぎられる → 人が通ったと判断する。
この回路にカウンタの機能を付け足して、通った人をカウントすることも可能です。
すると加算カウンタを考えることになります。
デジタル論理回路も、今やソフト的に作ることが多いので、先にそっちからやった人は読んだだけで論理を追って納得して終わりになることが多いのですが、一度いろいろやっておくとマイコンやPLDなどにでもどこかで暗に役立つでしょう。
わかっているつもりでも、一度は試しに実験回路でも作ってやっておくと将来必ずどこかで役立つと思います。
次の二歩目は、多分、高速化や、記憶を置いとける、保存 とかになるのでしょう。。。。
- twtter
- google+
- hatena