реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Генератор sin, mega8
Alf162
сообщение Jul 24 2009, 15:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 16-07-09
Пользователь №: 51 316



Решил сделать генератор синусоиды на меге8. Я так понял, надо сделать ШИМ, а потом поставить RC-цепочку. Подскажите, правильно ли это и какие могут быть тогда параметры R и C.
СУВ
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 24 2009, 15:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Параметры RC зависят от частоты ШИМ. Критерий выбора RC состоит в том, что этот фильтр должен пропускать частоту синусоиды и фильтровать частоту ШИМ. Если-же синусоида нужна качественная, то одной RC не обойтись будет. Нужно ставить на выходе активный фильтр 3-4-го порядка.
Go to the top of the page
 
+Quote Post
Vishv
сообщение Jul 24 2009, 15:48
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 310
Регистрация: 11-07-09
Из: Екатеринбург
Пользователь №: 51 154



Ну вольному воля, но только учтите. что для того, чтобы получить более-менее приличную синусоиду таким способом RC-цепочек нужно будет поставить несколько, и соответственно размах синусоиды будет далеко не 5 В, да и работать это будет в узкой полосе частот.
Лучше всего поставить ЦАП, а управлять им по кодовой таблице хранящейся в памяти программ. Можно в качестве ЦАПа использовать один из портов процессора, повесив на его выходы цепочку R-2R и постфильтр.
Ну а с ШИМ - да разберитесь с Вы с ним наконец!
Go to the top of the page
 
+Quote Post
stells
сообщение Jul 24 2009, 15:58
Сообщение #4


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Vishv @ Jul 24 2009, 19:48) *
Ну вольному воля, но только учтите. что для того, чтобы получить более-менее приличную синусоиду таким способом RC-цепочек нужно будет поставить несколько

все зависит от частоты синусоидального сигнала и частоты ШИМ, а об этом ничего сказано не было
Go to the top of the page
 
+Quote Post
Vishv
сообщение Jul 24 2009, 16:15
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 310
Регистрация: 11-07-09
Из: Екатеринбург
Пользователь №: 51 154



Цитата(stells @ Jul 24 2009, 21:58) *
все зависит от частоты синусоидального сигнала и частоты ШИМ, а об этом ничего сказано не было

Тут Вы правы! Я рассматривал вариант получения синусоиды из меандра генерируемого ШИМ, и не учел и второй метод.
Go to the top of the page
 
+Quote Post
Herz
сообщение Jul 25 2009, 10:51
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Vishv @ Jul 24 2009, 18:15) *
Тут Вы правы! Я рассматривал вариант получения синусоиды из меандра генерируемого ШИМ, и не учел и второй метод.

Это как? unsure.gif
Go to the top of the page
 
+Quote Post
Vishv
сообщение Jul 25 2009, 11:13
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 310
Регистрация: 11-07-09
Из: Екатеринбург
Пользователь №: 51 154



Цитата(Herz @ Jul 25 2009, 16:51) *
Это как? unsure.gif

Ну берем меандр и загоняем его на некую RC- цепь (можно и двойной Т-мост)....
Go to the top of the page
 
+Quote Post
Herz
сообщение Jul 25 2009, 11:41
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Vishv @ Jul 25 2009, 13:13) *
Ну берем меандр и загоняем его на некую RC- цепь (можно и двойной Т-мост)....

А ШИМ тогда причём?
Go to the top of the page
 
+Quote Post
stells
сообщение Jul 25 2009, 11:46
Сообщение #9


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Herz @ Jul 25 2009, 15:41) *
А ШИМ тогда причём?

ШИМ - простой способ получить меандр с постоянными частотой и скважностью. я тоже так делал, когда нужно было получить синус 125кГц, программно его сформировать - не успеть, поэтому меандр и фильтр 3-го порядка
Go to the top of the page
 
+Quote Post
Herz
сообщение Jul 25 2009, 12:09
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(stells @ Jul 25 2009, 13:46) *
ШИМ - простой способ получить меандр с постоянными частотой и скважностью. я тоже так делал, когда нужно было получить синус 125кГц, программно его сформировать - не успеть, поэтому меандр и фильтр 3-го порядка

Тут какая-то казуистика. biggrin.gif Под ШИМом тут понимается выход аппаратного ШИМ-генератора контроллера, настроенного на меандр?

Сообщение отредактировал Herz - Jul 25 2009, 12:09
Go to the top of the page
 
+Quote Post
stells
сообщение Jul 25 2009, 12:16
Сообщение #11


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Herz @ Jul 25 2009, 16:09) *
Тут какая-то казуистика. biggrin.gif Под ШИМом тут понимается выход аппаратного ШИМ-генератора контроллера, настроенного на меандр?

ув. Herz, мы не знаем, что подразумевает автор под словом ШИМ, какая ему нужна частота синуса и т.д.
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Jul 25 2009, 13:23
Сообщение #12


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Не, не понимаю я этих гугенотов.... Мега, ШИМ, ЦАП, унитаз с лазерным прицелом....
Два операционника всего делов-то!
Go to the top of the page
 
+Quote Post
stells
сообщение Jul 25 2009, 13:26
Сообщение #13


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(Microwatt @ Jul 25 2009, 17:23) *
Два операционника всего делов-то!

даже один... с мостом Вина biggrin.gif
Go to the top of the page
 
+Quote Post
Vishv
сообщение Jul 25 2009, 13:36
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 310
Регистрация: 11-07-09
Из: Екатеринбург
Пользователь №: 51 154



Цитата(Microwatt @ Jul 25 2009, 19:23) *
Не, не понимаю я этих гугенотов.... Мега, ШИМ, ЦАП, унитаз с лазерным прицелом....
Два операционника всего делов-то!

И сервопривод - частоту менять...
Go to the top of the page
 
+Quote Post
Wano
сообщение Jul 25 2009, 22:13
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 3-06-06
Пользователь №: 17 737



Всё же если без пантов, так как раздел "В помощь начинающему":
в гугле "Интегрирующие цепи" высыпает груду инфы и не сразу незнающему разобраться, а какой собснно предельной частоты синусоиду можно получить с данной элементарной RC цепочки и какой частоты должен быть ШИМ для заданной пульсации? Несомненно, метод тыка, предыдущий опыт и гора симуляторов, но всё-таки если ручкой на бумажке:
1) напряжение на кондёре Uc=Uвходное*(1-e^(-t/(R*C))), если прикинуть Uc как 90% от входного, значит требуемое для заряда время равно 2.3RC и столько же требуется для разряда со 100% до 10%.Выходит максимальная частота чего-то далёкого от синусоиды(пилы), но ещё с размахом от 0.1 до 0.9 от входного напряжения для RC цепочки будет F=1/(4.6RC) .
2) частоту ШИМ-а я так понимаю должна определять требуемая пульсация относительного идеального сигнала. Есть у кого-нибудь обоснованный ответ или ссылка, как выбрать частоту?
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jul 25 2009, 22:28
Сообщение #16


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Ну, госпидя.
НУ, Атмел старается, аппликейшины пишет, а людям влом их посмотреть.

AVR314: DTMF Generator

Найдите вот этот файл. Там все подробно написано. Досконально. Как сделать синусоиду. даже - две.

И вообще. Все, что можно сделать на AVR - у атмела есть подходящий апп. Думать не надо. Просто читать.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Wano
сообщение Jul 25 2009, 23:00
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 3-06-06
Пользователь №: 17 737



Цитата(DpInRock @ Jul 26 2009, 01:28) *
НУ, Атмел старается, аппликейшины пишет, а людям влом их посмотреть.

а что до англоязычных аппликух от атмэля жизни не было? Особенно запись An additional output filter will help to achieve a good sinusoid. полностью отвечает на вопрос о номиналах RC цепи.
Go to the top of the page
 
+Quote Post
Vishv
сообщение Jul 26 2009, 05:52
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 310
Регистрация: 11-07-09
Из: Екатеринбург
Пользователь №: 51 154



Цитата(Wano @ Jul 26 2009, 04:13) *
Всё же если без пантов, так как раздел "В помощь начинающему":
в гугле "Интегрирующие цепи" высыпает груду инфы и не сразу незнающему разобраться, а какой собснно предельной частоты синусоиду можно получить с данной элементарной RC цепочки и какой частоты должен быть ШИМ для заданной пульсации? Несомненно, метод тыка, предыдущий опыт и гора симуляторов, но всё-таки если ручкой на бумажке:
1) напряжение на кондёре Uc=Uвходное*(1-e^(-t/(R*C))), если прикинуть Uc как 90% от входного, значит требуемое для заряда время равно 2.3RC и столько же требуется для разряда со 100% до 10%.Выходит максимальная частота чего-то далёкого от синусоиды(пилы), но ещё с размахом от 0.1 до 0.9 от входного напряжения для RC цепочки будет F=1/(4.6RC) .
2) частоту ШИМ-а я так понимаю должна определять требуемая пульсация относительного идеального сигнала. Есть у кого-нибудь обоснованный ответ или ссылка, как выбрать частоту?

Все зависит от метода получения синусоиды (я тут попытаюсь несколько реабилитироваться):
1. Синусоиду формируем из меандра получаемого с помощью ШИМ - тогда частота ШИМ не имеет значения: главное - частота меандра равна частоте синусоиды.
2. Синусоида формируется коэффициентом заполнения ШИМ (коэффициент заполнения ШИМ изменяется по sinX): в этом случае частота определяется так: Fшим=Fsin*n, где n- дискретизация периода синусоиды. Естественно, чем больше n - тем лучше, и соответственно меньше постоянная RC.
Go to the top of the page
 
+Quote Post
Wano
сообщение Jul 26 2009, 09:39
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 3-06-06
Пользователь №: 17 737



Цитата(Vishv @ Jul 26 2009, 08:52) *
Все зависит от метода получения синусоиды (я тут попытаюсь несколько реабилитироваться):
1. Синусоиду формируем из меандра получаемого с помощью ШИМ - тогда частота ШИМ не имеет значения: главное - частота меандра равна частоте синусоиды.
2. Синусоида формируется коэффициентом заполнения ШИМ (коэффициент заполнения ШИМ изменяется по sinX): в этом случае частота определяется так: Fшим=Fsin*n, где n- дискретизация периода синусоиды. Естественно, чем больше n - тем лучше, и соответственно меньше постоянная RC.


Дабы прояснить:
1)Первый вариант, со сглаживанием верхушек, есть тут http://electronix.ru/forum/index.php?showtopic=62769 Но цепь формирования синусоиды должна быть забита под частоту меандра и получить (к примеру) диапазон 10кГц-100кГц будет сложно,или ошибаюсь? Надо будет ставить что-то типа MAX7418-MAX7425
2)В аппликухе http://www.gaw.ru/html.cgi/txt/app/micros/msp430/slaa116.htm - "следует выбирать частоту среза выше границы полосы сигнала, но намного ниже частоты ШИМ-сигнала" Советуют дискретизацию брать не менее 16.
Go to the top of the page
 
+Quote Post
Ledmaster
сообщение Jul 26 2009, 10:49
Сообщение #20


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 18-02-08
Из: Челябинск
Пользователь №: 35 141



Любопытно, человек вбросил тему, но участвовать в обсуждении не желает. laughing.gif
А обсуждать ее без толку, если неизвестна требуемая частота синусоиды, точность ее формирования и т.д.
Во многих случаях, проще и дешевле использовать полноценный ЦАП, нежели избавляться от грязи после ШИМ.
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Jul 26 2009, 11:07
Сообщение #21


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Цитата(Ledmaster @ Jul 26 2009, 13:49) *
Во многих случаях, проще и дешевле использовать полноценный ЦАП, нежели избавляться от грязи после ШИМ.

Вы полагаете, что ЦАП "грязи" не имеет?
Go to the top of the page
 
+Quote Post
Wano
сообщение Jul 26 2009, 11:55
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 3-06-06
Пользователь №: 17 737



Цитата(Microwatt @ Jul 26 2009, 14:07) *
Вы полагаете, что ЦАП "грязи" не имеет?

Вроде как для забивания частоты дескритизации тоже нужно(или полезно) ставить фильтры.
Go to the top of the page
 
+Quote Post
Ledmaster
сообщение Jul 26 2009, 19:44
Сообщение #23


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 18-02-08
Из: Челябинск
Пользователь №: 35 141



Цитата(Microwatt @ Jul 26 2009, 17:07) *
Вы полагаете, что ЦАП "грязи" не имеет?
Если говорить о спектральном составе, "грязь" после ЦАП гораздо чище, чем после ШИМ. При достаточном количестве отсчетов на период, нефильтрованный сигнал на выходе ЦАП имеет очень незначительные отклонения от формы идеальной синусоиды, соответственно, мизерный коэффициент гармонических искажений.
Go to the top of the page
 
+Quote Post
muravei
сообщение Jul 28 2009, 18:35
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Все давно придумано.

ПС Уже грузил это файл, но найти его по названию-никак. sad.gif
Прикрепленные файлы
Прикрепленный файл  sin.pdf ( 365.5 килобайт ) Кол-во скачиваний: 216
 
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Jul 28 2009, 20:01
Сообщение #25


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Угу, простенькая такая схема выходного дня. Не то, что аж два операционника.
И МК есть, и ЦАП, и о спектральной чистоте можно поспорить, и о накоплении фазы. Дисплей-клавиатура, опять же...
Для эмбеддеров - в самый раз!
Go to the top of the page
 
+Quote Post
Herz
сообщение Jul 28 2009, 20:09
Сообщение #26


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



ПЛИС бы ещё... Да и фильтры просто примитивные какие-то, неперестраиваемые и вообще...
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Jul 28 2009, 20:41
Сообщение #27


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Интересно, а кто, кроме автора схемы вообще знает назначение этих фильтров?
Ведь если частота перестраивается от Гц до 50кГц, то эти фильтры вроде как совсем ни к чему?
Что они по замыслу режут? Гармоники выше 150кГц? Или полезный сигнал?
Go to the top of the page
 
+Quote Post
muravei
сообщение Jul 29 2009, 06:34
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(Microwatt @ Jul 29 2009, 00:41) *
Ведь если частота перестраивается от Гц до 50кГц, то эти фильтры вроде как совсем ни к чему?
Что они по замыслу режут?

А , помоему, там частота (в смысле дискретизации) совсем не перестраивается , ее и режут. Собственно , автор тут и сам бывает-спросите.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jul 29 2009, 10:54
Сообщение #29


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Microwatt @ Jul 29 2009, 00:41) *
Интересно, а кто, кроме автора схемы вообще знает назначение этих фильтров?
Ведь если частота перестраивается от Гц до 50кГц, то эти фильтры вроде как совсем ни к чему?
Что они по замыслу режут? Гармоники выше 150кГц? Или полезный сигнал?

Все, абзац, приплыли... Вы что, никогда не видели DDS-генератора ?
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Jul 29 2009, 11:20
Сообщение #30


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Цитата(rx3apf @ Jul 29 2009, 13:54) *
Все, абзац, приплыли... Вы что, никогда не видели DDS-генератора ?

Да, такие мы темные, что поделать... Поясните, пожалуйста, попроще.
"Генератор АВС" или "XYZ" это не ответ на вопрос о назначении фильтров с фиксированой частотой среза в гнераторе с переменной частотой на пару декад.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jul 29 2009, 11:26
Сообщение #31


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Microwatt @ Jul 29 2009, 15:20) *
"Генератор АВС" или "XYZ" это не ответ на вопрос о назначении фильтров с фиксированой частотой среза в гнераторе с переменной частотой на пару декад.

А что по этому поводу говорит теорема Котельникова ? И почему Вас не удивляет фильтр с фиксированной частотой среза на выходе звукового DAC ?
Go to the top of the page
 
+Quote Post
muravei
сообщение Jul 29 2009, 11:48
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(Microwatt @ Jul 29 2009, 15:20) *
Да, такие мы темные, что поделать... Поясните, пожалуйста, попроще.

В генераторах DDS меняется не тактовая частота, а а отсчеты синуса, типа, чем выше, тем синус -"реже" smile.gif
Берутся не смежные отсчеты, а через один и т.п.
Прикрепленные файлы
Прикрепленный файл  MyDDS.pdf ( 758.56 килобайт ) Кол-во скачиваний: 108
 
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 29 2009, 12:13
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(muravei @ Jul 29 2009, 17:48) *
В генераторах DDS меняется не тактовая частота, а а отсчеты синуса, типа, чем выше, тем синус -"реже" smile.gif
Берутся не смежные отсчеты, а через один и т.п.
Не так. Не через один, а наоборот - один и тот же отсчет повторяется. В противном случае будет искажение синуса.
А фильтрация происходит именно этой частоты сэмплирования. Допустим, нам нужно сформировать синус до 1кГц при 50 отсчетах на период. Соответственно частота сэмплирования будет 50*1000=50кГц. Характеристика выходного фильтра должна быть такой, чтобы частоты до 1кГц пропускать без искажений, а 50кГц и выше ослабить до требуемого уровня. Чем меньше отсчетов на период синуса, тем ближе эти частоты и тем более высокого порядка фильтр требуется.
Go to the top of the page
 
+Quote Post
muravei
сообщение Jul 29 2009, 12:31
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(rezident @ Jul 29 2009, 16:13) *
Не так. Не через один, а наоборот - один и тот же отсчет повторяется.

А как же тогда повысится выходная частота? Если кол-во отсчетов не изменится. blink.gif
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Jul 29 2009, 14:08
Сообщение #35


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Цитата(rx3apf @ Jul 29 2009, 14:26) *
А что по этому поводу говорит теорема Котельникова ? И почему Вас не удивляет фильтр с фиксированной частотой среза на выходе звукового DAC ?

А давайте оставим на это раз Котельникова в стороне. Как Фурье, Лапласа и прочих декартов с дюамелями. Наугад из коробки можно много фамилий вытащить. Теорема Котельникова совершенно не касается частоты среза фильтра в том смысле, который мы сейчас обсуждаем. Она всего лишь утверждает, что для данной схемы нужен ЦАП с частотой, как минимум, 100кГц. Хорошо, пусть в схеме есть такой ЦАП.
Имеется перестраиваемый генератор, синтезирующий потребную форму и частоту с помощью ЦАП. И на выходе присобачен многозвенный фильтр с ФИКСИРОВАНОЙ частотой среза. Так вопрос: зачем?
Если этот фильтр настроен на верхнюю частоту диапазона (50кГц), то как он помогает почистить от гармоник 5 или даже 10 кГц. Если же он настроен на частоту ниже 50 кГц, то что он вообще тут делает? Губит выходной сигнал?
Вот ниже Resident подсказывает стоящим у доски. И мне кажется - правильно.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jul 29 2009, 14:22
Сообщение #36


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Microwatt @ Jul 29 2009, 18:08) *
Так вопрос: зачем?
Если этот фильтр настроен на верхнюю частоту диапазона (50кГц), то как он помогает почистить от гармоник 5 или даже 10 кГц.

А Вы вначале разберитесь, что порождает эти гармоники и каков их уровень.
Цитата
Если же он настроен на частоту ниже 50 кГц, то что он вообще тут делает?

А, может быть, прочитать ту статью внимательнее, чтобы не было всяких домыслов типа "если он настроен". Там сказано, какую частоту среза имеет выходной ФНЧ.
Цитата
Вот ниже Resident подсказывает стоящим у доски. И мне кажется - правильно.

Можно было бы и без подсказок обойтись - ключевое слово "DDS". Подсказка эта, между прочим, для частного случая, при генерируемой частоте 1 kHz и дискретизации 50 kHz. Я Вам не случайно назвал фамилию и не случайно намекнул на схемотехнику звуковой карты. Вот и ответьте (себе самому), как там (в звуковых картах) обходятся без перестраиваемых фильтров для воспроизводимого диапазона частот 20...20K Hz (а кто сказал, что обязательно музыку или речь ? Почему не однотональный синусоидальный сигнал ?) и чем определяется уровень гармоник выходного сигнала...
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 29 2009, 14:31
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(muravei @ Jul 29 2009, 18:31) *
А как же тогда повысится выходная частота? Если кол-во отсчетов не изменится. blink.gif
Выходная частота не может повысится выше максимальной - 1кГц при 50 отсчетах на период и 50кГц сэмплирования в моем примере. Она только понижается от максимальной, а вот количество отсчетов при этом пропорционально повышается.
Пример (упрощенный для облегчения понимания).
Пускай будет 10 отсчетов на период синуса. Частота сэмплирования - 10кГц. Максимальная выходная частота 10кГц/10=1кГц. Амплитуда - 128 единиц (256 - полный размах).
Таблица с отсчетами синуса: 128, 203, 250, 250, 203, 128, 53, 6, 6, 53
Задача: получить выходную частоту синуса 200Гц.
Считаем шаг для таблицы отсчета 200Гц/1000Гц=0,2
Индексы для выборки из таблицы отсчетов будут такие
INT(0)=0, INT(0,2)=0, INT(0,4)=0, INT(0,6)=0, INT(0,8)=0, INT(1,0)=1, INT(1,2)=1, INT(1,4)=1, INT(1,6)=1, INT(1,8)=1, INT(2,0)=2, INT(2,2)=2 и т.д.
Значит для формирования выходной частоты 200Гц на частоте сэмплирования 10кГц каждый отсчет будет повторен по 5 раз.
В результате для формирования одного периода синуса частотой 200Гц в выходной ЦАП на частоте 10кГц будем записывать следующую последовательность
128, 128, 128, 128, 128, 203, 203, 203, 203, 203, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 203, 203, 203, 203, 203, 128, 128, 128, 128, 128, 53, 53, 53, 53, 53, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 53, 53, 53, 53, 53.
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Jul 29 2009, 16:27
Сообщение #38


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



То-есть, частота среза равна наивысшей синтезируемой частоте?
На нижних частотах больше отсчетов, более подробно задается форма и необходимость в дополнительной фильтрации отпадает?
Если так - можно согласиться. Хотя, три каскада ФНЧ (шестой порядок) ,на первый взгляд, кажутся избыточными.
Ладно, всем все вроде ясно. Только стартер сбежал.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jul 29 2009, 16:42
Сообщение #39


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Microwatt @ Jul 29 2009, 20:27) *
То-есть, частота среза равна наивысшей синтезируемой частоте?
На нижних частотах больше отсчетов, более подробно задается форма и необходимость в дополнительной фильтрации отпадает?

Опять Вы не улавливаете ключевую идею. При идеальном DAC вообще нет составляющих меньше частоты дискретизации, а теоретически генерируемая частота достигает половины от частоты дискретизации. Вот фильтр под это и считается.
Цитата
Если так - можно согласиться. Хотя, три каскада ФНЧ (шестой порядок) ,на первый взгляд, кажутся избыточными.

Это если только на первый и весьма поверхностный взгляд. Конечно, если генерируется 1 kHz при частоте дискретизации в 100 kHz, то там и RC-цепочки хватит. А вот если вблизи максимальной границы - то шестой порядок это только компромисс между качеством и сложностью...

Сообщение отредактировал rx3apf - Jul 29 2009, 16:48
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 29 2009, 16:44
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Microwatt @ Jul 29 2009, 22:27) *
То-есть, частота среза равна наивысшей синтезируемой частоте?
На нижних частотах больше отсчетов, более подробно задается форма и необходимость в дополнительной фильтрации отпадает?
Если так - можно согласиться. Хотя, три каскада ФНЧ (шестой порядок) ,на первый взгляд, кажутся избыточными.
С помощью DDS не обязательно синус синтезируется. Так что теоретически максимальная выходная частота может быть всего лишь вдвое меньше частоты сэмплирования. Отсюда и большой порядок выходного фильтра в той схеме.
Go to the top of the page
 
+Quote Post
muravei
сообщение Jul 29 2009, 17:46
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(rezident @ Jul 29 2009, 18:31) *
Выходная частота не может повысится выше максимальной - 1кГц при 50 отсчетах на период и 50кГц сэмплирования в моем примере. Она только понижается от максимальной, а вот количество отсчетов при этом пропорционально повышается.

Выходит, чем нмже частота, тем хуже форма- в действительности, помоему, наоборот. И в прицепленной статье подругому.

"Если значение приращения велико, аккумулятор фазы будет быстро
пробегать всю таблицу синуса, хранящуюся
в ПЗУ, и частота сигнала при этом будет высока. Если значение приращения фазы мало, аккумулятору фазы понадобится больше шагов, чтобы пройти всю таблицу ПЗУ,
и соответственно частота сигнала на выходе будет низкой."
Коряво, но "на пальцах" : ссылка
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 29 2009, 18:06
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(muravei @ Jul 29 2009, 23:46) *
Выходит, чем нмже частота, тем хуже форма- в действительности, помоему, наоборот. И в прицепленной статье подругому.
А кто-то разве спорит с тем, что форма синуса зависит от количества отсчетов? 07.gif Можно в таблицу и 1024 отсчета забить, а потом прореживать их до минимального. В пределе вообще два отсчета на период останутся. Максимальной выходной частотой (при заданной частоте сэмплирования) я подразумевал частоту при которой количество отсчетов на период выбирается таким, чтобы выдерживался требуемый коэффициент искажений при разумном порядке выходного фильтра. На практике количество отсчетов на период обычно ограничивается возможностями аппаратуры. При высокой выходной частоте и большом количестве отсчетов и частота сэмплирования соответственно требуется высокая.
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Jul 29 2009, 20:13
Сообщение #43


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Цитата(rezident @ Jul 29 2009, 21:06) *
А кто-то разве спорит с тем, что форма синуса зависит от количества отсчетов? 07.gif Можно в таблицу и 1024 отсчета забить, а потом прореживать их до минимального. В пределе вообще два отсчета на период останутся.

Не, ну все далее понятно.... И предельныя частота выборки и требуемая крутизна среза.
Э-.мм.... Много лет назад сам считал фильтр для подобного случая, так , кажется, только в 8-й порядок уложился при неравномерности 3 дБ....
Я просто не понимал МЕТОД формирования, полагая частоту выборки кратной выходному сигналу.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 30 2009, 10:42
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Microwatt @ Jul 30 2009, 02:13) *
Я просто не понимал МЕТОД формирования, полагая частоту выборки кратной выходному сигналу.
Ну теперь-то надеюсь поняли, что частота сэмплирования может в т.ч. и нецелой кратности по отношению к выходной частоте? При реализации в МК DDS основную сложность составляет вычисление индекса для взятия отсчета. Т.к. шаг приращения чаще всего представляет из себя дробное число. Лично я при расчете предпочитаю шаг приращения представлять целым числом. Соответственно вычисления индекса ведутся в целочисленной математике путем сложений, вычитаний и сдвигов.
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Jul 30 2009, 17:19
Сообщение #45


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Да, в целочисленной арифметике, наверное, это неидеально, но относительно быстро и просто.
Гм, в плавающей арифметике проблемы постоянного отслеживания фазы? Т.е в соседних периодах уже нужно брать разные выборки. Это сильно перегружает объем вычислений, не говоря уж о дробях, как таковых.
Ладно, общий подход ясен, положим на полку.
Но мне он в ближайшую пятницу пока не понадобится. А стартеру уже неделю назад ничего не нужно стало.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 30 2009, 19:44
Сообщение #46


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(rezident @ Jul 30 2009, 13:42) *
Т.к. шаг приращения чаще всего представляет из себя дробное число. Лично я при расчете предпочитаю шаг приращения представлять целым числом. Соответственно вычисления индекса ведутся в целочисленной математике путем сложений, вычитаний и сдвигов.
Так что мешает использовать дробные числа с фиксированной точкой? У меня, например, фаза 16 бит, из старших восьми 6 используются как индекс таблицы и 2 старших как признаки инверсии индекса/выхода (квадрант).


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Jul 30 2009, 20:43
Сообщение #47


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Впору Райкина вспоминать: "Столько образования на один бифштекс!!"
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 30 2009, 20:44
Сообщение #48


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Сергей Борщ @ Jul 31 2009, 01:44) *
Так что мешает использовать дробные числа с фиксированной точкой? У меня, например, фаза 16 бит, из старших восьми 6 используются как индекс таблицы и 2 старших как признаки инверсии индекса/выхода (квадрант).
В моих применениях максимальные выходные частоты небольшие, значение максимальной частоты известно, количество отсчетов (размер таблицы) тоже, поэтому устраивает тип long. Значение шага заранее умножено на требуемую степень двойки. Текущая фаза тоже в long хранится. Для вычисления индекса отсчета суммирую два long и делаю нужное количество сдвигов вправо. Вот и все вычисления. laughing.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 31 2009, 00:26
Сообщение #49


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(rezident @ Jul 30 2009, 23:44) *
Для вычисления индекса отсчета ... и делаю нужное количество сдвигов вправо.
Ну это же и есть "взять целую часть от числа с фиксированной точкой". Консенсус!


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
KaMa3eR
сообщение Jan 29 2010, 18:25
Сообщение #50


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 13-11-09
Из: Украина Шостка
Пользователь №: 53 609



Вери биг сенкс всем учавствовавшим, темка то что доктор прописал как раз то что меня интересует оч нужно сгородить ген синусоиды на частоту от 10Гц до 5кГц . пофиг что пропал топик стартер, ему уже до лампы эта тема , но поверте многим нужна.
И еще небольшая просьба гуру: поделитесь кусочком кода на Си в теме формирования синуса , а то уже голову сломал подсказать некому, вот шляюсь по форумам , а тут такая тема... сорри что распыляюсь просто за 2 недели единственная толковая ветка.. 08.gif
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 30 2010, 02:10
Сообщение #51


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(KaMa3eR @ Jan 29 2010, 21:25) *
нужно сгородить ген синусоиды на частоту от 10Гц до 5кГц

С какой сеткой перестройки?
Go to the top of the page
 
+Quote Post
KaMa3eR
сообщение Jan 30 2010, 09:27
Сообщение #52


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 13-11-09
Из: Украина Шостка
Пользователь №: 53 609



по 1 Гц если можно....
ткните еще носом в заполнение синуса на F=10 Гц и 10кГц естественно разное???
или не.. ???
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 30 2010, 11:26
Сообщение #53


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(KaMa3eR @ Jan 29 2010, 20:25) *
оч нужно сгородить ген
ему уже до лампы
или не..
???
На этом форуме принят более литературный вариант русского языка. Старайтесь придерживаться его, иначе вам просто не будут отвечать.

Код
#include    "avr/io.h"
#include    "avr/pgmspace.h"
#include    "avr/interrrupts.h"

uint8_t const PROGMEM Table[65] = // Таблица значений синуса от 0 до Пи/2 включительно. Диапазон значений от 0x80 до 0xFF
{
    .....
};

uint16_t Phase;         // 8.8 fixed point
uint16_t Phase_delta;   // 8.8 fixed point

static  uint8_t get_sinus()
{
    Table_index = (Phase >> 8) & 0x3F;
    if(Phase & (1<<14))
        Table_index = 64 - Table_index;
    uint8_t Result = pgm_read_byte(&Table[Table_index]);
    if(Phase & (1<<15))
        Result = 0x80 - Result;
    Phase += Phase_delta;
    return Result;
}

ISR(TIMER2_COMP_vect)
{
    OCR2 = get_sinus();
}

int main()
{
    // Fast PWM, T2CLK = F_CPU/32
    TCCR2 = (0<<FOC2)|(1<<WGM20)|(1<<COM21)|(0<<COM20)|(1<<WGM21)|(0<<CS22)|(1<<CS21)|(1<<CS20);
    TIMSK = (1<<OCIE2);

    Phase_delta = 1234;

    sei();
    
    for(;;)
    {
    }


}
Это идея реализации. Как рассчитать приращение фазы и какой предделитель таймера вам лучше подойдет - разберитесь сами.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
KaMa3eR
сообщение Jan 30 2010, 20:01
Сообщение #54


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 13-11-09
Из: Украина Шостка
Пользователь №: 53 609



за конструктивную критику спасибо , учту, а за подсказку двойной СПАСИБО
суть движения уловил,
только маленькое уточнение Phase_delta равен величине предыдущего импульса
или фиксированная величина
uint16_t Phase; // 8.8 fixed point
uint16_t Phase_delta; // 8.8 fixed point

далее по тексту программы
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 30 2010, 20:18
Сообщение #55


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(KaMa3eR @ Jan 31 2010, 01:01) *
только маленькое уточнение Phase_delta равен величине предыдущего импульса
Вполне очевидно, что у Сергея Phase это фазовый аккумулятор, а Phase_delta - приращение (шаг приращения) фазы.
Go to the top of the page
 
+Quote Post
KaMa3eR
сообщение Feb 14 2010, 10:20
Сообщение #56


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 13-11-09
Из: Украина Шостка
Пользователь №: 53 609



Снова возник вопрос как рассчитать заполнение и регулирование амплитуды на разных диапазанах частот
даташит по етому повуду
Go to the top of the page
 
+Quote Post
KaMa3eR
сообщение Jun 26 2011, 18:49
Сообщение #57


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 13-11-09
Из: Украина Шостка
Пользователь №: 53 609



ну вот не прошло и несколько лет как практически готов ген синуса по Ридико..
Так вот вопросец возник такой
мега 16
частота 16Мгц

------------
accumulator += add_value;
temp = accumulator;

с переменной типа int accumulator, add_value, temp, accumulator; все ок, только смысла
с переменной типа float не помещается в прерывании...
OCR = 16E6/2*2^16 = 122,0703125
это значение должно быть больше значения времени обработки прерывания в тактах процессора
OCR1 = 122 (0x7A).....
Как быть ????Подскажите ПЛЗ..
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 05:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.02087 секунд с 7
ELECTRONIX ©2004-2016