ESP32: Високоточні вимірювання сигналів за допомогою таймерів

ESP32 оснащений потужними апаратними таймерами, які дозволяють не лише керувати подіями, а й виконувати високоточні вимірювання вхідних сигналів. Одним із поширених застосувань є створення простого частотоміра — пристрою, що вимірює частоту вхідного сигналу.

Підрахунок частоти вхідного сигналу

Для вимірювання частоти сигналу можна використати такий принцип:

  • Один таймер запускається на фіксований інтервал часу (наприклад, 1 секунда).
  • На вхідному GPIO (через переривання) підраховується кількість фронтів сигналу.
  • Після завершення інтервалу таймера підрахована кількість імпульсів перетворюється у значення частоти.

Таким чином, ми отримуємо найпростіший частотомір, реалізований повністю у коді на ESP32.

Приклад програми: простий частотомір


const int signalPin = 4;       // GPIO для вхідного сигналу
volatile unsigned long pulses = 0;
hw_timer_t *timer = NULL;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;

void IRAM_ATTR handleSignal() {
  pulses++; // рахуємо кожний фронт
}

void IRAM_ATTR onTimer() {
  portENTER_CRITICAL_ISR(&timerMux);
  unsigned long freq = pulses; // зберігаємо кількість імпульсів
  pulses = 0;                  // обнуляємо для наступного циклу
  portEXIT_CRITICAL_ISR(&timerMux);

  Serial.print("Частота: ");
  Serial.print(freq);
  Serial.println(" Гц");
}

void setup() {
  Serial.begin(115200);
  pinMode(signalPin, INPUT);

  attachInterrupt(digitalPinToInterrupt(signalPin), handleSignal, RISING);

  // Налаштовуємо таймер на 1 сек (1 000 000 мкс)
  timer = timerBegin(0, 80, true); 
  timerAttachInterrupt(timer, &onTimer, true);
  timerAlarmWrite(timer, 1000000, true);
  timerAlarmEnable(timer);
}

void loop() {
  // основний цикл вільний
}

Як працює програма:

  • На пін GPIO4 подається прямокутний сигнал.
  • Кожний фронт збільшує лічильник pulses.
  • Щосекунди таймер викликає функцію onTimer(), де підраховане значення виводиться у Serial Monitor.

Покращення та розширення

  • Можна змінити інтервал таймера (наприклад, 100 мс для швидшого оновлення).
  • Для підвищення точності слід використовувати зовнішній опорний генератор або кварц.
  • Можна усереднювати кілька вимірювань для зменшення шумів.

Висновок

Використовуючи таймери ESP32, можна реалізувати простий частотомір для вимірювання частоти цифрових сигналів. Такий підхід демонструє можливості апаратних таймерів ESP32 і дозволяє будувати недорогі вимірювальні пристрої.

<< Проекти << Усі товари >> Статті, уроки >>

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Плата захисту балансування 2-х літій-іонних акумуляторів 7,4В

Плата захисту балансування 2-х літій-іонних акумуляторів 7,4В

Контролер BMS захисту двох 18650 акумуляторів з балансиром Захисна плата літієвої батареї, захист в..

112.18грн.

Універсальна монтажна плата на 400 отворів

Універсальна монтажна плата на 400 отворів

Макетна плата на 400 отворів для макетування любительських схемотехнічних проектів. Містить 4 лінії ..

85.85грн.

Ніжки для лазерного гравера CNC 4 шт. с кріпленням

Ніжки для лазерного гравера CNC 4 шт. с кріпленням

Ніжки з МДФ для побудови CNC лазерного гравера. Виконують роль власне ніжок, а також повноцінного кр..

179.78грн.

Моно підсилювач потужності 18 Вт TDA2030A

Моно підсилювач потужності 18 Вт TDA2030A

Модуль одноканального підсилювача потужності звукової частоти на основі легендарної мікросхеми TDA20..

62.86грн.

Радіатор для транзистора 34х25х12мм

Радіатор для транзистора 34х25х12мм

Радіатор алюмінієвий для пасивного охолодження різноманітних напівпровідникових силових компонентів:..

29.78грн.

Рекомендовані товари

ESP32 Timer Groups: архітектура та використання

ESP32 Timer Groups: архітектура та використання

ESP32 Timer Groups: архітектура та використання Мікроконтролер ESP32 має потужну систему апаратни..

0.00грн.

ESP32: Генерація ШІМ на основі таймера (без LEDC)

ESP32: Генерація ШІМ на основі таймера (без LEDC)

ESP32: Генерація ШІМ на основі таймера (без LEDC) В ESP32 є кілька способів організувати широтно-..

0.00грн.