|
Генерация сигнала прямоугольной формы, реалиация линейного изменения |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 14)
|
Aug 29 2008, 02:20
|

Частый гость
 
Группа: Свой
Сообщений: 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кГц на АВР сгенерировать достаточно гиморойно да и с плавностью регулировки частоты проблемы будут.
|
|
|
|
|
Aug 29 2008, 02:47
|
Местный
  
Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304

|
Цитата(rezident @ Aug 29 2008, 08:57)  Сначала уточните с какой точностью нужно формировать частоту? Или это не периодическая частота, а сигналы произвольной длительности? Точность формирования частоты может быть в пределах: от +-1 до +-10 Гц. Цитата(igorenja @ Aug 29 2008, 09:20)  Я бы взял маааленькую плисину подовал на неё значение частоты от МК. 200кГц на АВР сгенерировать достаточно гиморойно да и с плавностью регулировки частоты проблемы будут. Генерация 200кГц для АВР не проблема.
|
|
|
|
|
Aug 29 2008, 05:14
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(KSN @ Aug 29 2008, 06:47)  Точность формирования частоты может быть в пределах: от +-1 до +-10 Гц. Генерация 200кГц для АВР не проблема. Напрасно Вы так думаете. С помощью таймера на частоте 200КГц разрешение в +-10Гц получить не удастся. Вам даже разрешения в 1КГц не достичь.
|
|
|
|
|
Aug 29 2008, 05:48
|
Местный
  
Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304

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

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 кГц.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 29 2008, 09:39
|

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?
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Aug 29 2008, 09:39
|
Местный
  
Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304

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

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 тактов для свипа, впрочем там преследовались другие цели.) Начать можно отсюда
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|