PWM (ШИМ) заданная скважность и широко регулируемая частота

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Ответить
mvm
Открыл глаза
Сообщения: 40
Зарегистрирован: Вс янв 30, 2011 18:52:55

Сообщение mvm »

Для одного из устройств возникла необходимость задающего ключа с возможностью широко регулировать частоту (от единиц герц до порядка 500 кГц) с выставленной (регулируемой от 50 до 95% скважностью). И тут я зашел в тупик! Помогите.
Дело в том, что на проциках PIC я могу достичь максимум 200кГц адекватного регулируемого по таким параметрам ШИМа, на 555 не выйдет, т.к. надо регулировать сооотношение сразу двух резюков (чтоб поддержать постоянную скважность при регулировке частоты), UC3843 - вот мой выбор, но пока-что есть большие проблемы с реализацией, т.к. на низах (единицы Гц) скважность либо около 30 % либо 99 либо 0. Короче не выходит у меня. Прошу помощи!
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Нууу, самое простое решение без МК-генератор пилообразного напряжения с регулируемой частотой, а потом компаратор. (Сравнивает напряжение с генератора и выставленное делителем на резисторе).

На МК, кстати, частоту шим-а можно порядка нескольких мегагерц сделать, используя таймер в режиме PWM (шим и есть). Как на пик-е сделать, я вам не скажу, так как не помню, а на AVR могу даже проект вам выложить, чуть позже.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Реклама
Держит паяльник хвостом
Сообщения: 986
Зарегистрирован: Ср июл 07, 2010 06:48:57

Сообщение Anode_Katode »

Вот http://easyelectronics.ru/analogovyj-re ... ml#more-25 старая как мир схема аналогового ШИМа.
Сверлит текстолит когтями
Сообщения: 1201
Зарегистрирован: Пт авг 21, 2009 03:22:12

Сообщение bolek »

Такой коэффициент перестройки по частоте - 500000 - получить практически нереально.
Реклама
Эиком - электронные компоненты и радиодетали
mvm
Открыл глаза
Сообщения: 40
Зарегистрирован: Вс янв 30, 2011 18:52:55

Сообщение mvm »

Спасибо за ответы, там не менее, меня очень заинтересовал вариант с AVR-ом я с ними не работал, но хотел начать, если получиться накропай исходничек, а дальше я сам курить буду.

Аналоговый ШИМ отдам "курить" своему напарнику - он по аналоговой части. За ответ спасибо.

Почему вариант поставить уставку скажем 70% скважности и менять частоту от 2..3Гц до 500кГц - нереальная задача? Я смог бы это реализовать, но на ПИКах, на которых я имею достаточный опыт работы мне не хватает частоты проца. (таймер считает в 4 раза медленнее частоты проца т.е. 20МГц/4 = 5МГц принимаем за единичную процентовку скважности - следовательно /100 - из этого имеем возможность регулировки с достаточной точностью максимум до 50 Кгц. Вот теперь получается -либо частоту проца надо выше, либо дискредитацию процентовки скважности ухудшать до 10% на шаг. Работая с таймерами.) И это не считая времени обработки команд.
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Вам в каком виде? IAR? WINAVR? (Последний самый распространенный. Но мне в принципе, все равно. Пишу я на Си) Да, и как с вводом информации? Переменные резисторы?
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Реклама
mvm
Открыл глаза
Сообщения: 40
Зарегистрирован: Вс янв 30, 2011 18:52:55

Сообщение mvm »

Про IAR вообще не слышал. Так, что оптимальнее WINAVR. Ввод информации посредством нажатия на соответствующие кнопки (типа PWM++ PWM-- FRQ++ FRQ--).
Заодно поинтересуюсь в какой среде вы пишите программки для своих АВР-проектов.

PS: меня очень интересует какая максимальная (расчетная приблизительно) частота ШИМа получиться и с какой градуировкой шага можно будет регулировать скважность?
(на счет скважности в принципе будет видно по коду... а с частотой вопрос.)
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Значит, 500 кГц достигнуть получается с 16 мГц внешнего тактирования. Однако, количество шагов зависит от выбранной частоты и колеблется от 65536 до 32. Минимальная частота 270 Гц. максимальная-500 кГц.
Регулировка кнопками-еще проще. Если вас устроит такой шаг перестройки, я скину вам проектик завтра.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
mvm
Открыл глаза
Сообщения: 40
Зарегистрирован: Вс янв 30, 2011 18:52:55

Сообщение mvm »

Отлично. Спасибо! Буду ждать наброски проектика.
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Итак, вот наброски. Частота и заполнение ШИМ просто инкрементируются по куругу. Но общий смысл, я думаю, понятен.
Кнопки вы уж сами прикрутите, как вам надо. Внутри есть функция-Set_PWM с двумя аргументами-частотой и заполнением (от 0 до 100, тоже можно изменить). Функции передается частота в 100 раз меньше заданной. Соответственно, ее прирост 100 ГЦ.
Если нужно, расскажу как это работает.
Вложения
PWM.rar
(37.19 КБ) 417 скачиваний
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Держит паяльник хвостом
Сообщения: 953
Зарегистрирован: Вт июн 22, 2010 08:11:42

Сообщение Lander »

Здравствуйте,

Подскажите пожалуйста, а можно ли сделать на Atmega16, так, чтобы он выдввал прямоугольные импульсы в диапазаоне от 1 Гц до 5 МГц с шагом в ~1Гц и изменение длительности импульса (при заданной частоте) от 0 до 100 % с шагом в 0.5% ??

Подскажите пожалуйста
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Lander писал(а):Подскажите пожалуйста, а можно ли сделать на Atmega16, так, чтобы он выдввал прямоугольные импульсы в диапазаоне от 1 Гц до 5 МГц с шагом в ~1Гц
Одними внутренними ресурсами Atmega16 этого не сделать. Для этого нужен как минимум 32-разрядный таймер. Из широко распространенных камней это ARM(можно что-то мелкое вроде LPC2101).
А вот с точностью длительности импульсов в 0.5% это нужна тактовая частота таймера/счетчика как минимум (100%/0.5%)*5МГц=1000МГц. Сомневаюсь, что вы сможете найти контроллер с таймером на такую частоту. Выходит только мастерить из сверхскоростной логики если такую найдете. Ну или аналоговый метод самый простой, но нужно использовать прецизионные компоненты чтобы обеспечить эти самые 0.5%.
Держит паяльник хвостом
Сообщения: 953
Зарегистрирован: Вт июн 22, 2010 08:11:42

Сообщение Lander »

uk8amk, Спасибо за ответ!!

1)Но с длительностью импульсов разобрались. На Атмеге16 реализовали изменение длительности импульсов от 0 до 100% с шагом в 1%. (!)

2)Но вот с частотой не понятн. Какую максимальную частоту может выдать Атмега16 с внешним кварцем на 16Мгц и как сдлеать изменние частоты с шагом в 1 Гц ???

Может кто то так делал ??? Может кто пожалуйста подскажет ????? :oops: :cry:
Ответить

Вернуться в «Умные мысли»