Дело в том, что на проциках PIC я могу достичь максимум 200кГц адекватного регулируемого по таким параметрам ШИМа, на 555 не выйдет, т.к. надо регулировать сооотношение сразу двух резюков (чтоб поддержать постоянную скважность при регулировке частоты), UC3843 - вот мой выбор, но пока-что есть большие проблемы с реализацией, т.к. на низах (единицы Гц) скважность либо около 30 % либо 99 либо 0. Короче не выходит у меня. Прошу помощи!
PWM (ШИМ) заданная скважность и широко регулируемая частота
- Сообщения: 40
- Зарегистрирован: Вс янв 30, 2011 18:52:55
Для одного из устройств возникла необходимость задающего ключа с возможностью широко регулировать частоту (от единиц герц до порядка 500 кГц) с выставленной (регулируемой от 50 до 95% скважностью). И тут я зашел в тупик! Помогите.
Дело в том, что на проциках PIC я могу достичь максимум 200кГц адекватного регулируемого по таким параметрам ШИМа, на 555 не выйдет, т.к. надо регулировать сооотношение сразу двух резюков (чтоб поддержать постоянную скважность при регулировке частоты), UC3843 - вот мой выбор, но пока-что есть большие проблемы с реализацией, т.к. на низах (единицы Гц) скважность либо около 30 % либо 99 либо 0. Короче не выходит у меня. Прошу помощи!
Дело в том, что на проциках PIC я могу достичь максимум 200кГц адекватного регулируемого по таким параметрам ШИМа, на 555 не выйдет, т.к. надо регулировать сооотношение сразу двух резюков (чтоб поддержать постоянную скважность при регулировке частоты), UC3843 - вот мой выбор, но пока-что есть большие проблемы с реализацией, т.к. на низах (единицы Гц) скважность либо около 30 % либо 99 либо 0. Короче не выходит у меня. Прошу помощи!
- Реклама
Нууу, самое простое решение без МК-генератор пилообразного напряжения с регулируемой частотой, а потом компаратор. (Сравнивает напряжение с генератора и выставленное делителем на резисторе).
На МК, кстати, частоту шим-а можно порядка нескольких мегагерц сделать, используя таймер в режиме PWM (шим и есть). Как на пик-е сделать, я вам не скажу, так как не помню, а на AVR могу даже проект вам выложить, чуть позже.
На МК, кстати, частоту шим-а можно порядка нескольких мегагерц сделать, используя таймер в режиме PWM (шим и есть). Как на пик-е сделать, я вам не скажу, так как не помню, а на AVR могу даже проект вам выложить, чуть позже.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Люблю Си...
- Сообщения: 986
- Зарегистрирован: Ср июл 07, 2010 06:48:57
Вот http://easyelectronics.ru/analogovyj-re ... ml#more-25 старая как мир схема аналогового ШИМа.
- Сообщения: 1201
- Зарегистрирован: Пт авг 21, 2009 03:22:12
Такой коэффициент перестройки по частоте - 500000 - получить практически нереально.
- Сообщения: 40
- Зарегистрирован: Вс янв 30, 2011 18:52:55
Спасибо за ответы, там не менее, меня очень заинтересовал вариант с AVR-ом я с ними не работал, но хотел начать, если получиться накропай исходничек, а дальше я сам курить буду.
Аналоговый ШИМ отдам "курить" своему напарнику - он по аналоговой части. За ответ спасибо.
Почему вариант поставить уставку скажем 70% скважности и менять частоту от 2..3Гц до 500кГц - нереальная задача? Я смог бы это реализовать, но на ПИКах, на которых я имею достаточный опыт работы мне не хватает частоты проца. (таймер считает в 4 раза медленнее частоты проца т.е. 20МГц/4 = 5МГц принимаем за единичную процентовку скважности - следовательно /100 - из этого имеем возможность регулировки с достаточной точностью максимум до 50 Кгц. Вот теперь получается -либо частоту проца надо выше, либо дискредитацию процентовки скважности ухудшать до 10% на шаг. Работая с таймерами.) И это не считая времени обработки команд.
Аналоговый ШИМ отдам "курить" своему напарнику - он по аналоговой части. За ответ спасибо.
Почему вариант поставить уставку скажем 70% скважности и менять частоту от 2..3Гц до 500кГц - нереальная задача? Я смог бы это реализовать, но на ПИКах, на которых я имею достаточный опыт работы мне не хватает частоты проца. (таймер считает в 4 раза медленнее частоты проца т.е. 20МГц/4 = 5МГц принимаем за единичную процентовку скважности - следовательно /100 - из этого имеем возможность регулировки с достаточной точностью максимум до 50 Кгц. Вот теперь получается -либо частоту проца надо выше, либо дискредитацию процентовки скважности ухудшать до 10% на шаг. Работая с таймерами.) И это не считая времени обработки команд.
- Реклама
Вам в каком виде? IAR? WINAVR? (Последний самый распространенный. Но мне в принципе, все равно. Пишу я на Си) Да, и как с вводом информации? Переменные резисторы?
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Люблю Си...
- Сообщения: 40
- Зарегистрирован: Вс янв 30, 2011 18:52:55
Про IAR вообще не слышал. Так, что оптимальнее WINAVR. Ввод информации посредством нажатия на соответствующие кнопки (типа PWM++ PWM-- FRQ++ FRQ--).
Заодно поинтересуюсь в какой среде вы пишите программки для своих АВР-проектов.
PS: меня очень интересует какая максимальная (расчетная приблизительно) частота ШИМа получиться и с какой градуировкой шага можно будет регулировать скважность?
(на счет скважности в принципе будет видно по коду... а с частотой вопрос.)
Заодно поинтересуюсь в какой среде вы пишите программки для своих АВР-проектов.
PS: меня очень интересует какая максимальная (расчетная приблизительно) частота ШИМа получиться и с какой градуировкой шага можно будет регулировать скважность?
(на счет скважности в принципе будет видно по коду... а с частотой вопрос.)
Значит, 500 кГц достигнуть получается с 16 мГц внешнего тактирования. Однако, количество шагов зависит от выбранной частоты и колеблется от 65536 до 32. Минимальная частота 270 Гц. максимальная-500 кГц.
Регулировка кнопками-еще проще. Если вас устроит такой шаг перестройки, я скину вам проектик завтра.
Регулировка кнопками-еще проще. Если вас устроит такой шаг перестройки, я скину вам проектик завтра.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Люблю Си...
- Сообщения: 40
- Зарегистрирован: Вс янв 30, 2011 18:52:55
Отлично. Спасибо! Буду ждать наброски проектика.
Итак, вот наброски. Частота и заполнение ШИМ просто инкрементируются по куругу. Но общий смысл, я думаю, понятен.
Кнопки вы уж сами прикрутите, как вам надо. Внутри есть функция-Set_PWM с двумя аргументами-частотой и заполнением (от 0 до 100, тоже можно изменить). Функции передается частота в 100 раз меньше заданной. Соответственно, ее прирост 100 ГЦ.
Если нужно, расскажу как это работает.
Кнопки вы уж сами прикрутите, как вам надо. Внутри есть функция-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
Здравствуйте,
Подскажите пожалуйста, а можно ли сделать на Atmega16, так, чтобы он выдввал прямоугольные импульсы в диапазаоне от 1 Гц до 5 МГц с шагом в ~1Гц и изменение длительности импульса (при заданной частоте) от 0 до 100 % с шагом в 0.5% ??
Подскажите пожалуйста
Подскажите пожалуйста, а можно ли сделать на Atmega16, так, чтобы он выдввал прямоугольные импульсы в диапазаоне от 1 Гц до 5 МГц с шагом в ~1Гц и изменение длительности импульса (при заданной частоте) от 0 до 100 % с шагом в 0.5% ??
Подскажите пожалуйста
Одними внутренними ресурсами Atmega16 этого не сделать. Для этого нужен как минимум 32-разрядный таймер. Из широко распространенных камней это ARM(можно что-то мелкое вроде LPC2101).Lander писал(а):Подскажите пожалуйста, а можно ли сделать на Atmega16, так, чтобы он выдввал прямоугольные импульсы в диапазаоне от 1 Гц до 5 МГц с шагом в ~1Гц
А вот с точностью длительности импульсов в 0.5% это нужна тактовая частота таймера/счетчика как минимум (100%/0.5%)*5МГц=1000МГц. Сомневаюсь, что вы сможете найти контроллер с таймером на такую частоту. Выходит только мастерить из сверхскоростной логики если такую найдете. Ну или аналоговый метод самый простой, но нужно использовать прецизионные компоненты чтобы обеспечить эти самые 0.5%.
- Сообщения: 953
- Зарегистрирован: Вт июн 22, 2010 08:11:42
uk8amk, Спасибо за ответ!!
1)Но с длительностью импульсов разобрались. На Атмеге16 реализовали изменение длительности импульсов от 0 до 100% с шагом в 1%. (!)
2)Но вот с частотой не понятн. Какую максимальную частоту может выдать Атмега16 с внешним кварцем на 16Мгц и как сдлеать изменние частоты с шагом в 1 Гц ???
Может кто то так делал ??? Может кто пожалуйста подскажет ?????

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


