🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🔔 Проект: сигнализация выхода частоты генератора NE555 за допустимый диапазон

В другом проекте на сайте Arduino просто измеряет и показывает частоту генератора на NE555 на дисплее. Здесь та же измерительная логика используется для контроля: зуммер включается, если частота выходит за заданные границы нормы — полезно, если генератор используется как часть другой схемы и важно вовремя заметить его уход от настроенного режима (например, из-за нагрева компонентов или случайного сдвига подстроечного резистора).

Как это работает

Измерение частоты такое же, как в проекте с дисплеем: `pulseIn()` замеряет длительность полупериодов HIGH и LOW сигнала с выхода модуля NE555, их сумма даёт период, а частота считается как 1 000 000, делённое на период в микросекундах. Разница — в реакции на результат: вместо постоянного отображения числа код сравнивает каждое новое измерение с заданными нижней и верхней границами допустимого диапазона и включает зуммер при выходе за них в любую сторону.

Такой контроль полезен в первую очередь для автоматического наблюдения за схемой без постоянного визуального контроля дисплея — например, если генератор на NE555 используется как источник тактового сигнала для какой-то другой части проекта, и важно сразу узнать, если он "уплыл" от настроенного режима, а не просто периодически подходить и проверять число на экране.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. Модуль NE555: выходной пин (OUT) → D7 Arduino, VCC → 5V, GND → GND.
  2. Зуммер: сигнал → D8, GND → GND.
  3. Настройте генератор на нужную рабочую частоту подстроечным резистором на плате NE555 перед тем, как задавать границы диапазона в коде.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

const int SIGNAL_PIN = 7;
const int BUZZER_PIN = 8;

const float MIN_FREQ = 950.0;  // подберите границы под свою настроенную частоту
const float MAX_FREQ = 1050.0;

void setup() {
  Serial.begin(9600);
  pinMode(SIGNAL_PIN, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);
}

void loop() {
  unsigned long highTime = pulseIn(SIGNAL_PIN, HIGH, 100000);
  unsigned long lowTime = pulseIn(SIGNAL_PIN, LOW, 100000);

  if (highTime == 0 || lowTime == 0) {
    Serial.println("Сигнал не обнаружен");
    tone(BUZZER_PIN, 2500, 100);
    return;
  }

  float frequency = 1000000.0 / (highTime + lowTime);
  Serial.print("Частота: ");
  Serial.println(frequency);

  if (frequency < MIN_FREQ || frequency > MAX_FREQ) {
    tone(BUZZER_PIN, 2500, 100);
  }

  delay(200);
}

Дополнительных библиотек не требуется — только встроенная `pulseIn()` и `tone()`. Перед заданием границ `MIN_FREQ`/`MAX_FREQ` распечатайте реальную текущую частоту в мониторе порта после настройки подстроечного резистора на желаемый режим.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🚨 охранная сигнализация нескольких дверей че…📟 веб-панель присутствия и освещённости на A… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 128 ₽ 115 ₽ (экономия 13 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA