Тем, у кого данная функция имеется в сигналке данная запись может быть не интересна. Остальным — велком.
Как известно в бюджетных автомобилях Nissan не предусмотрена возможность сделать автоматическую блокировку дверей по достижению определённой скорости движения, но на магнитоле имеется контакт, с приходящими импульсами скорости.

Этот контакт идёт напрямую из панели приборов, на разъёме которой задействован 31-ый контакт с красным проводом.

А управление переключателем блокировки дверей на блоке BCM выглядит следующим образом:

Итого контакты необходимого девайса обретают вид:
1. С разъёма приборов №31 — Скорость, импульсами по 5в
2. С разъёма М57 №24 (оранжевый) — Питание платы +12в
3. С разъёма М57 №2 (чёрный) — Масса
4. С разъёма М57 №32 (фиолетовый) — Питание индикатора Lock
5. С разъёма М57 №6 (зелёный) — Активации блокировки дверей
6. С разъёма М57 №25 (коричневый) — Активации разлокировки дверей (опционально)
Если логически подумать то алгоритм должен быть следующим: при превышении 20 импульсов в секунду (40км/ч) на 1-ом контакте, смотрим есть ли напряжение на 4-ом контакте и если нет — замыкаем 3 и 5 длительностью 0,1…0,2с — человек так примерно жмёт на кнопку.
После подачи сигнала можно уходить в "спячку" и не считать скорость, а ждать когда на 4-ом пропадёт напряжение.
В итоге решил реализовать на Arduino, благо скетч нашёлся на клубном форуме.
В качестве основы взял:
1. Дигиспарк с алиэкспресс;
2. Миниатюрное сигнальное реле на 12В;
3. Транзистор BC337-40;
4. Резистор 2.2кОм 0,125Вт;
5. Импульсный диод 1N4148.
Схема получилась полностью аналогичная:

Программа для платы:
-------------------------------------------------
#define PinBlock 0 // Контакт блокировки с BCM (для блокировки надо замкнуть на землю)
#define PinLED 1 // Контакт светодиодика на плате
#define PinSpeed 2 // Контакт для сигнала скорости
#define DelaySmall 70 // Пауза работы реле и светодиодика
// unsigned long Pulse;
long Pulse = 1000;
long PulseStart = 0;
int PulseCount = 0;
bool PulseNowState = false;
bool PulsePrevState = false;
void setup()
{
pinMode(PinSpeed, INPUT); // Определям вход сигнала с датчика скорости
pinMode(PinLED, OUTPUT); // Определям выход светодиодика на плате
pinMode(PinBlock, OUTPUT); // Определям выход блокировки
digitalWrite(PinSpeed, HIGH); // Внутренняя подтяжка резистора входа от дачика скорости
digitalWrite(PinLED, LOW); // Задаём состояние светодиода на плате
digitalWrite(PinBlock, LOW); // Задаём состояние вывода реле блокировки
BlinkLED(5);
PulsePrevState = digitalRead(PinSpeed);
}
void loop()
{
PulseNowState = digitalRead(PinSpeed);
if ( PulseNowState != PulsePrevState ) {
Pulse = millis() — PulseStart;
PulseStart = millis();
digitalWrite(PinLED, PulseNowState); // Инвертируем светодиодик на плате по смене сигнала
}
if ( Pulse < 50 ) { // Импульс 50 милисекунд — это примерно 30 км/ч
PulseCount++;
if ( PulseCount >= 5 ) // Блокировка на пять подряд правильных ипмульса (защита от случайной облокировки)
{
// BlinkLED(3);
DoorLock();
PulseCount = 0;
}
}
else PulseCount = 0; // Если импульсы случайны — сбрасываем счётчик
PulsePrevState = PulseNowState;
}
void DoorLock() {
digitalWrite(PinBlock, HIGH); // Подаём питание на базу транзистора чтобы замкнуть на землю
delay(DelaySmall*2);
digitalWrite(PinBlock, LOW); // Выключаем реле блокировки
delay(30000); // Повторная блокировка дверей через 30 сек
}
void BlinkLED(int too) {
for (int i = 0; i <= too; i++) {
digitalWrite(PinLED, HIGH); // Включаем светодиодик на плате
delay(DelaySmall);
digitalWrite(PinLED, LOW); // Выключаем светодиодик на плате
delay(DelaySmall);
}
}
-------------------------------------------------
В железе получилась вот такая маленькая платка, разъём сделал лишь для того чтобы отработать конструкцию. Подключать проще прям в центральной консоли.

Реле приклеил на суперклей прям к плате digispark'а.

Теперь пришло время установить на машину. Снимаю магнитолу и подключаю провод скорости.

Протягиваю его к блоку BCM.

Саму плату буду монтировать прямо на жгут проводок BCM, что сверху. Подключать буду так же как ставил реле на работу стеклоподъёмников.

С большого белого разъёма блока BCM беру контакты кнопки блокировки, его индикации, питание и массу:

Провода вывожу вниз и монтирую плату за перчаточным ящиком.
Проверяю работу









Комменты 28
Кто-нибудь повторил эту схему?
Схема нерабочая в принципе, для повторения невозможна! Автор, ты умеешь рисовать нормальные схемы, не картинки?
1. Не показана цепь питания платы (хотя на фото угадывается пайка на контакт 5v.
2. Транзистор, указанный автором (BC337) — NPN, поэтому "земля", ну или МИНУС питания, никак не может быть на эмиттере!
3. Импульсы скорости приходят плюсом, т.е. положительные. Диод стоит встречно, их не пропускает.
4. Распайка контактов реле вообще не соответствует схеме. Задействованы только нормально замкнутые контакты? Так они только разрывают цепь, а не включают сигнал блокировки.
5. Непонятно что ты монтируешь за перчаточным ящиком? Или все-таки на жгут проводов у блока ВСМ?
я не электрик-электронщик, довольствуйтесь тем что есть.
1. платка запитывается от 12в что показано на картинке.
2. я не шарю в этом, у меня как-то работает :)
3. импульсы скорости приходят минусом
4. реле просто отключает плату
5. где в еноте блок BCM?
Мне интересно, ты что-нибудь не умеешь?
Пожалуйста, войдите, чтобы пользоваться всеми функциями Drive2
Войти