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

ウォッチドッグタイマ(番犬)の使い方 [Arduino]

ハードウェア、ソフトウェア問わずにシステム異常を検知する「番犬」です。

異常を検知する方法は、今回のTA8030SではRC回路による「コンデンサの充電時間」を利用します。

~ 番犬の流れ ~

システムの「何らかの処理」の実行前にコンデンサの充電を開始して、処理が終了したらコンデンサを放電します。

システム正常時は処理の後に必ずコンデンサを放電しますが、異常時は放電ができないのでコンデンサが満タンになります。満タンになるとTA8030SのRST1ピンから「リセット信号」が出力されます。このリセット信号がシステムの異常信号となります。

この番犬の手法は、機械屋さんの「例外処理」となります。

(TA8030Sはコンデンサの充電開始が2Vからで満タンが4Vです。今回はC1とR1を調整して満タンになるまでは約15秒間としています。)

関連記事:コンデンサの充電及び放電時間、充電量の計算
リンク先は0Vからの充電時間の計算です。今回の番犬は2Vから充電開始ですので計算結果が異なりますので「参考程度」にして下さい。

使用部品・材料

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

部品/材料値段備考
サンハヤト SAD-101 ニューブレッドボード¥500Amazon.com
ウォッチドッグタイマ TA8030S¥20秋月電子の通販コード(I-09600)
タクトスイッチ¥10秋月電子の通販コード(P-03647)
電解コンデンサー100μF25V85℃(ルビコンPK)¥10秋月電子の通販コード(P-03122)
5mm赤色LED OSDR5113A¥20秋月電子の通販コード(I-11655)
カーボン抵抗器数円100kΩ(1個)、10kΩ(2個)、220Ω(1個)を使用。

配線図

C1に100μF、R1に100kΩを使用することによりコンデンサが満タン(4V)になるまでの充電時間を約15秒としています。この値はシステムによって適宜、変更して下さい。

次は公式データシートより(TA8030.pdf)

スケッチ(プログラム)

暴走ボタンを約15秒間、押し続けると擬似的に「システム異常」を発生させます。システムが異常になるとLEDが点灯するようにしています。

void setup() {
  Serial.begin(9600);
  pinMode(7,OUTPUT);  
  pinMode(8,OUTPUT);
  pinMode(9,INPUT); 
}

void loop() {
  int val = analogRead(A0);
  
  // システムの暴走を知らせるLEDを点灯
  if(val < 100){    
    digitalWrite(7,HIGH);
    Serial.println("システムが暴走しました。リセットボタンを押してください。");
  }

  // コンデンサの充電開始
  digitalWrite(8,LOW);

    // 本来はココに「何らかの処理」を記述する
    // その処理が完了したらHIGHにしてコンデンサを放電します。

  // 暴走ボタンを押した状態は「何らかの処理中」とする
  if(digitalRead(9) == LOW){
    digitalWrite(8,HIGH);
  }
}

実行例





関連記事



公開日:2017年08月26日
記事NO:02541