Модераторы: Death_Morozz, null, Ale
Spirit писал(а):Ale. В прошивке стабильно вылазит баг во время игры, причем вызывается очень просто - достаточно на большой скорости влететь в препятствие так, чтоб двигатели отработали максимальную амплитуду по нескольким силам... проявляется это в том, что двигатели начинают истерически дергаться - сильно дрожать при движении. Лечиться только повторной отправкой коэффициентов. Очень похоже на то, что коэффициенты устанавливаются в произвольное значение.
Ale писал(а):Очень странный баг. Скорее связан не с прошивкой, а с рестартом ардуины при перенапряжениях по питанию. Я, конечно, буду посмотреть. Но когда - не знаю. Уезжаю на две недели с хором в турне.
Я б с удовольствием, но знаний не хватает. Пока могу только тестировать.Ale писал(а):Кстати- приветствуется совместное допиливание прошивки. Пробуйте себя в прграммировании.
Подключение отдельного питания не помогло.Spirit писал(а):Кстати да. Я припоминаю, что еще во время запуска макетика с RC, ардуинку иногда начинало "колбасить" без отдельного питания. С твоей прошивкой такого не наблюдалось и питание я отрубил. Попробую не отключать питание от ардуины, по результатам отпишу.
Игра была в окне, если выбрать другое активное окно - игра перестает реагировать на управление - скорее всего я переключился в то время на другое окно.Spirit писал(а):И еще одно наблюдение... я конечно не уверен, но помоему руль тоже от ЮСБ отвалился в тот момент. Игра перестала реагировать на управление - все это относится к LFS. Другие игры попробую.
Spirit писал(а):Странно, у меня ШИМ вот так выглядел без нагрузки, Ale скажи, правильно контроллер ШИМ генерирует?Nur писал(а):Установил Р 08 D 05 мотор по спокойней стал но шим мне не понятен. https://youtu.be/9WvT-mlVApw
Ale писал(а):Собственно теперь формула регулирования следующая
pwm = (error*Kp - speed*Kd);
Причем если скорость слагаемое speed*Kd по модулю больше чем error*Kp , то еще до достижения конечной точки мотор врубается в ОБРАТНОМ направлении - активно тормозится.
Spirit писал(а):В прошивке стабильно вылазит баг во время игры, причем вызывается очень просто - достаточно на большой скорости влететь в препятствие так, чтоб двигатели отработали максимальную амплитуду по нескольким силам... проявляется это в том, что двигатели начинают истерически дергаться - сильно дрожать при движении. Лечиться только повторной отправкой коэффициентов.
Ale писал(а):1 - можно уменьшать (или совсем выключить) дифференциальный коэффициент, тогда останется только пропорциональная составляющая формулы. Но при этом возникают сложности с настройкой отклика на одновременно слабые амплитуды (типа езды по поребрикам) и на большие (типа прыжков с трамплина) . Собственно, уже неоднократно такой метод регулирования был опробован, и всегда он вызывал нарекания.
2 - для хорошего (динамичного) отклика на слабые отклонения необходимо увеличивать пропорциональный коэффициент. Но это почти неизбежно приводит к "перелетам" на больших амплитудах. Что бы как-то найти выход из этого противоречия в формулу регулирования добавлен дифференциальный коэффициент, с помощью которого есть возможность "притормаживать" мотор при превышении им заданной скорости.
Nur писал(а):Spirit писал(а):В прошивке стабильно вылазит баг во время игры, причем вызывается очень просто - достаточно на большой скорости влететь в препятствие так, чтоб двигатели отработали максимальную амплитуду по нескольким силам... проявляется это в том, что двигатели начинают истерически дергаться - сильно дрожать при движении. Лечиться только повторной отправкой коэффициентов.
Сегодня у меня случилось тоже самое. Spirit ты не нашел еще причину?
Spirit писал(а):Nur писал(а):Spirit писал(а):В прошивке стабильно вылазит баг во время игры, причем вызывается очень просто - достаточно на большой скорости влететь в препятствие так, чтоб двигатели отработали максимальную амплитуду по нескольким силам... проявляется это в том, что двигатели начинают истерически дергаться - сильно дрожать при движении. Лечиться только повторной отправкой коэффициентов.
Сегодня у меня случилось тоже самое. Spirit ты не нашел еще причину?
Этот баг очень напрягает. Я так понимаю, для этого надо выловить причину его возникновения.
Ale, может через какое-то время сбивается таймер, который задает частоту ШИМа? Я прописывал коэффициенты в прошивке как константу - баг все равно проявляется.
Ale писал(а):#ifdef CONST_COEFF
#define Kp 0x10L
#define Kd 0x08L
#else
Spirit писал(а):Ale писал(а):#ifdef CONST_COEFF
#define Kp 0x10L
#define Kd 0x08L
#else
А как правильно менять коэффициенты: допустим Kp=3A?
#define Kp 0x3AL так?
Что значит буква L после значения?
Делитель PD_DIV будет как-то влиять на коэффициент в данном случае?
Коеффициенты надо два раза прописывать?//========== PD регулятор ===================
#ifdef CONST_COEFF
#define Kp 0x10L
#define Kd 0x08L
#else
int Kp ; // будет делиться на PD_DIV
int Kd ; // будет делиться на PD_DIV
int KCS; // чексумма для проверки целостности
#endif
#ifdef CONST_COEFF
#else // если не испольшзуем константные коэффициенты ПИД
Kp = EEPROM.read(0); // читаем из EEPROM коэффициенты
Kd = EEPROM.read(1);
KCS= EEPROM.read(2);
cs = (Kp+Kd) & 0x00FF ; // вычисляем сумму и берем от нее только младший байт
if (KCS != cs) // если чексумма не совпадает
{
Kp = 0x10; // иициализируем константами (тут можно на всякий случай уже настроенные коэффициенты вписать
Kd = 0x08;
EEPROM.write(0,Kp);
EEPROM.write(1,Kd);
KCS = (Kp+Kd) & 0x00FF ; // вычисляем сумму и берем от нее только младший байт
EEPROM.write(2,KCS);
}
#endif
Spirit писал(а):Чего то прошивка не компилируется...
Spirit писал(а):Коеффициенты надо два раза прописывать?
Буду проверять, у меня под 1.5.3 компилируется
Spirit писал(а):Зачем эти строки в коде?
Вернуться в X-SIMULATOR и RU-SIMULATOR & SimTools
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 168