Как сделать прямоугольный сигнал

Добавил пользователь Евгений Кузнецов
Обновлено: 10.09.2024

Как в любом американском журнале, на первом месте реклама.

Тут же была реклама трансивера неизвестной мне марки, но, как оказалось, made in Japan. Непременно о нем напишу, так как его схемотехника довольно интересна и ее элементы вполне можно использовать и сейчас.

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

Аудио генераторы существуют уже довольно давно. В 1930-х годах RCA и другие компании создавали перестраиваемые звуковые генераторы, используя биения двух высокочастотных генераторов.

Функциональный генератор — изобретение эпохи транзисторов. Впервые созданный Wavetek и другими фирмами, типичный генератор функций перекрывал звуковой диапазон, вырабатывая сигналы синусоидальной, прямоугольной и треугольной формы.

Описанный в статье простой генератор формирует синусоидальные, прямоугольные и треугольные колебания. Генератор охватывает частоты от 10 Гц до 100 кГц в четырех диапазонах. Предусмотрены отдельные выходы синусоидальных и прямоугольных колебаний с индивидуальной регулировкой уровня. Устройство может питаться от двух 9-вольтовых батарей или от источника постоянного тока от 12 до 24 вольт.

Основой генератора является микросхема 8038 (ICL8038, выпускается до сих пор), которая в 1977 году считалась довольно сложной схемой — она содержит 55 транзисторов и диодов, а также около 50 других компонентов.

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

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

Как следует из рис. 7., наиболее сложной частью является аппроксиматор для получения синусоидального сигнала из треугольного (sine converter). Треугольный сигнал снимается на вход составного эмиттерного повторителя буферного усилителя тока (BUFFER AMPLIFIER). Прямоугольный сигнал снимается с одного из выходов триггера (FLIP-FLOP) и попадает на вход эмиттерного повторителя, а затем на усилитель с открытым выходом.

Схема генератора на рис. 8.

Регулировка частоты внутри диапазона осуществляется с помощью R1, которому на каждом диапазоне подключаются калибровочные подстроечные резисторы для установки границ диапазонов. Секцией переключателя S1b осуществляется переключение диапазонных конденсаторов. Выход треугольных импульсов не используется, так как автор не видел ему применение при наладке аудио устройств.

Прочитав про этот генератор я решил посмотреть, а применяется ли сейчас эта микросхема. Оказывается очень даже. На Али эта микросхема стоит от 60р/шт, а кроме того продается большое количество наборов для сборки генераторов на ее основе.

На хабре было несколько статей по преобразованию Фурье и о всяких красивостях типа Цифровой Обработки Сигналов (ЦОС), но неискушённому пользователю совершенно не понятно, зачем всё это нужно и где, а главное как это применить.



АЧХ шума.

Лично мне после прочтения этих статей (например, этой ) не стало понятно, что это и зачем оно нужно в реальной жизни, хотя было интересно и красиво.
Хочется не просто поглядеть красивые картинки, а так сказать, ощутить нутром, что и как работает. И я приведу конкретный пример с генерацией и обработкой звуковых файлов. Можно будет и послушать звук, и поглядеть его спектр, и понять, почему это так.
Статья не будет интересна тем, кто владеет теорией функций комплексной переменной, ЦОС и прочими страшными темами. Она скорее для любопытствующих, школьников, студентов и им сочувствующих :).

Пару слов о матчасти

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


Гармонические колебания

Т.е. фактически график синуса получается из вращения вектора, который описывается формулой:

f(x) = A sin (ot + f),

где A — длина вектора (амплитуда колебаний), f — начальный угол (фаза) вектора в нулевой момент времени, o — угловая скорость вращения, которая равна:

o=2 pf, где f — частота в Герцах.

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

Магия начинается тогда, когда оказывается, что представление абсолютно любого сигнала можно представить в виде суммы (зачастую бесконечной) различных синусоид. Иначе говоря, в виде ряда Фурье.
Я приведу пример из английской википедии. Для примера возьмём пилообразный сигнал.


Пилообразный сигнал

Его сумма будет представлена следующей формулой:


Если мы будем по очерёдно суммировать, брать сначала n=1, затем n=2 и т.д., то увидим, как у нас гармонический синусоидальный сигнал постепенно превращается в пилу:

Наверное красивее всего это иллюстрирует одна программа, найденная мной на просторах сети. Выше уже говорилось, что график синуса является проекцией вращающегося вектора, а как же быть в случае более сложных сигналов? Это, как ни странно, проекция множества вращающихся векторов, а точнее их суммы, и выглядит это всё так:


Вектора рисуют пилу.

Вообще рекомендую сходить самим по ссылке и попробовать самим поиграться с параметрами, и посмотреть как меняется сигнал. ИМХО более наглядной игрушки для понимания я ещё не встречал.

Ещё следует заметить, что есть обратная процедура, позволяющая получить из данного сигнала частоту, амплитуду и начальную фазу (угол), которое называется Преобразование Фурье.



Разложение в ряд Фурье некоторых известных периодических функций (отсюда)

Я детально на нём останавливаться не буду, но покажу, как это можно применить по жизни. В списке литературы порекомендую то, где можно почитать подробнее о матчасти.

Переходим к практическим упражнениям!

Мне кажется, что каждый студент задаётся вопросом, сидя на лекции, например по матану: зачем мне весь этот бред? И как правило, не найдя ответа в обозримом будущем, к сожалению, теряет интерес к предмету. Поэтому я сразу покажу практическое применение данных знаний, а вы эти знания уже будете осваивать сами :).

Всё дальнейшее я буду реализовывать на сях. Делал всё, конечно, под Linux, но никакой специфики не использовал, по идее программа будет компилироваться и работать под другими платформами.

Для начала напишем программу для формирования звукового файла. Был взят wav-файл, как самый простой. Прочитать про его структуру можно тут.
Если кратко, то структура wav-файла описывается так: заголовок, который описывает формат файла, и далее идёт (в нашем случае) массив 16-ти битных данных (остроконечник) длиной: частота_дискретизации*t секунд или 44100*t штук.

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

Сгенерируем двухсекундный звуковой файл с чистым синусом частотой 100 Гц. Для этого модифицируем программу таким образом:

Обращаю внимание, что формула чистого синуса соответствует той, о которой мы говорили выше. Амплитуда 32000 (можно было взять 32767) соответствует значению, которое может принимать 16-ти битное число (от минус 32767 до плюс 32767).

В результате получаем следующий файл (можно его даже послушать любой звуковоспроизводящей программой). Откроем данный файл audacity и увидим, что график сигнала в действительности соответствует чистому синусу:



Чистый ламповый синус

Поглядим спектр этого синуса (Анализ->Построить график спектра)



График спектра

Виден чистый пик на 100 Гц (логарифмический масштаб). Что такое спектр? Это амплитудно-частотная характеристика. Существует ещё фазочастотная характеристика. Если помните, выше я говорил, что для построения сигнала надо знать его частоту, амплитуду и фазу? Так вот, можно из сигнала получить эти параметры. В данном случае у нас график соответствий частот амплитуде, при чём амплитуда у нас не в реальных единицах, а в Децибелах.


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

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

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

Пишем свой анализатор спектра

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

Поскольку я прекрасно понимаю, что тут портянки кода размещать нет смысла, те, кому реально интересно — сами найдут и поковыряют, а тем, кому это неинтересно, будут скучать, то я остановлюсь только на основных моментах написания анализатора спектра wav-файла.

Во-первых, нам wav-файл необходимо читать. Там необходимо прочитать заголовок, чтобы понять, что содержит данный файл. Я не стал реализовывать море вариантов чтения данного файла, а остановился только на одном. Пример чтения файла был взят отсюда практически без изменений, ИМХО — отличный пример. Там же есть реализация на питоне.

Следующее, что нам нужно, это быстрое преобразование Фурье. Это то самое преобразование, которое позволяет получить из конечного набора точек вектора исходных сигналов. Пусть вас пока это не пугает, дальше я объясню.
Опять же, велосипед изобретать не стал, а взял готовый пример отсюда.

Я понимаю, что чтобы объяснить, как работает программа, надо объяснить, что такое быстрое преобразование Фурье, а это как минимум ещё на одну некислую статью.

Для начала алокируем массивы:

Скажу лишь, что в программе мы читаем данные в массив длиной size_array (которое берём из заголовка wav-файла).

Массив для быстрого преобразования Фурье должен представлять собой последовательность , где fft_size=1

Определим аналитически прямоугольный импульс следующим образом:

где А – амплитуда импульса;

t - длительность импульса (рисунок 16).


Рисунок 5 – Прямоугольный импульс

По общей формуле прямого интегрального преобразования Фурье (5) для спектра прямоугольного импульса получим:

где - площадь импульса.

Для построения графика спектра (рисунок 6) рассмотрим несколько частных случаев:

1) при , в силу свойства предела ;

2) нули функции определятся из условия:


Рисунок 7 – Спектр прямоугольного импульса

Рассмотрим произведение где длительность импульса, ширина спектра (f - циклическая частота). Длительность прямоугольного импульса определена и равна . Что же касается спектра, то он безграничен, хотя спектральная плотность убывает с ростом частоты.

Будем считать (произвольно), что верхней границей спектра, определяющей его ширину, является частота, при которой спектральная функция первый раз обращается в нуль, то есть . Ширина спектра равна разности частот:

Таким образом, произведение ширины спектра прямоугольного импульса на его длительность есть величина постоянная, равная единице.

Дельта–функция

Аналитически дельта–функция определяется в виде:

Осуществить переход от прямоугольного импульса к дельта–функции возможно при выполнении следующих условий:

Действительно, при амплитуда импульса А будет стремиться к бесконечности, однако его площадь, согласно свойству дельта–функции (1), останется величиной постоянной:

Спектр дельта–функции, в соответствии с (28), равен:


Рисунок 8 – Белый спектр

Интересно проследить деформацию спектра прямоугольного импульса при уменьшении его длительности. При спектральная функция становится все более пологой и в пределе стремится к единичному значению (рисунок 9).


Рисунок 9 – Деформация спектра

Найдем для дельта–функции произведение . Длительность ее известна и стремится к нулю. Наибольшей будем считать частоту, при которой , то есть:

откуда . Естественно, что при .

В результате . Вновь получили константу, несмотря на то, что спектр по частоте безграничен.


Здравствуйте. Как мне преобразовать входной сигнал (синусоидальный, пропущенный через диодный мост) в импульсный прямоугольный, но нужно чтобы выполнялось условие: положительный фронт выходного прямоугольного сигнала должен наступать в момент перехода входного сигнала через точку 0 вольт, как показано на прикреплённом рисунке. Скважность (или длина импульса) выходного сигнала не важна, нужно только точно поймать эту нулевую точку входного сигнала. Пробовал пропускать сигнал через к155ла3, но положительный фронт импульса наступает не там где надо, я незнаю как сместить мне фазу импульса и точно её выставить. Какие вы можите предложить варианты схемного решения? Если не трудно, нарисуйте в пайнте схемку. Спасибо!

(Для Миша Смирнов.) Если бы Вы описали задачу поконкретнее было бы легче что-то конкретное посоветовать. Какая частота? Какие напряжения, амплитуда, и что считать нулем, уровни гармоник и помех? Как должна схема себя вести в момент включения? Какие ограничения по цене деталей, размере устройства? .

Владимир Полонский Мастер (1604) а уровень импульсов соответствует входному уровню синусоиды, или тоже не важно? и примерно какие уровни?

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

telemaster Мастер (1264) Дык схем в сети море, от самых простейших, до на МП. Поищи "тиристорный регулятор мощности"

тиристор никогда прямоугольный сигнал не сделает. График его открытия как у транзистора (парабола) со ступенькой.

telemaster Мастер (1264) Так никто и не говорил про то что бы сделать генератор на тиристоре, я сказал где реализовано доступно. Только дело в том что в тиристорных схемах управление прямоугольником, но с синхронизацией по сети, что бы обеспечить открытие тиристора именно при переходе через ноль сети.

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

Если использовать копоратор, то всё равно будет не большая ошибка при контроле нуля. Если это не критично, можно ставить компоратор. Если критично, то генератор с ФАВЧ с выходом прямоугольного импульса. Но здесь есть недостаток. Генератор будет занимать некоторое время для выхода на режим. Судя по сигналу - это случайно не выпрямленный сигнал?

561тл1. фронт прямоугольника будет в том месте, до куда задержку выставить тем же ТЛ1. можно и в старт полусинусоиды.

Читайте также: