[an error occurred while processing this directive]
|
Задача: управлять 2-мя электромагнитами с помощью ШИМ. Магниты на 27в. Но в первоначальный момент ~1с подавать на него ~200в.
Реализация: таймер 1 работает в режиме Phase and Frequency Correct PWM Mode на системной частоте. Частота кварца 14.7456 Мгц. Цикл ШИМа 1200Гц. Оба канала сформированы на выход в режиме 3 (Set OC1A/OC1B on Compare Match when up-counting. Clear OC1A/OC1B on Compare Match when downcounting). В ICR1 - коэффициент определяющий цикл ШИМа (6144). АЦП работает на частоте 115200Гц. Режим Free running. Noise Reduction - не использую.
Использую 3 прерывания. Конец преобразования АЦП и два от таймера по переполнению и по совпадению ICR1. АЦП запускаю в прерываниях от таймера. Входа АЦП переключаю в прерывании от АЦП. Сделано это для того, чтобы в момент работы электромагнита замерять ток через электромагнит во включеном состоянии, контролировать отсутствие тока в выключенном состояния а так же контролировать напряжение на транзисторе в обоих состояниях.
Все это работает удовлетворительно, кроме одного момента. Когда скважность импульсов уменьшается где-то до ~4800 (от 6144), то показания, те которые я делаю во включенном состоянии, т.е. когда на выходах таймера присутствует 1, начинают болтаться. Болтание увеличивается (полной уверености нет, могу уточнить) при уменьшении скважности. Т.е. такое ощущение, что выборка-запоминание не происходит. Параллельно входам АЦП подключены резисторы на 100 Ом (увеличить?). Правда сейчас подумал, что может цикл преобразования 25 тактов, а не 13 как я расчитывал. Хотя насколько я понял даташит, преобразование 25 тактов происходит единожды при первоначальном включении АЦП. АЦП я не выключаю.
E-mail: info@telesys.ru