Модераторы: Death_Morozz, null, Ale
Ale писал(а):Я бы себе вот такую штуку прикупил быhttp://motiondynamics.com.au...rs/12v-180w.html
kuzevan писал(а):О шаговиках я не отзывался пренебрежительно, напротив, я их люблю. Просто сомневаюсь, что они тянут эти скорости.
Ale писал(а):Я бы себе вот такую штуку прикупил быhttp://motiondynamics.com.au...rs/12v-180w.html
Ale писал(а):Я предлагаю следующую схему - при получении новой координаты рассчитывать скорость перемещения = (X(n) - X(n-1)) /T и заставлять двигатель перемещаться к новому заданию с заданной скоростью.
Ale писал(а): если мы ХОТИМ в точности повторять профиль трассы (а мне кажется как раз к этому надо стремиться)
Ale писал(а):мы не должны ставить задачу достичь следующей точки с максимальной скоростью и там остановиться, ожидая очередного задания . Кстати, сейчас вся ситема именно на это и заточена
Ale писал(а):В результате на быстые изменения позиции система не может отреагировать в силу инерционности, а на медленные - доезжает и останавливается... Оно нам надо?
Ale писал(а):Кстати, сейчас вся ситема именно на это и заточена, как впрочем и классический ПИД
CraCk писал(а):Только скажу что все зависит от мощности двигателей.
CraCk писал(а):Если решите проблему с настройкой МК тогда вылезут проблемы с реакцией симулятора.
CraCk писал(а):За четыре года поездок в автобусе на работу не замечал такого.
Ale писал(а):Давай прикинем. Из опыта общения на форумах я для себя выяснил, что перемещение от нижней точки оси до верхней должно занимать порядка 1 секнды на максимальной скорости. Пусть я ошибся и мы усложним задачу - 0.5 секунды. Для движителей с "замедляющими" редукторами это перемещение равно половине оборота вала редуктора - 180 градусов. Редукторы применяются обычно с передаточным числом 25. Итого - Один оборот редуктора в секунду = 25 оборотов в секунду для вала шаговика. Ну а дальше надо смотреть - сколько шагов на оборот. Если 200, то максимальная частота следования импульсов на обмотки составляет 5000 Гц (25*200). Цифра не выглядит фантастической. Мы мостом качаем 20 кГц. Насколько я помню, есть шаговики и с меньшим кол-вом шагов на оборот.Если я ошибаюсь, поправь меня.
Ale писал(а):
kuzevan писал(а):По шаговикам. Они великолепны в ЧПУ, где требуется точное позиционирование, для этого и созданы. Но в динамических задачах, где мы моделируем действительность, мне кажется, обычные двигатели лучше.
Вот код одностороннего воздействия. Проверенный в регуляторе оборотов. Для сима осталось ввести отрицательное воздействие (реверс) и, думаю, в качестве параметра регулирования в диф составляющей нужно задавать [b]ускорение[/b], чтоб не возникало [b]толчка[/b] (третья производная координаты). Для одностороннего воздействия как то так:
(квадрат времени константа, по этому учитываем ее в KOEFd2) POWER=(KOEFp*ERROR)+(KOEFi*ERRORsum)+((ERRORdelta-ERRORdeltatemp)*KOEFd2);
ERRORdeltatemp=ERRORdelta #define POWERmax 252 // максимальная мощность #define POWERmin 0 // минимальная мощность #define KOEFp 2 //коэффициент P
#define KOEFi 0.06 //коэффициент I
#define KOEFd 0.4 //коэффициент D //функция возвращает значение необходимого воздействия по ПИД
unsigned char PID(unsigned int ITEMset, unsigned int ITEMget) { static signed int POWER, ERRORsum, ERRORdelta, ERRORtemp, ERROR; ERROR=ITEMset-ITEMget; //ошибка регулирования if ((POWER>0)&(POWER<POWERmax)) ERRORsum=ERRORsum+ERROR; //если предел регулирования не достигнут, рассчитываем сумму ошибок
ERRORdelta=ERROR-ERRORtemp; //изменение ошибки ERRORtemp=ERROR; //текущая ошибка стала прошлой POWER=(KOEFp*ERROR)+(KOEFi*ERRORsum)+(KOEFd*ERRORdelta); //расчет воздействия по ПИД закону
if ((POWER>POWERmin)&(POWER<POWERmax)) return (char)POWER; else {if (POWER<=POWERmin) return POWERmin; if (POWER>=POWERmax) return POWERmax;}; //проверка предела воздействия }
kuzevan писал(а):Извините, коллеги, в первом посте я ошибся. Последние две формулы и текст должны выглядеть так:
При положительной скорости (движение вверх)
ШИМ=57*А+42,
При отрицательной (движение вниз)
ШИМ=57*A-42.
Вернуться в X-SIMULATOR и RU-SIMULATOR & SimTools
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 36