|
AVR и фазовращатель |
|
|
|
 |
Ответов
|
Apr 4 2006, 11:50
|

Местный
  
Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528

|
Цитата(kanzler @ Mar 31 2006, 12:11)  Уважаемы, господа! Прошу вашей помощи. Есть меандр с частотным диапазоном 1-2 кГц. Нужно фращать фазу от 0 до 180 или 360 градусов с шагом 1-5 градусов. Поделитесь опытом или подскажите где есть исходники для AVR, если кто делал такую штуку. Я реализовал такую шутку но только на ПЛИС которая работает только с одной частотой. Задача разбивается на 2 1. Определение частоты входного сигнала 2. Формирование задержки.
--------------------
Для связи email: info собака qbit.su
|
|
|
|
|
Apr 5 2006, 05:35
|

Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728

|
Цитата(bzx @ Apr 4 2006, 17:50)  Задача разбивается на 2 1. Определение частоты входного сигнала 2. Формирование задержки. Огромное спасибо всем кто отвечает. Есть но ... 1. Я уже писал частота изменяется в диапазоне от 1 до 2 кГц с шагом 1 Гц. Тут проблем нет, так как эти частоты генерирует сам процессор. 2. вот тут и возникает вопрос как реализовать задержку в таком диапазоне частот чтобы не пропадали полупериоды меандра. Для одно фиксированной частоты это реализовать не сложно (уже есть такое решение и прекрасно работает) на основе счётчика который и определяет задержку. Всё упирается в пункт 2.
|
|
|
|
|
Apr 5 2006, 06:12
|

Местный
  
Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528

|
Цитата(kanzler @ Apr 5 2006, 09:35)  1. Я уже писал частота изменяется в диапазоне от 1 до 2 кГц с шагом 1 Гц. Тут проблем нет, так как эти частоты генерирует сам процессор. Вот чудак-человек! А сразу нельзя было сказать, что твоя частота формируется самим контроллером. Я же в пункте 1. предполагал, что частота подаётся извне. Это всё значительно упрощает. Цитата 2. вот тут и возникает вопрос как реализовать задержку в таком диапазоне частот чтобы не пропадали полупериоды меандра. Для одно фиксированной частоты это реализовать не сложно (уже есть такое решение и прекрасно работает) на основе счётчика который и определяет задержку. Всё упирается в пункт 2. Насколько я понимаю, то что предложил &-rey тебе должно подойти. Если же ты говоришь, что это тебе не подходит, то значит, что то ты чего то не договариваешь в задаче. Я подозреваю, что есть желание, что бы задержка (сдвиг фаз, в прочем это одно и тоже) была не фиксированная, а изменялась во времени. Тогда требуется ещё и скорость изменения фазы и направление изменения. Поясни.
--------------------
Для связи email: info собака qbit.su
|
|
|
|
|
Apr 5 2006, 09:27
|

Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728

|
Цитата(bzx @ Apr 5 2006, 12:12)  Вот чудак-человек! А сразу нельзя было сказать, что твоя частота формируется самим контроллером. Я же в пункте 1. предполагал, что частота подаётся извне. Это всё значительно упрощает. Насколько я понимаю, то что предложил &-rey тебе должно подойти. Если же ты говоришь, что это тебе не подходит, то значит, что то ты чего то не договариваешь в задаче. Я подозреваю, что есть желание, что бы задержка (сдвиг фаз, в прочем это одно и тоже) была не фиксированная, а изменялась во времени. Тогда требуется ещё и скорость изменения фазы и направление изменения. Поясни. Народ, не ужели задача так и не понята вами. Есть меандр, частота его выбирается в момент настройки прибора и дальше в работе остаётся неизменной, этот меандр генерит микроконтроллер. Частота выбирается из диапазона 1-2кГц. Далее эта частота возбуждает катушку индуктивности. С катушки снимается ток и снятый сигнал является так же меандром, он приходит на микроконтроллер. Вот этот самый меандр что приходит с катушки нужно сдвигать по фазе в обоих направлениях от 0 до 180 градусов. Шаг сдвига от 1 до 5 градусов(если смущает диапазон шага тогда пусть будет шаг 1 градус) меняем значение сдвига не во времени, например поменяли угол и смотрим что происходит. Сдвинутый по фазе меандр уже идёт на синхронный детектор который так же находиться в микроконтроллере. Не знаю ещё как объяснить. Может тогда структурную схему выложить? Цитата(Валентиныч @ Apr 5 2006, 15:21)  А мне показалось, что фаза должна изменяться дискретно, с шагом 1-5 град. О каком "вращении" может идти речь?! Я с самого начала обратил внимание на отсутствие закона изменения фазы.  Хорошо, может где то я и ошибся назвав это фазовращением. Сдвиг фазы будет правильно. Но устройство которое сдвигает фазу как называется - сдвигатель фазы?
|
|
|
|
|
Apr 6 2006, 03:41
|
Профессионал
   
Группа: Свой
Сообщений: 553
Регистрация: 17-02-05
Из: Свердловская обл.
Пользователь №: 2 712

|
Цитата(kanzler @ Apr 5 2006, 15:27)  Хорошо, может где то я и ошибся назвав это фазовращением. Сдвиг фазы будет правильно. Но устройство которое сдвигает фазу как называется - сдвигатель фазы? Принципиальной ошибки разумеется нет. Скорее - терминологическая, которая и не позволила сразу понять вашу задачу. Под "фазовращением" обычно подразумевают процесс непрерывного изменения фазы во времени, обычно по какому-то определенному закону. В данном случае речь идет именно о фазовых (или временнЫх) задержках (именно сдвигах!), что сильно упрощает задачу. А устройство скорее будет называться - линия задержки.  Но, к сожалению, это не позволит менять фазу в обе стороны от реперной. Только в минус... Но - на любое значение, хоть на 3600 град (10 периодов). Формулу, по которой вычисляется фазовая задержка, я написал выше. Надеюсь, что переложить ее на программный код труда не составит? Встречные вопросы: интересно, а как вы собираетесь реализовать генерацию меандра с заданной точностью (1 Гц) в этом диапазоне? И какая, все таки, дискретность изменения фазы вам нужна - 1 или 5 град.?
Сообщение отредактировал Валентиныч - Apr 6 2006, 03:49
--------------------
Закономерность: Чем больше узнаю, тем меньше знаю... Любые мнения, даже ошибочные, имеют право на существование. Чем лучше узнаю людей, тем больше нравятся собаки...
|
|
|
|
|
Apr 6 2006, 06:23
|

Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728

|
Цитата(Валентиныч @ Apr 6 2006, 09:41)  Принципиальной ошибки разумеется нет. Скорее - терминологическая, которая и не позволила сразу понять вашу задачу. Под "фазовращением" обычно подразумевают процесс непрерывного изменения фазы во времени, обычно по какому-то определенному закону. В данном случае речь идет именно о фазовых (или временнЫх) задержках (именно сдвигах!), что сильно упрощает задачу. А устройство скорее будет называться - линия задержки.  Но, к сожалению, это не позволит менять фазу в обе стороны от реперной. Только в минус... Но - на любое значение, хоть на 3600 град (10 периодов). Формулу, по которой вычисляется фазовая задержка, я написал выше. Надеюсь, что переложить ее на программный код труда не составит? Встречные вопросы: интересно, а как вы собираетесь реализовать генерацию меандра с заданной точностью (1 Гц) в этом диапазоне? И какая, все таки, дискретность изменения фазы вам нужна - 1 или 5 град.? Я не собираюсь ... я уже реализовал такую генерацию. Всё просто - таймер микроконтроллера это умеет делать без всяких проблем. Дискретность нужна точная, то есть 1 градус, но я понимаю что возможно такой точности не добиться и поэтому задача упрощается до точности 5 градусов Цитата(&-rey @ Apr 6 2006, 12:10)  ну вот, опять я запутался. А зачем сдвигать фазу для того чтобы подать её на детектор в том же контроллере ? а может просто к результату детектора добавить данную фазу ? Если все таки нужно один из сигналов сдвинуть по фазе, или, что тоже самое, ввести задержку то можно наверное так: Этот сигнал заводим на внешнее INT0 и настраиваем прерывание по изменению. в обработчике INT0 перезапускаем таймер1 а фазу записывем в OCR1A регистр. когда прерывание по OCR1A произойдет меняем состояние выходного сигнала ноги на обратный. (а еще лучьше сразу аппаратно настроить режим перключения спец. ноги OCRA)
проблема состоит только в синхронизации входной частоты но это тоже можно сделать либо при старте процессора, либо в его софте когда вы подаете частоту на катушку.
PS: Это все только идеи которые нужно проверять ... Сдвиг фазы нужен для того чтобы было возможно обнаружить металлический предмет из определённого металла. Это связано стеорией ... и думаю вы меня поймёте. На данный момент так и реализованна работа синхронного детектора, по прерыванию INT2 микроконтроллера и работает синхронный детектор. Теперь осталось реализовать сдвиг фазы меандра. Мысль, изложенная вами, очень даже привлекательна. Вы правы её надо проверить.
Сообщение отредактировал kanzler - Apr 6 2006, 06:29
|
|
|
|
|
Apr 7 2006, 06:06
|
Местный
  
Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064

|
В симуляторе прошелся, вроде работает. для примера взял 2-й таймер, т.к. первый наверняка занят под генерацию меандра. фаза утанавливается в OCR2. Длительность периода таймера 2 должна быть больше чем длительность периода формируемого сигнала на катушку. вы писали что он устанавливается при старте, значит посчитать не проблема. HalfPeriod - длительность в тактах 2-го таймера полупериода выдаваемого сигнала соответственно не должна превышать мах число таймера 2 деленное на 2. Точность данного решения не велика, по отношению к выдаваемому сигналу поэтому для этого нужен 16 разрядный таймер, но главное чтоб это было то что необходимо. Тогда возможно сделаем все на одном 16 разрядном и 2-х регистрах сравнения. Например OCR1A делает выходной меандр, на ICR приходит прерывание от входного сигнала (тот который будем сдвигать) а по результату захвата будем писать OCR1B чтобы формировать уже сдвинутый сигнал. Теперь к вопросу о теории. Что понимаем под синхронным детектором. В чем смысел ? Вопрос в том, что если например Вы сдвигаете фазу назад чтобы сигналы наложились и тогда эта фаза и есть результат то тогда можно предложить измерять разность фаз непосредственно. Если проблема в том что нельзя определить знак фазы, то это тоже решаемо. Внесите ясность если эта теория не является закрытой информацией  Тогда возможно предложат больше вариантов решения. PS: В архивчике также дока на линии задержки, ссылок не помню, попробуй Googl-ом по ключевым словам
|
|
|
|
|
Apr 7 2006, 07:00
|

Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728

|
Цитата(&-rey @ Apr 7 2006, 12:06)  В симуляторе прошелся, вроде работает. для примера взял 2-й таймер, т.к. первый наверняка занят под генерацию меандра. так оно и есть. Один таймер у меня генерирует меандр (timer 1), другой запускает внешнее АЦП (timer 3). Цитата(&-rey @ Apr 7 2006, 12:06)  Тогда возможно сделаем все на одном 16 разрядном и 2-х регистрах сравнения. Например OCR1A делает выходной меандр, на ICR приходит прерывание от входного сигнала (тот который будем сдвигать) а по результату захвата будем писать OCR1B чтобы формировать уже сдвинутый сигнал. Вот тут пожайлуста поподробнее. Цитата(&-rey @ Apr 7 2006, 12:06)  Теперь к вопросу о теории. Что понимаем под синхронным детектором. В чем смысел ? Смысл синхронного детектора - определение синфазной или квадратурной составляющей сигнала. То есть мы им определяем, в зависимости от фазы, из какого материала находиться в рабочей области металлический предмет. Например: фаза сигнала от медного металла сдвигается на одно значение, а от аллюминевого металла совсем на другое значение. Таким образом зная величины сдвига фазы можно отстраивать металлодектор от аллюминия и искать только медесодержащий металл. Цитата(&-rey @ Apr 7 2006, 12:06)  PS: В архивчике также дока на линии задержки, ссылок не помню, попробуй Googl-ом по ключевым словам  Спасибо!
|
|
|
|
|
Apr 7 2006, 07:34
|
Местный
  
Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064

|
Цитата(kanzler @ Apr 7 2006, 10:00)  Вот тут пожайлуста поподробнее. а Вы сначала этот проверьте, если подойдет, тогда можно подумать пополробнее. Цитата Смысл синхронного детектора - определение синфазной или квадратурной составляющей сигнала. То есть мы им определяем, в зависимости от фазы, из какого материала находиться в рабочей области металлический предмет. Например: фаза сигнала от медного металла сдвигается на одно значение, а от аллюминевого металла совсем на другое значение. Таким образом зная величины сдвига фазы можно отстраивать металлодектор от аллюминия и искать только медесодержащий металл. вот и я об этом, зачем сдвигать полученную частоту, если можно просто измерять сдвиг фаз ? А настраивать соответственно коридором изменения фазы. Тут как раз и не понятно, зачем полученную частоту еще двилать, почему не измерять сдвиг сразу ?
|
|
|
|
Сообщений в этой теме
kanzler AVR и фазовращатель Mar 31 2006, 08:11 &-rey Цитата(kanzler @ Mar 31 2006, 11:11) Уваж... Mar 31 2006, 08:26 Валентиныч Цитата(kanzler @ Mar 31 2006, 14:11) Есть... Apr 1 2006, 10:09 kanzler Цитата(Валентиныч @ Apr 1 2006, 16:09) Не... Apr 3 2006, 03:58 Валентиныч Все таки, поставьте задачу конкретнее - начиная со... Apr 3 2006, 12:09 kanzler Меандр формируется аппаратно-программным способом ... Apr 4 2006, 05:37 &-rey to kanzler
Судя по постам проблема еще не решена ?... Apr 4 2006, 06:44  kanzler Цитата(&-rey @ Apr 4 2006, 12:44... Apr 4 2006, 07:36   &-rey Цитата(kanzler @ Apr 4 2006, 10:36) К Сож... Apr 4 2006, 07:41    kanzler Цитата(&-rey @ Apr 4 2006, 13:41... Apr 4 2006, 09:12     &-rey Цитата(kanzler @ Apr 4 2006, 12:12) Цитат... Apr 4 2006, 10:17   &-rey а мне показалось, что имеллось ввиду что частоты м... Apr 5 2006, 06:43    Валентиныч Цитата(&-rey @ Apr 5 2006, 12:43... Apr 5 2006, 09:21     &-rey Насколько понимаю кристалл у нас mega128, что не м... Apr 10 2006, 10:27      kanzler Цитата(&-rey @ Apr 10 2006, 16:2... Apr 11 2006, 04:26    &-rey Цитата(kanzler @ Apr 5 2006, 12:27) Сдвин... Apr 6 2006, 06:10 Валентиныч Для задержки сигнала, который УЖЕ имеется в камне ... Apr 7 2006, 12:55 kanzler Цитата(Валентиныч @ Apr 7 2006, 18:55) Дл... Apr 10 2006, 04:03
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|