|
|
  |
Atmega128 и таймер |
|
|
|
Nov 1 2009, 16:36
|

отэц
    
Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684

|
Цитата(singlskv @ Oct 31 2009, 18:10)  А Вы так и не озвучили какая частота смены фазовых сдвигов, те откалибровали и крутим до "посинения"(след. калибровки) или сдвиги фаз могут измениться в любой момент ? правильно - откалибравали и крутим до следующей калибровки , в любой момент фазы менятся не должны . Цитата(Огурцов @ Oct 31 2009, 21:07)  Так может все должно быть гораздо проще ? И сдается мне, что не нужно формаировать 15 сигналов с настраиваемым фазовым сдвигом, а потом этот сдвиг подбирать. Нужно просто перемножить каждый канал на стабильный синус и косинус, и посмотреть на результат - в результате как раз и будет искомый сдвиг фаз. А как тогда ? ...вот у меня есть несколько каналов и в каждом стоит вредная палка , мне нужно палку задавить как можно сильнее . Из наличных средств я уже имею частоту когерентную с "вредной" палкой - моя идея подогнать по фазе и подавить её таким путём . А если я буду в каждом канале комплексный перемножитель строить - то это мою схему сильно усложнит , да и на выходе этого перемножителя будет просто фазовая ошибка и всё - её ещё как-то использовать нужно . Или я чего не понял ?
--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0 SHA-256
|
|
|
|
|
Nov 1 2009, 19:23
|

отэц
    
Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684

|
Цитата(Огурцов @ Nov 1 2009, 21:59)  ... Но как я догадываюсь, у вас полезный сигнал слаб по отношению к несущей ? Которую вы хотите задавить перед усилением. Но похоже, тут есть одна проблема - на выходе таймера у вас будет не синус, а меандр, и даже если точно подобрать уровень компенсирующего сигнала, все равно останется третья (и т.д.) гармоника, которая забьет усилитель. Может вместо усиления увеличить разрешение АЦП ? я после меандра фильтр ставлю на первую гармонику - там косинус у меня будет , без гармоник ,насколько можно -фильтр будет n-ного порядка от MAX.
--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0 SHA-256
|
|
|
|
|
Nov 1 2009, 19:30
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Вы бы побольше данных привели. Типа уровень несущей, уровень сигнала, какое разрешение на выхрде АЦП должно быть. И вообще, как оно потом будет использоваться. В АДСЛ-модемах, например, задачка по-круче, кажется, но решают. Цитата(Lmx2315 @ Nov 1 2009, 19:23)  я после меандра фильтр ставлю на первую гармонику - там косинус у меня будет , без гармоник ,насколько можно -фильтр будет n-ного порядка от MAX. Т.е. все равно +15 фильтров ? Неэстетично.
|
|
|
|
|
Nov 1 2009, 19:57
|

отэц
    
Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684

|
Цитата(Огурцов @ Nov 1 2009, 22:30)  Вы бы побольше данных привели. Типа уровень несущей, уровень сигнала, какое разрешение на выхрде АЦП должно быть. И вообще, как оно потом будет использоваться. В АДСЛ-модемах, например, задачка по-круче, кажется, но решают.
...
Т.е. все равно +15 фильтров ? Неэстетично. А куда деваться ? ..если есть другие варианты - с радостью схему поменяю , меня даже не число фильтров раздражает а то что скорее всего всё это количество будет некуда ставить . Ну это вторая задача. Данные такие: вредная палка - порядка 1-5 Вольт , полезный сигнал - порядка сотен микровольт - единиц милливольт Полезное разрешение по сигналу хотелось бы разрядов 8 , прям сейчас поставил 12 разрядный АЦП . Из этого можно прикинуть с какой точностью давить нужно , было б здорово если б знающие люди ткнули бы меня где у меня узкие места  , с какой точностью фазу подстраивать. Так получается что АЦП с большим разрешением не поставить , за ним будет идти блекфин 533 . Конструкция такая - 12 бит АЦП , 4 бита - номер канала - это всё идёт к блекфину на PPI. А он у него всего -16 бит . Если увеличить разрядность - надо мудрить как блекфину сообщать какой канал сейчас оцифровывается , у меня временное мультиплексирование . Т.е. несколько каналов идут на мультиплексор и с него на АЦП , потом на DSP. Мультиплексор перебирает каналы и те по очереди оцифровываются , ну само собой быстро-быстро . Сам блекфин будет стоять далеко , туда информация через лвдс-ную пару после сериалайзера уйдёт с АЦП. каналы + адресс канала . Применяться будет просто - нужно распознать сигнал он будет стандартный - есть ,выдать ОК! Если не похож - выдать - нет . Форма сигнала после цифровой обработки должна выделится.Ну это не моя задача. Цитата(ILYAUL @ Nov 1 2009, 22:45)  Кстати , а модулирующий сигнал периодический или как бог на душу положит ..случайный , если пропустил -повторов не будет .
--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0 SHA-256
|
|
|
|
|
Nov 1 2009, 22:33
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Lmx2315 @ Nov 1 2009, 19:36)  правильно - откалибравали и крутим до следующей калибровки , в любой момент фазы менятся не должны . Ну вроде как 15 каналов все равно не уместить в 1 МК, но если 2 МК по 8 каналов то наверное почти можно.... Смысл в том что на сомом деле менять выход нам нужно очень не часто т.к. частота на всех каналах одинакова. Если мы имеем возможность сначала готовить данные а потом "крутить каналы", то вывод на 8 каналах должен выглядеть примерно так: Код movw r31:r30, r1:r0 out PORTx, r14 r_14: dec r30 brne r14
out PORTx, r15 r_15: dec r31 brne r_15
movw r31:r30, r3:r2 out PORTx, r16 r_16: dec r30 brne r16
out PORTx, r17 r_17: dec r31 brne r_17
.......................... регистры r0-r??? заранее подготовлены и содержат в себе длительности неизменного вывода в порт регистры r14-r??? заранее подготовлены и содержат выводимое значение длительности перегружаются в текущие счетчики попарно movw(для экономии) нужно конечно это все уравнять по тактам да, и еще, для 8 сигналов нужно брать выводимые значения с запасом(для уравнивания всего цикла), те какое-то состояние порта будет два раза забито в регистрах с разными длительностями
|
|
|
|
|
Nov 1 2009, 23:25
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата 'Lmx2315' ] Данные такие: вредная палка - порядка 1-5 Вольт , полезный сигнал - порядка сотен микровольт - единиц милливольт Ну во вредной палке сигнал всё равно потерян навсегда , почему бы не "резануть " её компаратором. Сотношение частот несущей и модуляции? Если большое, не проще аналоговый фильтр 2-3 порядка и отсечь несушую. Или сначала умножить , что бы разнести их подальше , если соотношение маленькое, фильтрануть, и оцифровать Ацп многих MEGA имеют встроенный усилитель т.ч. можно поднять полезный сигнал с мировольт до вольт.
Сообщение отредактировал ILYAUL - Nov 1 2009, 23:33
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Nov 2 2009, 06:37
|

отэц
    
Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684

|
Цитата(ILYAUL @ Nov 2 2009, 02:25)  Ну во вредной палке сигнал всё равно потерян навсегда , почему бы не "резануть " её компаратором. Сотношение частот несущей и модуляции? Если большое, не проще аналоговый фильтр 2-3 порядка и отсечь несушую. Или сначала умножить , что бы разнести их подальше , если соотношение маленькое, фильтрануть, и оцифровать Ацп многих MEGA имеют встроенный усилитель т.ч. можно поднять полезный сигнал с мировольт до вольт. ..резануть компаратором ? ..это идея вообщем-то . Я одно время даже думал наплевать на палку - у меня полезный сигнал проявляется скажем так у нулей синусоиды (когда через ноль идёт) .Но побоялся что если всё так просто оставить - каскады АЦП будут в насыщении и отсюда частотные или ещё какие проблемы полезут . Я думал просто диодами уровень ограничить и сказать математикам что когда Ацп забит - не обрабатывать и выгрести что есть около нулей. Но что-то уж мне всё это коряво как-то показалось. Спасибо за идею  . Только придётся порог компаратора очень низко ставить - порядка ну порядка 1 мВольта , как бы там чего не лпавало уж очень сильно ...даже если честно не знаю как себя будет вести компаратор . Потом ведь после него ещё усиливать всё . ....модуляций там несколько , так как типов полезных сигналов тоже несколько у кого-то полоса примерно килогерцы , у кого-то сотни - десятки герц . Аналоговым фильтром всем не угодишь - в цифре можно всё лишнее отрезать , но до не ещё довести надо. Умножать в аналоге - такие дебри даже лезть не хочется . АЦП в мегах имеет уж очень дискретный усилитель - если бы я использовал АЦП меги - всё равно поставил бы внешний регулируемый операционничек . Но АЦП меги мне для обработки не пригодится - в рабочем режиме каналы очень быстро переключаются 1 мкс на канал . Никакая Атмега не успеет обмерить . Цитата(Огурцов @ Nov 2 2009, 01:54)  Даже если подготовить данные заранее, то максимум чего можно достичь, это 14.8 кгц на 8 каналов. Т.е. как я и говорил, осетра нужно урезать. Если взять разрешение в 1.5 градуса, то 8 каналов уже вполне можно тянуть. Либо 15, но на XMega. Либо еще более другой камень. Но это только по генерации, а не по решению задачи. прошу прощения а не помните случайно - погрешность в пусть 1.5 градуса это сколько Дб подавления у синфазных каналов ? Цитата(singlskv @ Nov 2 2009, 01:33)  Ну вроде как 15 каналов все равно не уместить в 1 МК, но если 2 МК по 8 каналов то наверное почти можно.... Смысл в том что на сомом деле менять выход нам нужно очень не часто т.к. частота на всех каналах одинакова. Если мы имеем возможность сначала готовить данные а потом "крутить каналы", то вывод на 8 каналах должен выглядеть примерно так: Код movw r31:r30, r1:r0 out PORTx, r14 r_14: dec r30 brne r14
out PORTx, r15 r_15: dec r31 brne r_15
movw r31:r30, r3:r2 out PORTx, r16 r_16: dec r30 brne r16
out PORTx, r17 r_17: dec r31 brne r_17
.......................... ...боюсь выглядеть смешным клоуном  - а в codevision теоретически сильно тормознее код сделает на Си ? Я в асемблере не очень , вовсе не очень . Нет выглядит понятно 0 но знаете так бывает - не знаешь даже как подступится , потому кодевиженом и пользовался - мастер всё за тебя делает .
--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0 SHA-256
|
|
|
|
|
Nov 2 2009, 09:56
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
А вот такая идейка: По прикидкам ( поверхостным) понадобятся два ЦАП+ компаратор( возможно два)+таблица синуса( косинуса)+ MEGA Вы формируете свою несущую на первом ЦАП по табличным данным , на одну полуволну ,например , 256 отсчётов. Весь период 512. Но собственно Вам нужна в таблице только полуволна. Вы получаете очень стабильную несущую и точку отсчёта 0 по Х и 0 по Y/. На втором ЦАП Вы формируете полуволну , которую можно сдвигать относительно первой аж 256 раз т.е стартовать ее с координат 0,0 или 1 по X 0-Y ....234 по X - 0 по Y и т.д. На 180 градусов шаг 0,7 градуса. Но Вам это и не понадобится. Здесь можно применить ( по прикидкам ) маленькую хитрость, но не зная сигнала сужу так , что сигнал не имеет постоянной составляющей и имет соответсвенно положительную и отрицательную полуволну. Например, Вы инвертируете отрицательную полуволну, что бы относительно нуля у Вас шли одна за другой положительные полуволны. И на втором ЦАП для каждой из этих полувол Вы формируете полуволну со сдвигом ( но здеть ещё надо продумать). Компаратор отработает на резонансе. Ну дальше понятно , инверсия на втором и несущей нет, но я бы сохранил сигал с перевёрнутой отрицательной полуволной полезного сигнала. Зная все точки отсчёта Вы можете потом восстановить исходный сигнал и оцифровать положительную и отрицательную полуволны всеми 10 разрядами АЦП не заморачиваясь на знак тем самым повысить точность оцифровки. Наверно Вы помните советские приемники с настройкой ручкой. Настраивались примерно так быстро крутилась ручка , по проскочившему звуку определялось наличие станции и медленно вовращаясь назад подстраивались под эту станцию. Здесь можно применить тот же принцип . Идти с шагом 2-3 градуса и по отработке 1-го компаратора засечь точку и уже точно зная , что нужная Вам фаза осталась "позади" потихоньку вернутся к данной точке , что бы отработали сразу два компаратора. Считаем , что попали в фазу. Попробуйте посчитать , по временам , я смогу это проделать , только вечером дома . Да и писать я думаю придётся асмом - затрат меньше. Вот такая идейка.  Да и я не понял , зачем порог для отсечки выставлять в миливольтах , если столб , как вы писали от 1-5 вольт и самое простое выставить 0, 5-0, 2 вольта порог и сажать сигнал в этот момент на землю. Конечно не зная схемы судить трудновато.
Сообщение отредактировал ILYAUL - Nov 2 2009, 10:00
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Nov 2 2009, 10:51
|

отэц
    
Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684

|
Цитата(ILYAUL @ Nov 2 2009, 12:56)  А вот такая идейка: ....... Вот такая идейка.  Да и я не понял , зачем порог для отсечки выставлять в миливольтах , если столб , как вы писали от 1-5 вольт и самое простое выставить 0, 5-0, 2 вольта порог и сажать сигнал в этот момент на землю. Конечно не зная схемы судить трудновато. тут мне надо подумать сильно над идеей, так всё сразу и не переварю. Спасибо заранее  . ----------------------------------------------------------------------------------- А касательно порога утрирую - полезный сигнал 1 мВ , палка - 1 Вольт , чтобы её компаратором на землю посадить - порог нужно ставить сравнимый с входным полезным сигналом и с запасом больше его примерно ну пусть - 100 мВольт. Ведь потом ещё полученный сигнал нужно раскачивать усилителем до уровня хотя бы 8-бит АЦП ( у АЦП 12 бит шкала - 2 Вольта) . С компаратором по моему идея хорошая .
--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0 SHA-256
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|