Войти
ПрограммированиеФорумФизика

Коробка передач автомобиля (новая демка)

Страницы: 1 2 3 Следующая »
#0
22:36, 8 авг. 2006

есть такая демонстрашка физики автомобиля
http://softvariant.ru/download/catalog/physics-demo-2-car/physics… r-golovin.exe

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

Необходимые требования:

1. коробка передач должна обеспечить разное усилие, передаваемое на колеса на разных передачах (например, на 1 скорости - большое усилие, на 5 - маленькое, вплоть до того, чтобы двигатель мог заглохнуть при трогании)

2. необходимо обеспечить торможение двигателем (например, на 1 передаче машина не должна разгоняться, скатываясь с горки на минимальных оборотах двигателя)

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

4. необходимо сделать контроль скорости вращения колес (например при одинаковых оборотах двигателя, на 1 передаче максимальная скорость вращения колес будет меньше, чем на пятой), не забывая при этом о пп 2.,3.

5. необходимо подумать о способе переключения передач, в идеале нужно сделать так, чтобы передача, например, с 1 на 2, переключалась при разных оборотах двигателя в зависимости от нагрузки (в автоматической коробке передач)

6. необходимо сделать расчет передаточных чисел скоростей коробки передач для обеспечения оптимальной (нужной) езды

7. необходимо реализовать автоматическую и ручную КП

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

допускается, что машина имеет одинаковые по диаметру колеса с одинаковыми всеми характеристиками.

Предлагаемые величины:

power - мощность двигателя
gearRatio - передаточное число на текущей передаче (gearRatio[N] - на передаче N)
RPM - обороты двигателя в минуту
maxRPM - максимальные обороты двигателя в минуту
wheelRPM - обороты колеса в минуту
wheelMaxRPM - максимальные обороты колеса в минуту на текущей передаче и при текущем RPM
torque - вращающее усилие на колесо
throttle - педаль газа (значение 0..1)

Вот сегодня шел с работы и придумал такой набросок реализации части пунктов:

gearRatio[1] = 5 // т.е. на первой передаче передаточное число больше, чем
gearRatio[2] = 3 // на второй, например
gearRatio[3] = 2
gearRatio[4] = 1.2
gearRatio[5] = 0.7

function Think
{
  RPM = GetRPM( wheelRPM ) // п.3 перевожу wheelRPM в RPM
  newRPM = maxRPM * throttle // обороты двигателя от педали газа
  RPM = (RPM + newRPM) / 2; // п.3 допустимое приближение?
  p = power * (RPM / maxRPM) * gearRatio * power_k // пп. 1 power_k - коэффициент, расчитывается подбором?
  // p - текущая мощность передаваемая на колеса
  torque = p * (1 - wheelRPM / wheelMaxRPM) // пп. 2, 1, 4
  // wheelRPM / wheelMaxRPM - будем меньше 1 если максимальные обороты не достигнуты
  // и больше в обратном случае, что приведет к торможению колеса
  // (т.е. прекратится дальнее раскручивание колеса, если хватит усилия на текущей скорости КП)
}
 
Кто что думает по этому поводу? предлагаю постить только конструктивные и обоснованные предложения и алгоритмы по конкретным пунктам. Новые пункты приветствуются, возможно я не все учел.


#1
1:31, 9 авг. 2006

craft
Где то тут была статья про подробную физику машины. Почитай её.

#2
1:58, 9 авг. 2006

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

Поясню, задача решается на физ движке. Все чем я могу оперировать, это:

1. скорость вращения колеса в текущий момент
2. я могу прикладывать силу вращения на колесо

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

Приведу пример касающийся пп. 2 и 4, т.е. от куда они появились: если в физ движке приложить на колесо большое усилие, соответствующее первой передаче КП на оборотах двигателя RPM, то колесо раскрутиться очень сильно, многократно перевалив за максимальный порог оборотов, который реально должен  соответствовать колесу при данной передаче и заданом RPM!

#3
9:32, 9 авг. 2006

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

#4
12:14, 9 авг. 2006

_mr.angel
если проект под заказ, то делается редактор %)

#5
12:38, 9 авг. 2006

craft
Ты приводил пример, который соответствует проскальзыванию колес при старте
(т.н. неоптимальный старт, вызванный неправильным переключением передач), я верно понял?
Если ты об этом, то данный эффект достигается за счет того, что колесу не может быть
сообщен импульс движения больше чем его сила трения (я не физик и могу что то перепутать).
Данный эффект описан в той статье которую я тебе предлагал - почитай внимательнее -
статья очень здоровая и для меня довольно трудная.

#6
19:22, 9 авг. 2006

У двигателя должна быть заданна какая-то кривая разгона, мин и макс обороты.
Коробка передачь - множит обороты в сторону двигатель - дифференциал, делит в сторону колёса - двигатель.
Принцип работы колёс - это джоиты, толкающие машину в зависимости от оборотов колеса, трения о поверхность.
Обратная связь - это реальное движение корпуса машины в точках контактов колёс переведённая в об/мин, эти скорости
суммируются в дифференциале-коробке передач и отдаются двигателю, оно и становиться новой скоростью вращения самого двигателя.
Дальше - переключение передач, rpm двигателя > отметки - след. передача, < - пред.
Вроде всё просто.

#7
23:02, 9 авг. 2006

Dilon
проект для души

#8
23:03, 9 авг. 2006

Wiener
Про обратную связь поподробнее пожалуйста.

Дело в том, что если просто переводить обороты колеса в обороты двигателя и принимать это значение, как за текущее, то авто перестает практичесик полностью разгоняться. С др. стороны скатывающийся с горы авто будет легко раскручивать двигателей не зависимо от текущей передаче.

#9
23:08, 9 авг. 2006

glueray
За статью спасибо, я многое из нее подчерпнул.

#10
23:17, 9 авг. 2006

1. максимальный крутящий момент котрый передаётся на двигатель зависит от 2-х узлов : сцепление и коробка передач
сцепление :http://avtodizel-yamz.ru/themes/basic/materials-document.asp?fold… 38&matID=1932
коробки :http://avtodizel-yamz.ru/themes/basic/materials-document.asp?fold… 37&matID=1844
это стандартный подход у тоёты и ауди есть безскоростные коробки-автоматы но это экзотика

2. в современных машинах это называется моторный тормоз ввообще не всяким двигателем можна тормозить а как правило нельзя :-)

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

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

5. есть 2 вида автоматов которые типа распространённые 1-гидромеханический это когда давление масла которое прямо зависит от оборотов двигателя и контролирует повышать или понижать передачу + отключение передачи при нажатии на педаль тормоза) 2- механическая +пневматика+комп(комп управляет всеми переключениями а сами переключения осуществляются пневматикой хотя коробка от а до я механическая реальный пример-DAF)

6. оптимально это когда в рабочем диапазоне оборотов у тебя максимальный крутящий момент тоесть зависит от пары коробка-двигатель

7. подумай о 5-2 подходе

исходя из высшесказанного величин у тебя маловато будет :-)
нада 3 алгоритма
1. модель работы двигателя
2. модель работы сцепления-коробки
3. модель работы трансмисии

рассчёт трения колёс нада брать отдельно ибо машина подлетая в воздух его теряет но это полностью не зависит от высшеперечисленных факторов

как характеристики на выходе нада иметь вектор ускорения-торможения и его величину (именно вектор потому как у переднеприводных машин он направлен не вдоль автомобиля как правило)
на вход нада подавать векторную сумму внешних сил (торможение, гравитация, трение колёс...) и её скалярную величину+команду на понижение-повышение оборотов двигателя

#11
1:26, 10 авг. 2006

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

#12
22:54, 10 авг. 2006

Wiener
Экспериментальным путем я определил, что нужно делать запас на разность оборотов двигателя, рассчитанных от колес (wheelEngineRPM) и текущих оборотов двигателя (RPM) на некоторую величину, например, 1000-2000 оборотов при максимуме в 6000-7000, т.е. эмитировать сцепление или опережающее зажигание, чтобы крутящий момент разгонял колеса.

#13
23:34, 10 авг. 2006

Я не понял, что ты имеешь ввиду под запасом на разность оборотов.

#14
0:07, 11 авг. 2006

Не забудьте про аэродинамическое сопротивление - на скорости около 110 кмч и более воздух "трет" автомобиль намного сильнее, чем колеса по асфальту ;)

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумФизика

Тема в архиве.