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

 
 
 
Reply to this topicStart new topic
> Квадратурный сигнал из mega128, Как оптимально реализовать?
NikWik
сообщение May 13 2009, 04:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 15-05-06
Из: Питер
Пользователь №: 17 111



Доброго времяпровождения!

Есть mega128 (вопрос выбора МК отложим, просто валяется, решил на ней сделать), тактовая частота - 14,7456 МГц.
Нужно получить из нее квадратурный сигнал (2 меандра, сдвинутых относительно друг друга на 90 градусов) основной частотой 36кГц.
Необходимо предусмотреть отклонение от основной частоты 36кГц+-1кГц с дискретностью не более 100Гц (самый крайний случай, желательно не более 50Гц).
Частота задается с компа через uart, но это уже другая история, будем считать что у нас уже есть значение, которое лежит, например, в каком-нибудь регистре сравнения. Притом данную частоту нет необходимости подстраивать довольно часто, т.е. мы меняем ее к примеру раз в 30мин.

Вопрос - как оптимально реализовать данную задачку?

Варианты использовать другой МК не приветствуются, но могут будут рассмотрены.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 13 2009, 06:22
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Реализовать алгоритм NCO сможете? Это накапливающий сумматор, старший бит которого в Вашем случае выдается на выход.
Гуглить в сторону NCO, DDS, AD9834
Go to the top of the page
 
+Quote Post
Mak_Valera
сообщение May 13 2009, 07:55
Сообщение #3





Группа: Участник
Сообщений: 3
Регистрация: 4-05-09
Пользователь №: 48 612



Предлагаю использовать ГУН и подстраивать частоту с помощью ШИМ. Дешево и возможностей много.
Go to the top of the page
 
+Quote Post
NikWik
сообщение May 13 2009, 08:32
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 15-05-06
Из: Питер
Пользователь №: 17 111



Цитата(Genadi Zawidowski @ May 13 2009, 13:22) *
Реализовать алгоритм NCO сможете? Это накапливающий сумматор, старший бит которого в Вашем случае выдается на выход.
Гуглить в сторону NCO, DDS, AD9834


Что-то я не догнал, можно по подробнее?
Если реализовывать именно алгоритм NCO в самом МК, то не хватает частоты, т.к. для квадратурного сигнала (как я представляю) нужен сигнал частотой в 4 раза выше основной, т.е. 144кГц, из которого мы потом без проблем получаем квадратурный сигнал 36кГц. Т.е. счетчик будет считать всего до 100, соответственно и дискретность будет довольно большая - что то типа 225 Гц.
Если ты предлагаешь добавить внешний NCO, то возникают проблемы с приобритением и возможно ценой (я далеко не из Москвы).

Вот на счет ГУН-а можно прикинуть, может кто пробовал - какие плюсы и минусы?
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 13 2009, 09:24
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата
для квадратурного сигнала (как я представляю) нужен сигнал

Нет, все-таки к Гуглю вы так и не обратились.... Дискретность частоты nco зависит от разрядности сумматора.
Есть асемблерные реализации nco на атмега8 - люди получали около 100 кГц синусоиду - обсуждалось на forum.cqham.ru

Зайдите и сюда -
http://www.scienceprog.com/avr-dds-signal-...-asm-explained/

http://www.mikrocontroller.net/topic/70798

DDS - это NCO + таблица синусов + ЦАП. Вам надо только взять ДВА старших разряда сумматора. С них получите два квадратурных сигнала.

Работа с чем-либо еще в фоне будет вызыват помехи в выходном сигнале.

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

НУ вот готовая конструкция с применением таких технологий:

http://www.myplace.nu/avr/minidds/index.htm

Цитата
can generate Sine-, Sawtooth-, Trangle- and Sqare-waves ranging from 0.07 Hz to about 200-300 kHz in 0.07 Hz steps (depending on your crystal).



Даже исходники есть.
http://www.myplace.nu/avr/minidds/minidds.asm



Сообщение отредактировал Genadi Zawidowski - May 13 2009, 09:26
Go to the top of the page
 
+Quote Post
Goodefine
сообщение May 13 2009, 09:41
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата(NikWik @ May 13 2009, 12:32) *
... Т.е. счетчик будет считать всего до 100, соответственно и дискретность будет довольно большая - что то типа 225 Гц...

А Вы на 2-а разделить не забыли (инверсия по совпадению)? При Вашем кварце, дискретность будет выше требуемой даже при коэфф. счета близких к TOP.
Если устроит дискретность порядка 150-170 Гц (около 220 в регистре сравнения), ставьте кварц где-то под 16Мгц, и используйте таймеры Т0 и Т2 в режимах CTC. Плюсы - любая работа в фоне, а то несерьезно как-то все ресурсы меги128 под такую задачу отдавать... Либо посмотрите в сторону камней с PLL...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 13 2009, 09:54
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(Goodefine @ May 13 2009, 13:41) *
Либо посмотрите в сторону камней с PLL...


Коллега написал:
Цитата
(я далеко не из Москвы).

Похоже, что камни с DDS, что камни с PLL одникаово тяжело по почте заказать.

Сообщение отредактировал Genadi Zawidowski - May 13 2009, 09:54
Go to the top of the page
 
+Quote Post
Mak_Valera
сообщение May 13 2009, 10:39
Сообщение #8





Группа: Участник
Сообщений: 3
Регистрация: 4-05-09
Пользователь №: 48 612



Цитата
DDS - это NCO + таблица синусов + ЦАП. Вам надо только взять ДВА старших разряда сумматора. С них получите два квадратурных сигнала.

Идея очень интересная, но пока не дошло почему там будет фазовый сдвиг в 90 градусов? Почему два старших разряда?
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 13 2009, 11:52
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(Mak_Valera @ May 13 2009, 14:39) *
Идея очень интересная, но пока не дошло почему там будет фазовый сдвиг в 90 градусов? Почему два старших разряда?


Если Вас интересует меандр -
первый сигнал - старший бит сумматора.
второй сигнал - (старший байт сумматора + 0x40) - от этого старший бит.
Нарисуйте график - дойдёт.
Go to the top of the page
 
+Quote Post
NikWik
сообщение May 14 2009, 08:03
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 15-05-06
Из: Питер
Пользователь №: 17 111



Дошло, спасибо!
Go to the top of the page
 
+Quote Post

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

 


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


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