Как у нас с трихограммой?
реношник:
теперь понятно.
Изначально когда писал функцию ПИДрегулятора предусматривал временнОй коэффициент, который зависел от промежутка времени между обращениями к этой функции.
Но потом пришел к варианту в котором просто устанавливается этот промежуток обращения к функции. По сути это то, что вы называете таймером.
реношник:
Вернусь к частоте ШИМ.
Хочу более обосновано показать мотивы по которым я делаю возможность для пользователя самостоятельно выбирать этот параметр.
К сожалению у меня в наличии только один привод и "мучать" буду только его. Но думаю, что показанных данных будет достаточно для аргументации моей позиции.
1 - собрана вот такая модель :
2 - первое, что смотрел это сигнал на самом моторчике при 50% ШИМ но разной частотой...
*** вот так выглядит дефолтная частота 500 Гц
*** теперь 1000 Гц
*** 5000 Гц
*** 9000 Гц
*** 11000 Гц
Думаю, что это первый аргумент...
Следующий пункт это пропорциональность и линейность изменения скорости вращения от процента ШИМ.
Измерения проводил так - после изменения %ШИМ моторчик работает пять секунд, а потом только начинается измерение.
Измеряю время за которое от энкодера приходит 10 импульсов. Из таких замеров формирую массив (до 250 элементов). Этот массив пропускаю через фильтр в котором выбираю наиболее часто встречающиеся значения для удаления шумов и ложных замеров (простое усреднение не понравилось).
Полученные данные свел в графики :
По моему тоже довольно красноречиво...
Хотя как вы ранее отмечали во всех режимах моторчик НЕ греется ...
Perelesnik:
Верю. Но зачем такие усложнения с ручным подбором пользователем частоты ШИМ - не понимаю. Для того, чтобы вручную подобрать оптимальную частоту, нужен в идеале осциллограф. Практичнее - чтобы была подпрограмма, перебирающая частоты и находящая оптимальную по данным с энкодера. В случае наличия такой подпрограммы калибровка частоты будет происходить в полностью автоматическом режиме, то есть, пользователю вручную ничего подстраивать не придется.
Единственно, режим калибровки не должен стартовать при каждом включении аппаратуры, а включаться принудительно.
И снова же, практическая ценность подбора частоты здесь весьма условна. В моем алгоритме достаточно, чтобы при 100% ШИМ двигатель достигал своих максимальных номинальных оборотов. И не грелся. Эти свойства уже присутствуют во всех двигателях, с которыми реально приходится иметь дело, так как при их расчете, видимо, предполагалось, что требуется обеспечить работоспособность на широком диапазоне частот в различных устройствах без использования дополнительного низкочастотного фильтра.
Все остальное программа отрегулирует самостоятельно - сама подберет нужный ШИМ для обеспечения расчетных оборотов. И если на одном двигателе для одних и тех же оборотов нужно 50% ШИМ, на другом - 60% ШИМ, а на третьем - 40% ... на общей работе системы это никак не сказывается и пользователя абсолютно не волнует.
Получается очень гибкая система, в которой не важно, какой двигатель подключать. Важно только знать соотношение количества сигналов энкодера на один реальный оборот выходного вала редуктора и максимальные номинальные обороты двигателя.
Да, были у меня и старые еще советские коллекторные моторы, которые без фильтра (сопротивление + "электролит") не хотели стабильно работать. Но кто ими сейчас пользуется?
А показатель здесь важный всего один - греется мотор или не греется (недостаточно мощности или достаточно). Но опять же, с таким редуктором очень сложно загнать моторчик в режим недостатка мощности при работающем алгоритме регулировки ШИМ в зависимости от оборотов. Даже если заклинить выходной вал, программа быстро "добежит" до 100% наполнения ШИМ (где по осциллограмме уже будет ровненькая линия вверху, и частота "побоку"), что приведет скорее к проворачиванию вала в рабочем колесе, или к разрушению редуктора, или к отказу модуля питания... смотря где "тонко" будет, чем к фатальному перегреву самого моторчика.
Это чисто из опыта.
Единственный случай, когда Неизбежно нужно настраивать "идеальный" ШИМ для каждого конкретного двигателя - это если в системе отсутствует обратная связь (нет энкодера).
ЗЫ: блин... ну чем мы вот тут занимаемся 31 декабря? Извращенцы!
реношник:
Ну как бы не могу я с вами согласиться... ???
Вы спрашиваете зачем это нужно пользователю... По моему убеждению - наличие возможности всегда лучше чем отсутствие таковой...
Ну и еще немного картинок которые мотивируют меня заморачиваться с частотами...
привожу два графика - первый для частоты 13 кГц, а второй для 500 Гц.
для каждой частоты я провел четыре калибровочные процедуру, хотел отследить корреляцию.
первое это "динамический" диапазон изменения частоты вращения, у дефолтной частоты 500Гц он совсем грустный...
еще более грустной для меня оказалась корреляция .... :'(
даже наличие обратной связи (энкодера) как-то не мотивирует меня использовать 500Гц для ШИМа...
по моему с таким хаосом простая обратная связь это как рыбе зонтик.
Perelesnik:
Графики по частоте энкодера в одном масштабе? А то вижу, что при 13 кГц частота вращения "200" достигается на ШИМ 50% , а при 0.5 кГц та же частота при 20 % ШИМ.
И тогда получается, что "разброс" частоты вращения в обеих случаях имеет примерно одинаковую амплитуду (+- 25). По идее, амплитуда погрешности должна хоть как-то изменяться с изменением частоты.
Снова же, из опыта, такие "разбросы" может давать сам энкодер.
Я бы проверил, развязав "тахометр" и блок управления двигателем по питанию и сделав это на отдельных Ардуинках + экранирование и укорачивание сигнального провода энкодера.
Такое хаотическое изменение скорости вращения двигателя аж на 25% (судя по графику) должно быль очень хорошо заметно даже не слух.
Еще вариант - потратьте несколько минут на изготовление фильтра на вход двигателя (RC цепочка), чтобы исключить влияние частоты ШИМ. Благо, осциллограф под рукой.
Просто было у меня такое, что эти энкодеры мне злостно мозг выносили своей нестабильной работой, вызванной чувствительностью к всевозможным наводкам (классическим использованием подтягивающего резистора не особо решается).
Навигация