Электрический наддув для авто на Arduino: миф или все возможно?

в 16:41, , рубрики: arduino, Автомобильные гаджеты, Железо, Программирование, программирование микроконтроллеров, Электрический наддув, метки:

Начать свое повествование хочу с цитаты: «автомобиль — не роскошь, а средство передвижения». И действительно, на дорогах нашей страны с каждым годом автомобилей становится все больше, их поколения сменяются поколениями, модели моделями. В данном разнообразии очень легко запутаться, а вот выделиться из общего потока наоборот становится все сложнее и сложнее.

В данной статье я хочу рассказать о своих мыслях на тему изменения внутреннего облика автомобиля, а поможет мне в этом, как и во многом другом — микроэлектроника, в лице всем известного контроллера Arduino.

Электрический наддув для авто на Arduino: миф или все возможно? - 1

Итак, за время своего водительского стажа (порядка 8 лет) я успел испробовать на себе немалое число моделей автомобилей, находившихся либо в моей личной собственности, либо во владении родственников или друзей: ВАЗ 2109, 21099, 2112, Honda Accord, Honda Civic, Volkswagen Jetta, Mitsubishi Lancer X, Skoda Oktavia, BMW E34 и многие другие. Из всех авто, пожалуй, наиболее сильно мне запомнилась Honda Accord 1993 года выпуска, с замененным на неродной 200-сильный легендарный двигатель H22A, находящаяся в данной конфигурации в моем владении 2 долгих года. Что мне в ней нравилось — её характер, мотор с легкостью раскручивался до 7500 оборотов и обладал выраженным подхватом ровно с 4000 оборотов. Однако низов на нем не было, совсем!

Сегодня я езжу уже на другом автомобиле — Suzuki SX4, у него данная проблема носит еще более выраженный характер ввиду 1600 кубового всего 112 сильного двигателя и немалой массы в 1330 кг (вместе с водителем).

Отсутствие тяги на низких и средних оборотах — проблема практически всех современных малолитражных двигателей, в среднем до 3000 оборотов они не «едут» совсем — ускорения нет никакого, что несомненно неудобно ни в городе, ни на трассе.

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

Данная проблема кардинально решается несколькими методами:
— замена мотора на более объемный;
— установка небольшой турбины с ранним спулом (довольно популятный метод, дает эффект более объемного двигателя с 1500-2000 оборотов);
— установка объемного компрессора с приводом от коленчатого вала двигателя (дает эффект более объемного двигателя практически с холостых оборотов но занимает очень много места в подкапотном пространстве, метод практически не пользуется популярностью).

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

Электрический наддув для авто на Arduino: миф или все возможно? - 2

Данная идея относительно не нова — первые упоминания которые мне удалось найти о таких системах относятся к 2009 году — год разработки вспомогательного электрического наддува авто концерном Audi, в их системе электродвигатель вращает крыльчатку небольшого компрессора на оборотах до 3000 до включения основного турбокомпрессора, тем самым нивелируя эффект «турболага» — плохой отзывчивости мощного турбированного двигателя на низких оборотах. Система была продемонстрирована на модели Audi RS5 в 2012 году, но на конвейер так и не попала. Аналогичные системы планируются к разработке и другими авто производителями — ориентировочно такие системы увидят свет на серийных автомобилях в 2017-2019 годах.

А что если не ограничиться 3000 оборотами и крутить электродвигатель и дальше, до 4000 — 5000 оборотов? Таким образом можно перекрыть практически весь повседневный диапазон оборотов, использующийся при вождении автомобиля в 90% случаев.

Да, на это потребуется довольно большая мощность — по моим расчетам при частоте вращения коленчатого вала 4000 оборотов для ДВС объемом 1600 куб см и необходимого наддува в 0,4 бара (максимальный уровень наддува, поддерживаемый большинством штатных ЭБУ автомобилей без перепрошивки и внедрения в электронику авто) — отбираемая мощность на привод крыльчатки компрессора составит около 4,5 кВт (с учетом среднестатистического КПД центробежного компрессора в 50%).

В свободной продаже сейчас есть довольно мощные и в тоже время небольшие по габаритам автоавиамодельные бесколлекторные электродвигатели, развивают мощность в максимуме до 10-15 кВт и имеющие напряжение питания 50-70 вольт:

Электрический наддув для авто на Arduino: миф или все возможно? - 3

Недолго думая был куплен диагностический адаптер — ELM 327 bluetooth mini:

Электрический наддув для авто на Arduino: миф или все возможно? - 4

И на его основе сделан считыватель данных об оборотах и положении дроссельной заслонки двигателя. На фото по порядку: диагностический адаптер, arduino uno, простенький бесколлекторный двигатель и регулятор к нему.

Электрический наддув для авто на Arduino: миф или все возможно? - 5

Написан небольшой скетч для ардуино:

#include <Servo.h>
#include <SoftwareSerial.h>
#define RxD 2     
#define TxD 3         
 
SoftwareSerial ELM327Serial(RxD,TxD);
int motor_value = 0;
Servo firstESC;
int engine_on_rpm=500;
char rxData[30];
char rxIndex=0;
double rpm , drossel;

void setup()
{
  pinMode(RxD, INPUT);
  pinMode(TxD, OUTPUT);  
  ELM327Serial.flush();  
  ELM327Serial.begin(38400); 
  ELM327Serial.println("ATZ");
  delay(900);
  ELM327Serial.println("ATSP0"); 
  delay(100);
  firstESC.attach(2);    // attached to pin 2 I just do this with 1 Servo
  Serial.begin(9600);    // start serial at 9600 baud
  firstESC.writeMicroseconds(700);
  delay(1000);
}
 
void loop()
{
 rpm = Get_Rpm();
 drossel = Get_drossel(); // в данном скетче не используется

  if (rpm_var>engine_on_rpm) {     
     motor_value = map(rpm,1000,6000,860,2000);
  }
  else motor_value = 700; 
  
  if (rpm_var<1000) motor_value = 700; 
  
  firstESC.writeMicroseconds(motor_value);
}

Скетч заработал сразу — моторчик при заведенном двигателе стал вращаться со скоростью, пропорциональной оборотам двигателя:

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

Всем спасибо за внимание.
Жду ваших комментариев!

Автор: Frimen3

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js