工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino Nanoで作る高周波対応周波数カウンター – 6.5MHzまで測定可能

必要な部品と材料

部品数量備考
Arduino Nano R31
16x2 LCDディスプレイ(白文字/青背景)1パラレル接続
汎用NPNトランジスタ1入力信号整形用
スライドスイッチ1測定時間切替(0.1/1/10秒)
タクトスイッチ1モード切替用
抵抗・コンデンサ・ダイオード各種1式整形アンプ回路用

必要な工具・環境

プロジェクト概要

Arduino NanoとFreqCountライブラリを使った周波数カウンターです。矩形波・正弦波・三角波に対応し、測定範囲は数Hz〜6.5MHz。測定ゲートタイムを0.1秒、1秒、10秒の3段階で切替可能です。矩形波のみなら整形アンプなしでデジタルピン5に直接入力できます。

Arduino Nanoで作る高周波対応周波数カウンター – 6.5MHzまで測定可能

構成

キャリブレーション方法

  1. Arduinoライブラリフォルダ内のFreqCount.cppを開く
  2. 以下の行を探す:
    #if defined (TIMER_USE_TIMER2) && F_CPU == 12000000L
    float correct = count_output * 0.996155;
    
  3. 以下のように書き換え(16MHz動作の場合):
    #if defined (TIMER_USE_TIMER2) && F_CPU == 16000000L
    float correct = count_output * 1.000000;  // ここを補正係数に
    
  4. 1MHzの既知信号を入力し、表示値が1.000000MHzになるよう係数を調整
  5. 書き換え後、スケッチを再アップロード

スケッチ

#include <FreqCount.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 6, 4, 3, 2); // RS, E, D4, D5, D6, D7

void setup() {
  lcd.begin(16, 2);
  pinMode(7, INPUT);  // モード切替スイッチ
  FreqCount.begin(1000); // 初期ゲートタイム 1秒
}

unsigned long f;
float f0;
int x = 0, n = 3, r;

void loop() {
  // モード切替スイッチ(タクトスイッチ)
  if(digitalRead(7) == HIGH) {
    n++; x = 0; delay(100);
  }

  // ゲートタイム設定
  lcd.setCursor(0,1);
  if(n == 1) { if(x==1){FreqCount.begin(100);} r=-1; lcd.print("T = 0.1 s "); }
  if(n == 2) { if(x==1){FreqCount.begin(10000);} r=1; lcd.print("T = 10 s "); }
  if(n == 3) { if(x==1){FreqCount.begin(1000);} r=0; lcd.print("T = 1 s "); }
  if(n > 3) n = 1;

  // 周波数表示
  lcd.setCursor(0,0);
  lcd.print("F = ");
  if(FreqCount.available()) {
    f = FreqCount.read();
    lcd.setCursor(10,1); lcd.print("***");
  }

  // 単位と桁数の自動切替
  if(n == 3) { // 1秒ゲート
    if(f >= 1000000) { f0 = f/1000000.0; lcd.print(f0, 6+r); lcd.print(" MHz"); }
    else { f0 = f/1000.0; lcd.print(f0, 3+r); lcd.print(" kHz"); }
  }
  else if(n == 1) { // 0.1秒ゲート
    if(f >= 100000) { f0 = f/100000.0; lcd.print(f0, 6+r); lcd.print(" MHz"); }
    else { f0 = f/100.0; lcd.print(f0, 3+r); lcd.print(" kHz"); }
  }
  else if(n == 2) { // 10秒ゲート
    if(f >= 10000000) { f0 = f/10000000.0; lcd.print(f0, 6+r); lcd.print(" MHz"); }
    else { f0 = f/10000.0; lcd.print(f0, 3+r); lcd.print(" kHz"); }
  }

  delay(200);
  lcd.clear();
}

回路図

Arduino Nanoで作る高周波対応周波数カウンター – 6.5MHzまで測定可能

製造プロセス

  1. Arduinoで作るレトロNumitron管時計:シンプル、信頼性高く、省エネ
  2. Arduino Nanoで20kHzオシロスコープを自作:Nokia 5110 LCD搭載・簡易DIYガイド
  3. Arduino Nanoで37LEDルーレットゲームを自作:ヨーロピアンスタイル完全再現
  4. DIY ADXL335地震検知器 - 低消費電力3軸加速度センサープロジェクト
  5. 862D+はんだごて用DIY温度コントローラー:精度と信頼性を両立
  6. 自作16×8 LEDマトリックスでテトリスゲーム:Arduino Nano実装
  7. MobBob:Arduino製ロボットをAndroidスマホでシームレスに制御
  8. Never Ride Alone:サイクリストのためのスマート安全システム
  9. XORゲートとNORゲートによる4ビットコンビネーションロックの設計
  10. マルチメーター:アナログからデジタルまで包括ガイド
  11. AC電力システムにおける周波数と位相の測定