Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Трёхфазный ИНЧ генератор треугольного сигнала
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Вопросы аналоговой техники
Tuvalu
Здравствуйте!
Хорошо известна схема генератора треугольного сигнала, построенная по принципу "интегратор-компаратор" - см. рисунок. Требуется подобный, но трёхфазный ИНЧ генератор (частотой 0,1...10 Гц) - три выхода с разностью фаз в 120°. Крайне желательно частоту (Rate) регулировать одинарным потенциометром, уровень вых. сигнала (Depth) - как получится; видимо, придётся ставить что-то вроде (синхронно) управляемых напряжением аттенюаторов (потенциометров, VCA...).
Нажмите для просмотра прикрепленного файла
kovigor
Цитата(Tuvalu @ May 2 2015, 02:17) *
ИНЧ генератор

А что такое "ИНЧ" ? А так - проще всего сделать на МК, например, с тремя восьмиразрядными портами. На каждый порт по ЦАП'у на резисторах. Таблицы значений сигналов (три) в памяти МК. Дальше - циклический перебор и выдача на ЦАПы значений из таблиц. Для таких частот - самое лучшее и простое, ИМХО. Регулировать частоту программно, потенциометром, подключенным к АЦП МК, или же меняя тактовую частоту МК (тактируя его от внешнего генератора с изменяемой частотой) ...
Меджикивис
[Это смотря какая частота нужна автору. А то и быстродействия может не хватить.](зачеркнуто) Сорь, что-то невнимательно прочитал топик...

Цитата(kovigor @ May 2 2015, 12:57) *
Таблицы значений сигналов (три) в памяти МК.
Одна. И затем циклический выбор из нее по трем указателям, смещенным на треть.
Но поскольку нужен треугольник, то можно сделать еще проще: просто инкремент-декремент трех переменных.

Цитата(kovigor @ May 2 2015, 12:57) *
проще всего сделать на МК, например, с тремя восьмиразрядными портами.
Для 10 Гц проще взять ЦАПы с SPI, тогда и одним портом обойтись можно.
Tuvalu
Цитата(kovigor @ May 2 2015, 13:57) *
А что такое "ИНЧ" ?

Инфра Низко Частотный.
Цитата(Меджикивис @ May 2 2015, 15:29) *
Это смотря какая частота нужна автору. А то и быстродействия может не хватить.

Я же написал: 0,1...10 Гц.

Так и знал. Я не разбираюсь в МК. Вообще. Требуется аналоговое решение.
Меджикивис
Для низкочастотного диапазона микроконтроллер - вне конкуренции.
Аналоговое решение будет чрезвычайно громоздким и нестабильным.

Если Вы не можете программировать, то предлагаю собрать "на рассыпухе" - то есть на простых логических элементах, а-ля К155, К176 или К561.
Берете три реверсивных счетчика, подключаете к ним три ЦАП-а и еще немного логических элементов, переключающие счет вперед-назад.

Чисто аналоговое решение может быть таким:
Этот самый генератор, который на вашем рисунке. И к нему еще два таких же интегратора, но переключаемые не компараторами, а триггерами Шмитта, настроенными на срабатывание на 1/3 от величины тругольника, даваемого первым.
Один от прямого сигнала, другой - от инвертированного. Таким образом, один дополнительный интегратор будет срабытывать на 1/3 нарастания исходного треугольника, а другой - на 1/3 спада.
Оба дополнительных интегратора должны питаться тем же задающим напряжением с потенциометра, нужно только ввести ключи, перевертывающие полярность этого напряжения (заряд-разряд).
На приведенной схеме это автоматически получается от компаратора, но тут мы так прямо завести не можем, потому что для трех интеграторов переворот полярности происходит не одновременно, а у каждого в свой момент.
То есть надо полярность менять, а абс.величину оставить одну и ту же - задаваемую одною ручкой.
Но по точности, стабильности и габаритам аналоговое решение будет значительно проигрывать ЦАП-ам.




Tuvalu
Меджикивис, спасибо!


Цитата(Меджикивис @ May 2 2015, 18:57) *
Для низкочастотного диапазона микроконтроллер - вне конкуренции.
Аналоговое решение будет чрезвычайно громоздким и нестабильным.

Да, уж... А насколько сложна поставленная задача для первого проекта на МК? Может, и правда, начать с этого, как по-вашему?
Сколько примерно потребуется времени при боле-менее регулярных занятиях "по вечерам" - неделя, месяц, год? Какой МК оптимален для этой задачи? Можно ли уложиться в 1мА потребления?
Меджикивис
Я думаю, что взявшись за микроконтроллеры, Вы значительно выиграете: в дальнейшем МК дадут Вам много преимуществ.
Кроме того, нету лучшего способа изучить что-нибудь, чем иметь хорошую задачу, которую на практике хотелось бы решить. И такая задача у Вас как раз есть sm.gif
"Рекомендовать" не буду, скажу только, как сам начинал.
Я работаю с микроконтроллерами PIC. Этот выбор сделал потому, что для них есть язык программирования Pic-Basic Pro, а Бейсик я уже знал хорошо.
Чтобы контроллер работал, созданный код программы надо поместить в его постоянную память, то есть запрограммировать контроллер, говорится "прошить" микросхему.
Для этого нужен программатор. Для PIC программатор чрезвычайно прост, пара транзисторов, несколько диодов. Подключается к компьютеру через COM-порт. Софт для такого программатора есть бесплатный, я пользуюсь "IC-prog".
Ну и на этом для начала достаточно. У меня ушла приблизительно неделя и по большей части на подборку программатора и софта к нему.
Продаются современные универсальные программаторы, подключаются через USB, к ним прилагается весь необходимый софт, но такая коробочка стоит дорого, под 10 тыс.руб. ориентировочно.

Сейчас еще появился модульный микроконтроллерный набор Ардуино, это вообще почти как кубики "Лего". Многим нравится, но я не пробовал никогда, так что об этом расскажут другие. Мне и PIC-ов вполне достаточно. Тем более, что давние (простые и дешевые) PIC-и, такие как PIC16F84A, весьма "дубовые" - в смысле устойчивы к помехам и как раз годятся для моих задач.
Для вашей тоже.



Цитата(Tuvalu @ May 2 2015, 18:48) *
Можно ли уложиться в 1мА потребления?
Можно.
PIC-и с этой стороны не очень, есть другие серии микроконтроллеров, особо микромощные. Народ подскажет, надеюсь.

stells
Цитата(Меджикивис @ May 2 2015, 20:32) *
PIC-и с этой стороны не очень, есть другие серии микроконтроллеров, особо микромощные.

сгенерить 10Гц особая скорость не нужна, а с часовым кварцем наверное любой контроллер в 1мА уложится
Меджикивис
Ему же не прямоугольник надо 10 Гц.
Пусть возьмем 10-разрядный ЦАП. Значит нужно сделать 1000 шагов за полупериод - 20кГц.
А если это ЦАП с последовательной загрузкой, 10 бит - еще в 10 раз больше - 200 кГц. Да еще на вычисления тоже что-то нужно оставить.
Вычисления по-минимуму следующие:
1. Переслать по указателю очередной бит в порт
2. Установить клок
3. Сбросить клок
4. Инкрементировать указатель
5. Проверить, все ли биты переданы
6. если нет, перейти к п.1
Если каждая из команд выполняется только за один такт, то 200кГц * 6 = 1200кГц
Всё это- на 3 ЦАПа - 3.6 Мгц итого.
Как раз в 100 раз поболее часового кварца sm.gif

kovigor
Цитата(Tuvalu @ May 2 2015, 17:48) *
А насколько сложна поставленная задача для первого проекта на МК?

Тривиальная задача. Берете какую-нибудь ATMega8515 и делаете сначала один канал, а не три, это совсем просто. Сделаете и все сами поймете. Программатор - PonyProg или AVReal. Среда разработки - Codevision. С нуля (полного) можно сделать недели за две - три ...
Plain
Возвращаясь к тематике раздела форума, т.е. первоначально запрошенному аналоговому способу — например, решение в лоб:

1) регуляторы частоты и амплитуды буферируются — сигналы +F и +A соответственно;

2) инвертирующими усилителями (инверторами) создаются сигналы –F и –A;

3) +F и –F, через аналоговый ключ SW1, переключающий между ними, поступают на вход интегратора (резистор);

4) +A и ноль, через аналоговый ключ SW2, переключающий между ними, поступают на вход компаратора интегратора;

5) выход этого компаратора соответствующе переключает SW1 и SW2;

6) полученный таким образом на выходе интегратора треугольник вдвое ниже рабочей частоты преобразуется в пилу номинальной частоты — посредством добавления инвертора относительно A/2 и аналогового ключа SW3, переключающего компаратором интегратора между ними;

7) из полученного таким образом линейного сигнала фазы S1 создаётся сдвинутый на 120° сигнал S2 — прибавлением к нему одним суммирующим усилителем X2a=S1–A/3, а вторым X2b=S1+2A/3, и компаратора X2a>0, переключающего аналоговым ключом SW4 между ними;

8) аналогично создаётся и сигнал S3, т.е. сдвинутый на 240° — прибавлением X3a=S1–2A/3 и т.п.;

9) сигналы S1, S2 и S3 одинаковым образом преобразовываются в треугольные — посредством добавления к ним инверторов относительно A/2 и компараторов Sx>A/2, переключающих аналоговыми ключами между ними.
agregat
У решения с микроконтроллером есть один недостаток, это дискретность выходного сигнала. Неизвестно до какой гармоники автору нужен чистый сигнал пилы.
А вот аналоговое решение по моему довольно простое. Ставим три генератора пилы. И зажимаем входы компараторов аналоговыми ключами. В начальном положении компараторы не работают так как их входы подключены на землю аналоговыми ключами.
Далее берем конденсатор и к нему источник тока который его заряжает. Получаем линейно растущее напряжение по времени.
Подключаем к нему три компаратора,у каждого свой порог соответствует фазе. Конденсатор в начальном положении подключен кнопкой к земле, то есть разряжен.
После чего отпускаем кнопку пуска.
1. Конденсатор начинает заряжаться постоянным током и на нем линейно растет напряжение по времени. Компараторы срабатывают один за другим и отпускают по очереди генераторы пилы. Генераторы пилы запущенные в разные моменты времени вырабатывают пилу со сдвигом по фазе.
2. Разброс по фазе регулируется порогами срабатывания компараторов подключенных к конденсатору.

Если задача сделать разбег по фазе регулируемым одним резистором тут нана подумать.
Все.
stells
Цитата(agregat @ May 3 2015, 08:43) *
Генераторы пилы запущенные в разные моменты времени вырабатывают пилу со сдвигом по фазе.

чем обеспечивается постоянство фазы?
Меджикивис
Цитата(agregat @ May 3 2015, 08:43) *
У решения с микроконтроллером есть один недостаток, это дискретность выходного сигнала.
Да, есть такое, и это принципиально. Цифровые схемы всегда работают шажками, ступенчато. Но размер этих шагов (дискрету) можно сделать достаточно мелким, чтобы он был на уровне допустимого шума.
В противном случае, сгладить гармоники, начинающиеся с двухсотой - не составляет значительной проблемы.



Цитата(stells @ May 3 2015, 09:30) *
чем обеспечивается постоянство фазы?
Тогда уж проще получить со счетчика Джонсона три строго смещенных прямоугольника и пропустить их через интеграторы.
Однако, тогда встает задача поддержания постоянства амплитуды с изменением частоты. Видимо, придется вводить следящую схему на каждом интеграторе. А ведь должны быть такого рода специализированные микросхемы... АРУ это частая задача.


Меджикивис
Итак, целый день ломания головы дал изумительно простое и красивое решение sm.gif

Нажмите для просмотра прикрепленного файла

Я думаю, всё понятно без особых слов. Со сдвигового регистра в режиме деления на 3 получаем три прямоугольника, смещенные на 120 град.
Идея заключается в том, чтобы сложить их на элементах "исключающее или" с частотой, немного отличающейся. В результате того, что частоты медленно "плывут" друг по другу, на выходах "исключающего или" создается ШИМ, который надо сгладить - и получатся медленные треугольники, смещенные на треть, с частотой, равной разнице исходных частот.

Триггер Шмитта применен в качестве инвертора потому, что дальше на них можно сделать генераторы частот.
Как и требовалось, перестройка одной частоты, одной ручкой.


примечание: Частота сравнения (10.01 кГц по рис.) должна иметь скважность строго 2, иначе треугольник не получится.
Точную скважность 2 проще всего получить, пропустив сигнал через счетный триггер.

TSerg
Ok
Меджикивис
Дальнейшее развитие идеи.
Можно заметить, что получение достаточно высокой, но стабильно отличающейся на сотые доли частоты, на практике представляет собой определенную трудность. И если 10.01 кГц получить еще можно, то 10.001 это уже большая проблема.
Я бы предложил сделать так: поставить на вход каждой частоты по счетчику-делителю, например 4024 (на 128), а на вход частоты сравнения - еще и делитель на 3 (проще всего - такой же сдвиговый регистр).
В результате обе линии можно запустить от одного генератора частоты - и они, имея одинаковый коэффициент деления, будут работать синхронно.
А к одному из счетчиков на вход добавлять поштучно дополнительные импульсы. Для этого можно использовать оставшийся (четвертый) элемент "исключающее или"

С каждым дополнительным импульсом частоты на выходе будут сдвигаться на 1/384 периода ШИМ. То есть маленькими такими шажками, которые должен давать низкочастотный мультивибратор. Его частотой и будет определяться частота треугольников.
А высокая частота, питающая оба счетчика, определит период ШИМа.

Впрочем, автор может пойти в формировании частот аналоговым путем и добавить к частоте маленькую дробь при помощи однополосного модулятора например, но так он в 1 мА вряд ли уложится, мне думается.
Tuvalu
Спасибо всем за идеи!

Цитата(Меджикивис @ May 4 2015, 01:19) *
Итак, целый день ломания головы дал изумительно простое и красивое решение sm.gif

Меджикивис, спасибо за такое деятельное участие и за очень оригинальную идею!
Пока только осваиваю смешанное а/ц моделирование, поэтому спрошу: а сигнал точно должен получиться треугольным?

Чистота треугольника не очень важна, 10% отклонения от идеала - с головой. Это, помимо прочего, означает, что тактовую частоту можно смело понижать на полтора-два порядка. Правда, для идеи №2 (назовём её так) это уже не важно.

Цитата
Я бы предложил сделать так: поставить на вход каждой частоты по счетчику-делителю, например 4024 (на 128), а на вход частоты сравнения - еще и делитель на 3 (проще всего - такой же сдвиговый регистр).

Что такое "вход каждой частоты" - входы "искл. ИЛИ"?

А как такая идея. Четверть периода сформировать простейшим ЦАП-ом - двоично-десятичным дешифратором CD4028 с R-цепочкой на выходах. Вторая четверть - реверсирование. 3 и 4 - то же самое + аналоговое инвертирование. Итого 40 ступеней на период. Можно ли всё это как-то упростить (уменьшить кол-во корпусов), учитывая, что таких блоков должно быть 3?
Меджикивис
Цитата(Tuvalu @ May 4 2015, 14:55) *
а сигнал точно должен получиться треугольным?
При скважности сигнала, равной 2, будет точно треугольным. А после триггеров и регистров он как раз и есть 2.

Цитата(Tuvalu @ May 4 2015, 14:55) *
Чистота треугольника не очень важна, 10% отклонения от идеала - с головой.
Тогда варианта дешевле и беспроблемнее, чем с выше сказанным сглаживанием ШИМ - сомневаюсь чтоб можно было найти.

Цитата(Tuvalu @ May 4 2015, 14:55) *
Что такое "вход каждой частоты"
Это линии, где подписано на рисунке: "30 кГц" и "10.01 кГц".

Цитата(Tuvalu @ May 4 2015, 14:55) *
А как такая идея. Четверть периода сформировать простейшим ЦАП-ом - двоично-десятичным дешифратором CD4028 с R-цепочкой на выходах.
Можно использовать его, но он даст только 10 ступеней и потребует подбора 10 резисторов.
А можно навесить резисторы без дешифратора - прямо на выходы двоичного счетчика. И если эти резисторы будут в пропорции 1кОм, 2кОм, 4кОм, 8кОм (8 - на младший разряд), то вместе они обеспечат 16 ступеней выходного напряжения.
Собственно, это и будет простенький самодельный ЦАП. Но больше 16 ступеней сделать уже трудно: придется подгонять резисторы очень точно.

Цитата(Tuvalu @ May 4 2015, 14:55) *
Вторая четверть - реверсирование. 3 и 4 - то же самое + аналоговое инвертирование. Итого 40 ступеней на период.
Если учесть, что 3 является линейным продолжением 2, то проще формировать полупериод целиком. А количество ступеней наращивать, увеличивая разрядность счетчика. Понадобится всего еще один разряд, чтобы увеличить количество ступеней вдвое.
В любом случае, даже плохо фильтрованный ШИМ будет качественнее, чем зубчатая линия с 40 ступенями.

Цитата(Tuvalu @ May 4 2015, 14:55) *
Можно ли всё это как-то упростить (уменьшить кол-во корпусов), учитывая, что таких блоков должно быть 3?
Реверсивные счетчики не настолько сложны, сколько по мелочам громоздки. Потребуется "обвязка" из логических элементов, определяющая, достиг ли уже счетчик конца или начала, и при переключении направления не получится ли дополнительный перепад, по которому счетчик перекинется в следующее или предыдущее состояние, когда не надо. Мелочи конечно, но схема разрастается в некоторый "огород".
Кроме того, в КМОП-сериях реверсивные только четырехразрядные, это маловато; придется состыковывать их по два последовательно. В принципе не проблема, но опять же, лишний огород.
Счет в обратную сторону можно имитировать, подключив на выходы нереверсивного счетчика элементы "исключающее или" и получая при их помощи дополняющий код. Но - какая разница - все равно лишние корпуса микросхем-то ставить придется.
В сумме меньше по кол-ву корпусов, чем с ШИМ-ом, не получается, я уже это продумывал...

[добавлено:] А ведь со счетчиками придется продумывать еще - как заставить 3 счетчика считать синхронно, но с постоянным рассогласованием в 1/3? На это тоже логические элементы понадобятся вероятно...


ЦАПы хороши тем, что могут синтезировать произвольную форму, а решение с ШИМ-ом - треугольник только! - и баста. Но ведь в данном случае именно он Вам и нужен?

[добавлено:] ЦАП (не самодельный, а микросхема-ЦАП) хорош еще тем, что регулируя опорное напряжение, одно для всех трех, можно синхронно изменять амплитуду треугольника на всех трех выходах одной ручкой.
Но хотя этим микросхемы экономятся - в целом их получается больше, поскольку обеспечение работы ЦАПа сложнее.


Цитата(Меджикивис @ May 4 2015, 09:53) *
Я бы предложил сделать так: поставить на вход каждой частоты по счетчику-делителю, например 4024 (на 128)
Если ступенчатость треугольника Вам не вредит, то можно поставить К561ИЕ10 (4520) - два 4-разрядных счетчика в одном корпусе. Один из которых на одну линию, второй - на другую.
Вместе с делением регистром на 3, будет 16*3=48 ступеней.
В общей сумме получается 5 корпусов, включая триггеры Шмитта, на которых сделать мультивибраторы, задающие частоту.

[добавлено:] Вместо 4094 лучше применить 4018, она не требует дополнительного инвертора. (Сорь, не сразу обнаружил).

Plain
Аналоговый вариант №2, тоже практически в лоб:

1) регуляторы частоты и амплитуды буферируются — сигналы +F и +A соответственно;

2) инвертирующим усилителем (инвертором) создаётся сигнал –F;

3) +F и –F, через аналоговый ключ SW1, переключающий между ними, поступают на вход интегратора (резистор);

4) +A и ноль, через аналоговый ключ SW2, переключающий между ними, поступают на вход компаратора интегратора;

5) выход этого компаратора соответствующе переключает SW1 и SW2;

6) полученный на выходе компаратора прямоугольный сигнал втрое больше рабочей частоты подаётся на делитель на 3;

7) инвертором из треугольника +T с выхода интегратора создаётся сигнал –T;

8) три выхода схемы являются выходами трёх суммирующих усилителей S1, S2 и S3;

9) на примере усилителя S1 — 6 отрезков периода номинальной частоты t0...t5, созданных логикой из сигнала компаратора и делителя, коммутируются ею на его вход:

а) во время интервала t0 подключён +T;
б) во время интервала t1 подключён –T;
в) во время интервала t2 подключён +T;
г) во время интервала t3 подключён +T;
д) во время интервала t4 подключён –T;
е) во время интервала t5 подключён +T;
ё) во время интервала t1...t4 дополнительно подключён +2A.

На выходе схемы, соответственно, будут сигналы амплитудой –3A, поскольку суммирующие усилители инвертирующие.

Итого, один компаратор, 8 ОУ, аналоговые ключи и простая логика.
Меджикивис
Проект в Протеусе, 5 микросхем.
Сорь, но "высокочастотный" мультивибратор оказался суров, Протеус написал о нехватке ресурсов и отказался стартовать.
Пришлось заменить его стандартным источником частоты.
Tuvalu
Цитата(Меджикивис @ May 5 2015, 20:26) *
Проект в Протеусе, 5 микросхем.
Сорь, но "высокочастотный" мультивибратор оказался суров, Протеус написал о нехватке ресурсов и отказался стартовать.
Пришлось заменить его стандартным источником частоты.

Фантастика, целый проект! Даже не знаю, как Вас благодарить. Очень изящное решение - 5 корпусов, даже не верится.
Вообще-то, я давным-давно видел схему какого-то советского клавишного инструмента, так там 3F3 - как Вы удачно его назвали - был реализован ни рассыпухе - сложным образом закольцованные транзисторные мультивибраторы. Короче, вагон деталей, но работало, ведь. Вот, я и подумал, что должны существовать подобные схемы на ОУ. А тут дело приняло такой оборот... Ещё раз спасибо!

Plain, и Вам спасибо! Хотя, честно говоря, я пока ничего не понял. Попробую начертить то, что Вы описали словами, тогда и отреагирую как-то.
Меджикивис
Всегда пожалуйста sm.gif мне тоже было интересно)))

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.