генератор сигналов прямоугольной формы
ГЕНЕРАТОРЫ СИГНАЛОВ прямоугольной ФОРМЫ
Мультивибратор — это генератор напряжения с формой, близкой к прямоугольной. Его название отражает тот факт, что прямоугольное напряжение, используя разложение в ряд Фурье, можно представить бесконечным гармоническим рядом, содержащим много высших гармоник (мульти — много).
Мультивибратор, как и другие генераторы с формой напряжения, отличной от синусоидальной, можно выполнить на операционном усилителе, характеристика которого при подаче сигнала на его инвертирующий вход (рис. 34, а) имеет вид, показанный на рис. 34, б.
Рис. 34. Операционный усилитель (а) и его характеристика при малых (б) и больших (в) сигналах на входе
Благодаря большому усилению (kU= 10 3 ¸10 6 ) выходное напряжение операционных усилителей пропорционально входному только при очень малых сигналах (милли- и микровольты). При напряжениях же на входе, сравнимых с выходным (вольты), линейная зона настолько сужается, что характеристика приобретает вид, показанный на рис. 34, в, когда Uвых может иметь лишь два значения U+вых или U-вых причем скачок выходного напряжения происходит при близком к нулю входном напряжении (точнее, при близкой к нулю разности потенциалов между инвертирующим и неинвертирующим входами).
На операционном усилителе можно создать схему, выходное напряжение которой имеет одно из двух возможных значений U+вых или U-вых при Uвх=0 и меняет полярность Uвых на противоположную при подаче на вход импульса (или потенциала) той или иной полярности (триггерный режим работы). Схема с делителем напряжения R1-R2 (рис. 35, а) имеет именно такую характеристику (рис. 35, б). При Uвх= 0 за счет напряжения обратной связи Uос, снимаемого с сопротивления R1 и передаваемого на неинвертирующий вход усилителя, Uвых поддерживается равным одному из значений U±вых в зависимости от того, каким был последний сигнал Uвх.
Значения Uвх, при которых происходит скачкообразное изменение Uвых (т. е. при которых разность (Uвх—Uос=0),
где g — коэффициент обратной связи.
Рис. 35. Мультивибратор на операционном усилителе с внешним возбуждением (триггер Шмитта)
Рис. 36. Автоколебательный мультивибратор
Предположим, что в момент t1 (рис. 36, б) напряжение Uвых изменилось скачком с U-вых до U+вых. Конденсатор С начинает перезаряжаться током (учитывая второе допущение операционного усилителя током Iвх можно пренебречь), протекающим через резистор R3 под действием напряжения U+вых, причем напряжение на конденсаторе UC изменяется по экспоненте, стремясь к U+вых. Напряжение UC представляет собой Uвх (ср. с рис. 35, а), и когда в момент t2 оно достигает значения U2, операционный усилитель скачком изменяет Uвых на U-вых. Конденсатор начнет перезаряжаться, стремясь к U-вых но, достигнув значения U1 к моменту t3, он заставит усилитель инвертировать выходное напряжение на U+вых, и далее процесс будет повторяться. Генераторы, основанные на рассмотренном принципе, называются релаксационными.
Период колебаний такого мультивибратора
причем tи1=tи2. Такой вид колебаний называется «меандр».
Генератор импульсов треугольной формы. Схема на рис. 35, а инвертирует входной сигнал и может быть названа инвертирующим триггером Шмитта. Чтобы получить неинвертирующий триггер, применяют схему (рис. 37, а). Так как инвертирующий вход операционного усилителя соединен с корпусом (нулевым потенциалом), то в силу первого допущения таких усилителей, близок к нулю и потенциал точки А. Поэтому ток обратной связи, протекающий под действием разности потенциалов Uвых и точки А Iос = Uвых/R2.
Рис. 37. Генератор импульсов треугольной формы:
а — неинвертирующий триггер; б — его характеристика; в—схема генератора; г — выходные напряжения
В силу второго допущения этот же ток будет протекать и по резистору R1, создавая на нем напряжение обратной связи, равное Uос= UвыхR1/R2 Так как переключение триггера происходит в момент, когдаUос – Uвх»0, то Uвх, при котором происходят переключения триггера, обозначенные U1 и U2 на рис. 37, б, определяется выражениями
В схеме генератора треугольных импульсов (рис. 37, в) напряжением Uвх триггера, осуществленного на операционном усилителе ОУ1 служит напряжение.Uвых2, получаемое на инверторе-интеграторе, выполненном на операционном усилителе ОУ2. Поясним работу интегратора.
Ток, проходящий через конденсатор, равен произведению его емкости на производную от разности потенциалов на его обкладках (эта разность равна Uвых2 так как потенциал точки А близок к нулевому потенциалу корпуса в силу первого свойства операционного усилителя):
Знак «—» означает, что положительный (как показано стрелкой на рис. 37, в) ток IC, поступающий на инвертирующий вход, создаст отрицательный потенциал Uвых2.
Так как потенциал точки А близок к нулю, то ток через резистор R в цепи связи между ОУ1 и ОУ2
В силу же второго допущения для операционного усилителя I » IC получим
Проинтегрировав это выражение от 0 до t и разделив обе части на – С, убедимся, что выходное напряжение ОУ2 пропорционально интегралу от напряжения на его входе (в данной схеме напряжению Uвых1):
Здесь Uвых0 — напряжение на выходе интегратора при t=0.
Пусть в момент времени t1 триггер подал на вход ОУ2 напряжение U+вых1 (рис. 37, г). Так как U+вых1=соnst (а интеграл от постоянного значения пропорционален времени), то напряжение Uвых2 изменяется по прямой линии до тех пор, пока в момент t2 оно не достигнет значения U2, при котором триггер переключится и на вход интегратора подаст U-вых1. С момента t2 конденсатор начнет перезаряжаться и напряжение на нем линейно возрастает до момента t3, после чего процессы повторяются. Данный генератор является таким же мультивибратором, как и схема рис. 36, где напряжение на конденсаторе близко к треугольному. Повышенная линейность данного генератора объясняется использованием второго операционного усилителя-интегратора.
Амплитуда треугольного напряжения на выходе генератора определяется напряжениями переключения триггера. Период колебаний Т такого генератора определяется формулой T=4RCR1/R2.
Ждущий генератор (одновибратор). Генераторы, формирующие прямоугольный или треугольный импульс напряжения по сигналу, поданному на вход, называются ждущими. Их получают из мультивибраторов, затормозив их работу. Так, если в схеме 36, а зашунтировать конденсатор диодом Д (рис. 38), то конденсатор, разрядившись от U1 до UC=0 (см. рис. 36, б), перестанет перезаряжаться под действием U+вых, потому что ток от резистора R3 пройдет через открытый диод, а значит, напряжение на конденсаторе не достигнет значения U2 и автоколебания сорвутся.
Рис. 38. Ждущий генератор
Генератор может быть запущен, если на его неинвертирующий вход поступит отрицательный импульс запуска Uзап, эквивалентный напряжению U2 на инвертирующем входе. Подобные генераторы одиночных импульсов используются при наладке ЭВМ.
Генератор пилообразного напряжения. Прямолинейно нарастающее напряжение получается на конденсаторе, если его заряжать постоянным током, не зависящим от напряжения на нем, и предотвратить влияние на этот ток сопротивления нагрузки. Интегрируя по времени выражение (разделив переменные)
|
Условие IС=соnst в схеме рис. 39 с операционным усилителем обеспечивается постоянным напряжением Uвх. Пока транзистор заперт, в течение временипроисходит зарядка конденсатора и выходное напряжение, снимаемое с конденсатора, нарастает по прямой.
Рис. 39. Генератор пилообразного напряжения
При подаче импульса Up транзистор насыщается и через его малое сопротивление (RЭК в несколько Ом) конденсатор быстро разряжается за время tр, после чего процесс зарядки повторяется и поступающее с конденсатора на выход напряжение Uвых приобретает пилообразную форму.
Длительность tп определяется емкостью С и током зарядки, зависящим от Uвх и сопротивлений резисторов R. Изменяя значение напряжения Е0, поданного на другой вход усилителя, можно смещать «пилу» по вертикали. Пилообразная форма выходного напряжения сохраняется до тех пор, пока она располагается внутри предельных значений U±вых (см. рис. 34, в) операционного усилителя.
Генераторы сигналов (110)
Генератор сигналов (реже измерительный генератор) – это прибор, генерирующий сигнал с точно заданными параметрами (частотой, амплитудой, формой колебаний и т. д.). Прибор разработан для анализа и калибровки радиоэлектронных устройств в лабораторных условиях.
Обращаем внимание: для увеличения выходной мощности и амплитуды сигнала генератора можете дополнительно использовать широкополосные усилители мощности.
|
Контакт платы Arduino | Куда подключен |
D14 | контакт RS ЖК дисплея |
D15 | контакт RN ЖК дисплея |
D4 | контакт D4 ЖК дисплея |
D3 | контакт D5 ЖК дисплея |
D6 | контакт D6 ЖК дисплея |
D7 | контакт D7 ЖК дисплея |
D10 | to Rotary Encoder 2 |
D11 | to Rotary Encoder 3 |
D12 | to Rotary Encoder 4 |
D9 | выход прямоугольного сигнала |
D2 | контакт D9 платы Arduino |
D5 | выход SPWM сигнала |
В схеме мы будем формировать прямоугольную волну (сигнал прямоугольной формы) на контакте D9 платы Arduino. Его частоту мы будем регулировать с помощью углового кодера. Для формирования синусоидального сигнала мы будем формировать SPWM сигнал (синусоидальный ШИМ (широтно-импульсной модуляции) сигнал) на контакте D5, его частота будет зависеть от частоты сигнала прямоугольной формы, которая будет подаваться на контакт D2 и будет действовать как прерывание и затем мы с помощью процедуры обработки (обслуживания) прерывания будем управлять частотой синусоидального сигнала.
Вы можете собрать схему проекта на макетной или даже на печатной плате, но мы решили спаять ее на перфорированной плате, в результате у нас получилась конструкция, показанная на следующих рисунках:
Формирование прямоугольного сигнала с изменяемой частотой
Если вы знакомы с Arduino, то вы должны знать что плата Arduino может достаточно просто формировать ШИМ сигнал (с помощью функции analogwrite) на ряде своих контактов. Но с помощью этой функции можно управлять только коэффициентом заполнения (скважностью) ШИМ сигнала, но нельзя управлять его частотой – а это как раз и нужно для нашего генератора сигналов. Управление частотой сигнала прямоугольной формы можно осуществить используя таймеры платы Arduino и непосредственно переключая состояние контактов на их основе. Помочь нам в этом может библиотека Arduino PWM Frequency Library (библиотека управления частотой ШИМ сигнала), более подробно работу с ней мы рассмотрим далее в статье.
Но в использовании этой библиотеки есть ряд слабых сторон. Дело в том, что данная библиотека изменяет настройки по умолчанию Таймера 1 (Timer 1) и Таймера 2 (Timer 2) платы Arduino. В связи с этим вы уже не сможете, к примеру, использовать библиотеку для управления серводвигателем или другие библиотеки, задействующие эти таймеры платы Arduino. Также функция analogwrite на контактах 9,10,11 & 13 использует Timer 1 и Timer 2, следовательно, вы уже не сможете формировать SPWM сигнал (синусоидальный ШИМ сигнал) на этих контактах.
Но преимуществом этой библиотеки является то, что она не мешает работа Таймера 0 (Timer 0) платы Arduino, который в нашем случае является более важным чем Timer 1 и Timer 2 потому что в этом случае вы можете без проблем использовать функцию задержки (delay) и функцию millis(). Также контакты 5 и 6 управляются Таймером 0, поэтому мы без проблем сможем использовать на этих контактах функцию analogwrite или осуществлять управление сервомотором.
Формирование синусоидальной волны (колебания) с помощью Arduino
Что такое SPWM сигнал
SPWM расшифровывается как Sinusoidal Pulse Width Modulation и переводится как синусоидальная широтно-импульсная модуляция (синусоидальная ШИМ). Этот сигнал в определенной степени похож на обычный ШИМ сигнал, но в нем коэффициент заполнения контролируется таким образом чтобы получить среднее напряжение похожее на синусоидальную волну. Например, при коэффициенте заполнения (скважности) 100% среднее выходное напряжение будет 5V, а при коэффициенте заполнения 25% оно будет всего лишь 1.25V, таким образом, управляя скважностью (коэффициентом заполнения) мы можем получить заранее определенные изменяемые значения среднего напряжения, то есть синусоидальную волну. Этот метод обычно используется в инверторах.
Принцип формирования SPWM сигнала показан на следующем рисунке.
Преобразование SPWM сигнала в синусоидальную волну
Преобразование SPWM сигнала в синусоидальную волну обычно требует использования схемы H-моста (H-bridge), которая состоит минимум из 4-х переключателей мощности (power switches). Подобные схемы обычно используются в инверторах. Мы не будем в статье подробно рассматривать эти вопросы поскольку нам с помощью нашей синусоидальной волны не нужно запитывать какое-либо устройство, нам всего лишь нужно ее сформировать. К тому же с помощью H-моста невозможно получить чистую синусоидальную волну – для этой цели необходимо использовать фильтр нижних частот (ФНЧ), состоящий из конденсаторов и индуктивностей.
Библиотека для управления частотой ШИМ сигнала в Arduino
По представленной ссылке вы скачаете библиотеку в виде ZIP файла. После извлечения информации из этого ZIP файла вы получите каталог (папку) с именем PWM. Перейдите в папку с библиотеками Arduino IDE (для пользователей операционной системы Windows эта папка будет располагаться по адресу C:\Users\User\Documents\Arduino\libraries) и скопируйте туда эту PWM папку. Возможно, в библиотеках Arduino IDE у вас уже есть папка с именем PWM – в этом случае вам ее необходимо заменить на новую (скачанную) папку.
Объяснение программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы рассмотрим его наиболее важные фрагменты. Перед компиляцией программы не забудьте добавить в библиотеки Arduino указанную библиотеку Arduino PWM Frequency Library, иначе компиляция программы будет выдавать вам ошибку.
Нам необходимо формировать ШИМ сигнал с изменяемой частотой на контакте 9 платы Arduino. Эта частота будет устанавливаться с помощью углового кодера, а ее значение будет отображаться на экране ЖК дисплея. А когда ШИМ сигнал будет формироваться на контакте 9 он также будет создавать прерывание на контакте 2 поскольку мы соединили оба этих контакта. Используя это прерывание мы можем управлять частотой SPWM сигнала, который будет формироваться на контакте 5.
Как обычно вначале программы мы должны подключить используемые библиотеки. Библиотека для работы с ЖК дисплеем встроена в Arduino IDE, а библиотеку для изменения частоты ШИМ сигнала мы только что скачали.
Генератор сигналов на Arduino и DDS модуле AD9833
Если вы решили всерьез заняться радиолюбительством, то вам в вашей мастерской никак не обойтись без генератора сигналов (функционального генератора, Function Generator). Промышленные образцы подобных генераторов могут стоить достаточно дорого, собственными силами генератор сигналов изготовить значительно дешевле.
В этой статье мы рассмотрим создание простейшего генератора сигналов на основе платы Arduino и DDS модуля AD9833, с помощью которого можно будет формировать синусоидальный, прямоугольный и треугольный сигналы с частотой до 12 МГц. Тестировать работу нашего генератора сигналов мы будем с помощью осциллографа, который можно также собрать на основе платы Arduino. Также на нашем сайте вы можете посмотреть проект генератора сигналов синусоидальной и прямоугольной формы только на основе платы Arduino, без использования дополнительных модулей.
Что такое генератор сигналов на основе прямого цифрового синтеза (DDS)
Как следует из названия, генератор сигналов может формировать различные виды сигналов заданной частоты. Аббревиатура DDS (Direct Digital Synthesis) означает прямой цифровой синтез. При этом способе любой сигнал можно сформировать в цифровом виде, а затем преобразовать его в аналоговый вид с помощью цифро-аналогового преобразователя (ЦАП). Чаще всего в современной электронике этот метод используется для формирования синусоидальных сигналов, но с его помощью можно формировать и прямоугольные, и треугольные сигналы, и вообще сигналы любой формы. Поскольку формирование сигналов происходит в цифровой форме в модуле DDS, то можно не только очень быстро переключаться между сигналами различной формы, но и также очень быстро изменять их частоту.
Принцип работы генератора сигналов AD9833
«Сердцем» нашего проекта будет микросхема AD9833, представляющая собой программируемый генератор сигналов и отличающаяся низким энергопотреблением. Микросхема (модуль) AD9833 способна формировать сигналы синусоидальной, прямоугольной и треугольной формы с максимальной частотой до 12 МГц. Таким образом, с помощью программы можно изменять частоту, фазу и форму сигналов на выходе данной микросхемы. Управляется данная микросхема по 3-х проводному интерфейсу SPI, что делает взаимодействие с ней достаточно простым. Функциональная схема микросхемы AD9833 приведена на следующем рисунке.
Принцип работы данной микросхемы достаточно прост. Если мы посмотрим на ее функциональную схему, то мы обнаружим в ее составе аккумулятор фазы (Phase Accumulator), чья работа состоит в сохранении всех возможных значений синусоидальной волны, начиная от 0 to 2π. Также в ее схеме присутствуют SIN ROM, который преобразует информацию о фазе в амплитуду, и 10-битный ЦАП, который принимает данные от SIN ROM и преобразует их в соответствующие аналоговые значения напряжения, которые и подаются на выход микросхемы. На выходе микросхемы присутствует программно управляемый выключатель – его можно включать и выключать. Его роль мы рассмотрим далее в статье.
Основные особенности модуля AD9833:
Вкратце принцип работы данной микросхемы мы рассмотрели, более подробную информацию об этом вы можете посмотреть в даташите на микросхему AD9833.
Расположение выводов микросхемы AD9833 показано на следующем рисунке.
Назначение выводов микросхемы:
VCC – плюс питания для цифровых и аналоговых цепей генератора.
DGND – цифровая земля.
SDATA – вход данных интерфейса SPI. Передача осуществляется 16-битными словами.
SCLK – вход тактового сигнала SPI. Используется второй режим работы: (CPOL = 1, CPHA = 0).
FSYNC – выбор микросхемы. Перед началом передачи данных должен быть установлен в 0, по завершении в 1.
AGND – аналоговая земля.
OUT – выход генератора.
Необходимые компоненты
Схема проекта
Схема генератора сигналов на основе платы Arduino и DDS модуле AD9833 представлена на следующем рисунке.
«Сердцем» схемы является модуль AD9833, который подключен к плате Arduino. Для питания схемы используется регулятор напряжения LM7809 с подключенными к нему развязывающими конденсаторами, которые используются для фильтрации нежелательных шумов, способных оказать негативное воздействие на формируемые сигналы.
Управляет работой всей схемы плата Arduino. Для отображения информации используется OLED дисплей 128х64. Для изменения частоты формируемого сигнала мы используем три переключателя: первый устанавливает частоту в Гц, второй – в кГц, а третий – в МГц. Также мы используем кнопку для включения или отключения выхода схемы. И, наконец, в схеме используется инкрементальный энкодер (rotary encoder) вместе с подключенными к нему подтягивающими резисторами (чтобы правильно работали переключатели). Инкрементальный энкодер используется для изменения частоты, а тактильный переключатель внутри него используется для выбора формы сигнала.
Объяснение программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты. Комментарии к коду программы переведены в конце статьи, в этом разделе я их оставил на английском языке.
Для написания кода программы нам прежде всего необходимо скачать необходимые библиотеки по следующим ссылкам:
Далее в программе мы подключим заголовочные файлы используемых библиотек. Библиотека AD9833.h используется для работы с DDS модулем AD9833, а библиотека math.h – для выполнения ряда математических операций.
- генератор сигналов произвольной формы 33511b
- генератор сигналов сложной формы со сверхнизким уровнем искажений ds360