Всем привет, необходим ШИМ регулятор с изменяемой частотой (от 10Гц до 1000Гц шаг 10-20Гц) и скважностью(от 10% до 100% чем меньше тем лучше), но вся суть в том что бы частота была постоянной при изменении скважности. Режим FAST PWM меняет скважность только, а PHASE correct PWM наоборот постоянна скважность, а частота меняется. Есть идея объединить 2 таймера, одним менять частоту, а другим скважность. Попробовал реализовать, ничего путевого на тиньке 2313 не вышло. Скважность не захотела меняться. Таймером0 хотел регулировать скважность, а таймером1 частоту. Таймер один настроил на частоту в 7кГц, в таймере0 выбрал внешнее тактирование от таймера1, режим ФАСТ, и расчитал значение OCR для скважности в 30%, запустил в проутосе, но на выходе было пусто, потом в регистр занес значение 254 появился сигнал со скважностью такой же как и у тактирующего сигнала. Вопрос вот в чем, возможно на 2 таймерах замутить такую регулировку? Или не выйдет только с помощью МК. И если выйдет, то лучше тактировать мелкими импульсами или наоборот? Идея такова на одном таймере вырабатываем тактирующие импульсы( скважности 100% ), тактируем второй таймер в режиме фаст, такая идея имеет право на жизнь?
_________________ Нельзя всё знать, достаточно понимать.
я просто не знал про этот режим, а тут нашел когда читал про шим в инете, пока эксперементировал как раз Вы и отписались тут насчет этого режима. только вот не знаю какой лучше выбрать Ph. & fr. cor. PWM top=ICR1 или Ph. & fr. cor. PWM top=OCR1.
_________________ Нельзя всё знать, достаточно понимать.
Последний раз редактировалось yur4ik Вт окт 28, 2014 23:45:20, всего редактировалось 2 раз(а).
Так то управлять может как OCR1A, так и OCR1B, только второе не может быть TOP'ом. Но все равно лучше, когда оба регистра сравнения используются по назначению.
Выбрал первый вариант ICR1, настроил на частоту в 400Гц, скважность кинул чисто на вскидку. А когда захотел рассчитать то формулу так и не нашел. Может кто подскажет?
_________________ Нельзя всё знать, достаточно понимать.
ВСе разобрался, скважность от 0 и до верхнего значения Может кому пригодиться скважность меняется и частота не зависимо. Спойлер
Код:
/***************************************************** Chip type : ATtiny2313 AVR Core Clock frequency: 8,000000 MHz Memory model : Tiny External RAM size : 0 Data Stack size : 32 *****************************************************/
#include <tiny2313.h> #include <delay.h> // Timer1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Place your code here
}
// Declare your global variables here
void main(void) { // Declare your local variables here
Код пока плохочитаем. Уберите мусор, который конфигуратор cvavr заботливо навалил по всему коду. Особенно, бессмысленные комментарии в десятки строк. Если прерывание от таймера не используется - удалите его. (у меня был один случай, когда прерывание от АЦП было фактически без обработчика, но там оно служило для выхода МК из сна, так что там по-другому было трудно. Здесь случай явно не тот) Приведите выражения вида TIMSK=0x80; к читаемому - TIMSK=(1<<TOIE1); Речь, разумеется, не только о TIMSK, но и о PORTB, ACSR и прочих.
Заголовок сообщения: Re: ШИМ регулятор с изменяемой частотой и скважностью на МК
Добавлено: Вт июл 25, 2023 22:15:17
Встал на лапы
Зарегистрирован: Пн ноя 04, 2019 09:58:29 Сообщений: 104 Откуда: г. Нижний Тагил Свердл. обл.
Рейтинг сообщения:0
Добрый вечер. Подскажите пожалуйста какой режим Fast PWM для 16 битного таймера предпочтительней согласно таблице в Datasheet - 14 или 15 если частота задается фиксированной, а необходимо менять только коэффициент заполнения (порядка 10-90%). Для МК ATmega.
режим Fast PWM для 16 битного таймера предпочтительней согласно таблице в Datasheet - 14 или 15 если частота задается фиксированной, а необходимо менять только коэффициент заполнения (порядка 10-90%). Для МК ATmega.
Вот тебе образец на 16 битном, с регулируемой частотой и регулированной длительностью, с исходником на СИ в CodeVision и протеус. Там сам поиграешься с частотой на делителях в программе и в протеусе на на контроллере.
Заголовок сообщения: Re: ШИМ регулятор с изменяемой частотой и скважностью на МК
Добавлено: Ср июл 26, 2023 19:20:20
Встал на лапы
Зарегистрирован: Пн ноя 04, 2019 09:58:29 Сообщений: 104 Откуда: г. Нижний Тагил Свердл. обл.
Рейтинг сообщения:2
Не много копипасты из своих шпаргалок РЕЖИМ 14: Fast PWM (Быстрый ШИМ) TCCR1A |= (1 << WGM11); TCCR1B |= (1 << WGM12) | (1 << WGM13); //------ частота регулируется предделителем и ICR1, в ICR1 записывается верхний предел скважность регулируется OCR1A и OCR1B, при этом значение в OCR1A и OCR1B не может быть больше значения в ICR1, при OCR1A = ICR1 / 2 будет меандр доступны два канала: OC1A, OC1B Частота рассчитывается по формуле: Частота = Частота_мк / (Предделитель * ICR1) А значение в ICR1, если известна необходимая частота - по формуле: ICR1 = Частота_мк / (Предделитель * Частота) Чем больше значение в ICR1 тем меньше частота Например при предделителе 8, значении ICR1 = 100 получится частота 20 кГц, при этом значение OCR1A и OCR1B должно быть в пределах от 0 до 100 // ==== РЕЖИМ 15: Fast PWM (Быстрый ШИМ) TCCR1A |= (1 << WGM10) | (1 << WGM11); TCCR1B |= (1 << WGM12) | (1 << WGM13); частота регулируется предделителем и OCR1A, в OCR1A записывается верхний предел скважность регулируется OCR1B, при этом значение в OCR1B не может быть больше значения в OCR1A, при OCR1B = OCR1A / 2 будет меандр доступен один канал: OC1B Частота рассчитывается по формуле: Частота = Частота_мк / (Предделитель * OCR1A) А значение в OCR1A, если известна необходимая частота - по формуле: OCR1A = Частота_мк / (Предделитель * Частота) Чем больше значение в OCR1A тем меньше частота Например при предделителе 8, значении OCR1A = 100 получится частота 20 кГц, при этом значение OCR1A и OCR1B должно быть в пределах от 0 до 100 // ====
В режиме 14 регистром сравнения является OCR1, значение TOP устанавливается через регистр ICR1. В режиме 15 регистром сравнения является ICR1, значение TOP устанавливается через регистр OCR1.
В чем разница у двух последних режимов?
Регистр OCR1 благодаря использованию внутреннего буфера обновляется быстрее, чем ICR1. Поэтому, если частота меняется часто, и важно быстродействие, лучше выбрать режим 15. Почему в этом режиме только один канал OC1B? OCR1A используется в качестве регистра хранения TOP, то его канал OC1A становится недоступен, и остается только OC1B.
Если частота фиксированная, а чаще меняется скважность, можно использовать режим 14.
Кароч. Режимы 14/15 тот же Х, только в другой руке.
ICRx OCRxA OCRxB OCRxC и пр. устанавливаютя самостоятельно. Вообще-то затея у меня разработать схему/код/алгоритм управления топливными форсунками на двигатель спортивного мотоцикла. Перебрал все ШИМы. И все-каки пока остановился на 14 режиме (с возможным внешним тактированием на лапе T1). Ну это так, мысли вслух.
Вложения:
Комментарий к файлу: Протеус ШИМ-14.png [98.01 KiB]
Скачиваний: 52
А зависимость от частоты оборотов двигателя или подачи искры и длительность открытия или дозу впрыска знаешь, что решил заняться написалавкой проги? Да и двигатели бывают разные, однотактные, двухтактные и четырёх. С какой частотой открывается форсунка цилиндра четырёхтактного двигла, при показаниях тахометра 800 об/мин? Чтобы было понятно о чём это я базар веду ниже скрины. А может прошивку карты впрыска с какого-то двигуна с сопоставимыми лошадями в WinOls разобрал?
Заголовок сообщения: Re: ШИМ регулятор с изменяемой частотой и скважностью на МК
Добавлено: Сб июл 29, 2023 19:12:31
Встал на лапы
Зарегистрирован: Пн ноя 04, 2019 09:58:29 Сообщений: 104 Откуда: г. Нижний Тагил Свердл. обл.
Рейтинг сообщения:0
Впрыск — Это Просто. Но не легок путь джедая - грабли и капканы на каждом шагу. К стати, там по ссылке в конце темы форума есть и мой вопрос (без ответа) - может поделитесь знаниями?
Про моцики фиг его знает. На авто 800 об/ мин. это 800/60 сек/3 = 4,44 Гц. С такой частотой на ХХ на форсунки цилиндров подаётся сигнал. А длительность это уже от объёма цилиндра, температуры двигателя, от количества подаваемого воздуха, от показаний зондов на выхлопе и от пропускной возможности форсунки. В моцике тоже ведь частота с датчика холла снимается по показаниям которого искра появляется. Твоя длительность впрыска должна быть привязана к оборотам.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения