タイマオシレータ(発振回路)の使い方 [Arduino]
タイマオシレータICのTS3004を使用して1秒毎にLEDを点灯します。
今回のTS3004は「3bitの分周値設定」と「RSETピンに任意の外部抵抗1本」を設置する事で周波数(3.3μ秒 ~ 233秒)をお手軽に設定可能です。

抵抗器は本来は1本で可能ですが、4本で7MΩの合成抵抗値にしています。
使用部品・材料
総額で約770円です。(Arduino本体の値段を除く)
部品/材料 | 値段 | 備考 |
---|---|---|
サンハヤト SAD-101 ニューブレッドボード | ¥500 | Amazon.com |
シリコン・タイマオシレータ用IC TS3004 DIPモジュール | ¥250 | 秋月電子の通販コード(K-06854) |
5mm赤色LED OSDR5113A | ¥20 | 秋月電子の通販コード(I-11655) |
カーボン抵抗器 | 数円 | 10MΩ(2個)、1MΩ(2個)、100Ω(1個)を使用。 |
カーボン抵抗器は合成抵抗で7MΩになるようにすれば何でもOKです。(LED用の100Ω除く)
配線図

次は公式データシートより引用(AE_TS3004DIP.pdf)



2枚目は「3bitの分周値設定」(FDIV2:0)で3枚目は周波数の計算方法です。
3枚目の計算式でFDIV2:0を101(10進で5)にしてRSETを7MΩにすると周波数は約2.12秒となります。
実際は「デューティー比50%」ですのでHIGH、LOWがあります。よって、LEDが点灯するHIGH時間は「2.12 ÷ 2」で約1.06秒となります。
7MΩの合成抵抗
10MΩを2つ並列にして5MΩを生成して、そこから1MΩを2つ直列で繋ぐ事により7MΩを実現しています。(他の方法でも可)
FOUTの出力インピーダンス
FOUTの出力インピーダンスは160Ωです。念のために100Ωを直列に繋いで260Ωにしています。
スケッチ(プログラム)
1秒毎にLEDを点灯します。シリアルモニターにはFOUTに出力したHIGH時間を表示します。(LED点灯時間)
uint32_t preTime = 0; // 前回の時間 boolean ON_Flg = false; // FOUTの出力フラグ void setup() { Serial.begin(9600); } // FOUTに出力したHIGH時間を表示します。(LED点灯時間) // ※周波数精度は±3% void loop() { int val = analogRead(A0); // 出力がある最初の段階で「実行時間」(前回)を一時的に保存します。 if(val != 0){ if(!ON_Flg){ preTime = millis(); ON_Flg = true; } // 出力がない最初の段階で「現在の実行時間」から「前回の実行時間」を引いて、 // FOUTに出力したHIGH時間をシリアモニターに表示します。 }else{ ON_Flg = false; if(preTime != 0){ Serial.print((millis() - preTime) / 1000.0,4); Serial.println("秒"); preTime = 0; } } }
シリアルモニター

TS3004の周波数誤差は±3%、カーボン抵抗器の誤差は±5%です。
掲示板
ArduinoやRaspberry Piなどの電子工作の掲示板を作成しました。質問やわからない事は電子工作 (Arduino・ラズパイ等)でユーザー同士で情報を共有して下さい。