Якщо б десь в душевній компанії мене спитали, чи є направдущось, що мені не подобається в СС, я б сказав, що все подобається —ідеальна машина! Крім однієї дрібниці… (на цьому моменті, думаю, всі вже здогадалися про що мова) — це дибільний старт-стоп, а самейого склероз. Не уявляю, в яких обставинах можна було придумати іреалізувати таку концепцію, але хай це лишається на совістіінженерів ВАГа, земля кругла, їм вернеться. Ну а наша справа —виправити цей косяк.
Далі зібрані варіанти з плюсами/мінусами кожного, перевірено навласній шкурі:
— відключаємо в Васі. По суті зсуваємо умови для включеннястарт-стопу в нереалістичні ліміти (наприклад, мін. Напруга акума13В)
😊 нічого не ковиряємо в машині, легко відкатати все назад
😢 на екрані БК завжди світиться іконка з перекресленою "а"
😢 кнопка "A off" зайва. Може наклеїти на неї "R-line"? :)
— припаюємо конденсатор до кнопки "A off". Ідея в тому, щопри старті машини конденсатор сам "натискає" на кнопку замістьнас
😊 нам більше не потрібно пам’ятати про кнопку і розстроюватисяна світлофорі, якщо забули її натиснути
😢 тепер кнопка стала "тупою", не реагує на короткі кліки
😢 це все-таки полу-міра. Ми ж то хочемо старт-стоп зпам’яттю
— заморочуємось і робимо все правильно
😊 нарешті все працює так, як треба
😊😊😊 ми не перестаємо тішитися з того, що все працює ПОВНІСТЮ ТАК ЯКТРЕБА!
😢 прийдеться повозитися…
Як ви зрозуміли, я пройшов всі вищеописані дзени. Далі сутотехнічна інформація по реалізації пам’яті на старт-стоп.
І так, з чим ми маємо справу:
на колодці до блоку з кнопками така ситуація по пінах:
2, 8 — земля
5 — плюсовий пін кнопки старт-стоп, завжди +12В
6 — мінусовий пін кнопки старт-стоп (0В коли кнопка вижата, +12Вколи нажата)
9 — +12В коли старт-стоп включений (іконка на кнопці не горить), 0В— старт-стоп виключений
По цих вхідних даних клепаємо таку схемку на Ардуінці (Digisparkattiny 85) і оптопарах:
Швидше всього, ця схема має технічні недоліки — я не електронік, зробив як міг.
Далі накатуємо програмку. Логіка проста — на старті зчитуємозбережений в EEPROM флаг старт-стопа. Далі, якщо фактичний ізбережений старт-стоп відрізняються, замикаємо піни кнопки (натискаємо її). Плюс, слухаємо, чи водій не натиснув кнопку — якщонатиснув, синхронізуємо наш флажок.
//вибачайте за неформатований код прямо в записі, самомувстидно, нічого не поробиш
#include "EEPROM.h"
const byte SS_BUTON_IN_PIN = PB0;
const byte SS_BUTON_OUT_PIN = PB1; //also DEBUG_LED
const byte SS_LED_IN_PIN = PB2;
const byte LED_GREEN_PIN = PB4;
bool storedSS = false;
bool lastButtonDown = false;
void pulse(byte pin, int duration, int repeats) {
for (int i = 0; i < repeats; i++) {
digitalWrite(pin, HIGH);
delay(duration> > 1);
digitalWrite(pin, LOW);
delay(duration> > 1);
}
}
void setup() {
pinMode(SS_BUTON_IN_PIN, INPUT);
pinMode(SS_BUTON_OUT_PIN, OUTPUT);
pinMode(SS_LED_IN_PIN, INPUT);
pinMode(LED_GREEN_PIN, OUTPUT);
storedSS = EEPROM.read(0);
pulse(LED_GREEN_PIN, storedSS? 100 :300, 2); //long press for SSoff
}
void loop() {
bool carSS = digitalRead(SS_LED_IN_PIN) == LOW;
bool buttonDown = digitalRead(SS_BUTON_IN_PIN) == LOW;
bool buttonClick = (lastButtonDown == true) & & (buttonDown ==false); //button release event
if (buttonClick) {
storedSS = carSS;
EEPROM.write(0, storedSS);
pulse(LED_GREEN_PIN, carSS? 100 :300, 2); //long press for SSoff
}
if (buttonDown) {
digitalWrite(LED_GREEN_PIN, HIGH);
}
else {
digitalWrite(LED_GREEN_PIN, LOW);
if (storedSS! = carSS) {
//click SS button to synchronize stored and car SS:
digitalWrite(SS_BUTON_OUT_PIN, HIGH);
delay(carSS? 800 :200); //long press for SS off
digitalWrite(SS_BUTON_OUT_PIN, LOW);
delay(200);
}
}
lastButtonDown = buttonDown;
}
По установці все просто — витягуємо блок з кнопками, розбираємо, припаюємось до колодки… Постійний плюс тягнемо з прикурювача, бо вколодці його нема. Я підключив наш "контроллер" через конектор, щобможна було в разі чого легко демонтувати і упакував все втермоусадку для ізоляції.
Декілька ньюансів:
— на пінах колодки слабкий струм. Я попробував пустити піни кнопкина світодіод оптопари через 1кОм резистор — напруга просіла з 12 до8В
— Attiny 85 запускає нашу програму через 5 секунд післявключення
— в моїй схемі є баг — коли старт-стоп включений, кнопка не тухнеповністю, а світиться впівсили. Із-за чого це, наразі не ясно
Сподіваюся, викладена інфа буде вам в нагоді. Якщо вам неохотасамому возитися з цим всім, є готові рішення:
за фунти і за єврики.
Сам я надихався цим постом.






Коментарі1
молодець я знайшов готове рішення