NikWik 0 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба Доброго времяпровождения! Есть mega128 (вопрос выбора МК отложим, просто валяется, решил на ней сделать), тактовая частота - 14,7456 МГц. Нужно получить из нее квадратурный сигнал (2 меандра, сдвинутых относительно друг друга на 90 градусов) основной частотой 36кГц. Необходимо предусмотреть отклонение от основной частоты 36кГц+-1кГц с дискретностью не более 100Гц (самый крайний случай, желательно не более 50Гц). Частота задается с компа через uart, но это уже другая история, будем считать что у нас уже есть значение, которое лежит, например, в каком-нибудь регистре сравнения. Притом данную частоту нет необходимости подстраивать довольно часто, т.е. мы меняем ее к примеру раз в 30мин. Вопрос - как оптимально реализовать данную задачку? Варианты использовать другой МК не приветствуются, но могут будут рассмотрены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба Реализовать алгоритм NCO сможете? Это накапливающий сумматор, старший бит которого в Вашем случае выдается на выход. Гуглить в сторону NCO, DDS, AD9834 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mak_Valera 0 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба Предлагаю использовать ГУН и подстраивать частоту с помощью ШИМ. Дешево и возможностей много. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NikWik 0 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба Реализовать алгоритм NCO сможете? Это накапливающий сумматор, старший бит которого в Вашем случае выдается на выход. Гуглить в сторону NCO, DDS, AD9834 Что-то я не догнал, можно по подробнее? Если реализовывать именно алгоритм NCO в самом МК, то не хватает частоты, т.к. для квадратурного сигнала (как я представляю) нужен сигнал частотой в 4 раза выше основной, т.е. 144кГц, из которого мы потом без проблем получаем квадратурный сигнал 36кГц. Т.е. счетчик будет считать всего до 100, соответственно и дискретность будет довольно большая - что то типа 225 Гц. Если ты предлагаешь добавить внешний NCO, то возникают проблемы с приобритением и возможно ценой (я далеко не из Москвы). Вот на счет ГУН-а можно прикинуть, может кто пробовал - какие плюсы и минусы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 13 мая, 2009 Опубликовано 13 мая, 2009 (изменено) · Жалоба для квадратурного сигнала (как я представляю) нужен сигнал Нет, все-таки к Гуглю вы так и не обратились.... Дискретность частоты 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 Изменено 13 мая, 2009 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Goodefine 0 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба ... Т.е. счетчик будет считать всего до 100, соответственно и дискретность будет довольно большая - что то типа 225 Гц... А Вы на 2-а разделить не забыли (инверсия по совпадению)? При Вашем кварце, дискретность будет выше требуемой даже при коэфф. счета близких к TOP. Если устроит дискретность порядка 150-170 Гц (около 220 в регистре сравнения), ставьте кварц где-то под 16Мгц, и используйте таймеры Т0 и Т2 в режимах CTC. Плюсы - любая работа в фоне, а то несерьезно как-то все ресурсы меги128 под такую задачу отдавать... Либо посмотрите в сторону камней с PLL... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 13 мая, 2009 Опубликовано 13 мая, 2009 (изменено) · Жалоба Либо посмотрите в сторону камней с PLL... Коллега написал: (я далеко не из Москвы). Похоже, что камни с DDS, что камни с PLL одникаово тяжело по почте заказать. Изменено 13 мая, 2009 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mak_Valera 0 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба DDS - это NCO + таблица синусов + ЦАП. Вам надо только взять ДВА старших разряда сумматора. С них получите два квадратурных сигнала. Идея очень интересная, но пока не дошло почему там будет фазовый сдвиг в 90 градусов? Почему два старших разряда? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 13 мая, 2009 Опубликовано 13 мая, 2009 · Жалоба Идея очень интересная, но пока не дошло почему там будет фазовый сдвиг в 90 градусов? Почему два старших разряда? Если Вас интересует меандр - первый сигнал - старший бит сумматора. второй сигнал - (старший байт сумматора + 0x40) - от этого старший бит. Нарисуйте график - дойдёт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NikWik 0 14 мая, 2009 Опубликовано 14 мая, 2009 · Жалоба Дошло, спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться