Генератор импульсов на ардуино. Генератор импульсов на Arduino: схема, программа и применение

Как создать простой генератор прямоугольных импульсов на Arduino. Какие компоненты необходимы для сборки схемы. Как настроить частоту и скважность генерируемого сигнала. Где применяются генераторы импульсов на микроконтроллерах.

Содержание

Принцип работы генератора импульсов на Arduino

Генератор импульсов на Arduino представляет собой устройство, формирующее периодические электрические сигналы прямоугольной формы. Основными параметрами таких сигналов являются:

  • Частота — число импульсов в единицу времени
  • Скважность — отношение периода к длительности импульса
  • Амплитуда — максимальное значение напряжения сигнала

Принцип работы генератора на Arduino заключается в программном управлении состоянием цифрового выхода микроконтроллера. С помощью таймеров Arduino формируются импульсы заданной длительности и частоты.

Схема простого генератора импульсов на Arduino

Для сборки простейшего генератора импульсов на Arduino понадобятся следующие компоненты:


  • Плата Arduino (Uno, Nano или другая)
  • Резистор 220-330 Ом
  • Светодиод
  • Макетная плата
  • Соединительные провода

Схема подключения:

  1. Подключите резистор к цифровому выходу Arduino (например, пин 13)
  2. Соедините анод светодиода с резистором
  3. Катод светодиода подключите к земле (GND)

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

Программа для генератора импульсов на Arduino

Базовый скетч для генерации импульсов может выглядеть так:

«`cpp const int outputPin = 13; // Пин для вывода сигнала const long interval = 1000; // Интервал в миллисекундах void setup() { pinMode(outputPin, OUTPUT); } void loop() { digitalWrite(outputPin, HIGH); delay(interval / 2); digitalWrite(outputPin, LOW); delay(interval / 2); } «`

В этом примере генерируется сигнал с частотой 1 Гц и скважностью 50%. Для изменения параметров достаточно скорректировать значение переменной interval.

Настройка частоты и скважности сигнала

Как настроить частоту и скважность генерируемого сигнала? Для этого нужно изменить временные интервалы включенного и выключенного состояния выхода:


«`cpp const int outputPin = 13; unsigned long onTime = 500; // Время включенного состояния (мкс) unsigned long offTime = 1500; // Время выключенного состояния (мкс) void setup() { pinMode(outputPin, OUTPUT); } void loop() { digitalWrite(outputPin, HIGH); delayMicroseconds(onTime); digitalWrite(outputPin, LOW); delayMicroseconds(offTime); } «`

В этом примере:

  • Частота сигнала = 1 / (onTime + offTime) * 1000000
  • Скважность = (onTime + offTime) / onTime

Изменяя значения onTime и offTime, можно гибко настраивать параметры выходного сигнала.

Генерация сигналов высокой частоты

Для генерации сигналов с частотой выше нескольких кГц рекомендуется использовать аппаратный ШИМ Arduino. Как это сделать?

«`cpp const int pwmPin = 3; // Пин с поддержкой ШИМ void setup() { pinMode(pwmPin, OUTPUT); // Настройка таймера 2 для быстрого ШИМ TCCR2A = _BV(COM2B1) | _BV(WGM21) | _BV(WGM20); TCCR2B = _BV(CS20); // Установка частоты ШИМ OCR2A = 19; // 400 кГц при 16 МГц тактовой частоте // Установка скважности 50% OCR2B = 9; } void loop() { // Основной код программы } «`

Этот скетч настраивает аппаратный ШИМ Arduino для генерации сигнала с частотой около 400 кГц. Изменяя значения регистров OCR2A и OCR2B, можно настраивать частоту и скважность в широких пределах.


Применение генераторов импульсов на Arduino

Где могут использоваться генераторы импульсов на базе Arduino? Вот несколько распространенных областей применения:

  • Тестирование и отладка электронных устройств
  • Управление шаговыми двигателями
  • Генерация звуковых сигналов
  • Модуляция светодиодного освещения
  • Измерение временных интервалов
  • Синхронизация работы различных устройств

Благодаря простоте реализации и гибкости настройки, генераторы на Arduino находят применение во многих любительских и профессиональных проектах.

Расширение возможностей генератора импульсов

Как можно расширить функционал базового генератора импульсов на Arduino? Вот несколько идей:

  • Добавление кнопок или потенциометров для регулировки частоты и скважности
  • Использование дисплея для отображения текущих параметров сигнала
  • Реализация различных форм сигнала (треугольный, пилообразный и т.д.)
  • Добавление возможности сохранения и загрузки предустановок
  • Управление генератором через последовательный порт

Реализация этих дополнений позволит создать более функциональное устройство для широкого спектра задач.


Сравнение генераторов на Arduino и специализированных микросхемах

В чем преимущества и недостатки генератора импульсов на Arduino по сравнению со специализированными микросхемами?

Преимущества Arduino:

  • Гибкость настройки и программирования
  • Возможность быстрого прототипирования
  • Низкая стоимость для небольших проектов
  • Простота интеграции с другими компонентами

Недостатки:

  • Ограниченный частотный диапазон (до нескольких МГц)
  • Меньшая точность и стабильность параметров
  • Высокое энергопотребление по сравнению со специализированными чипами

Выбор между Arduino и специализированными решениями зависит от конкретных требований проекта, необходимой точности и бюджета.


Генератор импульсов ШИМ с LCD дисплеем

Генератор импульсов ШИМ XY-LPWM с LCD дисплеем.

Модуль генератора ШИМ XY-LPWM предназначен для проектов ARDUINO, где требуется источник точных калиброванных сигналов.

  • Широкий диапазон напряжений питания
  • Амплитуда выходного сигнала равна питающему напряжению
  • Удобный интерфейс на основе цифрового дисплея
  • Высокая стабильность при большом разбросе температур
  • Автоматическое сохранение параметров при сбое питания

Импульсный ШИМ генератор — это устройство, которое обеспечивает электрические сигналы на различных частотах, прямоугольных и выходных уровнях. Он используется в качестве источника тактового сигнала или источника возбуждения для тестирования.

Импульсный ШИМ генератор XY-LPWM имеет четыре независимых ключа, используемых для установки частоты и рабочего цикла, короткое нажатие кнопки (увеличение или уменьшение единицы) и длительное нажатие (быстрое увеличение или уменьшение).

Генератор построен на базе трех микросхем

  • Микросхема N76E003AT20 — 8-bit микроконтроллер или аналог STM8S003F3Pb
  • Микросхема HT1621B — контроллер для LCD дисплея
  • Микросхема HM5333B – линейный стабилизатор на 3.3В

Характеристики:
Рабочее напряжение: от 3,3 до 30 В

Частотный диапазон: 1 Гц ~ 150 кГц (разбит на четыре поддиапазона)
Первый: 1 – 999 Гц с шагом 1 Гц
Второй: 1.00 — 9.99 кГц с шагом 0.01 кГц
Третий: 10.0 — 99.9 кГц с шагом 0.1 кГц
Четвертый: 100 — 150 кГц с шагом 1 кГц

Точность частоты: точность в каждом диапазоне составляет около 2%
Коэффициент заполнения сигнала изменяется от 0 до 100%
Выходной ток: около 5-30 мА
Амплитуда выходного сигнала равна напряжению питания
Дисплей: жидкокристаллический с синей подсветкой
Рабочая температура: от -20 ℃ до 70℃
Вес: 65 гр.
Размер: 52 x 32 x 10 мм

Импульсный ШИМ генератор XY-LPWM управляется как вручную, с помощью кнопок FREG и DUTY, так и через компьютер, подсоединив его к TTL последовательному порту (TXD, RXD, GND).

Команда «read» — это считывание настроек (F и D).

Для установки скважности необходимо отправить трехзначное число скважности добавив перед ним букву D.
Команда «DXXX» — изменение коэффициент заполнения сигнала (XXX от 001 до 100). Например, D050, установленный рабочий цикл PWM составляет 50%.

Для того, чтобы установить частоту генерации, необходимо отправить частоту так, как она отображается на дисплее прибавив перед значением частоты букву F.
Команда «F101» установка частоты 101 Гц (от 001 до 999), «F1.05» установка частоты 1.05 кГц (1.00-9.99), «F10.5» установка частоты 10.5 КГц (10.0-99.9), «F1.0.5» установка частоты 105 кГц (1.0.0-1.5.0).

Если отправлена верная команда, то генератор ответит DOWN, если ошибочная – FALL.

На дисплей можно вывести только 2 числа по 3 цифры в каждом. В нижней строке отображается скважность ШИМ в процентах, а в верхней – частота.

Частота выводится на дисплей по следующим правилам:

  • XXX, шаг в 1 Гц, в диапазоне 1 – 999 Гц
  • X. XX, шаг в 0.01 кГц, в диапазоне 1.00 — 9.99 кГц
  • XX.X, шаг в 0.1 кГц, в диапазоне 10.0 — 99.9 кГц
  • X.X.X, шаг в 1 кГц, в диапазоне 100 — 150 кГц

Генератор НЧ на LM358

На половинке микросхемы LM358 можно собрать, практически, самую простую схему генератора прямоугольных импульсов, работающего в широком диапазоне частот. 

Микросхема LM358 выпускается в корпусе DIP-8 и содержит в себе два операционных усилителя (ОУ) . Для сборки генератора прямоугольных импульсов нам понадобится только 1 операционный усилитель. 

Рис. 1. Принципиальная электрическая схема генератора прямоугольных импульсов на ОУ LM358.

На схеме генератора, см. рис. 1 резисторы R1 и R2 составляют делитель питающего напряжения и обеспечивают среднюю точку напряжения питания на входе + ОУ LM358. Резисторы R3 и R4 работают в цепи положительной и отрицательной обратной связи, соответственно. Конденсатор C1 задаёт частоту прямоугольных импульсов на выходе генератора.

Таблица зависимости частоты колебаний генератора от ёмкости конденсатора C1 представлена в табл. 1.

Рис. 2. Осциллограмма, снятая на 1-ой ножке микросхемы LM358 (4-я ножка общий провод).

Рис. 3. Осциллограмма, снятая на 2-ой ножке микросхемы LM358 (4-я ножка общий провод).

C1 nF

F Hz

D %
1000  6 63
400 17 63
300 23 63
200 34 63
100 67 63
68 105 63
47 142 63
22 272 63
 15 393 63
10 660 63
6,8 980 63
4,7 886 63 
3,3 1040 62
1,5 2410 62
1 4560 61
0,68 5650 60
0,47  8270 59
0,33 10900 57
0,22 14400 55
0,15 17700 55
0,1 21200 56
0,082 25700 57
0,075 26000 57
0,068 28400 56
0,033 45800 52
0,01 210000 51

Табл. 1. Зависимость частоты и скважности на выходе генератора от ёмкости конденсатора С1. Без нагрузки D1.

Рис. 4. Макет генератора прямоугольных импульсов на ОУ LM358.

  • Электроника
  • Назад
  • Вперед

Развертка частоты генератора импульсов Arduino

Элементы, используемые в этом проекте

Аппаратные компоненты

Дисплейный модуль ElectroPeak 0,96 дюйма OLED 64×128 х 1
Резистор 1кОм х 1
Светодиод (общий) х 1
Ардуино УНО х 1

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

Визуино
Ардуино IDE

История

В этом уроке мы узнаем, как сделать генератор импульсов с разверткой по частоте.

Генератор импульсов запустится с частотой 1 Гц и будет увеличивать свою частоту на 0,5 Гц каждую секунду. Как только он достигнет 10 Гц, он перестанет увеличивать частоту.

Вы можете установить свои собственные Начальная частота , Конечная частота , Приращение частоты и интервал приращения .

Шаг 1: Что вам понадобится

1/8

.
  • Проводные перемычки
  • Макет
  • Программа Visuino: загрузите Visuino
  • Осциллограф (дополнительно)
  • Предоставлено PCBWay


    Спасибо PCBWay за поддержку этого руководства и помощь пользователям в изучении электроники.

    Что мне нравится в PCBWay , так это то, что вы можете получить 10 плат примерно за 5 долларов, что действительно экономически выгодно для профессиональных плат, не говоря уже о том, сколько времени вы экономите!

    Посмотрите их здесь. Они также предлагают множество других вещей, которые могут вам понадобиться, например, сборку, 3D-печать, обработку с ЧПУ и многое другое.

    Шаг 2. Схема с использованием OLED-дисплея и осциллографа контакт [VCC] к контакту Arduino [5v]

  • Подключите контакт OLED-дисплея [GND] к контакту Arduino [GND]
  • Подключите щуп осциллографа к цифровому контакту Arduino [2]
  • Подключите щуп заземления осциллографа к контакту Arduino [GND ]
  • Шаг 3: Схема со светодиодом

    • Подключите резистор 1 кОм к цифровому контакту Arduino [2]
    • Подключите резистор 1 кОм к (другой стороне) светодиода [положительный контакт +]
    • Отрицательный контакт -] к контакту Arduino [GND]

    Шаг 4: Запустите Visuino и выберите тип платы Arduino UNO

    Запустите Visuino, как показано на первом рисунке. Нажмите кнопку « Tools » на Arduino. компонент (Рисунок 1) в Visuino Когда появится диалоговое окно, выберите » Arduino UNO » as shown on Picture 2

    Step 5: In Visuino Add Components

    1 / 10

    • Add « Clock Generator » компонент
    • Добавить « Counter » компонент
    • Добавить « Analog Value » компонент
    • Добавить « Integer To Analog » компонент
    • Добавить компонент « Добавить аналог »
    • Добавить компонент « Analog Multi Source »
    • Добавить компонент « Сравнить аналоговое значение » OLED I2C » component
    • Add » Pulse Generator » component

    Step 6: In Visuino Set Components

    1 / 9

    • Установите интервал: Выберите « ClockGenerator1 » и в окне свойств установите частоту секунд, в нашем случае это означает, что частота будет увеличиваться на 1 Гц, в нашем случае это будет увеличиваться на .
    • Set Start Frequency: Выбираем « AnalogValue1 » и в окне свойств устанавливаем « Value «, в нашем случае это 1, это значит что мы начнем с частоты 1Гц
    • Set Frequency Increment: Выберите « IntegerToAnalog1 » и в окне свойств установите « Scale «, в нашем случае это 0,5, это значит, что частота будет увеличиваться на 0,5Гц каждый раз
    • Set End Частота: Выберите « CompareValue1 » и в окне свойств установите « Compare Type » на ctSmaller и « Value «, в нашем случае это 10, это значит, что частота перестанет увеличиваться на 10Гц
    • Выберите « PulseGenerator1 » и в окне свойств выберите « Частота «, нажмите на значок булавки и выберите « Float SinkPin » «перетащите окно «Draw Text» в левую сторону и в окне «Свойства» установите « Text » на «Frequency» и « Size » на 2
    • В окне « Elements » перетащите » Text Field » в левую сторону и в окне «Свойства» установить « Размер «до 2 и» Y «до 30
    • Закройте» Элементы «Окно

    Шаг 7: В визуальном подключении

    • . ] к « Counter1 » pin[In]
    • Подключите « Counter1 » pin [Out] к « IntegerToAnalog1 » pin[In]
    • Подключите « AnalogValue1 » pin [Out] к « Add1 » булавка [0]
    • Подключите контакт « IntegerToAnalog1 » [Out] к контакту « Add1 » [1]
    • . контакт [0] к « AnalogSwitch2 » контакт [Вход]
    • Подключить « AnalogMultiSource1 » контакт [1] к « CompareValue1 » контакт [Вход]
    • Подключить « CompareValue1 » контакт [Выход] к » AnalogSwitch2 «контакт [Включить]
    • Подключите « AnalogSwitch2 » контакт [Out] к « PulseGenerator1 » контакт [Частота]
    • Подключите « AnalogSwitch2 » контакт [Out] к « DisplayOLED1 » > « Text Field1» контакт [In] 9008]
    • Подключите контакт « PulseGenerator1 » [Out] к Arduino Цифровой контакт [2]
    • Подключите « DisplayOLED1 » контакт [I2C] к контакту Arduino [I2C]
    • 90949 Скомпилируйте и загрузите Arduino Code

      В Visuino внизу щелкните вкладку « Build », убедитесь, что выбран правильный порт, затем нажмите кнопку «Скомпилировать/создать и загрузить».

      Шаг 9: Воспроизведение

      Если вы включите модуль Arduino, OLED-дисплей покажет увеличение частоты. Если у вас есть осциллограф, вы можете подключить его к цифровому контакту 2 Arduino (см. схему подключения) или подключить резистор 1 кОм и светодиод (см. схему подключения), чтобы увидеть, как увеличиваются импульсы.

      Поздравляем! Вы завершили свой проект с Visuino. Также прилагается проект Visuino, который я создал для этого урока, вы можете загрузить его и открыть в Visuino: https://www.visuino.eu


      Схемы, диаграммы и документы

      Файл Visuino

      Код

      Файл Visuino

      Загрузить файл Visuino ниже

      Кредиты

      Рон

      Разработчик Arduino

      Подписаться Your feed can be found by clicking on ‘Your account’. We will also email you (max twice a week) to notify you of any new content that is available in your feed. This can be disabled within your account settings.»/>

      Я хочу добавить два генератора импульсов в simulink и сбросить их в arduino uno… в результате я получаю изменение частоты… П С 5 июля 2022 г.

      Принятый ответ: Мадху Говиндараджан

      Я хочу сгенерировать импульс с периодом 0,02 (50 Гц), добавив этот генератор двух импульсов, я получаю выход от arduino, но частота не 50 Гц, пожалуйста, предложите

      это импульс, который я хочу генерировать на выходе Arduino в течение 0,02 периода времени.

      Ответ принят

      Отредактировано: Мадху Говиндараджан on 12 Feb 2019

      Правильным способом было бы иметь один генератор импульсов с периодом 0,02 секунды и соответствующей шириной импульса. Добавление двух блоков не добавляет их периоды выборки, вместо этого добавляется содержимое в пределах одного и того же периода выборки.

      Больше ответов (3)

      Вот что я бы порекомендовал —

      1) Создайте новую модель Simulation only и поставьте два генератора импульсов с периодом дискретизации 0,02.

      2) Отрегулируйте прямоугольные волны по своему усмотрению, сложите их и отправьте на осциллограф.

      3) Смоделируйте эту модель и внесите необходимые изменения.

      4) После того, как вы установили, что у вас есть прямоугольная волна по вашему выбору, верните ее в модель Arduino и отправьте на цифровой контакт.


      Вот что я думаю происходит — модель выходит за пределы самой себя, так как шаг расчета для модели мал (0,000625 или 1600 Гц). Чтобы обнаружить и исправить выход за рамки задачи — https://www.mathworks.com/help/supportpkg/arduino/ug/detect-and-fix-task-overruns-on-arduino-hardware.html

      Вы также можете попробовать выполнить развертывание на оборудовании, что может иногда избежать переполнения (вы только уменьшите накладные расходы). Хотя я сомневаюсь, что это поможет при такой частоте дискретизации.


      Привет всем… У меня проблема с установкой частоты ШИМ для пакета поддержки SIMULINK Arduino. Я использую MATLAB 2017b и arduino mega2560… для управления мне нужен сигнал ШИМ 25000 Гц, но пакет поддержки Simulink ) имеет только 490 Гц, и я могу изменить только рабочий цикл.

      Что я могу сделать? Буду рад вашему ответу. Если вы не возражаете, могу ли я попросить программный файл моделирования Simulink в качестве ссылки для моего окончательного задания. Я так и не понял для смены частоты ШИМ ардуино в simulink matlab.

      Спасибо

      Произошла ошибка

      Не удалось выполнить действие из-за изменений, внесенных на страницу. Перезагрузите страницу, чтобы увидеть ее обновленное состояние.

      Выберите веб-сайт

      Выберите веб-сайт, чтобы получить переведенный контент, где он доступен, и увидеть местные события и предложения. В зависимости от вашего местоположения мы рекомендуем вам выбрать: .

      Вы также можете выбрать веб-сайт из следующего списка:

      Америка

      • Латиноамериканская Америка (Испания)
      • Канада (английский)
      • США (английский)

      Европа

      • Бельгия (английский)
      • Дания (английский)
      • Германия (нем.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *