つれづれなる備忘録

日々の発見をあるがままに綴る

TinkercadによるArduinoシミュレーション32 ~ 10進ジョンソンカウンタ

1. 10進ジョンソンカウンタの利用

 今回はArduinoを用いた10進ジョンソンカウンタの利用方法について紹介する。10進ジョンソンカウンタはクロックパルスが入力されると10本の出力のうちの1つがパルスカウントに応じてHIGHとなるようなロジックICである。今回はこれを用いてシフトレジスタのときと同様にLEDの順次点灯について紹介する。

2. 10進ジョンソンカウンタのピン・接続

 Tinkercad上はコンポーネント-すべてから10進ジョンソンカウンタ74HC4017を選択する。各ピンの割り当ては下図の様になっている。

74HC4017のピン割り当て
74HC4017のピン割り当て

ピン番号、機能を下表にまとめた。

ピン番号 名前 機能
1-7 Q5,1,0,2,6,7,3 カウント出力
8 GND グラウンド
9-11 Q8,4,9 カウント出力
12 CA Carry out 桁上がり出力
13 CE クロックイネーブル
14 CK クロック信号入力
15 CLR カウントクリア
16 VCC 電源

10進ジョンソンカウンタのカウント出力Q0-Q9までをLED陽極、陰極側はまとめて150Ωを介してGNDに接続する。クロック入力CK端子14はArduinoの3ピンに接続する。Carry out CA端子12は積極的に利用しないが、桁上がりの様子を見えるようにするため、LED(黄色)に接続した。カウントクリアCLR端子15とクロックイネーブルCE端子13は特に使用しないのでGNDに接続する。以上のArduinoとの接続した図を下に示す。Arduinoの3ピンからLOW-HIGHのクロック信号を生成しCKに入力することで、10進ジョンソンカウントはクロック信号をカウントするごとに出力HIGHをQ0からQ9まで順次切り替えていく。より詳しい動作は10進カウンタ⁄デコーダIC 74HC4017などを参照。

Arduinoと10進ジョンソンカウンタ接続
Arduinoと10進ジョンソンカウンタ接続

3. スケッチ

 スケッチは以下のように3ピンからLOW-HIGHのクロック信号を生成するだけとなる。Tinkercadのシミュレーションを実行すると1秒間に10個のLEDが順次点滅で送られていくことが確認できる。また10個点灯したところで、桁上がりが発生するので、黄色のLEDが点滅することが確認できる。10進ジョンソンカウンタスケッチのdtを変えればLED点滅の送り速度が変化する。非常に短くする(数ms)と同時に点灯しているように見えてくる。このことはダイナミック点灯制御として7セグメントディスプレイなどに応用されている。(電子工作室など参照)シフトレジスタと比較すると10進ジョンソンカウンタの方が多くのLEDを順次点滅させることができるが、1つづつの点滅のパターン自体は変えることができない。

int dt=100;
void setup()
{
  pinMode(3, OUTPUT);

}

void loop()
{
  digitalWrite(3, HIGH);
  delay(dt); 
  digitalWrite(3, LOW);
  delay(dt);
}

4. Tinkercadコンポーネント追加

2020/6/28時点でLemon BatteryとPotato Batteryが追加されていた。設定で変更可能だが、いずれも電圧は0.5Vで抵抗は6kΩ程度になっている。電圧は低く、抵抗が高いため電流値としては100uA以下しか取れないため、通常の電池に対してかなり非力で活用にはアイデアが必要だ。とりあえず下の図の様に7つ直列にしてLEDを点灯させてみたが、順方向電圧は十分だが電流値が小さいわずかに光るのが確認できる程度だった。

Lemon Battery
Lemon Battery

5. まとめ

 今回は10進ジョンソンカウンタの紹介とArduinoと組み合わせて応用としてLEDの順次点灯を紹介した。