• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO

Генератор сигналов DAC на Arduino


 

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

 

Arduino DAC Signal Generator

Треугольный математический сигнал является непрерывной функцией во времени, которая начинается с средней ширины, увеличивается до максимальной ширины и опускается вниз на дно с постоянной скоростью. Это программирование может быть реализовано с помощью цикла, который увеличит переменную на 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, который является выходным портом для значений синусоидального сигнала и пилообразного сигнала.

 

arduino DAC

 

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

 

arduino DAC

 

Эта схема является 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 потенциометров, которые регулируют интенсивность и частоту сигналов каждый раз.




Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 379



          

Радио для всех© 2024