Подбор резины с помощью Питона

Автомобилестроение — достаточно древняя и очень многонациональная сфера деятельности человека. Здесь смешаны воедино разные единицы измерения и понятия: киловатты и лошадиные силы, октановое число бензина и его классность (я имею ввиду Regular, Premium, Super), дюймы и миллиметры, фунты и килограммы… Короче — полная солянка всего, что можно придумать.



Примерно полгода назад мы купили автомобиль — Honda Jazz. (Спасибо за поздравления, но сейчас не до радости, я буду говорить об одной важной проблеме, которая приходит в каждый дом с покупкой автомобиля.) Лето пролетело быстро и начала подступать Уральская снежная зима. Пришло время переобуваться в зимнюю резину.

Казалось бы, чего тут такого сложного? Сходить в магазин и купить колеса! Выбор резины и дисков просто поражает своим разнообразием. Но относительно Honda Jazz того типоразмера, что рекомендует производитель, — нет!

(Фанфары) Та-да-да-дам!!!

Что делать? — Что делать, что делать! Либо платить бабло, либо самому изучать проблему!

В юзер мануале на авто производитель указал рекомендованные параметры колес такие:

два типа дисков (с посадочными 4х100 ET46 Dia 56.1 у обоих типов):

15×5.5 J
16×6 J

и два типа шин:

175/65 R15 84T
185/55 R16 83H

Сейчас на авто установлена летняя резина 175/65 R15, диски штампованные, но конкретный тип не смотрел. Как я уже говорил, найти такую же точно резину по размеру, но зимнюю, оказалось не то чтобы сложно… такой, можно сказать, в магазинах вообще нет!

Однако, задача…

Сайт http://www.svrauto.ru/auto/sel/8/1756/5535 сообщает, что допускается замена на:

6J15 4×100 ET46 Dia56.1
6.5J16 4×100 ET45 Dia56.1

и

185/60R15
195/50R16

А так же, на этом же сайте читаем (здесь речь идет о числе, которое указывается после дробной черты в обозначении резины):

Однако все эти преимущества хороши только на сухих дорогах с идеальным покрытием. В России не рекомендуется использовать колеса серии 65 и ниже. Норма: 80, 75, 70.)

http://www.svrauto.ru/page/content/useful_info_tyres_param

Похоже по ходу вообще тупик. В одном месте сайт предлагает более низкопрофильную резину, а в другом сам же ее и отвергает. Действительно, надо садиться за комп и самому прояснять вопрос с заменой.

Судя по отзывам на форуме http://honda-fit.ru переход с 15-ых колес на 16-е сопровождается незначительной потерей динамики и ухудшением мягкости хода. Про 17-е колеса люди отзываются «едешь как на табуретке». Зато смотрится красиво.

Ухудшение движения объясняется достаточно просто. В том месте, где на 15-х колесах был воздух, на 16-ых, а тем более — на 17-ых, находился металл. Иначе говоря, внешний диаметр колеса мы менять не можем (иначе колеса будут задевать за крылья кузова и другие части). Увеличение диаметра диска происходит за счет снижения профиля резины. Поскольку (надутой воздухом) резины между дорогой и жесткой частью колеса становится заметно меньше, то теперь каждая ямка и каждый камушек будет более отчетливо отдаваться при движении. А так как мы при увеличении диаметра диска увеличили его массу (для справки, таблица масс шин http://tapki.su/articles/tablitsa_vesa_i_obema_avtoshin.php) , да причем не просто массу, а массу, которая находится близко к краю колеса, то колесо становится более инерционным. Другими словами — его труднее раскрутить и труднее затормозить. Не фатально, конечно, но на динамике чувствуется. А что делать! За понты надо платить.

Мне понты не нужны. Мне нужно просто ездить, а не девок охмурять или вызывать чувство зависти у других. Поэтому я сразу откидываю 17-ти дюймовые диски, а 16-ти дюймовые рассматриваю как крайний вариант, если вообще ничего не получится выловить на 15-ых.

После прочтения нескольких сайтов с дискам я определился. Мне нужны 15-ти дюймовые, шириной обода 5.5 дюйма, в крайнем случае — 6 дюймов. Обязательные требования:

  • четыре отверстия для крепления с межцетровым размером 100 мм (4х100). Здесь вообще без вариантов.
  • диаметр отверстия под ступицу — 56.1 мм. Подойдет так же 56.5 мм. Меньший диаметр просто не позволит диску одеться на ступицу. Больший — потребует установки дополнительного центрирующего кольца. Без него просто опасно ездить.
  • Вылет (ET) колеса — 46 мм. Допускается отклонение от этого размера на +/-5 мм.

Теперь попробую подобрать резину. В начале публикации я обратил ваше внимание на зоопарк единиц измерений. Так вот, теперь я к нему подошел в плотную. Мне нужно перебрать множество типоразмеров резину при условии, что внешний диаметр колеса будет незначительно отклонятся от указанного производителем. Ну как «не значительно»? Я прикинул, что допустимое отклонение радиуса (limit) не должно превышать 5 мм.
Еще раз подчеркну этот момент — радиуса, а не диаметра!

Я не совсем уверен в своих действиях, но если что — поправляйте!

Итак, рассчитаем диаметр штатного (заводского) колеса — D. Путь d — это диаметр диска в дюймах, w — ширина резины в миллиметрах, а p — высота профиля в процентах. Чувствуете винегрет? Теперь нам это все нужно подвести под один знаменатель — выразить в миллиметрах.

На самом деле все просто:

D = 25.4 * d + 2 * (w * p / 100)

При подстановке значений

d = 15
w = 185
p = 65

мы получаем D = 608.5 мм.

А теперь начинается самое скучное — программирование на Питоне. И в самом деле, не буду же я перебирать все возможные варианты вычисляя их вручную!

Это еще не программа, это только заготовка нашей программы. Она еще ничего не умеет, а только может перебирать множество вариантов шин. К стати, вариантов шин (которые пербирает прога) — ни много-ни мало, а целых 160 (Nw * Np * Nd = 5 * 8 * 4).

#! /usr/bin/python

aw = [165, 175, 185, 195, 205]
ap = [45, 50, 55, 60, 65, 70, 75, 80]
ad = [14, 15, 16, 17]

for d in ad :
  print "--------------"
  for p in ap :
    for w in aw :
      print w, "/", p, " R", d
    print

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

def get_D (w, p, d) :
  D = 25.4 * d + 2 * (w * p / 100)
  return D

И чуть-чуть изменим основное тело программы. Дело в том, что нам не нужно знать те типоразмеры резины, который нам не подойдут. И в самом деле, зачем нам знать о резине, которая даже в арку колеса не влезет? Поэтому выводить будем только те колеса, которые нам подойдут. Помимо распечатки типа резины давайте еще выведем внешний диаметр и отклонение от нормы. Окончательный вариант программы будет такой:

#! /usr/bin/python
#wheels ver. 1.0

w0 = 175
p0 = 65
d0 = 15
limit = 5

aw = [165, 175, 185, 195, 205]
ap = [45, 50, 55, 60, 65, 70, 75, 80]
ad = [14, 15, 16, 17]

def get_D(w, p, d) :
  D = 25.4 * d + 2 * (w * p / 100)
  return D

D0 = get_D(w0, p0, d0)

for d in ad :
  for p in ap :
    for w in aw :
      D = get_D(w, p, d)
      dr = (D - D0) / 2
      if (abs(dr) < limit) :
        print w, "/", p, " R", d, "( D =", D, ", delta = ", dr, ")"
  print

Я в курсе, что вроде как есть программа-калькулятор для расчета колес — http://bysh.com.ua/page6

Бесспорно она более красива и более наглядна, чем моя «табуретка». Если вам нужен готовый к употреблению гламур, то вам лучше использовать ее, а не мою. Моя прога задумывалась для обучения программированию на Питоне на базе конкретных жизненных задач. У программ немного разные цели, но конструктивная критика и вопросы по теме приветствуются.

Еще один вариант проги. В предыдущем варианте можно было задать максимальное отклонение внешнего диаметра колеса, а в этом — диапазон отклонений.

То есть, допустим, нас сначала заинтересовало отклонениене более 5 мм, и мы, согласно этому условию, указали limit =5. Получили табличку, распечатали на принтере. А потом подумали: «Отлично! А что если в магазинах не окажется шин в заданном диапазоне ±5 мм?»

Хороший вопрос. Наверно тогда имеет смысл распечатать табличку для отклонений ±10 мм, но так, чтобы в нее не попали значения из предыдущей таблицы. Тогда вместо одного предела limit, сделаем два: limitMin и limitMax, и изменим условие if.

#! /usr/bin/python
# wheels ver. 1.1

w0 = 175
p0 = 65
d0 = 15
#limit = 5
limitMin = 5
limitMax = 10

aw = [165, 175, 185, 195, 205]
ap = [45, 50, 55, 60, 65, 70, 75, 80]
ad = [14, 15, 16, 17]

def get_D(w, p, d) :
  D = 25.4 * d + 2 * (w * p / 100)
  return D

D0 = get_D(w0, p0, d0)

for d in ad :
  for p in ap :
    for w in aw :
      D = get_D(w, p, d)
      dr = (D - D0) / 2
      # if (abs(dr) < limit) :
      if (abs(dr) >= limitMin and abs(dr) < limitMax)
        print w, "/", p, " R", d, "( D =", D, ", delta = ", dr, ")"
  print

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

Advertisements

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s