Датчик температуры двигателя митсубиси паджеро спорт



Mitsubishi Pajero Sport 2.5 DiD 5AT S11 › Logbook › Контроль температуры АКПП

Так уж сложилось, что НМПС с АКПП имеет некую особенность. А именно срыв АКПП при определенных обстоятельствах на вторую передачу. Одним из условий перехода является температура масла АКПП более 130 градусов. В профильной теме на форуме паджеро4х4 перемыты кости и самому алгоритму и установке девайсов для контроля температуры и системам охлаждения.
Я давно слежу за этой темой и кое чего насобирал…
Радиаторы оставлю на потом… Алгоритм поменять я не смогу… Остается мониторить температуру. ЭБУ АКПП получает температуру на 44 вводе. Самым простым и безнапряжным способом было замерять напряжение на этом вводе и по реперным точкам, приведенным в инструкциях по ремонту/обслуживанию, а за одно в выше названной теме, переводить напряжение в температуру. — Не наш метод.
Можно было заказать на ибее/дх/али или еще где показометр (примеров куча и вроде все красиво). — Не наш метод.
Осталось придумать некий прибор умеющий мерять напряжение и переводить его в температуру. Тут вспомнил, что завалялась Ардуино Нано (когда-то хотел использовать ее для контроля кнопок на руле). Наваял простенькую схему и набросал программку:

Да… приборчик пищит при нарушении границ замера что по АКПП, что по ГБЦ.
Сейчас все лежит в нише под бортовым компом — значительно повышая его функционал :).

#include
#include

#include

LiquidCrystal_I2C lcd(0x27,16,2); // ADDR 0x27, 16 x 2 arrea

const byte pin_tStat = 12; // pin for Thermostat fan
const int t_stat = 85; // temperature for start fan
const int dt = 5; // dT for stop fan
const int t1_alert = 95;
const int t2_alert = 100;
const int buzzer = 2; // Buzzer Pin
const int button = 3; // Button pin

Читайте также:  Обороты двигателя на холостом ходу бензин

byte beep1=0; // if 0 no beep, 100 beep, 200 need beep but quit alarms
byte beep2=0; // if 0 no beep, 100 beep, 200 need beep but quit alarms

int mode = 0;
long time = 0;
byte buttonStatus = 0;
float oldVat=0;

OneWire ds1(11); // on 11 pin
OneWire ds2(10); // on 10 pin
float celsiusOld = 0;
float celsiusOld2 = 0;
long timeDS = 0;

void setup()
<
lcd.init();
lcd.noBacklight();
lcd.clear();
pinMode(pin_tStat, OUTPUT);
pinMode(button, INPUT);
>

float translate (float v, float start, float kon, byte st, byte stp)
<
return (stp- (v-kon) * (stp — st) / (start-kon));
>

void loop()
<
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius;
byte present2 = 0;
byte data2[12];
byte addr2[8];
float celsius2;

if (timeDS ==0) <
ds1.search(addr);
ds1.reset();
ds1.select(addr);
ds1.write(0x44, 1); // start conversion, with parasite power on at the end

ds2.search(addr2);
ds2.reset();
ds2.select(addr2);
ds2.write(0x44, 1); // start conversion, with parasite power on at the end

type_s = 0; // for ds18b20
timeDS = millis();
>
float Vat; // Voltage
int Tat = analogRead(A1); // Read Board voltage
float Vboard = float(Tat)*12.0/1024.0;

Tat = analogRead(A0); // Read 44pin ECU AT

if (Vat = 3.9)
Tat = translate(Vat, 3.9, 4.5, 20, 0);
else if (Vat>=3.3)
Tat = translate(Vat, 3.3, 3.9, 40, 20);
else if (Vat>=1.8)
Tat = translate(Vat, 1.8, 3.3, 80, 40);
else if (Vat>=0.5)
Tat = translate(Vat, 0.5, 1.8, 130, 80);

if (Tat > t_stat) digitalWrite(pin_tStat, HIGH);
if (Tat t1_alert) && (beep1 == 0)) beep1 = 100;
if ((celsiusOld > t2_alert) && (beep2 == 0)) beep2 = 100;
if (Tat 1000) time = 1000;
>
else
if (buttonStatus == 1)
<
if (time>=3)

if ((millis() — timeDS)>1000) <
present = ds1.reset();
ds1.select(addr);
ds1.write(0xBE); // Read Scratchpad
for ( int i = 0; i Price tag: $100,500 Mileage: 20,500 km

Читайте также:  Как вытащить двигатель из автомобиля

Источник

Adblock
detector