ロジック回路(IC)の遅延を考える
NOT ICの時間的な遅延の考察である。言葉より、回路などを見れば、明確。
回路およびシミュレーション
NOTとANDとを組み合わせた下記回路図がターゲット。
NOTにより、ANDの2本のInputに同時にHIGH('1')にならないと思われるが、実際には、NOT ICの遅延により、わずかな時間、同時にHIGHとなる時間が存在する。このシミュレーション(falstad利用)で、NOTのスルーレート(反応時間?)を遅くすることにより、同時にHIGHとなる時間を長めとし、LED点灯により、その状況を明確化。
実回路ではどうなるか?
用いたロジックIC
秋月電子で入手したNOT IC。ピンアサインは下記のとおり。
同じくAND IC。ピンアサインは下記のとおり。
ソースコード
#define PIN_OUT 6
#define PIN_IN 2
void detection () {
Serial.println("Change");
}
void setup() {
Serial.begin(9600);
pinMode(PIN_OUT, OUTPUT);
pinMode(PIN_IN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(PIN_IN), detection, CHANGE);
}
void loop() {
digitalWrite(PIN_OUT, HIGH);
delay(1000);
digitalWrite(PIN_OUT, LOW);
delay(1000);
}
ほぼ自明。ANDの出力をLEDに接続するだけではなく、Arduinoのピン2に接続し、割り込みルーチンにより、ANDの出力HIGH状態をソフトウェア的に検出する。ここでは、1秒ごとに、HIGHおよびLOWの繰り返しを発生させ、NOT ICやAND ICへのインプット。
検証
結論から言うと、NOT ICを1つ用いただけでは、LEDの点灯を確認するどころか、HIGH状態の検出もできず。NOT ICを3つ用いた時も同様。
NOT ICを5つ用いると、ソフトウェア的なHIGH状態を検出することができた(それでも、LEDは点灯せず)。下記回路図参照。
実際の配線状況。
AND出力の電圧は、13-15mV程度。Arduinoからのシリアル出力は下記のとおり。
また、9V電池供給でも、LEDは点灯せずであった。
終わりに
一応、遅延があり、実感はできた、、と言ったところ。