1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

エレキ素人が何か考える(その13):トライステートバッファ

Posted at

トライステートバッファ

何かしらのタイミングで理由もなく、秋月電子で購入した部品のひとつに、トライステートバッファがあった。電子回路におけるトライ(3)ステートバッファとは、"0"、"1"以外の状態として"Z"(ハイインピーダンス)を持つもの。この説明が端的である。

なぜ購入したのかわからず(名前に惹かれたか?)、しばらく放置していた。が、最近、これを用いて何ができるのか、素人なりに調べると、1つの信号線に複数の論理回路が物理(電気)的に接続されている状態で、どれか1つの回路を接続することに使われることを知った(他はハイインピーダンスにして接続しない)。コンピュター内の利用例として、次のサイトの「スリー・ステート・バス・バッファ」のところの説明がナイスと感じている。

何をするか

信号線の選択をする例として、デジタル回路のWikiの「スリーステートバッファ」のデータセレクターの記載がわかりやすく、かつ、簡単であったので、これを少々modifyすることにした。

回路イメージ

後述する、実際にトライした回路とは多少異なるが、イメージ的には下記のようなもの(回路シミュレーター「falstad」利用)。

中央2つがトライステートバッファ、片方に"1"を、もう片方には"0"を入力し、片方は導通がある状態を、もう片方にはそれがない状態を作り出す。LEDの点灯により、その状態を視覚化する。回路シミュレーターでは、矩形波及びNOT回路により、"1"および"0"を交互に作り出している(後述する実回路では、矩形波の代わりにPCからの入力を用いた)。

用いたトライステートバッファ

秋月電子で購入した「4回路3ステートバッファ SN74HC125N」。ただし、本記事執筆時点では販売されていないようだ。データシートは、ここに見つかる。

ピンアサイン

トライステートバッファ

OEにより制御(ハイインピーダンスをつくるかどうか)する。

NOT

ソースコード

#define CONTROL 7
bool tgl;

void setup() {
  tgl = false;
  Serial.begin(9600);
  pinMode(CONTROL, OUTPUT);
  digitalWrite(CONTROL, ((tgl == true)? HIGH: LOW));
}

void loop() {
  if (Serial.available() > 0) {
    (void)Serial.readStringUntil('\n');
    tgl = !tgl; Serial.println(tgl);
    digitalWrite(CONTROL, ((tgl == true)? HIGH: LOW));
  }
}

PCからのシリアル入力があると、変数tglを反転させ、その状態をGPIOピンに反映させる、単純なもの。

実験

中央にあるICがトライステートバッファ、その右にあるICがNOTである。ここでは、GPIOからのHigh出力があるときに右下のLEDを点灯させることとした。下記写真は、GPIO出力Lowのときのもの。左上のLEDが点灯する。
IMG_20220710_104434.jpg
下記写真は、GPIO出力Highのときのもの。左下のLEDが点灯する。
IMG_20220710_104457.jpg
単純ではあるがわかりやすい。

EOF

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?