Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Частотомер до 6.5 МГц на Arduino Nano: DIY измеритель частоты

Компоненты и материалы

Arduino Nano R3 1
LCD-дисплей 16x2 (синий на белом) 1
Биполярный транзистор NPN (общего назначения) 1
Тумблер (slide switch) 1
Тактильная кнопка (верхнее нажатие) 1
Резисторы, конденсаторы, диоды (набор) 1

Необходимые инструменты

Паяльник

Приложения и сервисы

Arduino IDE

О проекте

Представленное устройство — частотомер на микроконтроллере Arduino Nano. Измеряет частоту прямоугольных, синусоидальных и треугольных сигналов.

Диапазон: от нескольких герц до 6.5 МГц.

Интервалы измерения: 0.1 с, 1 с, 10 с (переключатель).

Для измерения только прямоугольных сигналов усилитель формы не нужен — сигнал подаётся прямо на цифровой пин 5 Arduino.

Код прост благодаря библиотеке FreqCount (ссылка на скачивание ниже).

Состав устройства:

Частотомер до 6.5 МГц на Arduino Nano: DIY измеритель частоты

Как видно на видео, прибор точен на всём диапазоне. Доступна калибровка:

  1. В папке библиотек Arduino найдите FreqCount.
  2. В файле FreqCount.cpp найдите строки:
    #if defined (TIMER_USE_TIMER2) && F_CPU == 12000000L
    float correct = count_output * 0.996155;
  3. Замените на:
    #if defined (TIMER_USE_TIMER2) && F_CPU == 16000000L
    float correct = count_output * 1.000000;
    где 1.000000 — ваш коэффициент коррекции.
  4. Калибровка: подайте 1 МГц на вход частотомера.
  5. После изменения загрузите скетч заново.

Готовый прибор размещён в пластиковом корпусе — полезный инструмент для радиолюбителя.

Код

Основной скетч (C/C++)

#include  // https://github.com/PaulStoffregen/FreqCount/archive/master.zip
#include 

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);
}

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

void loop() {
  if (digitalRead(7) == HIGH) {
    n++;
    x = 0;
    delay(100);
  }

  lcd.setCursor(0, 1);
  if (n == 1) { x++; if (x == 1) { FreqCount.begin(100); } r = -1; lcd.print("T = 0.1 s "); }
  if (n == 2) { x++; if (x == 1) { FreqCount.begin(10000); } r = 1; lcd.print("T = 10 s "); }
  if (n == 3) { x++; 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 (f >= 1000000 && n == 3) { f0 = f / 1000000.0; lcd.print(f0, 6 + r); lcd.print(" MHz"); }
  if (f < 1000000 && n == 3) { f0 = f / 1000.0; lcd.print(f0, 3 + r); lcd.print(" kHz"); }
  if (f >= 100000 && n == 1) { f0 = f / 100000.0; lcd.print(f0, 6 + r); lcd.print(" MHz"); }
  if (f < 100000 && n == 1) { f0 = f / 100.0; lcd.print(f0, 3 + r); lcd.print(" kHz"); }
  if (f >= 10000000 && n == 2) { f0 = f / 10000000.0; lcd.print(f0, 6 + r); lcd.print(" MHz"); }
  if (f < 10000000 && n == 2) { f0 = f / 10000.0; lcd.print(f0, 3 + r); lcd.print(" kHz"); }

  if (FreqCount.available()) {
    f = FreqCount.read();
    lcd.setCursor(10, 1);
    lcd.print("***");
  }
  delay(200);
  lcd.clear();
}

Библиотека FreqCount-master

Только скачивание (нет предпросмотра).

Схемы

Частотомер до 6.5 МГц на Arduino Nano: DIY измеритель частоты

Производственный процесс

  1. Проектирование 4-битного кодового замка на элементах XOR и NOR
  2. Мультиметры: от аналоговых к цифровым — полное руководство
  3. Измерение частоты и фазы в системах питания переменного тока
  4. Ретро-часы на индикаторах Numitron с Arduino: просто, надёжно, экономно
  5. Создание осциллографа на Arduino Nano с дисплеем Nokia 5110 (20 кГц): простое DIY-руководство
  6. Создание рулетки на 37 светодиодов с Arduino Nano
  7. DIY детектор землетрясений на ADXL335 с усилением ОУ OP07
  8. DIY-контроллер паяльника 862D+ — точность и надёжность
  9. Tetris на Arduino Nano: самостоятельная сборка 16×8 LED-матрицы на 74HC595
  10. Never Ride Alone: умная система безопасности для велосипедистов