kuroの覚え書き

96の個人的覚え書き

Arduinoで周波数カウンタ

ここで配布されているライブラリを使用
http://interface.khm.de/index.php/lab/interfaces-advanced/arduino-frequency-counter-library/
周波数をカウントするためのピンはデジタルの5番で固定されているので、LCDのピン配置をちょっと変則的に移動。
LCDがあるならシリアルモニタに出力はなくてもいいだろう。

#include <LiquidCrystal.h>
#include <FreqCounter.h>
LiquidCrystal lcd(12, 11, 10, 6, 4, 3, 2);

void setup() {
  // put your setup code here, to run once:
//  Serial.begin(9600); // connect to the serial port
//  Serial.println("Frequency Counter");
  lcd.begin(2,16); 
  lcd.clear();
  lcd.print("Frequency Counter");
  delay(200);
}
long int frq;

void loop() {
  // put your main code here, to run repeatedly:
  FreqCounter::f_comp = 8;             // Set compensation to 12
  FreqCounter::start(100);            // Start counting with gatetime of 100ms
  while (FreqCounter::f_ready == 0); // wait until counter ready
  frq = FreqCounter::f_freq;            // read result
//  Serial.println(frq); // print result
  lcd.clear();
  lcd.print(frq);
  lcd.print(" Hz");
  delay(80);

}

なお矩形波の発生にはオペアンプのコンパレータ機能を使った回路を組んでみた。
コンデンサに0.1µFの積層コンデンサを使い、半固定抵抗に5kΩを使った。
抵抗値を5kΩに振り切って125 HzなのでFreq=0.625/CRって感じかな?
理論値0.7215とずれているのは半固定抵抗の精度が低い?