ホーム > カテゴリ > ロボット・電子工作・マイコン >

タイマオシレータ(発振回路)の使い方 [Arduino]

タイマオシレータICのTS3004を使用して1秒毎にLEDを点灯します。

今回のTS3004は「3bitの分周値設定」と「RSETピンに任意の外部抵抗1本」を設置する事で周波数(3.3μ秒 ~ 233秒)をお手軽に設定可能です。

抵抗器は本来は1本で可能ですが、4本で7MΩの合成抵抗値にしています。

使用部品・材料

総額で約770円です。(Arduino本体の値段を除く)

部品/材料値段備考
サンハヤト SAD-101 ニューブレッドボード¥500Amazon.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秒となります。

POWER(8,5) × 7000000(7M) ÷ 108000000000(1.08E11)

実際は「デューティー比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・ラズパイ等)でユーザー同士で情報を共有して下さい。

関連記事



公開日:2017年07月30日
記事NO:02503