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

 
 
> Генерация сигнала прямоугольной формы, реалиация линейного изменения
KSN
сообщение Aug 29 2008, 01:55
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Необходимо генерить сигнал прямоугольной формы. Частота меняется линейно от 0 Гц до 200 кГц. Какие есть подходы для реализации?
Самое простое: использовать 2 таймера, таймер1 - остчитывает тики t, таймер2 - в режиме ШИМ с изменением периода(скважность постоянная). По каждому тику таймера один вычисляю частоту, записываю ее в таймер2(разрешаю для него прерывания, по срабатыванию которого период изменится). Есть одно но: допустим рассчитанная частота 100 Гц(10мс), а период таймера1 - 1 мс, получится, что таймер 1 в "холостую" отработает 10 тактов, на 10-ом вычислит новую частоту и запишет ее в таймер2. Как обойти это?
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 14)
rezident
сообщение Aug 29 2008, 01:57
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Сначала уточните с какой точностью нужно формировать частоту? Или это не периодическая частота, а сигналы произвольной длительности?
Go to the top of the page
 
+Quote Post
igorenja
сообщение Aug 29 2008, 02:20
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 8-08-08
Из: Новосибирск
Пользователь №: 39 488



Цитата(KSN @ Aug 29 2008, 07:55) *
Необходимо генерить сигнал прямоугольной формы. Частота меняется линейно от 0 Гц до 200 кГц. Какие есть подходы для реализации?
Самое простое: использовать 2 таймера, таймер1 - остчитывает тики t, таймер2 - в режиме ШИМ с изменением периода(скважность постоянная). По каждому тику таймера один вычисляю частоту, записываю ее в таймер2(разрешаю для него прерывания, по срабатыванию которого период изменится). Есть одно но: допустим рассчитанная частота 100 Гц(10мс), а период таймера1 - 1 мс, получится, что таймер 1 в "холостую" отработает 10 тактов, на 10-ом вычислит новую частоту и запишет ее в таймер2. Как обойти это?


Я бы взял маааленькую плисину подовал на неё значение частоты от МК.
200кГц на АВР сгенерировать достаточно гиморойно да и с плавностью регулировки частоты проблемы будут.
Go to the top of the page
 
+Quote Post
kamil_yaminov
сообщение Aug 29 2008, 02:40
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 395
Регистрация: 15-02-08
Из: Новосибирск
Пользователь №: 35 064



Можно на ГУНе каком-нить собрать без АВР и ПЛИСины
Go to the top of the page
 
+Quote Post
KSN
сообщение Aug 29 2008, 02:47
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Цитата(rezident @ Aug 29 2008, 08:57) *
Сначала уточните с какой точностью нужно формировать частоту? Или это не периодическая частота, а сигналы произвольной длительности?

Точность формирования частоты может быть в пределах: от +-1 до +-10 Гц.

Цитата(igorenja @ Aug 29 2008, 09:20) *
Я бы взял маааленькую плисину подовал на неё значение частоты от МК.
200кГц на АВР сгенерировать достаточно гиморойно да и с плавностью регулировки частоты проблемы будут.

Генерация 200кГц для АВР не проблема.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Aug 29 2008, 05:14
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(KSN @ Aug 29 2008, 06:47) *
Точность формирования частоты может быть в пределах: от +-1 до +-10 Гц.
Генерация 200кГц для АВР не проблема.

Напрасно Вы так думаете. С помощью таймера на частоте 200КГц разрешение в +-10Гц получить не удастся. Вам даже разрешения в 1КГц не достичь.
Go to the top of the page
 
+Quote Post
KSN
сообщение Aug 29 2008, 05:48
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Цитата(Qwertty @ Aug 29 2008, 12:14) *
Напрасно Вы так думаете. С помощью таймера на частоте 200КГц разрешение в +-10Гц получить не удастся. Вам даже разрешения в 1КГц не достичь.

Фраза "генерация 200кГц на АВР не проблема" относится только к возможности генерации такого сигнала. Линейно изменять с точностью 10Гц - да, невозможно. Буду рассматривать возможность изменения частоты с большим шагом.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 29 2008, 08:29
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(KSN @ Aug 29 2008, 09:48) *
Фраза "генерация 200кГц на АВР не проблема" относится только к возможности генерации такого сигнала. Линейно изменять с точностью 10Гц - да, невозможно. Буду рассматривать возможность изменения частоты с большим шагом.

Возможно и 10 Hz, и 1 Hz, и даже доли Hz. Вот только форма при этом будет далека от меандра. Можно сделать извращенный вариант - программный DDS, фильтр, а потом поставить компаратор...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 29 2008, 09:13
Сообщение #9


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(rx3apf @ Aug 29 2008, 07:29) *
Возможно и 10 Hz, и 1 Hz, и даже доли Hz. Вот только форма при этом будет далека от меандра. Можно сделать извращенный вариант - программный DDS, фильтр, а потом поставить компаратор...

Почему же извращённый? Это единственный вариант на авр, дешёвый к тому же. Недавно прорабатывал вариант НЧ свип-генератора синусоидального сигнала 0,3 Гц-500кГц на таком принципе, пмсм получалось неплохо, правда, руки пока не дошли до реализации в железе. Частота выдачи самплов составляла 4000 кГц со скоростью перестройки частоты от 0.3 Гц и выше за период. Если без перестройки то можно было увеличить частоту выборки до 5000 кГц.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Aug 29 2008, 09:25
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



+1
Если это единственная задача однокристалки, - то вполне реально её воплотить. В максимуме частоты на 16М получается 80 тактов. Это более чем достаточно. Процент точности здесь очевиден.

Вообще, конечно, для данной цели существуют специализированные микросхемы, а однокристалка может использоваться в качестве измерителя-подстройщика. smile.gif
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 29 2008, 09:39
Сообщение #11


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(SasaVitebsk @ Aug 29 2008, 08:25) *
однокристалка может использоваться в качестве измерителя-подстройщика

Автору нужна перестройка частоты, поэтому МК будет сильно занят вычислением и установкой очередного номинала частоты.
Цитата(SasaVitebsk @ Aug 29 2008, 08:25) *
Если это единственная задача однокристалки, - то вполне реально её воплотить. В максимуме частоты на 16М получается 80 тактов. Это более чем достаточно. Процент точности здесь очевиден

А здесь не понял ничего, какие 80 тактов, куда их прикладывать? Чтобы сгенерить нормальный синус, надо не менее 8-10 выборок на период. Для выходной частоты 200 кГц частота выборок составит не менее 1600-2000 кГц, и то этого может быть мало. При тактовой частоте проца 20 Мгц на одну выборку остаётся всего 10 тактов, какие 80?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
KSN
сообщение Aug 29 2008, 09:39
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Цитата(=GM= @ Aug 29 2008, 16:13) *
Почему же извращённый? Это единственный вариант на авр, дешёвый к тому же. Недавно прорабатывал вариант НЧ свип-генератора синусоидального сигнала 0,3 Гц-500кГц на таком принципе, пмсм получалось неплохо, правда, руки пока не дошли до реализации в железе. Частота выдачи самплов составляла 4000 кГц со скоростью перестройки частоты от 0.3 Гц и выше за период. Если без перестройки то можно было увеличить частоту выборки до 5000 кГц.

Растолкуйте алгоритм, пожалуйста
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 29 2008, 09:58
Сообщение #13


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Базовая программа генерации синуса
Код
loop:   add   r28,r24 ; 1
        adc   29,r25  ; 1
        adc   r30,r26 ; 1
        lpm           ; 3
        out   portb,r0; 1
        rjmp  loop    ; 2 => 9 cycles

Как видите, цикл выполняется за 9 тактов. Т.е. при тактовой частоте проца в 20 МГц, частота выдачи самплов будет равна 20000/9=2222 ксампла/с. Цикл легко можно уменьшить до 8 тактов и даже до 7. (С помощью усложнения схемы мне даже удалось довести до 4 тактов для генератора и до 5 тактов для свипа, впрочем там преследовались другие цели.)

Начать можно отсюда


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 29 2008, 10:11
Сообщение #14


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(=GM= @ Aug 29 2008, 15:39) *
Чтобы сгенерить нормальный синус


Что-то я прозевал, в какой момент в этой теме появился синус? Тема вроде бы называется "Генерация сигнала прямоугольной формы"? smile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Aug 29 2008, 10:31
Сообщение #15


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Прозевали вы сообщение уважаемого rx3apf (пост #8). Сначала надо получить синус, потом компаратор, потом меандр 0,3Гц-200кГц с дискретом 0,3 Гц, по-другому никак.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

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

 


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


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