Отже, почнемо з обов'язкового та повного (з переглядомвсіх відео та, бажано, коментарів) ознайомлення з працямивищезгаданих людей, тому що 80% потрібної інформації ви знайдетесаме там, а я лише її доповнюватиму:
I. Установка круїзу контролю в мазда 3 1.6 2007 А/Т
II. MAZDA 3 BK Z6 1.6 2006-2008 105к.С. МЕХАНІЧНИЙ ДРОСІЛЬ. СТАВИМОКРУЇЗ КОНТРОЛЬ. Частина 1
III.MAZDA 3 BK Z6 1.6 2006-2008 105к.С. КРУЇЗ КОНТРОЛЬ. ПРИЛАДКА.Імпульсний модуль. Я також відзняв відео про те, як це всереалізовано у мене, а тут додам "що словами не сказати", а "перомнаписати".
Що знадобиться:
1. Власне блок КК Mazda 6 GG (02-08) GJ6A66312
2. Кнопки на кермо або будь-який інший девайс для управління КК знаступною адаптацією під наш блок КК (заміна опорів на кнопках нанеобхідні)
Блок КК та кнопки
3. Віта пара - 2м
4. 4х-контактна "жаба" на педаль гальма (в принципі можна обійтисяі штатною, якщо приколгоспити реле за способом Coffeman'а. Я так ізробив поки чекав замовлену 4х-контактну жабу)
Парт- номери Жаби та захисного ковпачка на блок КК
5. Захисний ковпачок на блок КК
Ковпачок
Фото з підкапотного простору:
Доробка дросельної заслінки:
Кріплення блоку КК:
Глушник впуску повітря
З прикрученим кріпленням блоку КК
Ну й найцікавіше — адаптація сигналу швидкості під блок КК.
Тут можна піти двома шляхами (не рахуючи способу Coffeman'а):
Спосіб №1.Витягувати показання швидкості з CAN-шини та генеруватисигнал швидкості для блоку КК. Для цього знадобляться:Arduino, плата для роботи з CAN-шиною на MCP2515 і, власне найголовніше, скетч:SpeedSignal for Cruise Control Mazda 3 (speed from CAN)Використовуємо таймер1, (factor*1 км/год = 1 Гц)
#include
#include
#include
long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf8;
< /p>
long interval = 0;
long prevMillis = 0;
word spd = 0; //швидкість, отримана з 4го та 5го байтівrxId=0x201
int pinSpd = 9; //pin сигналу для блоку КК
int shift = 2000; //зсув більш раннього спрацьовування КК
float factor = 1.8; //Коефіцієнт співвідношення швидкості до частотисигналу. Підбирати за перевагами в діапазоні від 1.5 (меншапохибка, але більш "нервова" підтримка швидкості) до 2.0 (більшапохибка, але більш плавна робота). MCP_CAN CAN0( 8); //Set CS дляpin 8
br/>
Serial.println( "використовуємо таймер1, (factor*1 км/год = 1Гц)");
Serial.println("Written by Vint (20200501) v1.9" );
if(CAN0.begin(MCP_STDEXT, CAN_500KBPS, MCP_8MHZ) == CAN_OK)Serial.print("MCP2515 Init Okay! \r\n");
else Serial.print("MCP2515 Init Failed! \r\n");
pinMode(2, INPUT); //Setting pin 2 for/INT inputCAN0.init_Mask(0, 0, 0x7FF); //Init first mask…
CAN0.init_Filt(0, 0, 0x201); //Init first filter…
CAN0.setMode(MCP_NORMAL); //Зміна до стандартного режиму до певнихповідомлень буде перетворена
pinMode(pinSpd, OUTPUT);
> Timer1.initialize(); //1 секунда за умовчанням
Timer1.stop();
Timer1.restart();
Timer1.attachInterrupt(SpdSignal);
< /p>
}
>
if(! digitalRead(2))//If pin 2 is low, read receive buffer
CAN0.readMsgBuf(& rxId, &; len, rxBuf); //Read data:len = datalength, buf = data byte(s)
if(rxId == 0x201)
spd = (rxBuf 4 < < 8) | rxBuf5; //Вибираємо значення швидкості з4го і 5го байтів (Speed=X/100 km/h)
}
}
interval = (50000000*factor)/(spd+shift); //розраховуємо напівперіодсигналу (в мкс)
Timer1.setPeriod(interval); )
{
digitalWrite(pinSpd, !digitalRead(pinSpd));
}
> /************************************************************************************************** *******
END FILE
*********************************************************************************************************/
Спосіб №2. Можна використовувати готове рішення, розроблене ув.camokat-betepaha. Йдеться про дільника сигналушвидкості, який у нашому випадку можна отримати з піна 1AY ЕБУ, алеце стосується лише тих, хто має АКПП. Реалізовано це нанайпростішому мікроконтролері Tiny13A. Викладаю посилання, знайденена просторах інтернету:Дільник імпульсів із використанняммікроконтролера. Одне уточнення:т.К. У нас використовується сигнал5В, а не 12В, то із схеми потрібно виключити R2, R3, VT1, VD2. На5-й висновок подаємо через резистор вхідний сигнал швидкості, а з6-го виводу отримуємо потрібний нам сигнал для блоку КК. Там є 10варіантів прошивок (з дільником від 1 до 10 ). Нас цікавлятьдільники від 4 до 6. Я для себе відзначив, як найбільш підходящийваріант, дільник 5. На щастя, на спосіб №2 я наткнувся вже післятого, як переміг метод №1. Інакше я б знову відклав своє знайомствоз Ардуїно в "довгу скриньку")). За працездатністю обидва способиоднакові, але я зупинився на другому, вважаючи його більшвідмовостійким.
Ну ось начебто і все. Собі для зручності я ще зробив невеликедоопрацювання. За моїми особистими спостереженнями (може я й неправий у такому абсолютному розподілі) японці (тойота, Міцубіші, Мазда) зазвичай роблять управління КК з правого боку керма, аєвропейці (мерседес, Вольво) - з лівого. Мені найбільше подобаєтьсяєвропейський варіант, т.К. Ліва рука у мене завжди на кермі, аправа - в "повної бойової готовності")) зазвичай відпочиває напідлокітнику. Тому я запаралелів кнопки збільшення/зменшеннягучності на кермі з кнопками круїзу Resume/Set. Зробив цеварварськи, шляхом перерізання потрібних доріжок на платі зкнопками управління магнітолою та, кинувши дроти на плату з кнопкамиуправління КК. Якщо щось упустив, запитуйте в коментарях, але хочуще раз нагадати про важливість ознайомлення з працямиCoffeeman- IT Та amGame, т.К. Всямат.Частина мною була почерпнута саме звідти, за що я їм дужевдячний.
Коментарі3
Так і не зрозумів, як адаптувати швидкість для механіки? Де вивчити?
Для механіки підійде тільки спосіб №1, тобто читання швидкості з CAN-шини за допомогою ардуїно і модуля для роботи з CAN-шиною на MCP2515, і подальша конвертація в сигнал, що зручно для блоку КК. Готовий скетч для цього див. вище в пості.
Як мені складно дається електрика😫