Генератор сигналов на ардуино: Генератор сигналов на Arduino

Генератор сигналов прямоугольной и синусоидальной формы на Arduino: схема и программа

Главная » Обзоры

Каждый инженер, увлекающийся электроникой, на определенном этапе своей деятельности мечтает о создании своей мини лаборатории. Мультиметр, осциллограф, генератор сигналов специальной формы, источник питания, трансформатор – вот лишь минимальный обязательный набор для подобной лаборатории. Конечно, сейчас все это можно купить, но чтобы сэкономить свои деньги, часть из этих устройств можно сделать самостоятельно на основе платы Arduino. Например, генератор сигналов или осциллограф.

В этой статье мы рассмотрим как на основе платы Arduino достаточно просто сконструировать генератор сигналов прямоугольной и синусоидальной формы. При формировании сигналов прямоугольной формы данный генератор может формировать прямоугольную волну с перепадами уровней 5V/0V с частотой от 1 Гц до 2 МГц. Частотой формируемого сигнала можно будет управлять с помощью инкрементального энкодера. Коэффициент заполнения (цикл занятости) данного сигнала будет равен 50%, но его можно изменить, внеся соответствующие изменения в программу. Рассматриваемый нами генератор не является промышленным устройством и его не рекомендуется использовать на серьезном производстве, но для домашних условий использования он вполне подойдет.

Также на нашем сайте вы можете посмотреть проекты более «продвинутых» генераторов для формирования сигналов прямоугольной и синусоидальной формы:

  • генератор сигналов на Arduino и DDS модуле AD9833;
  • генератор перестраиваемой частоты 10 кГц – 225 МГц на Arduino и модуле Si5351.

Если же вам нужно исключительно простое решение для формирования сигналов прямоугольной формы с частотой до 1 МГц с помощью платы Arduino, то рекомендуем этот проект.

Работа схемы

Схема генератора сигналов на основе платы Arduino представлена на следующем рисунке.


Плата Arduino Nano управляет всеми процессами в схеме. ЖК дисплей используется для отображения частоты формируемого сигнала, а с помощью углового кодера производится установка частоты сигнала. Также на нашем сайте вы можете прочитать статью о подключении инкрементального энкодера к плате Arduino.

Схема запитывается от USB кабеля Arduino. Необходимые соединения в схеме представлены в следующей таблице.

Контакт платы ArduinoКуда подключен
D14контакт RS ЖК дисплея
D15контакт RN ЖК дисплея
D4контакт D4 ЖК дисплея
D3контакт D5 ЖК дисплея
D6контакт D6 ЖК дисплея
D7контакт D7 ЖК дисплея
D10to Rotary Encoder 2
D11to Rotary Encoder 3
D12to Rotary Encoder 4
D9выход прямоугольного сигнала
D2контакт D9 платы Arduino
D5выход SPWM сигнала

В схеме мы будем формировать прямоугольную волну (сигнал прямоугольной формы) на контакте D9 платы Arduino. Его частоту мы будем регулировать с помощью углового кодера. Для формирования синусоидального сигнала мы будем формировать SPWM сигнал (синусоидальный ШИМ (широтно-импульсной модуляции) сигнал) на контакте D5, его частота будет зависеть от частоты сигнала прямоугольной формы, которая будет подаваться на контакт D2 и будет действовать как прерывание и затем мы с помощью процедуры обработки (обслуживания) прерывания будем управлять частотой синусоидального сигнала.

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

На самостоятельную проработку

Рейтинг

( 2 оценки, среднее 4.5 из 5 )

Понравилась статья? Поделиться с друзьями:

Радио для всех — Генератор сигналов DAC на Arduino

 

Как только цепь запускается, все переменные инициализируются, и функция цикла постоянно работает.  Первоначально все светодиоды выключены, и на выходе нет сигнала. При нажатии на переключатель сигнала первый индикатор, который показывает наибольший сигнал, находится на выходе, а клеммы D0-D7 дают соответствующий сигнал, который при переходе от преобразователя из цифрового в аналоговый выводит треугольный сигнал. Из 2 потенциометров (потенциометр установки частоты и потенциометр регулировки амплитуды) мы можем настроить частоту и ширину сигнала, присутствующего на выходе. Если кнопка переключения снова нажата, загорается светодиод, указывающий, что активен следующий сигнал синусоидального сигнала.Терминалы D0-D7 дают сигнал, который при передаче от цифрового к преобразователю аналогового сигнала даст нам синусоидальный сигнал. Это относится к двум другим сигналам (квадратным и пилообразным сигналам), с той лишь разницей, что выходной сигнал и соответствующий светодиод загораются каждый раз. Arduino имеет аналоговые и цифровые контакты, проблема в том, что, хотя некоторые из запрошенных сигналов являются аналоговыми, arduino не может выводить аналоговый сигнал, а только цифровой.

 Таким образом, сигналы должны выполняться с помощью цифрового штырька и проходить через цифро-аналоговый преобразователь. В настоящем проекте инвертор представляет собой резисторную сеть R-2R, которая подробно анализируется ниже.

 

Треугольный математический сигнал является непрерывной функцией во времени, которая начинается с средней ширины, увеличивается до максимальной ширины и опускается вниз на дно с постоянной скоростью. Это программирование может быть реализовано с помощью цикла, который увеличит переменную на 1 до тех пор, пока переменная не получит максимальное приблизительное значение, которое у нас есть (256), и выдаст его на выход. Как только он достигнет этого значения, он уменьшится, пока не достигнет минимального значения, равного 0. Как только он достигает 0, он снова начинает подниматься, и процесс повторяется непрерывно.Целочисленное значение переменной цикла назначается регистру PORTD, который преобразует значение в двоичный код и дает высокое (5 вольт) напряжение на соответствующие выходные выводы.

 Например, если PORTD установлен на 127 (11110000), тогда первый 4-контактный (4-7) будет напряжением, а другой 4 (0 — 3) будет в низком режиме. Поэтому, если этот цикл работает непрерывно на выходе, мы имеем треугольный сигнал.

Синусоидальный сигнал является самым сложным из четырех сигналов, потому что недостаточно иметь переменную, которая увеличивается, потому что полутоновый сигнал имеет определенные значения в любой момент. Таким образом, используется вспомогательная панель с 255 положениями, которая принимает значения синуса в диапазоне от 0 до 255, так что на выходе отображается сигнал, приближающийся к синусоидальному сигналу. После того, как у нас есть таблица значений, тогда процесс будет таким же, как и треугольный сигнал, за исключением того, что вместо PORTD, принимающего значения переменной цикла, он принимает значения таблицы, а переменная цикла используется как таблица увеличения таблицы ,

 

Квадратный импульс очень легко реализовать, пока мы даем выход 0 за один период и 255 для следующего.

 

Можно сказать, что пилообразный сигнал представляет собой треугольный сигнальный регистр, так как единственное различие заключается в том, что пильный сигнал после достижения максимального уровня напряжения вместо уменьшения равен нулю. Это делается с помощью цикла, для которого непрерывно увеличивается переменная ai от 0 до 255, значение которой присваивается регистру PORTD. Таким образом, у нас есть сигнал пилы на выходе.

 

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

 

 

В такой системе каждый цифровой вход соответствует определенному аналоговому выходу. Это схема, которая принимает в качестве цифрового входа 8 бит, т. Е. Числа от 0 (00000000) до 255 (11111111), а на выходе получается напряжение 0-5 В.

Математическое объяснение довольно просто: если мы хотим, чтобы 8-разрядный ЦАП выводил 5 В на 255 этапов выполнения, каждый шаг будет 5/255 = 0,019 В. Таким образом, выходное напряжение такого ЦАП будет равно множителю бинарного входа на поле. Пример ввода номера 129 (1000 0001) выходного напряжения будет 129X0.019 = 2.451V. В построенной нами схеме мы сделали и использовали 8-разрядный ЦАП R-2R.

 

 

Эта схема является 8-битным цифро-аналоговым преобразователем. Каждый из восьми бит вносит вклад в результирующее выходное напряжение. Если все 8 бит находятся в высоком режиме , то выход приблизительно равен опорное напряжение. Если мы изменим самые важные биты в режиме LOW, тогда у нас будет примерно половина этой тенденции. Более конкретно для 8bit ЦАП , если все 8 бит ВЫСОКИЙ то мы получим 255/256 опорное напряжение. Если он становится активным, самая значащая цифра в режиме LOW дает нам 127/256 опорных напряжений. В общем случае для каждого бита значения X между 0-255 ЦАП даст Х / 255 опорного напряжения.

Цифровые данные поступают через 8 входных линий (D0-D7) и присоединяются для преобразования в эквивалентное аналоговое напряжение (Vout) в сети R-2R. Большинство ЦАП основаны на этой философии. Схема R-2R выполнена из набора резисторов, имеющих 2 значения. Один из них — двойной.В схеме, которую мы реализовали, мы использовали резисторы 10 кОм и 20 кОм. Ниже приведена схема, реализованная в Raster и ее подключение к плате Arduino.

 

Детали и материалы

·         4 светодиода для выбранной индикации сигнала

·         8 Сопротивление 5ΩΩ (5% допуск) Цепь R-2R

·         8 Сопротивление 10 кОм (допускание 1%) Цепь R-2R

·         2 Потенциометры для частоты и рабочего цикла

·         1 Кнопка выбора типа сигнала

·         6 Сопротивление 10 кОм (допуск 1%)

·         20 Кабель для подключения

·         1 Внедрение растрового контура

·         1 Совет по внедрению Arduino Uno

·         1 Осциллограф для просмотра сигналов

 

Логика программы

Программу можно загрузить, щелкнув здесь, и она состоит из трех частей и выглядит следующим образом:

·         1. Постановка глобальных переменных.

·         2. Функция настройки, в которой настройки программы по умолчанию связаны с платой и значением, выводимым в переменных (пример выводимых значений в таблице синусов).

·         3. Функция Loop, в которой она выполняется непрерывно до тех пор, пока работает основная программа.

Используемые переменные:

·         sine [254]: таблица из 255 позиций, которая принимает значения синуса от 0 до 255. Она служит для вывода значений синуса в регистр PORT.

·         OutputArray [8]: таблица с 8 позициями, которые должны быть определены как выходы. Эти 8 выходов используются, чтобы дать 4 сигнала генератора. Штыри D0-D7

·         ledArray [4]: Таблица 4 места, определенные как выходы. Они связаны с 4 светодиодами, которые служат для отображения большего количества сигналов на выходе каждый раз. Штыри D8-D11

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

·         buttonPin: Переменная, которая получает значение, которое является местоположением контакта, к которому подключена кнопка для изменения сигнала. Pin D12

·         buttonState: входная переменная, которая принимает статус кнопки (LOW — нажата, HIGH — не нажата).

·         PotFunc: переменная, которая получает значение (0 в нашем случае), который является входным потенциометром потенциометра. Pin — A0 (аналоговый вход).

·         wave (value): переменная, которая принимает значение состояния потенциометра.

·         PotGain: переменная, которая получает значение (1 в нашем случае), который является потенциометром ввода потенциометра. Pin — A1 (аналоговый вход).

·         val1 (значение): переменная, которая принимает значение статуса потенциометра.

Функция настройки

Эта функция определяет функции плат Arduino Pin и инициализирует переменные. В частности, цифровой вывод 0-11 определяется как выходы.

 Цифровой вывод 0-7 связан с выходом схемы и дает нам каждый раз последовательность бит, которые получают состояния, так что на выходе появляется аналоговый сигнал (треугольник, синус, квадрат, пила). Контакт 8-11 дает выходные данные для 4 светодиодов, которые используются в качестве индикаторов сигнализации для большинства сигналов на выходе каждый раз.

 

 

Цифровой контакт 12 определяется как вход и получает значение от кнопки переключения. Когда кнопка нажата, в выводе находится напряжение 5 В, поэтому оно находится в высоком состоянии, и когда оно не нажато, напряжение отсутствует и поэтому оно находится в низком режиме. Аналоговые выводы 0 и 1 определяются как входы, которые принимают значения от внутреннего сопротивления 2 потенциометров, которые регулируют интенсивность и частоту сигналов каждый раз.

Обработка сигналов

— подключение функционального генератора к Arduino

спросил

3 года 11 месяцев назад

Изменено 3 года, 11 месяцев назад

Просмотрено 430 раз

Я хочу отправить сигнал функционального генератора на аналоговый контакт Arduino UNO. Могу ли я использовать пробник осциллографа, подключенный к выходу BNC функционального генератора, установленный на 1x, для подключения к разъемам Arduino с помощью перемычек? Я прочитал руководства по генератору функций, но не нашел решения.

Доступен генератор функций Tenma 72-14110.

  • arduino-uno
  • обработка сигналов

Конечно, вы можете подключить генератор функций к аналоговому выводу Arduino. Зонд и перемычки здесь просто провода, ничего особенного. Вы также должны соединить землю генераторов функций с землей Arduinos (!).

Но: обязательно оставайтесь в диапазоне напряжений Arduino (от 0 до 5 В) с сигналом генератора функций. Если вы подадите более высокое или отрицательное напряжение, вы можете разрушить Arduino. Пока вы остаетесь в этом диапазоне, ничего страшного не произойдет.

1

В качестве дополнения к ответу Крисла я бы рекомендовал поставить Последовательный резистор 10 кОм, включенный последовательно между функциональным генератором и Ардуино.

Это просто для безопасности: если функциональный генератор случайно выйдет из строя безопасного диапазона напряжения Arduino, резистор будет ограничивать ток, протекающий через защитные диоды входного контакта. Эти диоды рассчитаны только на 1 мА, а резистор на 10 кОм должен значительно расширить диапазон напряжений, которые вы можете подавать, не поджаривая их.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

Многофункциональный генератор сигналов Arduino

Посмотреть галерею

Команда (1)

  • Йокуц
Присоединяйтесь к команде этого проекта аппаратное обеспечение завершенный проект ардуино звук дак резисторная лестница

Этот проект был создано 19. 07.2016 и последний раз обновлялся 7 лет назад.

Это мой генератор сигналов на основе Arduino, использующий ЦАП с 8-битной резисторной лестницей. Он работает с частотой дискретизации 65536 Гц и может создавать любую (целочисленную) частоту от 1 Гц до 30 кГц в виде синусоидальной, пилообразной, треугольной и различных пропорций прямоугольной волны.

Мой генератор выдает усиленный сигнал, а также неусиленный сигнал высокого качества. Есть встроенный ЖК-дисплей, показывающий текущую частоту, а также динамик. ЖК-дисплей на самом деле является взломанным дешевым карманным калькулятором, для которого я узнал, как нажимать CE, +, = и 1 с помощью Arduino, чтобы на ЖК-дисплее отображалось определенное число. Да я знаю, что это глупый хак :). Генератор работает от 9батарея В. Два видео показаны ниже; один для взломанного дисплея калькулятора и один для самого генератора.

Программное обеспечение Arduino и некоторые другие файлы связаны ниже, электроника почти такая же, как на instructables. com/id/Arduino-Waveform

Детали

дешевыйoPocketCalcDisplayLive.h

Библиотека Arduino для использования карманного калькулятора в качестве ЖК-дисплея. Заголовочный файл.

х-чдр — 1,65 КБ — 19.07.2016 в 19:00

Скачать

дешевыйoPocketCalcDisplayLive.

cpp Библиотека Arduino для использования карманного калькулятора в качестве ЖК-дисплея. Основной .cpp.

х-С++ источник — 6,08 КБ — 19.07.2016 в 18:59

Скачать

sound_generator_440Hz.ino

Кастрированная тестовая версия файла sound_generator, который будет воспроизводить синусоиду 440 Гц на Arduino без подключенных потенциометров. Для тестирования R-лестницы-DAC

х-ардуино — 73,91 КБ — 19.07/2016 в 18:58

Скачать

sound_generator.ino

Актуальная прошивка звукового генератора как описано и показано в видео

х-ардуино — 78,95 КБ — 19.

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

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