MAL4X Научно-технический форум разработчиков симуляторов и автоматики


Симуляторы перегрузок. DIY электроника. ЭВМ. Компьютерные сети.
Up

Новейшая прошивка для Arduino.

Строим реалистичный симулятор перегрузок своими руками. Рекомендации. Советы.

Модераторы: Death_Morozz, null, Ale

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 30 окт 2015, 11:55

Я в итоге оставил только 1 емкость 33000 мкф на выходе БП и супрессоры на выходе моста.
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Ale » 30 окт 2015, 12:51

Spirit писал(а):Я в итоге оставил только 1 емкость 33000 мкф на выходе БП и супрессоры на выходе моста.

Для полной ясности можешь хоть эскизно схемку соединений набросать?
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 30 окт 2015, 15:59

Изображение Вот
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение null » 30 окт 2015, 16:42

Спасибо, только правильнее было бы написать 1.5KE33CA
Русский X-Simulator
Изображение
За пределами форума. Мой инстаграмм.
Аватара пользователя
null
SIMER
 
Сообщения: 1041
Зарегистрирован: 03 мар 2010, 18:42
Откуда: Ростов-на-Дону
Благодарил (а): 219 раз.
Поблагодарили: 160 раз.
Баллы репутации: 138
ТехнарьТехнарь

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 03 ноя 2015, 17:45

ЗЫ: Попробую еще и с Arduino Mega протестировать.

Алексей, проверь пожалуйста прошивку на Меге2560.
Я перепробовал уже разные варианты, результат тот-же: - из xSimCTRl моторы управляются нормально, а на SimTools не реагируют.
Точнее реагируют с какой-то огромной задержкой и единоразово.
Ранее на этой же конфигурации (ноут, ардуинка и СимТулз) запускал макет на сервах.

Скажи пожалуйста, где задается формат получения данных в прошивке, а именно четность и стоповые биты?

Также пытался локализировать проблему методом исключения, но без результата.

- Симтулз запускал на 3 разных ноутбуках;
- на последнем установил чистую Винду;
- залил последнюю выложенную прошивку;
- компилировал через последний IDE 1.6.5.

К сожалению результата нет. Куда копать, чем смотреть какие данные получает ардуина от СимТулза?
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 03 ноя 2015, 18:55

Попробовал изменять скорость обмена в прошивке:
вот эту строку;
// serial initialization
Serial.begin(57600);

Если установить Serial.begin(9600);
двигатели начинают вращаться очень медленно... уменьшая скорость обмена, мы уменьшаем скорость цикла всей Ардуины?
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Ale » 03 ноя 2015, 19:12

Spirit писал(а):Алексей, проверь пожалуйста прошивку на Меге2560.


Попробуй закомментировать строчку в прошивке

//#define SEND_DATA // если установлен флаг - высылаем данные на компьютер

То есть надо при использовании SimTools отключит посылку данных от Arduino на компьютер.
Надеюсь - поможет.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 03 ноя 2015, 19:55

Да, отключил отправку данных и все заработало. Спасибо! :)
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 10 ноя 2015, 01:05

Я собрал полноразмерный макет из подручных материалов, начал тестировать, вот накопилось немного наблюдений и вопросов, поделюсь ими.

Ale, ты не мог бы более детально объяснить как и на что именно влияет частота ШИМ в данной прошивке? Коэфициенты?
Как можно повысить амплитуду напряжения?
Я пытался добиться от прошивки плавного и мощного отклика двигателей. Пока к сожалению получается или плавно но слабо, или мощно, но с сильными рывками. Почему плавного... как выяснилось 40 об.мин - это перебор для автосима, реакции получаются далеко не реалистичными, дергаными и резкими, я бы сказал ударными, что не очень похоже на авто, пусть даже с зажатой подвеской. Поэтому хотелось бы сгладиь их не в ущерб мощности.

Собственно мои баги:
1. Есть зависимость мощности двигателей от установленной частоты. При частотах 100 и 200 Гц моторы работают значительно резвее, но при этом часто, но хаотично, срабатывает защита БП... закономерность определить пока не смог, так как в один день, при одинаковой нагрузке, этот баг может проявляться или не проявляться на разных двигателях. По этой проблеме в БП уменьшил сопротивление токового сенсора на ОС ШИМ задающего контролера в 3 раза, стало лучше, но не на много.
2. Если частоту установить 400 Гц и поэксперементировать с коэфициентами, то отклик получается намного плавнее, защита не срабатывает (если не перегружать двигатели) но силы плавно сдвинуть рычаг из среднего положения в ряде случаев не хватает, двигатель просто упирается и "пищит, звенит, орет". У меня это сильно проявляется почему-то на одном из двух двигателей. Я даже подумал, что он бракованый или проблема с питанием. БП, драйверы, пины контроллера менял местами. Двигатель разобрал и сделал ревизию, связался с производителем... но как выяснилось если снизить частоту до 200 Гц - то этот двигатель начинает работать бодрее, но дергано, коэфициенты для каждой новой частоты надо подбирать другие.
Кстати не хватает раздельной регулировки параметров для каждого двигателя. Хотелось бы компенсировать погрешность в параметрах двигателей, хотя-бы выровнять скорости вращения двигателей.
Если прошивка будет дальше дорабатываться, может можно реализовать этот ф-ункционал в дальнейших версиях? Может для начала сделать возможность раздельного определения коэффициентов Kp и Kd для каждого двигателя...

3. Иногда после перепрошивки в коэфициентах вместо значений Kp=20 Kd=2F - находится что-то иное, проявляется это в диком дергании двигателей, шим на графике становиться слишком дискретным, лечиться принудительной отсылкой коэффициентов повторно.

4. Когда собрал на одной поверхности БП, драйвера и контролер - увеличились наводки на входы потенциометров. Пока подключил каждый контакт отдельно витой парой в кабеле FTP 5е, но экран не подключен. Двигатели подергиваються. Не знаю как правильно выполнить подключение и куда цеплять экран, чтоб убрать помехи.
Кстати, пробовал уменьшить мертвую зону в прошивке - дребезг в игре начал положительно сказываться на игровом процессе - нет времени когда двигатели простаивают и замолкают, оставляя симулятор "пустым", он находится в постоянном движении как при работающем двигателе авто, но есть обратная сторона - это дикий нагрев двигателей от такой мелкой "дрожи".
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Ale » 10 ноя 2015, 10:52

Spirit писал(а):Я собрал полноразмерный макет из подручных материалов, начал тестировать, вот накопилось немного наблюдений и вопросов, поделюсь ими.

Отлично!!!

Spirit писал(а):Ale, ты не мог бы более детально объяснить как и на что именно влияет частота ШИМ в данной прошивке? Коэфициенты?
Как можно повысить амплитуду напряжения?
Я пытался добиться от прошивки плавного и мощного отклика двигателей. Пока к сожалению получается или плавно но слабо, или мощно, но с сильными рывками. Почему плавного... как выяснилось 40 об.мин - это перебор для автосима, реакции получаются далеко не реалистичными, дергаными и резкими, я бы сказал ударными, что не очень похоже на авто, пусть даже с зажатой подвеской. Поэтому хотелось бы сгладить их не в ущерб мощности.

Это задача из задач.
Еще раз напомню, почему я решил поиграть с низкочастотным ШИМ. На эту идею меня натолкнула следующая статья
http://forum.sibnet.ru/index.php?act=Attach&type=post&id=186962
Вот цитата из нее

Дело в том, что в обычном коллекторном двигателе
постоянного тока напряжение питания не задает, строго говоря, частоту вращения. От напряжения питания
зависит лишь ток в обмотках двигателя, сила тока будет определять величину крутящего момента на его
валу, а уже от крутящего момента будет зависеть частота вращения.

Поэтому регулирование частоты вращения двигателя (или же скорости движения конструкции, если речь
идет о ходовых двигателях) может быть связано с определенными сложностями, особенно если речь идет о
малых, по отношению к номинальной, скоростях.

Предположим на вашем роботе установлены ходовые двигатели с номинальным напряжением 10В и при
подаче номинального напряжения он имеет скорость 10 см/сек. Так вот, если вам нужно получить скорость
в 1 см/сек, это совсем не означает, что вам надо подать на двигатель напряжение в 1В! Более того, даже если
вам удасться подобрать напряжение, при котором модель будет двигаться со скоростью 10% от
номинальной, эта скорость, скорее всего, значительно изменится даже при незначительном изменении
условий движения.

Одним из возможных решений этой проблемы (помимо использования систем автоматического
регулирования, конечно) является включение двигателя на полную мощность, но на короткое время. Модель
начнет двигаться небольшими рывками, которые можно сделать практически незаметными, правильно
подобрав частоту и длительность импульсов.

Этим способом можно заставить модель устойчиво двигаться с любой скоростью от 0 до максимальной,
причем скорость будет оставаться постоянной в достаточно широком диапазоне нагрузок.


Так вот, получается что при низкой частоте регулирования (порядка сотни ГЦ) мотор начинает вести себя как "шаговый" привод, приобретая приемистость на низких скоростях. Это я и хотел проверить в новой прошивке.



Spirit писал(а):1. Есть зависимость мощности двигателей от установленной частоты. При частотах 100 и 200 Гц моторы работают значительно резвее, но при этом часто, но хаотично, срабатывает защита БП... закономерность определить пока не смог, так как в один день, при одинаковой нагрузке, этот баг может проявляться или не проявляться на разных двигателях. По этой проблеме в БП уменьшил сопротивление токового сенсора на ОС ШИМ задающего контролера в 3 раза, стало лучше, но не на много.

При низкой частоте либо емкости заряжаются больше положенного, либо ток в обмотке двигателя за имульс ШИМа успевает разогнаться... Не знаю.


Spirit писал(а):2. Если частоту установить 400 Гц и поэксперементировать с коэфициентами, то отклик получается намного плавнее, защита не срабатывает (если не перегружать двигатели) но силы плавно сдвинуть рычаг из среднего положения в ряде случаев не хватает, двигатель просто упирается и "пищит, звенит, орет". У меня это сильно проявляется почему-то на одном из двух двигателей. Я даже подумал, что он бракованый или проблема с питанием. БП, драйверы, пины контроллера менял местами. Двигатель разобрал и сделал ревизию, связался с производителем... но как выяснилось если снизить частоту до 200 Гц - то этот двигатель начинает работать бодрее, но дергано, коэфициенты для каждой новой частоты надо подбирать другие.
Кстати не хватает раздельной регулировки параметров для каждого двигателя. Хотелось бы компенсировать погрешность в параметрах двигателей, хотя-бы выровнять скорости вращения двигателей.
Если прошивка будет дальше дорабатываться, может можно реализовать этот ф-ункционал в дальнейших версиях? Может для начала сделать возможность раздельного определения коэффициентов Kp и Kd для каждого двигателя...

Отдельные коэффициенты сделаем, не вопрос. Конечно, из все равно придется подбирать по ощущениям. Может быть придется вводить еще интегральную составляющую, посмотрим.
Что бы мотор начинал движение даже при малых сигналах, попробуй увеличить в прошивке значение "PWM_MINW". Это значение ШИМ, которое сразу будет подаваться на мотор даже при очень малом сигнале, что, по идее, должно его сталкивать с "мертвой" точки.

Spirit писал(а):3. Иногда после перепрошивки в коэфициентах вместо значений Kp=20 Kd=2F - находится что-то иное, проявляется это в диком дергании двигателей, шим на графике становиться слишком дискретным, лечиться принудительной отсылкой коэффициентов повторно.

Я пытаюсь сохранять в EEPROM настройки коэффициентов, но при перепрошивке они портятся. В принципе в SimTools есть возможность передавать на контроллер одну строчку данных ДО начала движения. В нее и можно внести настройку коэффициентов.

Spirit писал(а):4. Когда собрал на одной поверхности БП, драйвера и контролер - увеличились наводки на входы потенциометров. Пока подключил каждый контакт отдельно витой парой в кабеле FTP 5е, но экран не подключен. Двигатели подергиваються. Не знаю как правильно выполнить подключение и куда цеплять экран, чтоб убрать помехи.
Кстати, пробовал уменьшить мертвую зону в прошивке - дребезг в игре начал положительно сказываться на игровом процессе - нет времени когда двигатели простаивают и замолкают, оставляя симулятор "пустым", он находится в постоянном движении как при работающем двигателе авто, но есть обратная сторона - это дикий нагрев двигателей от такой мелкой "дрожи".

Попробуй экран соединить с "землей" ардуины. При этом не соединять с сигнальной "землей" на потенциометре.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Сообщение SimAl » 10 ноя 2015, 11:45

Из цитаты следует, что проблема не в моменте двигагателя как такового при низком напряжении, а в том что сложно подобрать подходящее напряжение.
"Одним из возможных решений этой проблемы (помимо использования систем автоматического
регулирования, конечно) является включение двигателя на полную мощность, но на короткое время."
Собственно у нас есть обратная связь и автоматическое управление, которое решает эту проблему.
Аватара пользователя
SimAl
SIMER
 
Сообщения: 379
Зарегистрирован: 22 ноя 2013, 20:03
Откуда: Кропивницкий
Благодарил (а): 58 раз.
Поблагодарили: 258 раз.
Баллы репутации: 128
ТехнарьТехнарь

Re: Новейшая прошивка для Arduino.

Сообщение null » 10 ноя 2015, 13:03

Ale Отдельное спасибо за развернутый ответ по поводу низкочастотной прошивки. Кроме того на низких частотах проще работать всей электронике, включая мост.
Spirit, не стоит заморачиваться только на коэффициентах ПИД и прочих железяках. Думаю на этом этапе уже можно обратить внимание обработке данных между игрой и контроллером. Я совсем не пробовал настраивать simtools, но знаю точно что в xsim я убил не один час на профили. Причем писал отдельные профили не только для разных игр, но и для классов машин. Т.е. кузова это одно, open wheels это другое. Там есть что покрутить.

ЗЫ с тестированием продолжу на этой неделе. Симулятор на работе не всегда совмещается с самой работой :)
Русский X-Simulator
Изображение
За пределами форума. Мой инстаграмм.
Аватара пользователя
null
SIMER
 
Сообщения: 1041
Зарегистрирован: 03 мар 2010, 18:42
Откуда: Ростов-на-Дону
Благодарил (а): 219 раз.
Поблагодарили: 160 раз.
Баллы репутации: 138
ТехнарьТехнарь

Re:

Сообщение Ale » 10 ноя 2015, 13:43

SimAl писал(а):Из цитаты следует, что проблема не в моменте двигагателя как такового при низком напряжении, а в том что сложно подобрать подходящее напряжение.
"Одним из возможных решений этой проблемы (помимо использования систем автоматического
регулирования, конечно) является включение двигателя на полную мощность, но на короткое время."
Собственно у нас есть обратная связь и автоматическое управление, которое решает эту проблему.


Ну, мне все таки захотелось "пощупать" медленный ШИМ ;)
При этом, безусловно, упор делается и на ПД регулирование. Возможно введем еще и интегральный канал, но я пока не уверен в его необходимости. Фактически он влияет только на конечную точность позиционирования, если я правильно понимаю...

null писал(а):Spirit, не стоит заморачиваться только на коэффициентах ПИД и прочих железяках. Думаю на этом этапе уже можно обратить внимание обработке данных между игрой и контроллером. Я совсем не пробовал настраивать simtools, но знаю точно что в xsim я убил не один час на профили. Причем писал отдельные профили не только для разных игр, но и для классов машин. Т.е. кузова это одно, open wheels это другое. Там есть что покрутить.

Безусловно, настройка профиля для игры - не менее важная задача...
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1477
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 570 раз.
Поблагодарили: 595 раз.
Баллы репутации: 277
ТехнарьТехнарьТехнарь

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 12 ноя 2015, 01:09

Сегодня получилось еще немного "поганять" прошивку... правда словить или понять закономерность глюков так и не удалось. \
Если вкратце, то я последовал советам и все вроде заработало получше - моторы начали синхронно поднимать груз, хотя вчера еще один мотор отставал. После хорошего прогрева моторы снова начали выдавать глюки, но теперь с точностью до наоборот - проблемный мотор, который ранее упирался при нагрузке работал без замечаний, а безпроблемный мотор начал в некоторых режимах тупить. Из подключений ничего не менял схематически, только подкинул провода большего сечения. В целом результат меня порадовал. Моторы выровнялись в скорости и мощности.
Когда пытался найти отимальные коэффициенты - пришел к выводу, что не плохо было бы иметь возможность задавать отдельно коэфициент Kp при подъеме и опускании рычага. А в идеале иметь возможность динамической регулировки под разную амплитуду. (Как карта впрыска или зажигания в автомобильном ЭБУ) - такое навернуть возможно? :) или это я уже загнул?
Суть такова, что для ускорения реакции (под нагрузкой) при движения рычага вверх Kp желательно увеличить до 40, но вот при движении вниз начинается "дергатня" - контролер пытается тормозить. Если же установить Кр=90, мы получаем очень плавный спуск. Все это справедливо для амплитуды =100, а вот при уменьшении амплитуды в 2, 4 раза нужны другие коэффициенты.

Что сделал и как это повлияло на поведение сима:
1. Вернулся на частоту 400. Установил MinPWM сначала 3, потом 4 - разницы не почуствовал, просто сим начал вести себя более адекватно.
2. Поставил частоту 200. MinPWM в 1. Начала срабатывать защита - очень зависит от Kp.
3. Поставил частоту 100. MinPWM 3. Движения очень дерганые, защита срабатывает часто.
4. Хочу посмотреть на поведение моторов при частоте повыше... например 800 и средней для моего случая =300 Мгц, думаю при такой частоте можно будет добиться минимума срабатывания защиты и адекватной реакции на нагрузку.
5. Заказал 500 Вт БП как у NUR, по идее он сделан на контролере NCP1216, надеюсь будет работать получше - проверим.

ЗЫ. Пробовал менять Kd но как-то он мало дает изменений под нагрузкой. Может интегральная составляющая и не нужна?
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Re: Новейшая прошивка для Arduino.

Сообщение Spirit » 13 ноя 2015, 00:08

ЗЫ. Пробовал менять Kd но как-то он мало дает изменений под нагрузкой. Может интегральная составляющая и не нужна?

Сегодня пытался подобрать коэффициенты так, чтоб при спуске рычага не было рывков, а при подъеме уменьшились поддергивания от "шагового" режима. При Kp>20, меня встречает защита БП :). Как влияет Kd пока толком не разобрался. Пока остановился на значениях Kp20Kd17.
На Кp=10..15 эффекта "шагового" двигателя почти не чувствуется, но сильно увеличивается инерция и "слабость" на малых перемещениях.
В профиле к игре почти для каждой силы пришлось включать сглаживание порядка 10..20%, а амплитуду уменьшать. Добиться совсем правдоподобных ощущений конечно не удалось, надеюсь пока... но очень близко к реальному авто. Это что касается каждой силы в отдельности, еще не успел откатать все силы. Включать все вместе не стал... в прошлый раз попытка была не очень удачной, получился "винигрет" - реакции смешались и размазались.

Ale опиши пожалуйста в двух словах как ты задумывал регулировку коэффициентами. В каком-то посте я встречал описание, но где именно не могу вспомнить. Как каждый коэффициент должен влиять на управляющий сигнал?
Еще есть мысль о улучшении прошивки: было бы хорошо коэффициенты задавать в 10 ричной системе, в 16 - мозг сопротивляется.

ЗЫ. сегодня прямо в игре почему-то слетели коэффициенты... прописал их в СимТулз, после этого час гонял без сбоев.
Еще двигатели греются нормально... выключил, когда температура достигла 85 градусов - буду думать над охлаждением, (вроде 70 градусов - это их норма)
Аватара пользователя
Spirit
SIMER
 
Сообщения: 300
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 85 раз.
Поблагодарили: 95 раз.
Баллы репутации: 58
Технарь

Пред.След.

Вернуться в X-SIMULATOR и RU-SIMULATOR & SimTools

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 36

cron
x

#{title}

#{text}