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

 
 
> AVR и фазовращатель
kanzler
сообщение Mar 31 2006, 08:11
Сообщение #1


Местный
***

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



Уважаемы, господа! Прошу вашей помощи. Есть меандр с частотным диапазоном 1-2 кГц. Нужно фращать фазу от 0 до 180 или 360 градусов с шагом 1-5 градусов. Поделитесь опытом или подскажите где есть исходники для AVR, если кто делал такую штуку. Я реализовал такую шутку но только на ПЛИС которая работает только с одной частотой.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bzx
сообщение Apr 4 2006, 11:50
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
kanzler
сообщение Apr 5 2006, 05:35
Сообщение #3


Местный
***

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



Цитата(bzx @ Apr 4 2006, 17:50) *
Задача разбивается на 2
1. Определение частоты входного сигнала
2. Формирование задержки.

Огромное спасибо всем кто отвечает. Есть но ...
1. Я уже писал частота изменяется в диапазоне от 1 до 2 кГц с шагом 1 Гц. Тут проблем нет, так как эти частоты генерирует сам процессор.
2. вот тут и возникает вопрос как реализовать задержку в таком диапазоне частот чтобы не пропадали полупериоды меандра.
Для одно фиксированной частоты это реализовать не сложно (уже есть такое решение и прекрасно работает) на основе счётчика который и определяет задержку. Всё упирается в пункт 2.
Go to the top of the page
 
+Quote Post
bzx
сообщение Apr 5 2006, 06:12
Сообщение #4


Местный
***

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



Цитата(kanzler @ Apr 5 2006, 09:35) *
1. Я уже писал частота изменяется в диапазоне от 1 до 2 кГц с шагом 1 Гц. Тут проблем нет, так как эти частоты генерирует сам процессор.

Вот чудак-человек! А сразу нельзя было сказать, что твоя частота формируется самим контроллером. Я же в пункте 1. предполагал, что частота подаётся извне. Это всё значительно упрощает.

Цитата
2. вот тут и возникает вопрос как реализовать задержку в таком диапазоне частот чтобы не пропадали полупериоды меандра.
Для одно фиксированной частоты это реализовать не сложно (уже есть такое решение и прекрасно работает) на основе счётчика который и определяет задержку. Всё упирается в пункт 2.

Насколько я понимаю, то что предложил &-rey тебе должно подойти. Если же ты говоришь, что это тебе не подходит, то значит, что то ты чего то не договариваешь в задаче. Я подозреваю, что есть желание, что бы задержка (сдвиг фаз, в прочем это одно и тоже) была не фиксированная, а изменялась во времени. Тогда требуется ещё и скорость изменения фазы и направление изменения. Поясни.


--------------------
Для связи email: info собака qbit.su
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Apr 5 2006, 06:43
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



cranky.gif а мне показалось, что имеллось ввиду что частоты малы и их легко можно контролировать ....
А вариант когда приходит частота а мы потом из неё делаем такую-же (с какой-то задержкой) и еще одну которая уже будет крутиться относительно этой опорной подойдет ?
Если да, тогда мене нужно будет вспомнить чего я там рисовал, и попытаться делать измерение входной частоты и выдачу корректированного параметра. Но следует оговорить скорость изменения входной частоты (фаза за период) что вообщем уже было сказано.
Go to the top of the page
 
+Quote Post
Валентиныч
сообщение Apr 5 2006, 09:21
Сообщение #6


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

Группа: Свой
Сообщений: 553
Регистрация: 17-02-05
Из: Свердловская обл.
Пользователь №: 2 712



Цитата(&-rey @ Apr 5 2006, 12:43) *
... и еще одну которая уже будет крутиться относительно этой опорной подойдет ?

А мне показалось, что фаза должна изменяться дискретно, с шагом 1-5 град. О каком "вращении" может идти речь?!
Я с самого начала обратил внимание на отсутствие закона изменения фазы. blink.gif


--------------------
Закономерность: Чем больше узнаю, тем меньше знаю...
Любые мнения, даже ошибочные, имеют право на существование.
Чем лучше узнаю людей, тем больше нравятся собаки...
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Apr 10 2006, 10:27
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



Насколько понимаю кристалл у нас mega128, что не может не радовать smile.gif
Тогда, раз такой вариант устраивает, делаем следущее:
Берем Timer 1 в режиме CTC (ограничение максимума по OCR1A)
где число в OCR1A - период выдаваемого меандра.
для CK/64 и 8 MHz это как раз 2 кГц и OCR1A=$FFFF
Генерацию выходного меандра делаем по OCR1B так:
изначально
Код
OCR1B=0;

настраиваем его выход на переключение по сравнению, а в самом обработчике
прерывания по сравнению делаем такую штуку
Код
OCR1B += (OCR1A/2)+1; //+1 нужен для коррекции, чтобы (OCR1A/2)+(OCR1A/2) было = OCR1A+1
if (OCR1B > OCR1A) OCR1B=0;

Настраиваем обработчик прерывания по захвату данных Timer 1 в регистр ICR1
Собственно на вход ICR и будет поступать сигнал от катушки.
Когда прерывание сработает в ICR уже будет лежать значение фазового сдвига.
НО, мы на этом не останавливаемся, хотя мне до сих пор не ясно почему ...
Для формирования сигнала сдвинутого по фазе от входного будем использовать OCR1С.
изначально
Код
OCR1С=alpha; // фаза на которую сдвигаем входной сигнал

настраиваем его выход на переключение по сравнению, а в самом обработчике
прерывания по сравнению делаем так:
Код
long Comp = (long)OCR1С + (long)(OCR1A/2)+1L;
while (Comp > (long)OCR1A) Comp -= (long)OCR1A;
OCR1С = (int)Comp;

а обработчик прерывания по захвату (ICR) делаем так:
Код
long Comp = (long)alpha + (long)TCNT1;
while (Comp > (long)OCR1A) Comp -= (long)OCR1A;
OCR1С = (int)Comp;

В последних обработчиках необходима промежуточная переменная Comp для того чтобы не потерять результат при переполнении. В принципе работа аналогично тому, что я приводил ранее с timer 2, только в этом случае мы отталкиваемся не от нуля, а от значения в TCNT1.
PS: Ухожу из обсуждения в отпуск, Удачи.
Go to the top of the page
 
+Quote Post
kanzler
сообщение Apr 11 2006, 04:26
Сообщение #8


Местный
***

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



Цитата(&-rey @ Apr 10 2006, 16:27) *
Ухожу из обсуждения в отпуск, Удачи.

Cпасибо за помощь. Попробую реализовать вашу затею.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - kanzler   Цитата(bzx @ Apr 5 2006, 12:12) Вот чудак...   Apr 5 2006, 09:27
|- - Валентиныч   Цитата(kanzler @ Apr 5 2006, 15:27) Хорош...   Apr 6 2006, 03:41
||- - kanzler   Цитата(Валентиныч @ Apr 6 2006, 09:41) Пр...   Apr 6 2006, 06:23
||- - kanzler   Огромное спасибо всем кто старался помочь в данном...   Apr 7 2006, 04:27
||- - &-rey   В симуляторе прошелся, вроде работает. для примера...   Apr 7 2006, 06:06
||- - kanzler   Цитата(&-rey @ Apr 7 2006, 12:06...   Apr 7 2006, 07:00
||- - &-rey   Цитата(kanzler @ Apr 7 2006, 10:00) Вот т...   Apr 7 2006, 07:34
|- - &-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


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

 


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


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