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

Arduino UNOで周波数とデューティサイクルを高精度測定

必要な部品と用品

Arduino UNO ×1
英数字LCD(20×4文字、HD44780互換) ×1

必要な工具

アプリとオンラインサービス

プロジェクトについて

Arduino UNOを使ってパルス信号の周波数、ON時間、OFF時間、デューティサイクルを測定し、LCDにリアルタイム表示するシンプルで実用的な計測器です。通信分野、モーター制御(DCモーター速度/PWM、サーボ角度制御)、デジタル信号解析など幅広い用途で活用できます。

回路構成

動作原理

  1. Arduino起動時、LCDに Freq:, Ton:, Toff:, Duty: のラベルを各行に表示。
  2. pulseIn(pin, HIGH) でパルスのHigh期間(Ton、マイクロ秒)を測定。
  3. pulseIn(pin, LOW) でLow期間(Toff、マイクロ秒)を測定。
  4. 周期 = Ton + Toff、周波数 = 1,000,000 / 周期 (Hz)。
  5. デューティサイクル = (Ton / 周期) × 100 (%)。
  6. 測定値をLCDの対応行に上書き表示。1秒ごとに更新(delay(1000))。

測定範囲と精度

ソースコード(全文)

#include <LiquidCrystal.h>

// LCDピン接続: RS=8, EN=9, D4=10, D5=11, D6=12, D7=13
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);

#define PULSE_IN_PIN 7

int onTime, offTime, duty;
float freq, period;

void setup() {
  pinMode(PULSE_IN_PIN, INPUT);
  lcd.begin(16, 4);  // 16列×4行(20×4の場合は lcd.begin(20, 4))
  lcd.clear();
  lcd.print("Freq:");
  lcd.setCursor(0, 1);
  lcd.print("Ton:");
  lcd.setCursor(0, 2);
  lcd.print("Toff:");
  lcd.setCursor(0, 3);
  lcd.print("Duty:");
}

void loop() {
  // パルス幅測定(ブロッキング関数)
  onTime = pulseIn(PULSE_IN_PIN, HIGH);
  offTime = pulseIn(PULSE_IN_PIN, LOW);

  // 周期・周波数・デューティ計算
  period = onTime + offTime;
  if (period > 0) {
    freq = 1000000.0 / period;           // Hz
    duty = (onTime * 100) / period;      // %
  } else {
    freq = 0;
    duty = 0;
  }

  // LCD表示更新(桁数固定でチラつき防止)
  lcd.setCursor(5, 0);
  lcd.print("       ");  // クリア
  lcd.setCursor(5, 0);
  lcd.print(freq);
  lcd.print(" Hz");

  lcd.setCursor(4, 1);
  lcd.print("     ");
  lcd.setCursor(4, 1);
  lcd.print(onTime);
  lcd.print(" us");

  lcd.setCursor(5, 2);
  lcd.print("     ");
  lcd.setCursor(5, 2);
  lcd.print(offTime);
  lcd.print(" us");

  lcd.setCursor(6, 3);
  lcd.print("   ");
  lcd.setCursor(6, 3);
  lcd.print(duty);
  lcd.print("%");

  delay(1000);  // 1秒ごとに更新
}

回路図

シンプルな2部品構成。パルス信号源(ファンクションジェネレーター、555タイマー回路、マイコンPWM出力等)をD7に接続。LCDは標準的な4ビットモード配線。可変抵抗でコントラスト調整可能。

応用・拡張アイデア

製造プロセス

  1. Python連携で信頼性向上: Arduino RFID勤怠管理システム
  2. Arduinoと1Sheeldで作る万能Androidリモコン──IR制御で家電を一括操作
  3. Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
  4. ESP8266・Arduino・超音波センサーで作るスマートIoTジャー:リアルタイム中身監視
  5. Arduino UNOで周波数とデューティサイクルを高精度測定
  6. FirmataとXbox OneコントローラーでArduinoローバーをシームレス操作
  7. Arduinoで地球の質量を測定:ステップバイステップDIYガイド
  8. Arduino超音波センサーとProcessingで作るリアルタイム距離測定ソナー
  9. Bolt IoTとArduino UNOでLED輝度をシームレス制御
  10. ArduinoとProcessingで作るリアルタイムデジタルコンパス
  11. AC電力システムにおける周波数と位相の測定